A FHIR sandbox is the server you point an integration at before a hospital lets you near production. Which one you pick decides which bugs you find on a Tuesday and which ones you find at go-live.
Any FHIR R4 test server will answer GET /Patient. That proves your HTTP client works. It doesn't prove your integration works, because the failures that reach production live elsewhere: in the patients, in time, and in the vendor.
The patients. A chart with one condition and no labs can't exercise the code that reconciles medications, trends observations, or follows references across an encounter. You need charts with clinical depth — correlated conditions, medications that follow diagnoses, labs that move.
Time. Production data changes. A sandbox whose patients never change can't surface the bugs in _since polling, delta sync, or cursor handling — a whole class of integration bug that only shows up once records start moving.
The vendor. Epic, Oracle Health (Cerner) and MEDITECH each deviate from US Core in their own ways — different search-parameter subsets, OperationOutcome shapes, OAuth details. A spec-perfect server hides every one of them.
Most options fall into one of three shapes. They're not exclusive — teams commonly use a vendor sandbox for certification and something else for everything before it.
| Static fixtures | Public shared server | Living, vendor-shaped synthetic EHR | |
|---|---|---|---|
| Who owns the data | You (fixture files) | Everyone who writes to it | You, in an isolated sandbox |
| Does the data change over time | No | Unpredictably | Yes — new encounters land daily |
| Clinical depth | As much as you hand-write | Whatever others uploaded | Correlated conditions, meds, labs, notes |
| Looks like a specific EHR on the wire | No | No | Yes — Epic, Cerner and MEDITECH shapes |
Catches _since / delta-sync bugs | No | By accident | Yes |
mock.health is the third kind. This returns five synthetic patients from an endpoint shaped like a real Epic production deployment (one of the nine shapes on the Epic map) — no signup, no key:
curl "https://api.mock.health/v/cluster/epic-cluster-A/open/fhir/r4/Patient?_count=5"
Patients with clinical depth. A Markov progression module trained on millions of real patient journeys generates the charts, so conditions correlate, medications follow diagnoses, and labs trend the right way. Every resource is US Core 6.1 / USCDI v3 profiled. See how the data is validated.
Patients that keep living. New encounters and observations land daily, so delta syncs and _since polling behave like production. Pull a full chart with $everything and pull it again tomorrow.
Vendor shapes. ~3,800 production FHIR endpoints, harvested from the public Brands Bundles and clustered by the CapabilityStatement they actually serve. Epic alone deploys nine distinct shapes of its one published CapabilityStatement. Pick a hospital on the map and test against its shape.
No gatekeeping. No partner application and no onboarding call. Sign up, create an API key, hit the URL — the quickstart takes five minutes.
The Free tier is read-only: 25 curated patients that keep living, plus any of 2,208 hospital twins readable with no key — enough to evaluate and prototype. Pro ($199/month) adds read/write, thousands of patients, your own isolated sandbox, custom cohorts, bulk export, and the full vendor-shaped endpoints. Compare plans.
Honest limit: a synthetic sandbox won't replace testing against the real hospital. It gets you most of the way before you have that access — why vendor sandboxes alone aren't enough covers the gap it fills.
A FHIR server populated with test data that you can point an application at during development. It answers the same REST API as a production EHR, so you can build and test an integration without access to real patient data.
Yes. mock.health's Free tier is a read-only FHIR R4 server with 25 curated synthetic patients and no credit card. Its open hospital-shaped endpoints answer with no API key at all.
Mostly nothing — the terms are used interchangeably. In practice "sandbox" usually implies an isolated environment with test data you control, while "test server" can also mean a shared public server that anyone can write to.
You can test against their shape. mock.health reproduces the CapabilityStatement, search-parameter subset, OperationOutcome format and SMART details observed at real Epic, Oracle Health and MEDITECH deployments. Certification against the vendor itself still goes through the vendor.
No. Every patient is synthetic, and Pro sandboxes reject writes that don't carry a synthetic-data attestation tag, so protected health information can't enter.
Get an API key in about a minute and run your first $everything against a patient with a real chart. Start free · Pricing · Quickstart