MH²

MH² Portal

Operations, leadership reporting, and CRM

Sign-in with Google is required for this portal.

Sign in with Google
MH² MH² Portal
Home
Leadership
  • Record Audit
  • Sales
  • Aurora-Hrs
  • Provider Retention
Operations
  • Utilization
  • Case Loads
  • Follow-up Appt
  • Team Huddles
  • Monthly Plans
  • Group Attendance
  • Payment Audit
  • Provider Availability
  • Retention
  • Lab Calculations
  • Superbill
  • CRM
  • Tasks
  • Task Templates
Provider
  • Patient visits
  • Treatment Plans
  • Keto Tracker
  • Meeting
  • AI Summarizer
  • AI Chat
  • Labs
Admin

Welcome to MH² Portal

Where Mental Health Meets Metabolic Health

Use the menu for Home, Leadership, Operations, Provider, and any additional areas granted to you. Admins can open Admin to manage roles.

Pending tasks

Your open items from CRM, Tasks, and Treatment Plans.

Loading…

No pending tasks assigned to you.

Source Title Related Due Actions

Leadership

Reporting and documentation quality.

Open Record Audit, Sales, Aurora-Hrs, or Provider Retention in the Leadership menu.

Task Templates

Create and launch task playbooks. Generated cards appear on the Tasks board under the template’s shared project. Duplicate an existing template to start a variant, then edit titles, descriptions, roles, and due-date offsets.

Task Templates is not available. Set DATABASE_URL to use this page.

Loading…

Launch

Define roles

Assign users to each role used by this template. Roles with one user are filled automatically; roles with multiple users require a selection.

No roles needed for this template (or steps have no role set yet).

Review the list below. Assignees come from Define roles; you can still change due dates for this launch only.

Title Assignee Due Requires Offset (biz days)

Templates

Steps

Order Title Requires Roles Biz days Active Actions

Recent runs

No launches yet.

When Template Patient Start Tasks By

Edit step

Select one or more. People in those roles become assignees when the template is launched.

If this step has a prerequisite, the due date is set when that prerequisite completes (offset from unlock day), capped by the launch complete date when set.

Roles catalog

Edit role names and the portal users eligible for each role.

Roles

Role Users Active Actions

Lab Calculations

Load biomarkers from cerbo_sync.lab_results (Quest-style structured results). Enter a patient ID and load lab data to populate fields and calculate PhenoAge2, FIB-4, and HOMA-IR automatically.

Loading lab results…

Patient dates

Filled automatically when you load lab data; edit and reload to recalculate.

Chronological age: —

1. Biological age (PhenoAge2)

Adjusted corrected PhenoAge2 (Levine / Liu et al.) from nine standard blood biomarkers and chronological age. Lab values are entered in US units (g/dL, mg/dL, mg/L); the formula converts internally before calculation.

Biological age (adjusted PhenoAge2)
—
Difference (bio − chrono)
—
Clinical PhenoAge2 (P)
—
Mortality score (xb)
—
10-year mortality risk (M)
—

2. FIB-4 (liver fibrosis index)

Sterling formula: (Age × AST) / (Platelets × √ALT). Uses chronological age from dates above. Less reliable under age 35 or over 65.

FIB-4 score
—
Interpretation
—

3. HOMA-IR (insulin resistance)

(Fasting insulin [µU/mL] × fasting glucose [mmol/L]) / 22.5. Insulin in pmol/L is converted using 1 µU/mL = 6.945 pmol/L (MDCalc).

HOMA-IR
—
Insulin used (µU/mL)
—
Interpretation
—

Superbill

Generate a review table of checked-in/out and confirmed appointments for one patient and date range. CPT codes come from cerbo_cpt_map for the provider used on each appointment. When an appointment lists more than one provider, choose which one to use before the CPT review. One set of diagnoses is chosen for the patient and copied onto every appointment. Edits below are for the upcoming PDF step only — they are not saved to the database.

1. Patient & period

Superbill is not available. Set DATABASE_URL to use this page.

Loading diagnoses…

2. Choose diagnoses

Unique diagnoses from every Cerbo encounter for this patient, newest first. Check the ones to use. The text box is copied onto every appointment when you load them; edit it to add or change a line. If this patient already has a saved list, it is filled in here. Changing the list clears the provider choices and the appointment table. Format each line as CODE - Name so the PDF and Word files can show the ICD-10 code.

No diagnoses were found in Cerbo for this patient. Type the lines to use below.

No diagnoses entered. Appointments will still load, and each row will start blank. You can type diagnoses on a row before generating PDF or Word.

Loading appointments…

3. Choose a provider

These appointments list more than one provider. Pick the provider to use for CPT codes and the superbill. The count is signed encounter notes that match the visit: same day, or within 5 days when no later appointment for that provider falls in between.

Date Appt type Providers

Select a provider for each appointment.

Loading CPT codes and diagnoses…

3. Check CPT codes & diagnoses

Only appointment types in the CPT map are listed; anything else is omitted. Flagged rows need review (multiple notes, missing CPT, no matching encounter, or assumed later note). Each row starts with the diagnoses from step 2. CPT codes are the map row for the provider on that appointment. Diagnosis and CPT fields stay editable for the PDF/Word step.

No checked-in/out or confirmed appointments with a mapped appointment type found for this patient in the selected period.

Date Appt type Provider Notes Diagnoses CPT code / description Units Mod Flags

PDF/Word use the current edited values. These review-table changes are not saved.

Generating file…

CPT catalog (dropdown options)

Source table cerbo_sync.cpt_code_catalog. These options drive the review-table CPT dropdown (code + description linked).

Loading CPT catalog…

CPT Description Category Active
Provider credentials (PDF/Word name)

Source table cerbo_sync.provider_superbill_profile. Provider Name on PDF/Word becomes First Last, credentials. Credentials also appear after the cursive signature. NPI here overrides Cerbo when present. Check Requires supervisor and enter that person’s Supervisor name when the superbill must list a supervising clinician. The supervisor’s credentials and NPI come from their own profile row. Include former providers so historical superbills still resolve.

