Revenue by service, Botox units used, who's no-showing, how one patient's pain has moved. Type it, write it in ZQL or build it from a form, and read the query before it runs.
This is the product's own question box, query view, preview and results, running on a made-up clinic. Each answer comes with the query that produced it. The last question reads a patient's charts, so it stops and asks before it opens them.
The checking happens in Zdrovia, not in the interface and not in the assistant. A question typed into the box, a query written by hand and one built from the form all go through the same steps.
In words, in ZQL, or from the builder. All three produce the same query.
Your role, the patient scope and the chart limits are applied before anything is read.
What it reads, the real dates, how sensitive it is, how many charts it opens.
Reading only. Charts are opened just for the records the answer needs.
Every patient whose chart was opened is written to the access log.
Asking, writing and building all edit the same query. Start with a sentence, tighten it in the builder, read it as ZQL, and nothing gets retyped on the way.
Say it the way you'd say it to a colleague. You get back a query you can read, not a number to take on trust, and it's checked against your role before you see it.
Small Practice and Team Practice
ZQL reads close to English: where, since, group by, show, order by, limit. Suggestions appear as you type, and a mistake is underlined with what to change.
Every plan
Choose what to count, how to slice it and over what dates. Switch tabs at any point and the same query shows as ZQL, so nothing is retyped.
Every plan
Here are five real queries, from a revenue comparison to one patient's pain score. You'd rarely need to write them from scratch: Ask drafts one, the builder assembles one, and you can edit either.
Every query gets a preview first. It's worded for the person asking, not for a database, so you can tell whether it means what you meant.
A plain sentence on what the query does, in your clinic's terms, before anything runs.
"Last month" and "last 90 days" are turned into exact dates in your clinic's timezone, and a comparison shows the dates it's measured against.
Each query is labelled operational (schedule and stock), financial (invoices and payments) or clinical (patient charts).
A query that touches charts says how many, out of how many one query is allowed, and waits for your go-ahead.
Every table and field is checked against the person asking. A front desk login can't total the books, and the refusal names the permission it's missing.
Out of the box, chart readings are queried from a single patient's record, and the answer covers only that patient.
When a query reads charts, each patient it touched is written to the access log, with who asked and when, the same log as everything else.
ZQL can't create, edit or delete anything. It has no raw SQL and no way to call out to anything else.
The language model only writes the query. Permissions, patient scope and chart limits are enforced by the same checker whether you typed the query or it did.
Save a query as a report and it's stored as the query itself, so it keeps working and keeps its checks, however the text syntax evolves.
Roles and the access log work the same way for everything else in Zdrovia. See how they're set up.
Nine moves cover most questions. Clauses can come in any order, you can use upper or lower case, and a line starting with two dashes is a comment.
| Word | What it does | Example |
|---|---|---|
| from | What you're looking at | from visit |
| where | Narrow it down | where status = 'scheduled' |
| since / between | Set the dates | since last_90_days |
| group by | Slice it | group by month, staff.name |
| show | What to work out | show sum(net_cents) as revenue |
| order by / limit | Sort and cut it off | order by revenue desc limit 10 |
| compare to | Set it beside an earlier period | compare to previous_year |
| for patient | Look at one patient | for patient $patient |
| | | Then, using that result | | show mean(visits) as avg |
Dates you can say
One query layer covers the whole clinic, so a question that crosses areas, like patients who had neurotoxin and have nothing booked, is one query rather than two exports and a spreadsheet.
There's no separate reporting tool to set up or keep in sync. What you chart, dispense, book and invoice is what you can ask about, the moment it's saved.
Export invoices, paste into a spreadsheet, rebuild the pivot each month.
Ask the question again whenever you like, or save it as a report.
Trust a number without knowing which rows it came from.
Read the query, and the preview of what it covers, before you trust the answer.
Ask whoever has access to the books to run it for you.
Anyone can ask what their role allows, and is refused, with the missing permission named, for what it doesn't.
Copy patient details out of the record to analyse them.
Chart readings are queried in place, one patient at a time, and logged.
Your question and the names of the fields your role is allowed to query, so it can write the query. Your results and your patients' records aren't sent. What comes back is only text, which is then read and checked like anything you typed.
No. Writing ZQL and the step-by-step builder don't call a model at all. Ask is the only part that does.
Ask & Reports is a paid-plan feature, included from Small Practice. For a limited time it is free on every plan, Solo included, so you can try it before deciding. Each clinic can ask a limited number of questions per hour; typed and built queries aren't counted. See pricing.
Yes, for one patient at a time, if your role lets you open their charts. The preview tells you how many charts it will open before it runs, and each patient it reads is recorded in the access log.
No. A query can only read.
A query can be a fair reading of your words and still not be what you meant, which is why Ask shows the query and what it will read before running it. Read the query. If a figure matters, check it in the builder.
Yes. Readings from the blocks you build yourself are added to what you can ask about as soon as you create them, so a field you add to a smart block is something you can query.
A query you'll want again can be saved as a report. It's stored as the query itself, with your role's checks applied each time it runs, so it only ever shows a person what they're allowed to see.
No. It answers questions about what's in Zdrovia, such as invoiced, collected, units used, no-shows and chart readings. It isn't an accounting system, so use it alongside your bookkeeping rather than in place of it.
Yes. A connected assistant can ask schedule, stock and finance questions, and one named patient's chart readings after you've seen the preview and said yes. It uses the same checker as you, held to the role of the person who approved the connection, and it can't total charts across patients. See the MCP server page.
Ask & Reports is included with Small Practice and Team Practice, and free on every plan for a limited time.