Zorva

Frequently asked questions

For the privacy officer, the billing lead, the clinic manager, and the IT contact. If you have a question not covered here, send us a note.

For the privacy officer →

For the privacy officer

Is Zorva HIA-compliant?

For Alberta clinics (our current go-to-market), we sign an HIA Information Manager Agreement (template in docs/BAA_TEMPLATE_HIA.md, currently in lawyer review). We also support BAA / HIC-Agent / affiliate agreements for US HIPAA and Ontario PHIPA pilots on request — the templates exist but are not pre-signed for jurisdictions where we don't currently have a customer.

Where is the data stored?

Customer data is stored in a single, region-pinned facility documented in the executed IMA / BAA. Canadian customers are served from a Canadian-region facility; US customers from a US-region facility. Region is locked at sign-up. The actual hosting provider, facility, and any third-party attestations they currently hold (where they exist) are documented in the IMA.

How is patient data pseudonymized?

Salted SHA-256 on the patient_id field, using the same patient-hash:v1 domain format on both the portal and FastAPI paths. The salt is a per-deployment PATIENT_HASH_PEPPER env var. The FastAPI service fails fast at startup if the pepper is missing or shorter than 32 characters. Raw patient identifiers are stored only in the encrypted encounter table, never in the audit log.

Can the audit trail be tampered with after the fact?

No. Every state-changing click is appended to a hash-chained JSONL log. Each row's signature includes the prior row's signature; tampering with even one byte breaks the chain at that row. A privacy officer with the privacy_officer role can re-export the chain and re-verify offline.

Is the data used to train a model?

No. You bring your own LLM key (OpenAI, Anthropic, Gemini, or any Ollama-compatible local endpoint). The auditor calls it directly from your environment. Your data doesn't train anyone else's model. Cross-tenant training is explicitly forbidden by the design.

How do you delete the data?

On one email from your billing lead, we delete every claim, every finding, every audit log entry, and every pseudonymization record associated with your tenant within 7 business days. We send a written confirmation. The audit chain hash is preserved (one final entry) so you can verify the chain was complete at the time of deletion.

What about SOC 2 / ISO 27001?

SOC 2 Type II and ISO 27001 are on the certification roadmap. Not currently held. We publish that on /security so you can hand the page directly to your privacy officer.

For the billing lead

Does Zorva submit claims on my behalf?

No. Zorva reads every claim through the auditor before you submit it, surfaces findings to the biller, and the biller accepts or dismisses each finding. Nothing ships to AHCIP until a human signs off. We don't auto-correct silently.

How does the auditor interact with my EMR?

The auditor reads the 837P payload — the same file you'd hand to H-Link. We don't need an integration with your EMR for the pilot. The biller uploads the 837P via the dashboard or by paste-form, and the auditor runs. EMR integrations are on the 2026-Q4 roadmap (Accuro first, then OSCAR Pro, then TELUS PS Suite).

What does "deterministic" mean for my workflow?

Re-running the auditor on the same claim produces the same findings. Temperature 0, seed pinned, model version pinned. This means your biller can re-run an encounter after a rule-set update and compare findings; or your privacy officer can re-run a prior encounter and verify the chain.

What if I disagree with a finding?

Dismiss it. Each finding has a Dismiss button with a reason picker (wrong payer policy, not relevant, already addressed, other-with-text). Your dismiss reason is part of the audit trail. Over time, the per-clinic F1 widget reflects how often your dismisses match real findings (signal) vs not (noise).

How do I onboard my team?

During the pilot, we sign the IMA / BAA, get a read-only data feed or sample file from your billing system, and stand up your dashboard. We provide a 1-page cheat sheet for the biller (what the findings mean, what to accept, what to dismiss). The first 100-claim audit is the first artifact your biller sees.

For the clinic manager

How long does the pilot take?

60 days from signed IMA to first ROI report. Week 1 is connection + data feed; weeks 2-6 are shadow-run + weekly review; weeks 7-8 are measure-and-decide.

What's the cost?

The 60-day no-cost pilot is free. The first paid engagement is one of the three tiers on /pricing ($499 / $1,499 / $2,999+ CAD per month, capped at 1,000 / 3,000 / 3,000+ audits per month). No setup fee, no per-claim charge, no recovery-linked fee.

What happens after the pilot?

If you continue: we move to a paid engagement at the tier that fits your claim volume. If you don't: we delete everything 7 business days after the pilot ends, on one email from your billing lead. We send a written confirmation.

What if we have multiple clinics?

Multi-clinic tenants are supported. The PCN central-office model (one Zorva tenant for a Primary Care Network with dozens of member clinics) is the most common multi-tenant shape. Per-clinic F1 is the recommended metric for a PCN — it's per-clinic (not per-network) because the biller at each clinic knows their own patterns.

For the IT contact

How do I get a 100-claim sample into the auditor?

Pick a 30-day window from your billing system. Export the 837P (or a CSV, or paste the encounters one-by-one via the dashboard paste-form). De-identify patient IDs if you'd rather not share them — the auditor hashes them anyway.

What does the 837P need to contain?

Standard 837P loop 2300 with at least the encounter header (NM1*85, NM1*87, HI, DTP*472) and at least one service line (LX, SV1, DTP*472). The 835 / 837P / 837I dialects are vendor-specific; we accept any of them as long as the standard segments are present.

What about FHIR?

FHIR R4 (the Claim + ClaimResponse resources) is on the 2026-Q4 roadmap. The 837P path is shipping today.