Loading provider profiles…

Provider name Credentials NPI Requires supervisor Supervisor Active
CPT map (editable lookup)

Source table cerbo_sync.cerbo_cpt_map. Edits here are saved to the database and affect future Superbill loads. Use “Seed from CSV” once after migration (or to refresh from the Excel export).

Loading CPT map…

Appt type Provider Type Loc CPT Description Units Mod

Record Audit

Each morning the portal checks the trailing 5 clinic days through yesterday (Eastern), including weekends, and emails the portal users listed on this page. Appointment status covers patient-treatment visits that were not checked out, cancelled, or no-show, leaving out Patient Huddle - Paid. Encounter notes cover visits that were not cancelled or no-show, leaving out Group - Caregiver Connections, Aurora Transportation, and Aurora Travel. The visit passes when any one provider created and signed a note. The summary counts exceptions by day. Outcome questionnaire counts for patients with a past patient-treatment visit are listed below.

Trailing 5 days

Loading…

Date Open appointments Note issues

Appointment status

Patient-treatment appointments in the trailing 5 days whose status was not checked out, cancelled, or no-show. Patient Huddle - Paid is left out. The morning job emails new rows on this list. Add or remove portal users below; the job reads that list before it sends.

Loading…

Date Time Patient ID Patient Provider Appointment type Status

Email recipients

Portal users who receive the appointment-status reminder.

No recipients yet. The job will not send this email.

Name Email Actions

Encounter notes

Non-cancelled, non-no-show appointments in the trailing 5 days that had no encounter note, or a note that was not signed. Cancelled and no-show visits are left out, along with Group - Caregiver Connections, Aurora Transportation, and Aurora Travel. If several providers are on the visit, one of them creating and signing a note is enough. A note matches a provider when the patient is the same and the date of service, created date, or signed date is that day.

Loading…

Date Time Patient ID Patient Provider Appointment type Status Issue Encounter ID

Email recipients

When this is off, one summary email goes to the people below. When this is on, each provider who did not sign gets an email for their own visits, and the people below are copied.

These people receive the summary when the toggle is off, and are copied on each provider email when it is on.

No recipients yet. The job will not send this email.

Name Email Actions

Loading…

No outcome questionnaire rows to show.

Outcome questionnaires — summary

Patients with at least one past patient-treatment appointment, and completed Progress Tracking forms under Documents → Forms. Summary counts are patients with at least one matching document (CORE-OM, DSM-5-TR Self-Rated, OQ-45). Detail lists only patients with at least one of the three and shows how many of each form they have.

Eligible patients CORE-OM DSM-5-TR Self-Rated OQ-45 All three

Outcome questionnaires — detail

Patient ID CORE-OM DSM-5-TR Self-Rated OQ-45

Provider Retention

One row per provider, patient, and program (from appointments_key) with a patient-treatment appointment on or after July 1, 2025. Statuses included: confirmed, checked-in, and checked-out. Programs Group, Lab, None, DXA, and All are excluded. Total days seen is last appointment date minus first, plus one (a single-day visit counts as 1). Has future appt is true when that provider and patient have an appointment on or after today (Eastern) in that program, or a future visit in program All (TRM). Summary counts each patient once per provider (multiple programs do not double-count); a patient is retained if any remaining program row with that provider has a future appointment. Avg appt count, avg days seen, and median days seen use unique patients: with Program = Any, each patient’s visits across programs are combined first; with a program filter, only that program’s visits are used.

Provider Retention is not available. Set DATABASE_URL to use this page.

Loading…

No rows match the current filters.

Provider summary

No providers match the current filters.

Provider Patient count Has future appt count Retained % Avg appt count Avg days seen Median days seen

Detail

Provider Patient ID Program First appt Last appt Total days seen Appt count Has future appt

Days retained

One row per provider. Each patient is counted once for that provider; programs are combined unless a program is selected. A patient is counted in every column their span with that provider reaches, starting at 2 days, so one patient can appear in all of them. 1 and done is a single-day span with that provider. The percent is that count divided by the provider’s unique patients.

No providers match the current filters.

Provider Total patients seen 1 and done 2–30 days 31–90 days 91–180 days 181–365 days >365 days

AI Summarizer

Enter a Cerbo patient ID, choose chart sources, and send them to Gemini for a clinical summary. The summary is not saved.

1. Patient

Enter a Cerbo patient ID, choose what to pull, then load chart sources.

Name
—
Date of birth
—
Patient ID
—
Include
Document folders

Find the patient to list folders. Contracts, releases, consents, insurance, and billing start unchecked.

Date range (optional)

Leave the dates blank to include every date. A range keeps labs from collection dates in that range.

2. Data to send

This list is limited to the types, folders, and dates chosen above. Preview opens the original file when Cerbo has one, or the full chart text. PDF and common images are sent as the original file. TIFF is converted to PDF, and Word is sent as the document text. Other rows without synced text cannot be sent.

Load a patient to see chart sources.

Send Type File type Title Date Preview

3. Summary

Choose a prompt or write your own. You can edit the text before sending. Name and date of birth from the chart are added to every Gemini request. This is decision support, not orders.

Select sources, then get a summary.

Create Cerbo note

Sends this summary to Cerbo as an encounter note. You can edit the text before sending.

Preview

AI Chat

Enter a Cerbo patient ID, choose chart sources, and ask questions about that chart. Gemini reads the chart once. Ending the chat deletes that context cache.

1. Patient

Enter a Cerbo patient ID, choose what to pull, then load chart sources.

Name
—
Date of birth
—
Patient ID
—
Include
Document folders

Find the patient to list folders. Contracts, releases, consents, insurance, and billing start unchecked.

Date range (optional)

Leave the dates blank to include every date. A range keeps labs from collection dates in that range.

