> ## Documentation Index
> Fetch the complete documentation index at: https://docs.encoreos.io/llms.txt
> Use this file to discover all available pages before exploring further.

# 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

<Steps>
  <Step title="Navigate to the Notification Center">
    Go to `/cl/notifications`. If you see a disabled-service banner, contact an administrator to enable the `cl.notification_service_enabled` feature flag.
  </Step>

  <Step title="Review active alerts">
    The **Active** tab loads by default. Review the list ordered by SLA deadline. Events marked "Overdue" require immediate attention.
  </Step>

  <Step title="Acknowledge an alert">
    Click **Acknowledge** on an active event card. The event optimistically disappears from the active list. If the server call fails, it reappears automatically.
  </Step>

  <Step title="View acknowledged alerts">
    Click the **Acknowledged** tab to review previously acknowledged events with their acknowledgement timestamps.
  </Step>
</Steps>

## Key concepts

<AccordionGroup>
  <Accordion title="Severity levels">
    The component maps `severity` values to badge variants: `critical` → destructive, `urgent` → default, `informational` → secondary, anything else → outline. SME: confirm canonical severity list.
  </Accordion>

  <Accordion title="SLA deadline countdown">
    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.
  </Accordion>

  <Accordion title="Escalation step">
    When `escalation_step > 0`, the event card notes the current escalation step. The escalation behavior is driven by policies configured in Notification Policies.
  </Accordion>

  <Accordion title="Optimistic acknowledgement">
    `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.
  </Accordion>

  <Accordion title="Empty states">
    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.
  </Accordion>
</AccordionGroup>

## Related

<Columns cols={2}>
  <Card title="Clinical" icon="stethoscope" href="/cl/overview">
    Overview of the Clinical core.
  </Card>

  <Card title="Governance & parity" icon="scale-balanced" href="/governance/index">
    Documentation coverage and governance.
  </Card>
</Columns>

<Note>
  This page documents shipped product behavior. It is not medical, legal, or
  billing advice. Verify against your organization's policies and applicable
  regulations before using it for clinical, compliance, or billing decisions.
  Protected health information (PHI) shown in the product is governed by your
  tenant's access controls and is never exposed in this documentation.
</Note>

<Accordion title="Documentation sources">
  * src/routes/cl.tsx
  * src/cores/cl/pages/notifications/NotificationCenterPage.tsx
  * src/cores/cl/hooks/useNotificationCenter.ts
  * src/cores/cl/hooks/useAcknowledgeNotification.ts
</Accordion>
