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

# 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=<uuid>` 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=<uuid>` query parameter or as the first enrollment record).
* The session status must be `in_progress` or `scheduled` to enable joining.

## Steps

<Steps>
  <Step title="Open the join screen">
    Navigate to `/cl/virtual-groups/:sessionId/join` (optionally with `?attendanceId=<uuid>`). The page loads session details and your attendance record.
  </Step>

  <Step title="Complete the technology check">
    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**.
  </Step>

  <Step title="Capture recording consent (if required)">
    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."
  </Step>

  <Step title="Join the 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.
  </Step>
</Steps>

## Key concepts

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

  <Accordion title="Recording consent lock">
    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").
  </Accordion>

  <Accordion title="Attendance record resolution">
    The page resolves the participant's attendance record using `?attendanceId=<uuid>` if provided; otherwise it falls back to the first record in the attendance list. If no record is found, a blocking error is shown.
  </Accordion>

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