2. Data to send

This list is limited to the types, folders, and dates chosen above. Preview opens the original file when Cerbo has one, or the full chart text. PDF and common images are sent as the original file. TIFF is converted to PDF, and Word is sent as the document text. Other rows without synced text cannot be sent.

Load a patient to see chart sources.

Send Type File type Title Date Preview

3. Chat

Model: …

Instructions are sent with the chart when the chat starts. A chat that is already open keeps the instructions it started with. End chat deletes the context cache.

Instructions

Status:

Select sources, then start the chat.

Preview

Patient visits

1. Today's visits

User:

Loading today's visits…

No appointments today.

Time Patient Type Last visit

2. Recent activity

Load a patient to see the last 7 days.

Loading activity…

When Type Provider
When Type Title
When Type Reading
When From Subject

3. Saved summaries/notes

Load a patient to see encounter notes and saved summaries.

Loading notes…

Title By When
Title By When

Select an encounter note.

Record the visit, then transcribe and write the note.

1. Patient

The patient ID at the top of the page is used here.

Name
—
Date of birth
—
Patient ID
—
Refine data sources

Defaults load with the patient. Change types, folders, or dates, then refresh.

Include
Document folders

Contracts, releases, consents, insurance, and billing start unchecked.

Date range (optional)

Leave the dates blank to include every date. A range keeps labs from collection dates in that range.

2. Data to send

Sources appear here when a patient is loaded.

Send Type File type Title Date Preview

3. Summary

Select sources, then get a summary.

Model: …

Instructions are sent with the chart when the chat starts. A chat that is already open keeps the instructions and files it started with.

Instructions

Status:

Select sources, then start the chat.

1. Transcript

Choose a saved recording, or the transcript currently in the Meet tab if it was not saved.

Loading transcripts…

No transcripts yet.

When Room Recording Preview

2. Background reviewed

Optional. The patient ID at the top of the page is used here. Checked sources are summarized at the top of the note.

Name
—
Date of birth
—
Patient ID
—
Refine data sources

Defaults load with the patient. Change types, folders, or dates, then refresh.

Include
Document folders

Contracts, releases, consents, insurance, and billing start unchecked.

Date range (optional)

Leave the dates blank to include every date. A range keeps labs from collection dates in that range.

Sources appear here when a patient is loaded.

Send Type File type Title Date Preview

3. Write the note

The note is one text document. It is not saved in the portal. Copy it, or send it to Cerbo as an encounter. Revisions from the chat below replace this note.

Use {transcript} where the transcript should be inserted. A refresh restores the built-in prompt.

4. Revise the note

Ask Gemini to change the note above. Create Cerbo note sends that note, not this chat. Generate starts a new note and ends this chat. Leaving this tab or ending the chat deletes the context cache and keeps the note.

Instructions

Status:

Generate a note, then send a change.

Transcript

Create Cerbo note

Sends the note above as one Cerbo encounter. It is not stored in the portal.

Save summary

Secure message

Preview

Operations

Utilization and CRM for operations.

Open Utilization, Lab Calculations, CRM, Tasks, or Task Templates from the submenu.

Utilization

Utilization is not available. Set DATABASE_URL to use this page.

Loading…

Ave Patient Hrs % (T13 WKs) —
Ave Meeting Hrs % (T13 WKs) —
Ave Total Hrs % (T13 WKs) —

No provider or appointment data for utilization.

Capacity by Provider

Loading…

No capacity data.

Capacity by Provider Type

Loading…

No capacity by type data.

Patient Hours by Provider Type

Loading…

No patient hours by type data.

Forecasted Hours

Eight weeks starting next week. Work hours, patient appointments, and internal meetings match the utilization table. Patient forecast is the trailing-90-day weekly rate for patients this provider met in the last 45 days, on their most recent program, and only for weeks when that patient is not already booked. Programs All, Group, DXA, and None are left out.

No forecast data.

Forecast Detail

Each row is the hours one patient adds to Patient Forecast for that week.

No forecast detail.

Case Loads

Case Loads are not available. Set DATABASE_URL to use this page.

Loading...

Provider by month

July 2025 through the current month plus two months. Patient count is distinct patients per provider per month.

No provider rows in this date range.

Program hours by provider

Last week, this week, and the next 13 weeks (same window as Utilization). Patient Hours is the sum of Utilization patient hours. Program columns are raw appointment hours plus intake admin time for that program.

No provider rows in this window.

Summary Data

No summary rows found.

Provider Patient ID Month Appt Count by Month

Detailed Data

No case load rows found in appointments.

Provider Patient ID Appointment Type Program Month Appt Count by Month Total Duration by Month

Follow-up Appt

Shows, for completed patient-treatment visits, how many have a follow-up appointment scheduled within one business day (and how many do not). A program All visit, such as TRM, counts as that follow-up for the same provider and patient. Use the program filter to switch between programs, and the period filter to switch the summary window (same presets as CRM Reporting).

Follow-up Appt is not available. Set DATABASE_URL to use this page.

Loading...

Showing this month.

Summary Data

No completed appointments in this window.

Provider Completed Has follow-up Rate

Detailed Data

No completed patient-treatment appointment rows found.

Provider Program Patient ID Appointment Type Date Has Follow-up Appt

Custom date range

Applies to the Follow-up Appt summary and detailed tables (appointment date).

Monthly Plans

Define a monthly program, then enroll patients onto it. Appointment hours use 4.33 weeks per month. Team meeting hours are tracked separately.

Loading...

Programs

One row per program. Provider-type columns are appointment hours only. Team meeting hours are not included in those columns.

No monthly programs yet.

Patients

Assign named providers to each role on the program when you add a patient.

No patients on a monthly plan yet.

Patient ID Monthly program Start date End date Providers Actions

Hourly rates

Each rate is optional. A person needs at least one. Blank means they do not sell that visit.

No hourly rates yet.

Name 30 min 60 min Intake 60 Intake 90 Actions

