All features Video Visits
Video Visits

Video visits (telehealth) — technical details

Video visits in MindFlow use Zoom as the underlying video platform, launched directly from the appointment record. Session lifecycle (join, leave, recording status) is tracked via the Zoom webhook. A recording-and-transcription pipeline is built in for clinics that need a session record.

Zoom API v2 Zoom Webhooks Sarvam AI STT

Zoom integration

Authentication

includes/zoom.php handles JWT-based and Server-to-Server OAuth authentication with the Zoom API. Credentials are stored in app_settings (not hardcoded). The includes/helpers.php layer loads them via getSetting() with cache.

Session lifecycle

zoom_sessions table tracks meeting ID, passcode, join URL (host and patient variants), start time, end time, and status. api/video_sessions.php handles create/start/end. api/zoom_webhook.php receives real-time events from Zoom (participant joined, left, recording completed) and updates the session record.

Patient join link

The patient receives their join URL via the notification pipeline (email / WhatsApp) when the appointment is confirmed. The URL is also visible in their portal. No Zoom account is needed for the patient — they join as a guest.

No-download option

Patients can join from a browser (Zoom Web SDK) without installing anything. The clinic admin can configure whether the Zoom Web SDK or the native Zoom app link is offered.

Recording within video visits

Consent gate

Recording cannot begin until the patient's consent is logged in ai_consent_log. The session recorder UI enforces this in the browser; the server-side api/recording_upload.php also validates that a consent record exists before accepting an upload.

Recording pipeline

Audio is captured via MediaRecorder, split into chunks, and uploaded to api/transcribe_chunk.php in parallel with the session. Final upload to api/recording_upload.php stitches chunks and triggers transcription via Sarvam AI.

Cloud recording

Zoom cloud recording can be used as an alternative capture method. The zoom_webhook.php handler detects a recording.completed event, downloads the file to local storage, and triggers the same transcription pipeline.

Ready to see it in action?

The demo has real sample data — appointments, patients, prescriptions — so you can explore freely.

Try the demo ← All features