Reports
Every network number, what it counts, and what it does not.

Reports turns your network's activity into numbers for a date range you choose — and every number here has a precise definition you can read before you quote it.
Questions people ask about this page
What does this number actually count?
Hover the tile. Every metric carries its own tooltip with the exact definition, and the definitions differ more than you would expect — some tiles obey the date range and some deliberately do not. The full list is in Every metric on this page below.
Why did three tiles not change when I changed the date range?
Pending async reviews, Oldest pending review, and Upcoming visits are point-in-time. Their sublabels say so — As of now. and Next 7 days. They answer "what does the queue look like right now", not "what happened in this window".
Whose timezone are these dates in?
Eastern Time, always. The line beside the freshness stamp reads All dates ET regardless of where you or your Providers are. A "Today" range is an Eastern Time day.
How current is this?
Read the Updated {age} line above the presets — just now, {n}m ago, {n}h ago, or {n}d ago. Click the refresh icon (Refresh reports) to pull again. If a refresh fails you get Couldn't refresh — showing recent data. and the numbers on screen are stale.
My Providers see a completely different page. Why?
Providers and Provider Delegates get a single section called My performance, scoped to themselves on the server. They cannot widen it to another Provider and they have no Client filter. Provider Network Admins get all four network sections.
Net is negative. Do we owe that?
Only for affiliate Clients. The tooltip is explicit: for affiliate Clients Net is what the network owes; other Clients collect their own revenue, so their Net reads as margin, not a payable.
Prescription cost says $0 but we sent prescriptions.
It reads $0 until a prescription fee is configured for that Client in billing settings. The tile's own sublabel says Needs a prescription fee.
The numbers look abbreviated. Where do I get exact amounts?
Export. The Client activity panel says it outright: tiles abbreviate, so export the CSV for exact amounts. Each panel has its own export button, and the header has Export visit history (CSV) for the whole visit set.
Where to find it
Left menu → Reports. Direct link: /reports. Visible to: Provider Network Admin, Provider, Provider Delegate. Patients and Client Staff get Reports are not available / Use the available dashboard and workflow pages for account activity.
| Provider Network Admin | Provider / Provider Delegate | |
|---|---|---|
| Subtitle | Visits, demand, providers, and client financial activity. | Your visits and prescribing activity. |
| Sections | Visits, Demand & turnaround, Providers, Client activity & COGS | My performance only |
| Header export | Export visit history (CSV) | Export my visit history (CSV) |
| Client filter | Yes | No |
What is on this page
| Control | What it does | Default |
|---|---|---|
| Date range presets | Today, 7d, 30d, 90d, YTD, Custom. Custom reveals from and to date inputs. | 30d |
| Client select | Narrows every section to one Client. Placeholder All clients. While loading it reads Loading clients…; on failure Couldn't load clients; with none linked No clients yet. | All clients |
| Refresh icon | Labelled Refresh reports. Disabled while any query is in flight. | — |
| Freshness line | Updated {age} · All dates ET. | — |
| Export visit history (CSV) | Header button. Exports the visit set for the current scope and range. | — |
Every metric on this page
Visits — Completed visits, scheduling outcomes, and visit history across your network.
| Tile | What it counts |
|---|---|
| Visits completed | Visits your network finished in the selected date range. This is the hero number. |
| Scheduled visits | Visits scheduled to take place within the selected date range. |
| No-show rate | Share of booked visits where the patient didn't show up. Lower is better. |
| Cancellation rate | Share of booked visits that were cancelled. Lower is better. |
Panels: Visits completed over time (trend); Visits — every completed visit, live and async, with columns Completed, Patient, Provider, Client, Type, searchable and exportable; Visits by client (Client, Completed, Sync, Async); Patients by client (Client, Patients — unique patients with a completed visit).
Demand & turnaround — Current review demand, upcoming visits, and clinical turnaround times.
| Tile | What it counts | Follows the date range? |
|---|---|---|
| Pending async reviews | Async visits waiting on a provider decision right now. | No — As of now. |
| Oldest pending review | How long the longest-waiting async review has sat in the queue. Reads Not available when the queue is empty. | No — As of now. |
| Upcoming visits | Live visits booked for the next 7 days from now. | No — Next 7 days. |
| Median review turnaround | Median time from assignment to decision, over async reviews completed in the range. | Yes |
| Avg time to claim | Average wait from submission to a provider claiming, over async reviews claimed in the range. Submission time is the review's creation time. | Yes |
| Avg claim to prescription | Average time from claim to the first prescription sent, over claimed reviews in the range that produced one. Reviews with no prescription are excluded. | Yes |
This section has no panels — the tiles are the whole section. It is the one to read every morning: Pending async reviews and Oldest pending review tell you whether patients are waiting.
Providers — Provider workload, prescribing activity, and individual performance.
| Tile | What it counts |
|---|---|
| Active providers | Providers who finished at least one visit in the selected range. Not your headcount — an idle Provider is not counted. |
| Prescriptions sent | Prescriptions sent in the range. |
Panels: Prescriptions over time (trend); Provider workload — Provider, Completed, Async, Sync, Avg turnaround, Rx sent, Cancellation rate, Last active. Selecting a row opens that Provider's profile.
Client activity & COGS — Client revenue, clinical costs, lab costs, and net activity.
| Tile | What it counts |
|---|---|
| Net | Sales revenue minus total COGS for the selected Clients and range. For affiliate Clients this is what the network owes; other Clients collect their own revenue, so it reads as margin rather than a payable. |
| Sales revenue | Patient payments on product, lab, and invoice orders, net of refunds. |
| Total COGS | Visit cost plus prescription cost plus lab cost for the selected filters. |
| Visit cost | Async, live, and escalation review charges billed to the Client in the range. This is where the fees you set on the Client record land. |
| Prescription cost | Prescription review charges in the range. Reads $0 until a prescription fee is configured for the Client — sublabel Needs a prescription fee. |
| Lab cost | Lab vendor cost plus platform fee, on lab orders whose fee has settled. Orders with no recorded or unsettled fee contribute $0 — sublabel Settled fees only. |
| Unbilled visits | Completed visits with no review charge, usually because that Client has no visit rate configured. They carry no cost in the table below, so they are invisible in Net. |
Panels: Money in vs money out (trend); Client activity — one row per sale, visit charge, prescription charge, and lab cost, with columns Date, Client, Model, Patient, Kind, Detail, Amount in, Refunded, Amount out; COGS by client — Client, Model, Records, Revenue, Visit cost, Rx cost, Lab cost, Total COGS, Net.
Sales are dated by payment; charges are dated by review completion. Charges are billed on accrual and settle in a weekly batch, so a charge can appear in the table before money has moved.
My performance (Providers and Provider Delegates) — Your completed visits and prescribing activity for the selected range.
Tiles: Visits completed and Prescriptions sent. Panels: My visits over time (trend) and My visits (Your recent visits in the selected range.). Scope is forced on the server — a Provider cannot see another Provider's numbers here, and a Provider Delegate sees the Providers they support.
How to answer a question with this page
Pick the range that matches the question
Click a preset, or Custom and set the from and to dates. Remember the range is Eastern Time.
Narrow to one Client if the question is about one Client
Use the Client select. Leave it on All clients for a network-wide answer.
Read the definition before you read the number
Hover the tile. Two metrics that sound alike — Avg time to claim and Median review turnaround — measure different intervals over different populations.
Open the drilldown
Every tile is clickable; the hover overlay reads View records. A sheet opens titled with the metric and described as Records behind the selected metric, with a Records card, a pager (Previous page / Next page), and a count like 1–1 of 1. The URL gains r_dd=<metric> alongside r_preset, r_from and r_to, so the whole view — range, custom dates and open drilldown — is shareable by copying the address bar.
Check a real record
The drilldown lists the actual rows behind the number. If one looks wrong, fix it on its own page — Reports never edits anything.
Export for anything precise
Use a panel's own export button, or the header's Export visit history (CSV). Watch the toast: Exported {n} rows. is complete, but Exported {n} rows. This may be capped — narrow the date range for the full set. is not.
Check freshness before you share
Read Updated {age}. Refresh if recent work has not landed yet.
Reports is for analysis, not correction. Fix a Visit, Order, Prescription, Provider, or Client from its own page and the numbers follow.
Statuses and states you will see here
| What you see | What it means | What to do |
|---|---|---|
| Not available | The metric has no value for this scope — for example Oldest pending review with an empty queue. | Nothing. It is not an error. |
| Metric query failed | That one tile's query errored. | Click Retry on the tile. |
| Couldn't load these metrics. | The whole section's snapshot failed. | Click Retry under the message. |
| Couldn't refresh — showing recent data. | A background revalidation failed; you are looking at cached numbers. | Refresh again before quoting anything. |
| No data for the selected range. | The panel found nothing in the window. | Widen the range or clear the Client filter. |
| No records for this metric in the selected range. | A drilldown with nothing behind it. | Same. |
| No client sales or clinical charges in the selected range. | The Client activity panel is empty. | Check that visit fees are configured on the Client record. |
| A visit counted here reads Approved in the async queue but Completed on the patient profile | One record, two labels. When a provider approves a chart the stored decision is approved, which the queue shows as Approved; the patient profile's visit history rewrites the same record to Completed. Nothing changed between the two screens. | Treat them as the same outcome. Visits completed counts it once — do not add the two together. |
| vs prior period · (improved) / (worse) | Each tile compares against the immediately preceding window of the same length. On inverse metrics like No-show rate a fall is (improved). | Read the direction word, not just the sign. |
What can go wrong
| What you see | Why | Fix |
|---|---|---|
| Three tiles ignore the date range | Pending async reviews, Oldest pending review, and Upcoming visits are point-in-time by design. | Read their sublabels. Do not compare them to range-scoped tiles. |
| A comparison shows an enormous percentage | The prior period was near zero, so the percentage change explodes. | Use the absolute number and the drilldown; ignore the percentage on tiny bases. |
| Active providers is lower than your headcount | It counts Providers who completed at least one visit in the range, not who is on the roster. | Use /providers for headcount. |
| Unbilled visits is above zero | Those Clients have no visit rate configured. | Set SYNC Visit and ASYNC Visit on the Client record, under Account and billing. |
| Lab cost looks too low | Only settled fees count. Unsettled or unrecorded lab fees contribute $0. | Wait for the weekly settlement batch, then re-run. |
| Export timed out. Try narrowing the date range and exporting again. | The export exceeded its time budget. | Shorten the range or filter to one Client, then export again. |
| Exported {n} rows. This may be capped … | The export hit a row cap. | Narrow the range and export in slices. |
| A Provider asks you to widen their view | Provider scope is enforced on the server, not in the UI. | Run the network view yourself and share the export. |
| Numbers disagree with the dashboard | Different definitions and different windows. | Trust the tooltip on this page, and use the drilldown to see the actual records. |
Next
Was this helpful?