Add monthly program

Program name Price

Enter the monthly price. Hours below are a tally and do not set the price.

Appointments

One row per visit. Travel adds 60 minutes for an at-home visit and is included in the hours tally.

Team meetings

One row per meeting. Check each role that attends. Named people are chosen when a patient is enrolled.

Add patient

Patient ID Program Start date End date

End date fills in 30 days after the start date. You can change it.

Providers

Team Huddles

Patients with more than one provider from cerbo_sync.provider_key over a 60-day window (±30 days from today). Counts include non-cancelled patient-treatment appointments only.

Team Huddles is not available. Set DATABASE_URL to use this page.

Loading...

Required Huddle Time per Week

Minimum weekly recurring meeting time to cycle every patient through a care-team huddle at the required cadence:

  • Monthly programs (ECP, FSP, WP): 15 min/patient, once per month.
  • IND: 10 min/patient, once per 3 months.
  • Aurora (AU): 15 min/patient, once per week (2 patients per 30-min meeting).
Huddle Type Patients Min Weekly Meeting Time Required Care Team Members

Huddle Cohorts & Meeting Times

Schedule of patient reviews by cohort (one 30-minute meeting = up to two 15-minute or three 10-minute reviews). Meetings use weeks 1–13. Non-Aurora huddles are capped at 60 minutes/week; Aurora (labeled AU) is uncapped but clinicians are never double-booked across meetings. Standard meetings need >50% care-team overlap (full when possible). Aurora requires psychiatrist(s) plus at least one psychologist/therapist; times are chosen to maximize those roles first, then other care-team members as tiebreakers. Missing Huddle lists members not available for that slot.

Loading cohorts...

No cohorts to display.

Huddle Calendar

Scheduled huddles placed on their actual dates. Week 1 is next week from today, extending across the full 13-week window.

No patients with multiple providers in this window.

Patients with Multiple Providers

Payment Audit

Billable program patients (Aurora, WP, ECP, FSP, IND, Foundations, AA, EA, CA) with completed appointments in the trailing 60 days or scheduled appointments in the next 30 days. Last appt is the most recent completed visit for that program; next appt is the earliest scheduled visit. Upcoming starts with no payment are highlighted — patients should pay before starting.

Payment Audit is not available. Set DATABASE_URL to use this page.

Loading…

No qualifying patients in this window.

No patients match the current filters.

Patient
ID
Program Pay
frequency
Timing Last
appt
Next
appt
Days since
payment
Last
payment
Last payment
amount

Group Attendance

Distinct patient attendees per Group program appointment type for the trailing 13 completed weeks. Columns are Monday week-start dates, oldest week first. Attendance includes only checked-in and checked-out patient-treatment appointments. Active is True when that appointment type is scheduled for anyone at a future time. Provider lists each unique person who has that type on a future calendar. Rooms and other resources are omitted.

Group Attendance is not available. Set DATABASE_URL to use this page.

Loading...

No Group patient-treatment appointment types were found.

Provider Availability

Half-hour slots from 9:00 AM–4:30 PM (Eastern). Providers come from cerbo_sync.provider_key (active start_date / end_date only). Gray cells are outside that provider’s scheduled days or hours. Other cells: open, booked, or admin. Default range: today plus the next five business days (weekends skipped).

Provider Availability is not available. Set DATABASE_URL to use this page.

Loading...

No providers found.

Retention

Completed patient-treatment appointments only (checked-in / checked-out), with program from cerbo_sync.appointments_key. Appointments in programs Group, Lab, None, All, or DXA are excluded. Months run from July 2025 through the current calendar month. 1st and 2nd program use each program’s earliest qualifying appointment (ties by name). Retained is true if the patient had a different program after their first program started, or had the same first program in a later calendar month than their first month in that program.

Loading…

No patient-treatment rows in this month window, or appointments data is empty.

Active patients w/ future appts

Active patients with at least one completed patient-treatment visit in the past and one or more patient-treatment appointments in the next 60 days. Days in practice use the first completed patient-treatment appointment. Visits with program LAB, NONE, ALL, or DXA are excluded; GROUP is included.

No active patients match these criteria.

Summary by days in practice

Measure < 60 days 60–180 days 180–365 days > 365 days Total

Patient ID Status First appt Last appt Next appt

Past patients w/ no future appts

Patients with at least one completed patient-treatment visit in the past and no future patient-treatment appointments scheduled. Days in practice use the first completed patient-treatment appointment. Visits with program LAB, NONE, ALL, or DXA are excluded; GROUP is included.

No patients match these criteria.

Summary by days in practice

Measure < 60 days 60–180 days 180–365 days > 365 days Total

Patient ID Status First appt Last appt

Summary by first program

No patients with a first appointment in this period.

Program Count (1st program) Count (retained) % retained

Patient detail

No patients match the current filters.

Active without future treatment

Active patients (patient_status_description in cerbo_sync.patients) with at least one completed patient-treatment visit in the past and no future patient-treatment appointment scheduled. Visits with program LAB, NONE, ALL, or DXA are excluded; GROUP is included.

Loading…

No active patients match these criteria.

Patient ID Last completed appt Last provider Last appt type All programs All providers Outreach owner

Retention by time from first treatment

Start date is the patient’s first completed patient-treatment appointment. A threshold is true when the patient has a non-cancelled, non-no-show patient-treatment appointment on or after that date; it remains blank until the patient has reached the threshold. LAB, NONE, ALL, and DXA are excluded; GROUP is included.

No qualifying patients found.

Summary

Measure < 60 days 60 days 90 days 180 days 365 days

Patient ID Start date 1st program 2nd program 60 days 90 days 180 days 365 days

CRM

CRM is not available. Set DATABASE_URL to use CRM.

Owner Related Type Task source Due Description Status

No pending actions.

Name Status Source Qualified lead Home state Hear about Referrals Tags Last engagement Created Date

No contacts. Add one to get started.

