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

# 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

<Steps>
  <Step title="Open the Virtual Groups list">
    Navigate to `/cl/virtual-groups`. The page loads the full session list and shows summary counts across three stat cards.
  </Step>

  <Step title="Filter by modality (optional)">
    Use the **Modality** dropdown to narrow the list to `Virtual`, `Hybrid`, `In Person`, or `All Modalities`.
  </Step>

  <Step title="Select a session">
    Click any row in the Sessions table to open the session detail screen at `/cl/group-sessions/:sessionId`.
  </Step>

  <Step title="Create a new session (host only)">
    Users with `cl.group.virtual.host` can click **New Session** to navigate to `/cl/group-sessions` where the session creation dialog is available.
  </Step>
</Steps>

## Key concepts

<AccordionGroup>
  <Accordion title="Modality values">
    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.
  </Accordion>

  <Accordion title="Empty and error states">
    * 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.
  </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/VirtualGroupsListPage.tsx
  * src/cores/cl/hooks/useVirtualGroupSessions.ts
  * src/cores/cl/types/virtual-group.ts
</Accordion>
