Release Date: 5th December 2025
βVersion: 1.0
βStatus: Live in Production under Ruh Care Inc. and Ruh Corp. Suborgs
π― Executive Summary
We've implemented automated tracking of actual Zoom call durations for therapy sessions. This feature automatically captures when therapists start and end Zoom calls, calculates the actual duration, determines the appropriate CPT code for insurance billing, and appends all relevant information to appointment notes. This automation is critical for insurance audits and ensures accurate billing practices.
β¨ What's New
Automatic Duration Tracking
The platform now automatically tracks:
β° Actual Start Time - When the therapist starts the Zoom call and also track if they joined the session late
β±οΈ Actual Stop Time - When the therapist ends the Zoom call
β²οΈ Actual Duration - Total time (in minutes) of the Zoom session
π₯ CPT Code - Automatically assigned based on appointment type and duration
Smart Admin Notes Appending
Session timing information is automatically appended to appointment notes:
β Preserves existing notes (never replaces)
β Appends formatted admin section at the end
β Includes late start notifications if applicable
β Handles multiple Zoom calls for the same appointment
Intelligent CPT Code Assignment
CPT codes are automatically determined based on:
π₯ Appointment Type - Couples, Family, or Individual therapy
β±οΈ Actual Duration - Length of the session
π Geography - Canada vs. US billing requirements
π§ How It Works
Trigger Mechanism
The system is triggered by Zoom Webhook Events:
appointment.participant_joined- When therapist starts the callappointment.participant_left- When therapist ends the call
Timing: Updates occur automatically as soon as the Zoom call ends.
π Data Captured
Appointment Fields Updated
Field | Description | Example |
Actual Duration (minutes) | Total call duration |
|
Appointment Notes | Admin section appended with timing details | See format below |
Admin Notes Format
The following standardized format is appended to appointment notes:
===== For admin use only. Please don't edit. =====
Actual start time: 2:03 PM EST (started 3 mins late)
Actual stop time: 2:48 PM EST
Actual duration: 45 minutes CPT code: 90834
π₯ CPT Code Logic
Ruh Corp. - Rest of The World - No CPT Code
For appointments in Canada & Rest of the World, CPT codes are NOT appended:
No CPT code field in admin notes
Only timing information is recorded
Complies with Canadian billing practices
Ruh Care Inc. - United States - Automated CPT Assignment
Couples & Family Therapy
For appointment types: Couples, Couples Extended, Family, Family Extended
CPT Code:
90847(regardless of duration)
Individual Therapy
Duration | CPT Code |
< 38 minutes |
|
38-52 minutes |
|
β₯ 53 minutes |
|
Note: Duration ranges are inclusive on the lower bound, exclusive on the upper bound.
π Timezone Handling
All timestamps are recorded in the Therapist's Timezone:
Format Examples
Start Time:
2:00 PM ESTStop Time:
2:45 PM ESTWith Late Start:
2:03 PM EST (started 3 mins late)
Timezone Logic
Timestamps converted to therapist's configured timezone
Timezone abbreviation displayed (EST, PST, CST, etc.)
Consistent time format:
HH:MM AM/PM [TZ]
β οΈ Edge Cases & Special Handling
Multiple Zoom Calls for Same Appointment
Scenario: Therapist starts a call, ends it, then starts another call for the same appointment (e.g., client asks to reschedule by 15 minutes)
Action:
Option 3 Implementation - Both call durations are recorded
First call timing information remains intact
Second call timing is appended below
Both admin sections are preserved
Example:
===== For admin use only. Please don't edit. =====
Actual start time: 2:00 PM EST
Actual stop time: 2:05 PM EST
Actual duration: 5 minutes
CPT code: 90832
===== For admin use only. Please don't edit. =====
Actual start time: 2:15 PM EST
Actual stop time: 3:00 PM EST
Actual duration: 45 minutes
CPT code: 90834
Late Start Detection
Scenario: Therapist starts the Zoom call more than 3 minutes after the scheduled start time
Action:
Append
(started # mins late)to the actual start timeCalculated based on scheduled start time vs. actual start time
Example:
2:05 PM EST (started 5 mins late)
Phone & In-Person Sessions
Scenario: Appointment is conducted via phone or in-person (not Zoom)
Action:
No automatic tracking - Zoom webhooks don't fire
Therapist must manually add timing information
Template provided in notes section for manual entry:
===== For admin use only. Please don't edit. =====
Actual start time: ##:## AM/PM
Actual stop time: ##:## AM/PM
Actual duration: ## minutes
CPT code: _____
Missing Therapist Timezone
Scenario: Therapist timezone is not configured
Action:
Default to Eastern Time (EST/EDT)
Log warning for admin review
Notify therapist to update profile settings
Zero Duration Calls
Scenario: Therapist starts and immediately ends call (e.g., testing Zoom)
Action:
Duration recorded as
0 minutesor1 minuteCPT code defaults to
90832(shortest session)Admin can manually update if needed
π Benefits to Team
For Therapists
π No Manual Entry: Duration tracked automatically
β±οΈ Time Savings: No need to calculate session times
β Accurate Records: Precise timing for all sessions
π Audit Ready: Automatic documentation for insurance
For Billing Team
π° Correct CPT Codes: Automated, accurate billing codes
π Audit Compliance: Complete session timing records
π Better Reporting: Accurate duration data for analysis
β‘ Faster Processing: No need to request timing from therapists
For Compliance
π₯ Insurance Audits: Complete audit trail available
π Documentation: Standardized timing records
π Data Integrity: System-generated, tamper-resistant
β Regulatory Compliance: Meets billing documentation requirements
π Implementation Details
Data Flow
Therapist starts Zoom call for appointment
Zoom sends
participant_joinedwebhookSystem records actual start time in therapist timezone
Compares start time to scheduled time (late detection)
Therapist ends Zoom call
Zoom sends
participant_leftwebhookSystem records actual stop time
Calculates duration (stop time - start time)
Determines appointment type and location
Assigns appropriate CPT code (if US-based)
Formats admin notes section
Appends to existing appointment notes
Updates "Actual duration (minutes)" field
π Support & Questions
For questions about this feature or to report issues, please contact:
Development Team: [email protected]
Last Updated: December 2025
