Sandbox & test data
Every organization gets one private synthetic sandbox: a real Ava EMR clinic partition filled with generated data, where your app can launch, read, and write without ever touching real patient information.
Activating your sandbox
Press Activate sandbox on your organization dashboard. Provisioning takes a moment; the dashboard card updates live and shows, once active:
- an EMR login (your email) and sign-in link for the sandbox EMR,
- your sandbox FHIR base URL,
- the dataset identifier and generation.
The sandbox administrator login is how you drive launches: sign in to the EMR, open a synthetic patient's chart, and press your app's launch button.
The dataset
Sandboxes run the ontario_primary_care_v1 dataset — a generated Ontario
primary-care clinic with patients, practitioners, appointments, encounters,
conditions, medications, and allergies that hang together the way a real
chart does.
- Entirely synthetic. No real patients, providers, or health numbers.
- Consistent within a generation. The dataset has a generation number and content digest; data doesn't shift underneath you mid-integration.
- Realistic shapes. Resources carry CA Core+ profile elements, SNOMED CT CA / LOINC codings, and Ontario-flavoured identifiers, so parsing code you write against the sandbox holds up in production.
Browse the data as an EMR user (via your sandbox login) or over FHIR with your app's granted scopes — what you see over the API is exactly what your scopes allow, which makes the sandbox the right place to verify your permission schema is sufficient before a security review.
Sandbox vs production
| Sandbox | Production | |
|---|---|---|
| Data | Synthetic (ontario_primary_care_v1) |
Real clinic data |
| Registration | Instant, self-serve | Requires an approved security review |
| Client | Distinct public client ID | Distinct public client ID |
| HTTP URIs | Allowed for loopback IP literals (127.0.0.1) |
HTTPS only |
| API surface | Receives changes at least one release cycle early | Stable per the versioning policy |
The sandbox and production registrations are separate clients — deploying to the sandbox never changes anything in production.
Troubleshooting
- Sandbox card stuck on provisioning — provisioning is asynchronous; if it lands in a failed state the card says so with a retryable reason.
- Empty search results — check the granted
scopeon your token first; a missing scope commonly reads as "no data". Remember Observation has no launch scopes at all. - Launch button missing in the EMR — your app deploys to the sandbox when you press Deploy to my sandbox on the app page; check the registration card shows an active client ID.