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…
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.
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).
| Title | Assignee | Due | Requires | Offset (biz days) |
|---|
Templates
Steps
| Order | Title | Requires | Roles | Biz days | Active | Actions |
|---|
Recent runs
| When | Template | Patient | Start | Tasks | By |
|---|
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.
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.
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.
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).
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
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.
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.
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.
PDF/Word use the current edited values. These review-table changes are not saved.
CPT catalog (dropdown options)
Source table cerbo_sync.cpt_code_catalog. These options drive the review-table CPT dropdown (code + description linked).
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. Include former providers so historical superbills still resolve.
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).
Record Audit
Summary by provider (all eligible patients): only patients with at least one past patient-treatment appointment are included (current or former treatment patients). Each percentage is the share of that provider’s encounters in scope where the check passed (intake is patient-level: any encounter title contains “intake”; other checks use assessments, date of service, created date, and signed date).
Summary by provider
Encounter detail
Outcome questionnaires — summary
Outcome questionnaires — detail
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, and DXA 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 and avg days seen also use unique patients as the denominator: with Program = Any, each patient’s visits across programs are combined first; with a program filter, only that program’s visits are used.
Provider summary
| Provider | Patient count | Has future appt count | Retained % | Avg appt count | Avg days seen |
|---|
Detail
| Provider | Patient ID | Program | First appt | Last appt | Total days seen | Appt count | Has future appt |
|---|
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.
Find the patient to list folders. Contracts, releases, consents, insurance, and billing start unchecked.
Leave the dates blank to include every date. Labs have no chart date, so a range leaves labs out.
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.
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.
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.
Find the patient to list folders. Contracts, releases, consents, insurance, and billing start unchecked.
Leave the dates blank to include every date. Labs have no chart date, so a range leaves labs out.
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.
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.
Operations
Utilization and CRM for operations.
Open Utilization, Lab Calculations, CRM, Tasks, or Task Templates from the submenu.
Utilization
Capacity by Provider
Capacity by Provider Type
Patient Hours by Provider Type
Case Loads
Provider by month
July 2025 through the current month plus two months. Patient count is distinct patients per provider per month.
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.
Summary Data
| Provider | Patient ID | Month | Appt Count by Month |
|---|
Detailed Data
| 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).
Summary Data
| Provider | Completed | Has follow-up | Rate |
|---|
Detailed Data
| Provider | Program | Patient ID | Appointment Type | Date | Has Follow-up Appt |
|---|
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.
Programs
One row per program. Provider-type columns are appointment hours only. Team meeting hours are not included in those columns.
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.
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.
Huddle Calendar
Scheduled huddles placed on their actual dates. Week 1 is next week from today, extending across the full 13-week 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.
| 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.
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).
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.
Active patients w/ future appts
Past patients w/ no future appts
Patient detail
Active without future treatment
Retention by time from first treatment
CRM
| Name | Status | Tags | Last engagement | Created Date |
|---|
No contacts. Add one to get started.
Admin
Control who can see which parts of the MH² Portal.
Portal access overview
Assign roles to users, then set which primary views each role can see.
Portal Lite staff typically need home and operations.
Users
Add first and last name (optional), assign roles, and set the Tasks board initials color. Use Edit to change an existing user.
Role Views
Control which primary pages each role can access.
Provider
Clinical tools for providers.
Open 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.
Meeting room & record
Create a room, open it as host, then start recording (audio to GCS for transcription).
| Room name | Link | Action |
|---|
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 |
|---|
Transcribe
Select a recording or upload a file in step 2 to enable transcription.
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.
Use {transcript} where the session transcript should be inserted.
Treatment Plans
Review signed plans or start a new structured plan on the Create tab (patient ID first).
Submitted plans
Filter by who created the plan or by patient ID. Open PDFs for signed plans; drafts can be reopened from the table.
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.
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 |
|---|
| 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).
| 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.
| 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.
Tasks
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.
Paid months
| 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).
Appointments
Patient-Treatment and Patient-Info appointments whose date falls in a paid month’s start–end range.
| Patient ID |
Program month |
Date | Provider | Provider type |
Appointment type |
Hours |
|---|