Referrers engaged

Name Engagement

No referrers engaged in this period.

Name Email Phone Website Status Tags Contact count

No organizations yet.

First name Last name Source Patient is my Hear about Submitted First response Method Response time

No Jotform submissions yet.

Showing all dates.

Patients

Count % of total

Referrers

Count % of total

Patients by state

Metric MA state FL and VT Non-licensed state No state found Total % to Total

Patients – Closed Reasons

Count % of total

Patient count by source

Count % of total

New deposits

Summary

Service name Count % of total

Detailed

Patient ID Service name CRM created Deposit date Date of service

No deposits found.

Contact

Sticky notes

Misc info

Tags

No tags yet.

No items yet.

Include in summary

Contact primary and misc info is always included.

Organization

Sticky notes

Misc info

Tags

No tags yet.

No items yet.

Edit patient misc info

Cerbo patient ID is matched from this contact’s email to the patient’s primary email in Cerbo (email1). It cannot be edited here.

Edit referrer misc info

Employer is set via Associations (type Employment). Edit referrer profile fields here.

Edit organization misc info

Manage tags

Assign tags

No categories yet.

Create tags

Edit / delete

Custom date range

Applies to all summary tables and New deposits (created date for leads; deposit date for deposits).

Filter list

Choose options below, then Apply filters. A row matches if it has any of the selected tags. Use Clear all to show the full list again.

Tags
Tags

Add association

Edit note

Leave blank to use today’s date.

Edit task

Add contact

Uses whichever of Patients / Referrers is the active CRM tab.

Add task

Import CSV

Upload a CSV. The first row must be headers. See the template for allowed columns.

Allowed values for constrained columns

Columns not listed here are normalized on import (for example names are title-cased, phones formatted). Enum columns accept any case but must match an allowed value.

Add organization

This organization has suborganizations. Remove or reassign them before assigning a parent.

Create the top-level organization first, then add departments.

Admin

Control who can see which parts of the MH² Portal.

Admin access is required to view this page.

Portal access overview

Assign roles to users, then set which primary views each role can see. Portal Lite staff typically need home and operations.

Core roles
adminleadershipoperationsprovider
Primary views
homeleadershipoperationsprovideradmin

Users

Add first and last name (optional), assign roles, and set the Tasks board initials color. Use Edit to change an existing user.

Add user
?

Color of this person’s initials on the Tasks board.

Roles

Check every role this user should have (you can select more than one).

Role Views

Control which primary pages each role can access.

Edit role visibility

Comma-separated — valid: home, leadership, operations, provider, admin.

Edit user

Email

?

Used for this person’s initials on the Tasks board. Automatic picks a color from their email.

Roles

Names are optional. Circle color is used on the Tasks board. Check every role this user should have. Use Delete user to remove all roles for this email.

Labs

Active patients who have at least one lab result or one file in the Labs folder. Lab results is how many separate results are in the database: readings saved to the chart at the same time count as one result (ten analytes from one draw are one result). Chart vitals such as glucose, ketones, and sleep are not included. Labs folder is how many files are in the Labs folder under Documents. Lab Requisition Form and Lab Request are not included. Received filters both columns by the date the result or file was received.

Parse into the lab table

Enter a patient ID, a received-date range, or both, then click Go. A patient ID alone parses that patient's JSON and Labs-folder files. Add dates to limit that patient, or leave the patient blank to parse every patient in the dates. JSON lab results are read from the database. PDF reading sends Labs-folder files to Gemini, except Lab Requisition Form and Lab Request. Parsed rows are saved and shown below. Run a wider range later to add older results.

Patient ID
JSON lab results
PDF reading (Gemini)
Gemini prompt

No rows were parsed for that date range.

Patient ID Date Metric Value Units Acceptable range Result vs range Source

Metric summary

Every metric in the stored lab table. Normal range is the range printed most often for that metric. Average and median use numeric values. Out of range counts results marked high, low, critical, or abnormal.

Loading…

No metrics in the lab table yet.

Metric LOINC Normal range Total count Out of range Out of range % Average Median

Reading detail

Each reading counted in the metric summary, with the patient and the date it was received.

Loading…

No readings match these filters.

Patient ID Received date LOINC Metric Value Interpretation

Labs is not available. Set DATABASE_URL to use this page.

Loading…

No active patients with a lab result or a Labs-folder file.

Patient ID Lab results Labs folder
Total 0 0

Provider

Clinical tools for providers.

Open Labs, Treatment Plans, Meeting, AI Summarizer, or AI Chat in the Provider menu.

Meeting

Create a reusable meeting room, record audio to cloud storage, then transcribe with Google Speech-to-Text or AssemblyAI. Guests join via share link (display name only). Host must sign in and join before recording.

Live meetings are available Monday–Friday, 8:30 AM – 5:30 PM Eastern. Outside those hours the video server is offline — start/join will not work until the next scheduled window.

1

Meeting room & record

Create a room, open it as host, then start recording (audio to GCS for transcription).

Room name Link Action
2

Select file to transcribe

Upload an audio file, or select a past recording from a room in step 1.

Or select a past recording

Recording Started Status Action

Recording

3

Transcribe

Select a recording or upload a file in step 2 to enable transcription.

4

Clinical note

Complete transcription first, then generate a SOAP note or visit summary.

Output is temporary — edit, copy, or send to Cerbo as an encounter note. Nothing is saved in the portal database.

Product

Use {transcript} where the session transcript should be inserted.

Create Cerbo note

Sends the current SOAP or visit summary to Cerbo as an encounter note. Patient ID and encounter type are required. Other fields are optional.

Share recording

Grant access to another portal user. They will see it in Shared recordings on their Meeting page after they sign in. They can play, transcribe, and generate notes. They cannot delete the recording or join your room as host.

