Schedule
Click a time to book · click a visit for details
Waitlist 0
Patients who want an earlier or better time. When you book a time — or cancel one — the people it suits are offered first.
Needs approval 0
Bookings outside opening hours. They can't be checked in or dived until approved; declining cancels them.
Staff on shift
Today’s roster
Team
Clock-in networks (admin)
Team directory
Titles — Doctor, Dive tech, Nurse … each can be shown or hidden on the schedule
Roster
Leads
People who called, messaged, emailed, or walked in — track follow-up until they convert to a patient.
Live dive
New conversation
⚠ Nothing here is sent to the patient. This records a message in the chart only — RevivalOS has no messaging transport and no BAA covering patient messaging. Contact the patient by your usual means.
Revenue dashboard
The whole picture — collected, outstanding, aging, and the weekly trend.
Report
Revenue — last 8 weeks
A/R aging
Who hasn't paid
Where patients come from
Checkout — point of sale
Bill a visit or sell a package, adjust prices at the counter, and take payment. Charges + payment post to the patient's account; a package adds its visits to their coverage.
Clinic billing identity
Your practice's billing-provider details — used on insurance claims and clearinghouse enrollment. Clinic business info, not patient data.
Rendering provider
The clinician on the claim's service lines (individual / type-1 NPI).
Clearinghouse (Stedi)
Your Stedi API key, stored encrypted per-clinic. Test-mode only until go-live — the key is never shown back.
Checking…
Billing codes
The procedure / diagnosis codes this clinic bills. Add a row — no rebuild, no migration.
Rate card
Custom cash prices for this patient. Blank = use the list price (with any courtesy discount). Auto-fills at checkout, still editable per line.
Cash pricing
Self-pay list price per service. Set or change it any time — packages and Good Faith Estimates use it. Blank = not sold cash / quote only.
Claims ledger
Every submitted claim with its acknowledgment (277CA) and payment (835). "Sync" pulls the latest responses from the clearinghouse and posts them. Metadata only — no patient data.
Event webhook (real-time posting)
Register this URL as a Stedi event destination so remittances post the instant a 277CA/835 lands — no waiting on the sweep. The endpoint is authenticated by its HMAC signature (Standard Webhooks); set STEDI_WEBHOOK_SECRET to Stedi's signing secret, or it fails closed and rejects every event.
—
Rendering providers
Your clinicians (individual / type-1 NPI). A claim's service lines can bill under different providers (Box 24J). The default rendering provider is set in Clinic identity above.
New insurance claim (CMS-1500)
Fill a professional claim with dropdowns and ⓘ instructions on every box, preview/print the CMS-1500, then submit electronically. Encrypted PHI — real-payer submit is gated until go-live; test-payer transmits now.
⚡ Weekly claim builder
Bill a week of insurance dives in one shot — pulls the selected patient's completed dives for the week and pre-fills the 837P (date span, units = dive count, procedure code, and the authorization number). Review & submit in the editor below.
Network status
Patient statement
A patient's billing statement — charges, insurance payments, and balance due. Preview, then print or mail.
Batch statements
Generate statements for everyone who owes a balance as of a date — a monthly statement cycle. Statements are re-derived from claims on open (nothing is snapshotted); print per patient.
Patient account
Purchases & charges
Good Faith Estimate
No Surprises Act pre-service cost estimate for a self-pay / uninsured patient. Add expected services, then print or issue. Encrypted PHI.
Insurance & eligibility
A patient's insurance (encrypted PHI). "Check" runs a live 270/271 eligibility inquiry against the payer.
Coverage summary — dives done / scheduled / remaining (cash package + insurance authorization) for the selected patient
Panel re-verification — async batch 270 for the whole active panel; poll for results, then coverages update in place
Discover insurance — find active coverage from demographics (e.g. a self-pay patient)
Add insurance
Patient name/DOB is only needed when the patient is a dependent (relationship ≠ self) — it lets the eligibility check send a dependent block.
Revenue analytics
Collections, A/R, and denial mix over the claim ledger. Metadata only — no patient data.
A/R aging & collections
Outstanding insurance A/R by claim age, net collection rate, and days in A/R. Metadata only — no patient data.
Payment reconciliation (ERA)
Per 835 deposit: the payer's stated total vs what we posted across claims. A variance flags an unaccounted deposit — a partial 835 or an unmatched claim. Bank/card deposit matching wires in with the live payment feed.
Denial worklist
Denied / rejected claims that still need work, with their payer reason codes.
Appeals
Denials you're contesting with the payer — the reason-code assessment tells you whether to appeal, correct & resubmit, bill the patient, or write off. Generate a ready-to-send appeal letter, then track its outcome.
Payer enrollment
Register the clinic with the clearinghouse for a payer's transactions (claims, ERA, eligibility) — required by many payers before real exchange. Search a payer to see what needs enrollment, request it, then track status (payers often confirm out-of-band — update the status here).
Enrollment status
Payer network status
Whether the clinic — or one provider — is credentialed (in network) with each payer, and from when. The claim editor's Network status card reads this to say how to bill. To end a status, set “Effective to” instead of removing it; a status saved afterwards that starts after that date is added as a new row, so the history stays. Once a provider's own status has ended, the whole clinic's status applies to them. Remove is for mistakes.
Set a status
Add a payer
Prior authorizations
Track payer authorizations — status, units used vs. allowed, and expiry — before delivering care.
Add authorization
Fax
Send referrals, orders & records by fax and provision clinic fax numbers. Transport depends on the configured adapter for this tenant — synthetic sends nothing over the wire, telnyx sends a real fax.
Send a fax
Provision a fax number
Start here
New to insurance work? Type what you need to do — or a word you saw on a claim or a payment — and jump straight to the right place.
Payer playbook: not credentialed with a payer? What each payer allows, and how to submit
One entry per payer: the exceptions you can ask for before treating (single case agreements, gap and network-adequacy exceptions), how to submit, whether the patient can file it themselves, HBOT prior auth and the filing deadline. Each entry says how sure the research is and links its sources. Research, not legal advice: the payer's own current rules win.
Starter templates
Install a ready-made form (then edit & publish). Includes a scored HBOT safety screen.
Form builder
Intake, consent, screening & charting templates. Definitions are config; submitted responses are encrypted PHI.
New form
Fields
Fill a form
Pick the patient, then a published form. The answer set is encrypted at rest.
Clinic & catalog configuration — what you sell, your prices, and how you bill. System administration (modules, security, permissions, staff, hours) lives under Setup.
Your account security
Two-factor authentication adds a 6-digit code from your phone on top of your password. This system is reachable from the internet, so for anyone who can open a patient chart it is the control that matters most.
Checking…
Change your password
Scan this with Authy, Microsoft Authenticator, Google Authenticator or 1Password, then enter the 6-digit code it shows.
No camera? Enter the key by hand
Add an account manually and paste this key. Leave every option at its default — SHA1, 6 digits, 30 seconds. Changing them produces codes that never work and looks identical to any other failure.
Save these recovery codes now. They are shown once and can never be retrieved. Without them, a lost phone means another admin has to reset your access.
Enter a current code from your authenticator to turn two-factor off.
Package products
Prepaid multi-visit bundles (e.g. a 10-dive HBOT package). Create one here — it immediately becomes sellable at Checkout and from a patient's account. Selling deducts visits as they're used.
A patient joins from a texted link, signs the telehealth consent once, checks in and waits; the call starts when you join. To call someone right now: open their patient card → Video call now. Signed consents live on the patient's record (Forms → responses). How video visits work (staff + patient steps) →
Requests
Video visits
Setup
System administration — modules, security, permissions, and hours. Toggle features on or off without a rebuild.
Suggestions from staff
Everything filed through the 💡 Suggest button, newest first. Stored in the database like any other record — tenant-scoped, encrypted at rest and audited — so it is safe to use on the live system, unlike the old feedback widget it replaces. Set a status as you work through them; the note is for why, or for what fixed it.
Staff logins
Who can sign in to this clinic. New logins and password resets get a one-time temporary password, shown here once and never stored in readable form — hand it to the person directly and ask them to change it under Settings › Your account security. Deactivating signs someone out on their very next click. Role changes apply at their next sign-in.
Temporary password for — shown once
Vendor alerts
When a vendor (Telnyx, Stedi…) fails 3 checks in a row, RevivalOS posts an Inbox note and alerts the people below. Alerts never contain patient information.
New-patient forms
The forms a new patient is sent as one link, to complete before the first visit. Signed forms carry a typed-name electronic signature and a tamper-evident seal. Patients only ever see blank forms — nothing from their record is shown on the page.
Clinic profile
The clinic's name as it appears throughout the app. The URL slug is fixed and is not editable here — it is this clinic's stable identity, and a changeable slug is how two clinics come to disagree about which one they are. The customer number is assigned once by the system and never changes — quote it on invoices and support requests; two clinics can share a name, never a number. Saving writes an audit entry naming the fields you changed.
There is no delete. Retiring a clinic sets it to suspended, which keeps its audit history — deleting the row would destroy the trail that history is made of.
Modules
Security
Floor PHI fields are always encrypted. This governs the toggled-extended field set. Takes effect on each user's next login; turning it off does not decrypt existing values.
When on, staff without an authenticator are forced through two-factor setup at their next login (no access until enrolled). Existing sessions are unaffected.
Permissions
Choose what each role may do. The built-in roles are starting points — change any box. Add your own roles (Nurse, Biller, Office manager…) and give them to staff in Staff logins. Changes take effect immediately. Admin always keeps settings + user management, and nobody can give a role more than they hold themselves.
Open hours
Your clinic's own hours, in its own time zone (Clinic profile). Add as many breaks as you need — lunch, cleaning, a split day. Bookings outside these hours — or in a break, or on a closed special date — wait for approval.
Chamber hours
A chamber can keep its own hours and breaks (for example a chamber that runs only mornings). Holidays above still close every chamber.
Special dates
Holidays, one-off closures and days with different hours. They override the weekly hours for that date.
Calendar
Call routing
Requires the "Call routing" module (Modules panel above), which itself requires "Call recording". When enabled, an inbound call to the clinic number rings the primary number, then the secondary, then hands off to the AI consultation assistant if neither answers. Leaving a number blank skips that ring stage. Every routed call is listed in the call log, and a call nobody answers lands in the Inbox as a missed call with the number to call back.