Skip to content

Veona Live (Telehealth)

import { Steps } from ‘@astrojs/starlight/components’; import { Aside } from ‘@astrojs/starlight/components’;

Veona Live is the telehealth surface. When an appointment is booked with type Telehealth, Veona creates a canonical LiveConsult — a single 1:1 video consult whose state is shared across Appointments, Live and the patient portal. The clinician runs the consult from a LiveKit video room; the patient joins the same room from their portal after a one-time-passcode check.

This page is the staff side. The patient’s join experience is summarised at the end and documented under For Patients.

Key terms:

  • LiveConsult — the canonical telehealth consult object (one per telehealth appointment).
  • LiveKit — the media server that hosts the video room. Clinician and patient receive room tokens for the same room; there is no cross-room access.
  • OTP — One-Time Passcode, the single-use code a patient enters to join.

Verified in apps/api/src/auth/rbac/permissions.ts:

  • Live Coordinator (live_coordinator) — runs scheduling, the waiting room and module settings (the telehealth-ops / front-desk role). Does not conduct calls or write clinical notes.
  • Clinician — the ordering clinician conducts the consult: joins the room, documents the note into the canonical Encounter, and manages recording/consent (live.consult.conduct, live.consult.note).
  • Nurse — can schedule and read telehealth (live.schedule, live.read).

Veona Live is included in the Hospital and Network editions. It depends on the Appointments module (telehealth consults are created from telehealth-type appointments), so Appointments must be entitled too.

The Veona Live work surfaces (from apps/web/src/modules/live/ModuleTabs.tsx):

Telehealth Board · Waiting Room · Consult Room · Schedule · Referrals · Recordings · Reports · Settings.

The consult detail is reached by clicking a consult on the board or schedule, not from a standalone tab.

  1. A telehealth consult originates from an appointment booked with Appointment Type = Telehealth (in the Appointments module). That booking creates the linked LiveConsult automatically.
  2. The Live Coordinator manages the day’s telehealth slots on Schedule (/live/schedule) — live.schedule.
  1. The Clinician opens Telehealth Board (/live) and finds the consult in the Scheduled state.
  2. Choose Start — this opens the Consult Room (/live/room) and a canonical Encounter (class = Virtual); the media stream activates.
  3. The patient joins from their portal (see below); both parties are now in the same LiveKit room.
  4. The clinician documents the consult into the Encounter note (live.consult.note) and manages recording/consent.
  5. Choose End Consult — the consult state becomes Completed.

The Waiting Room (/live/waiting) shows patients who have joined and are waiting for the clinician to start.

  1. The patient receives a secure invite (magic link via email or SMS).
  2. The patient opens their portal, where the consult shows as In Progress, and chooses Join Consult.
  3. The patient enters a single-use OTP to verify; a one-time LiveKit room token is minted for the same room as the clinician.
  4. Both parties are connected. When the clinician ends the consult, the patient sees it as Completed on their portal and can access the recording if one was persisted.
  • Recordings (/live/recordings) lists consult recordings that were persisted (subject to consent).
  • Referrals (/live/referrals) handles telehealth referrals — onward referral of a patient seen virtually.
  • Reports and Settings cover telehealth analytics and module configuration (live.manage).