People with access

    Treatment Plans

    Review signed plans or start a new structured plan on the Create tab (patient ID first).

    Treatment Plans require a configured database (DATABASE_URL).

    Loading…

    Plan actions

    Patients with Patient-Treatment appointments in the last 30 days (or next 15 days) who need a plan created, care-team contribution, or outcomes scoring. Owner email comes from wiki_user_provider_map.

    Submitted plans

    Filter by who created the plan or by patient ID. Open PDFs for signed plans; drafts can be reopened from the table.

    Start a new plan

    Enter a patient ID and click Load plan to pull Cerbo reference data. The plan fields below are always visible; they update after a successful load.

    Treatment plan

    Patient name, DOB, and chart ID appear here after you click Load plan.

    Background information

    Cerbo sync and reference data — confirm in chart before documenting.

    Cerbo demographics, treatment team, encounter diagnoses, active medications, and active supplements load here after you load a patient. Use as reference only; confirm in chart.

    Treatment plan inputs

    Dates, diagnoses, and long-term goals for this review cycle.

    Diagnoses

    Auto-populated from Cerbo (read-only). Remove any that are no longer active.

    Long-term goals

    Broad outcomes that may span multiple treatment-plan periods—not limited to goals you will fully complete within this review cycle.

    Active plan

    Document problems, short-term goals, and interventions for concerns you are actively treating during this plan period—targets you expect to move during this review cycle.

    Problems & short-term goals

    Select problems that have ever applied for this patient (History) and which are actively treated on this plan (Active). Only Active problems get short-term goals underneath.

    Active interventions

    Assign each intervention to one or more numbered short-term goals.

    Maintenance plan

    List ongoing treatments that maintain clinical gains and support stability—e.g. medications or supports continued after acute improvement. These are not tied to short-term goals.

    Each maintenance intervention must be linked to an initial problem from the standard list (required before signing), even when that problem is not on your active problem/goal list for this plan.

    Care team

    Use Save changes to store plan edits only. When your review is done, check your box and click Route plan (checking alone does not route). The plan owner routes first to open a 7-day window for other clinicians. Only the plan owner may Sign plan, which locks the document and generates the PDF.

    Plan outcomes

    Enter a patient ID to list their treatment plans, then open a plan to record implementation scores and problem trajectories.

    Keto Tracker

    Patients with the Keto Diet tag and/or a ketone custom vital reading (Ketones urine/blood, GKI). Latest glucose, height, and weight are included when present. Filter last ketone reading by type.

    Keto Tracker requires a configured database (DATABASE_URL).

    Loading…

    Active keto summary

    Among patients in the list below who are Active Keto: a non-cancelled, non-no-show patient-treatment appointment in the last 15 days or scheduled in the future. Last-week ketosis counts use blood ketones (highest numeric reading in the last 7 days). Nutritional ≥ 0.5, therapeutic ≥ 1.0, negative = had a blood reading and max < 0.5. “Keto tag, no reading” is tagged Active Keto patients with no ketone reading of any type in that week.

    Active patients Keto tag N-ketosis last week (≥0.5) T-ketosis last week (≥1.0) Negative ketosis last week (<0.5) Keto tag, no reading last week

    No patients with a Keto Diet tag or ketone reading.

    Patient ID Keto tag? Active Keto First reading date Last reading date Last reading value Glucose Height Weight

    Ketosis Analysis

    Rules

    • Uses blood ketones only (highest reading per calendar day). Patients need at least one blood ketone reading.
    • Nutritional ketosis: daily max ≥ 0.5 mmol/L. Therapeutic ketosis: daily max ≥ 1.0 mmol/L.
    • % of readings: share of days (with a blood ketone reading) that meet each threshold. Readings is the number of days with a blood ketone reading (the denominator).
    • Longest streak: longest run of days meeting the threshold, measured as calendar days from first to last day of the run (end − start) + 1. A day below threshold breaks the streak; gaps with no reading do not. Readings counts daily readings whose dates fall in that streak window (N / T).
    • Current streak: only if the most recent reading day meets the threshold and is within the last 7 days; then the day-span of that ongoing run. Otherwise blank. Readings counts daily readings in that current streak window (N / T).

    Loading ketosis analysis…

    No patients with blood ketone readings.

    Patient ID % of readings Longest streak Current streak
    % nutritional ketosis % therapeutic ketosis Readings Nutritional ketosis Therapeutic ketosis Readings (N / T) Nutritional ketosis Therapeutic ketosis Readings (N / T)

    Keto recovery

    Patients who had a blood ketone daily max ≥ 0.5, then later a daily max < 0.5. Recovery reading is the next daily max ≥ 0.5 after that drop (blank if they have not returned yet). Days to recover is calendar days from the first below-0.5 day to that recovery day. A patient can appear more than once if they dropped more than once.

    No patients who dropped below 0.5 after a reading ≥ 0.5.

    Patient ID Dropped below 0.5 Drop reading Recovery date Recovery reading Days to recover

    Vitals over time

    Enter a patient ID to chart ketone, glucose, and weight readings. Toggle the series below the chart.

    No readings for this series.

    Tasks

    Task board is not available. Set DATABASE_URL to use the task board.

    Status

    No tasks match the current filters.

    Owner
    Label
    Priority
    Status
    Due
    Open tasks

    No projects match the current filters.

    Drag rows to reorder within the same priority.

    Rank Project Labels Owner Due date Priority Open tasks

    Add card

    Assignees

    Blocked until that task is complete. Due date is set on unlock.

    Add the card first, then you can add a checklist.

    Add the card first, then you can attach files or links.

    Description
    Details

    Comments

    Comments will be available after you add this card.

    Edit card

    Assignees
    Prerequisite
    — None —

    Description
    Details
    Attachments

    Comments

    Labels

    Select labels for this card. Use Manage actions below to edit the shared catalog.

    No labels yet.

    Add label
    #61bd4f

    Edit project

    Choose prerequisite

    Filters
    Search
    Task title

    No tasks match these filters.

    Upload tasks CSV

    Download the template, fill in rows, then upload. Assignees must be portal emails (semicolon-separated). Lists and labels are created if they do not already exist.

    Aurora-Hrs

    Paid Aurora months from aurora.xlsx (patient, program month, tier, start/end). Patient hours are Patient-Treatment and Patient-Info appointment duration whose date falls in that row’s start–end range. Weekly average is those hours ÷ 4.33. Total charges are Aurora program charges (amount > 0): first month is all such charges on or before the first start date; later months are after the prior month’s start and before this month’s start. Months whose start date is not in 2026, or is in the future, are omitted. The period filter keeps months whose start date falls in the selected range.

    Aurora-Hrs is not available. Set DATABASE_URL to use this page.

    Loading…

    Showing all dates.

    Paid months

    No paid months in this period.

    Patient
    ID
    Program
    month
    Tier Start
    date
    End
    date
    Patient
    hrs
    Weekly
    avg
    Total
    charges

    Hours by provider type

    One row per paid month. Patient-Treatment and Patient-Info hours by primary provider type from provider_key (unmatched = Other).

    No paid months in this period.

    Appointments

    Patient-Treatment and Patient-Info appointments whose date falls in a paid month’s start–end range.

    No appointments in this period.

    Patient
    ID
    Program
    month
    Date Provider Provider
    type
    Appointment
    type
    Hours

    Custom date range

    Keeps paid months whose start date falls in this range.

    Sales by program and month

    Loading…

    Charges by name (per program)

    Loading…

    Help — Operations

    This help section provides a quick overview of each page in the Operations menu.

    Utilization

    Provider utilization by week, plus capacity and patient-hours views.

    • Trailing-13-week averages (patient / meeting / total hrs %)
    • Weekly grid by provider; Show History back to clinic open (Jul 21, 2025)
    • Capacity by Provider, Capacity by Provider Type, Patient Hours by Provider Type

    Data source / refresh: Reads cerbo_sync (appointments / providers). Cerbo Sync Cloud Run job runs daily overnight. Portal caches this report for about 12 hours.

    Case Loads

    Patient volume by provider over months.

    • Matrix: Jul 2025 → current + 2 months (distinct patients per provider/month)
    • Summary and Detailed tables with filters; sortable detail; CSV Export

    Data source / refresh: cerbo_sync appointments. Cerbo Sync daily overnight. Portal cache about 12 hours.

    Follow-up Appt

    Completed patient-treatment visits and whether a follow-up is scheduled within 1 business day (same program, or program All such as TRM).

    • All programs except None, All, Lab, and DXA; use the program filter to toggle one program or all
    • Loaded window: current month + three prior months (covers T90)
    • Period filter (same presets as CRM Reporting: week/month/T7/T30/T90/custom)
    • Summary by provider (completed, has follow-up, rate) + detail; CSV Export

    Data source / refresh: cerbo_sync. Cerbo Sync daily overnight. Portal cache about 12 hours.

    Team Huddles

    Patients with more than one active provider_key provider in a ±30-day window (60 days total).

    • Non-cancelled patient-treatment appointments only
    • Programs: ECP/FSP/WP (monthly), IND (quarterly), Aurora/AU (weekly)
    • CSV Export

    Data source / refresh: cerbo_sync. Cerbo Sync daily overnight. Portal cache about 12 hours.

    Monthly Plans

    Catalog of monthly programs and the patients enrolled on them.

    • Program: name, monthly price, appointments by provider type (duration, recurrence, optional 60-minute travel), and team meetings with attendee roles
    • Hours/month use 4.33 weeks. Team meeting hours stay in their own column
    • Hourly rates are 30-minute, 60-minute, intake 60, and intake 90. Each rate is optional, and a person needs at least one
    • Custom drafts price 30-minute, 60-minute, intake 60, and intake 90 appointments from those rates. Huddles use the 60-minute rate. Extras are flat fees, and a fee can be saved to reuse on another patient. An optional percent discount can lower the total, and the final price can be edited before the draft is saved. Saved drafts can be assigned on the Patients tab
    • Enroll a patient with ID, program, start date, and end date, and assign named providers to each role

    Data source / refresh: portal.monthly_programs, portal.monthly_custom_plans, portal.monthly_plan_hourly_rates, and related tables. Hourly-rate names come from portal.users. Provider names on catalog enrollments come from cerbo_sync.provider_key. Saved immediately; no report cache.

    Group Attendance

    Distinct Group attendees by appointment type × week.

    • Trailing 13 completed weeks (Monday week-starts)
    • Counts checked-in and checked-out only

    Data source / refresh: cerbo_sync. Cerbo Sync daily overnight. Portal cache about 12 hours.

    Payment Audit

    Billable-program patients vs payment timing.

    • Programs: Aurora, WP, ECP, FSP, IND, Foundations, AA, EA, CA
    • Completed in last 60 days or scheduled in next 30 days
    • Highlights upcoming starts with no payment; filters + CSV Export

    Data source / refresh: cerbo_sync (appointments + charges). Cerbo Sync daily overnight. Portal cache about 12 hours.

    Provider Availability

    Half-hour schedule grid for active providers.

    • 9:00 AM–4:30 PM ET; today + next 5 business days
    • Cells: open / booked / admin / gray (off schedule)
    • Day tabs; Refresh bypasses portal cache; Export CSV

    Data source / refresh: cerbo_sync + provider_key. Cerbo Sync daily overnight. Portal cache about 12 hours unless you click Refresh.

    Retention

    Program retention from completed patient-treatment visits.

    • Main matrix excludes Group, Lab, None, All, DXA; months Jul 2025 → now
    • 1st/2nd program, retained %, patient detail filters, Export CSV
    • Active without future treatment (outreach owner); GROUP included there; LAB/NONE/ALL/DXA excluded

    Data source / refresh: cerbo_sync (+ outreach owner mapping). Cerbo Sync daily overnight. Portal cache about 12 hours.

    Lab Calculations

    On-demand biomarker calculators for a patient.

    • Enter Patient ID → load labs → PhenoAge2, FIB-4, HOMA-IR
    • Dates and fields can be edited after load to recalculate

    Data source / refresh: cerbo_sync.lab_results on each Load. Cerbo Sync daily overnight. Not on the 12-hour report cache.

    CRM

    Contacts, organizations, activity, intake, and CRM reporting.

    Main tabs

    • Patients / Referrers — searchable lists; filters; bulk delete/export; open a row for the detail shell
    • Organizations — org list with parent/child hierarchy
    • Actions — pending tasks across contacts/orgs (filter by owner / task source)
    • Jotforms — submissions with first-response and business-hours response time (Mon–Fri 9–5 ET)
    • Reporting — period filter (week/month/T7/T30/T90/custom): patient & referrer lead counts, closed-reason tags, patients by source, new deposits from Cerbo charges

    Contact / org detail

    • Banner: name, type, email, phone; Edit for profile fields
    • Sticky notes — always-visible sidebar scratchpad (separate from activity notes)
    • Misc info — status, source, hear-about, qualified lead, Cerbo patient id/status (Patients), referral count & employer (Referrers), etc.
    • Tags — categories scoped to patient / referrer / org / shared (e.g. closed-reason)
    • Activity tabs: Notes, Tasks, Emails, Calls, Associations, AI (contacts only — summarize notes/emails into an informational note)

    Notes — Engagement vs Informational

    When you + Add note (or edit), set Note type:

    Type Use for Effect
    Engagement Real outreach touches (calls, emails you document, meetings, follow-ups) Counts toward Last engagement; can auto-move a Patient from New → Engaging
    Informational Context that should not count as outreach (Jotform intake text, referral clinical details, internal reminders) Does not update Last engagement or trigger New→Engaging

    Optional Note date defaults to today. Jotform ingest stores intake dumps as Informational.

    Associations — linking contacts & orgs

    Use Associations → + Add association (do not rely on free-text alone to connect people).

    Type Links What it does
    Referral Contact ↔ contact (typically Patient ↔ Referrer) Drives Referral count on referrers and Reporting
    Relative/Friend Contact ↔ contact Family/friend relationship
    Employment Contact → Organization Shows as employer on the contact (e.g. referrer misc)
    Parent org / Sub org Organization ↔ organization Hierarchy (stored on the org)

    How to sync two contacts: open one contact → Associations → choose type → pick the other contact (or org) → Save. Click a linked name to open the other record. Jotform Referral submissions auto-create the Patient, Referrer, and a Referral association (plus an Informational note on the patient).

    Tasks

    • Categories: Meeting, Outreach, Other; owner + due date
    • Toggle complete from the Tasks tab or clear via Actions
    • Jotform outreach tasks can auto-complete when intake sees a matching outbound email or phone touch after submission

    Emails & Calls

    Read-only activity matched by the contact’s email / phone to intake Gmail and phone tables (not typed in manually).

    Status

    Shared keys: New, Engaging, Active, Closed. Patients in New auto-promote to Engaging when an engagement signal appears (engagement note, matching email, or matching call).

    Import / export

    CSV import & export for contacts; field reference in the import UI. Bulk export from list checkboxes.

    Data source / refresh: CRM contacts, notes, tasks, tags, and associations are live in the portal DB. Cerbo-backed pieces (patient match / status, Reporting new deposits) update after Cerbo Sync (daily overnight). Jotform contacts, Gmail, and phone legs come from intake / related Cloud Run jobs (daily overnight). Not on the 12-hour operations report cache.

    Tasks

    Shared work board and table for lists, assignees, projects, and labels.

    • Views: Home (lists), Assignee, Project, Label, Unassigned, and table views
    • Drag cards between columns; Upload CSV to import tasks

    Task Templates

    Playbooks that generate a set of Tasks board cards for a patient.

    • Define steps, roles, and due-date offsets
    • Preview, then generate onto the template’s shared project

    Labs

    Active patients, with a count of lab-result batches and a count of files in the Labs documents folder.

    • Patient ID — active patients who have at least one lab result or one Labs-folder file. Both counts at zero are omitted.
    • Lab results — sets of readings in cerbo_sync.lab_results. Readings saved at the same time count as one result. Chart vitals are not included.
    • Labs folder — files in cerbo_sync.documents whose folder is Labs. Subfolders Lab Requisition Form and Lab Request are not counted, and they are not sent to Gemini.
    • Received — All, T30 days, T90 days, or T180 days. Lab results use the date saved to the chart. Files use the document created date (Eastern).
    • Parse into the lab table — patient ID, a received-date range, or both, then Go. A patient ID alone parses that patient's JSON and Labs-folder files. Dates limit the run; a date range with no patient ID covers every patient. JSON is read from the database. PDFs in the Labs folder are read with Gemini, except Lab Requisition Form and Lab Request. Open Gemini prompt to read or edit the instructions before Go.
    • Metric summary — one row per metric in the stored lab table: LOINC, the most common printed range, total count, out-of-range count, out-of-range percent, average, and median. Out of range is high, low, critical, or abnormal. A long metric name is shortened in the first column; hover shows the full name. Click a LOINC to open the reading detail filtered to that code.
    • Reading detail — one row per reading in that summary: patient ID, received date, LOINC, metric, value, and interpretation (high, low, normal, and so on). Filter by LOINC, received-date range, and patient ID.

    Data source / refresh: cerbo_sync.patients, cerbo_sync.lab_results, and cerbo_sync.documents on each open. Cerbo Sync daily overnight. Not on the 12-hour report cache.

    Plan outcomes

    Add interventions

    Choose options from the catalog or add custom lines below. The button label updates for active versus maintenance interventions.

    Select problems

    For each problem, check History if it has ever applied for this patient, and Active if it is being treated on this plan. Checking Active also marks History. Goals are created only for Active problems. No limit on how many you select.