Passer au contenu

Sandbox

Create a sandbox app and develop against the EDFlow sandbox: synthetic-only enforcement, fictional hospitals, simulator scenarios, dry-run validation, fault injection, conformance profiles including outage_recovery, and resetting, plus how customer test differs.

Cette page n'est pas encore offerte en français; elle est affichée en anglais.

The sandbox is where you build and test your integration against fictional hospitals. It is a separate deployment from customer test and live, so sandbox credentials can never reach real data.

Create a sandbox app

In the developer portal: Apps → New app, environment Sandbox. Sandbox apps are active immediately, with no approval. Then follow the quickstart.

Your sandbox organization

When your organization is onboarded, it gets a sandbox organization with:

  • one fictional site per real site, with the same time zone and languages and a code ending in -sbx;
  • 20 active visits and 10 weeks of history, so estimates and analytics work;
  • a simulator source and sandbox staff accounts, so you can watch your events arrive on the staff board.

Synthetic data only, enforced

The sandbox runs in the US and must never receive real patient data. It checks every ingest path:

CheckRule
Processing idHL7 MSH-11 must be T or D; FHIR Bundles must carry the HTEST tag
IdentifiersPatient identifiers must start with SYN. A valid-checksum Ontario health card number, a site record-number pattern or a Canadian postal code is refused
NamesMust come from the synthetic-name dictionary or start with SYN or ZZTEST

A refusal is phi_suspected (HL7: AR with ERR-3 202). Nothing is stored. Your app's contacts are alerted, and after 3 hits in 24 hours the app is disabled until reviewed. Hospital test-domain feeds go to customer test, never to the sandbox, because test domains are often copied from production.

Capture d'écran à venir : dev-console-tripwireCette capture d'écran est prise automatiquement dans l'application, avec des données fictives.
WebDétection de vraies données

The test console

The portal's console sends events, HL7 or FHIR to the sandbox and shows the response, the derived events, a field trace and the event log entry.

Console de test dans le bac à sable : envoyer un événement et voir la réponse et l'entrée du journal.
WebÉcran affiché en anglaisCapturée à partir de la version 5003605 le 27 septembre 2026

Dry-run anything with POST /v1/events/validate: nothing is stored or notified.

curl -sS -X POST 'https://api.sandbox.edflow.space/v1/events/validate' \  -H "Authorization: Bearer $EDFLOW_ACCESS_TOKEN"

Simulator scenarios

Run a scripted visit at up to 60× speed, delivered directly, signed, as HL7 v2 or as FHIR:

printf '%s' '{"transport":"direct"}' > body.jsoncurl -sS -X POST 'https://api.sandbox.edflow.space/v1/sandbox/scenarios/%7BscenarioKey%7D/run' \  -H 'Content-Type: application/json' \  -H "Authorization: Bearer $EDFLOW_ACCESS_TOKEN" \  --data-binary @body.json

Scenarios include walk-in discharge, chest pain admitted, CT with contrast, a child's fever with a urine sample, left without being seen, serial troponin, observation after anaphylaxis, codes, a feed outage with backfill and surge. See Simulator.

Simulateur de DME (bac à sable et démonstration seulement) : scénarios, rythme des arrivées et événements envoyés.
WebÉcran affiché en anglaisCapturée à partir de la version 7c7f41f le 27 septembre 2026

Test webhooks and write-back

POST /v1/sandbox/requests creates a patient request on a synthetic visit, so you can receive request.created and try acknowledge and resolve.

Fault injection

Make your own app's requests fail or slow down, to test retries, queues and circuit breakers. Other apps are unaffected.

FaultEffect
unavailable503 with Retry-After
rate_limited429
latencyAdded delay, up to 20 s
token_endpoint_down503 from /oauth/token
slow_ackSlow HL7 acknowledgements
Capture d'écran à venir : dev-console-faultsCette capture d'écran est prise automatiquement dans l'application, avec des données fictives.
WebSimulation de pannes
printf '%s' '{"faults":[]}' > body.jsoncurl -sS -X POST 'https://api.sandbox.edflow.space/v1/sandbox/faults' \  -H 'Content-Type: application/json' \  -H "Authorization: Bearer $EDFLOW_ACCESS_TOKEN" \  --data-binary @body.json

Conformance profiles

ProfileProves
ingestYour declared event types, idempotent retries, out-of-order delivery, a prohibited-field rejection, heartbeat and roster
webhooksYour receiver verifies signatures, deduplicates a redelivery and drops an expired event
writebackAcknowledge and resolve with idempotency keys
outage_recoveryEDFlow unavailable for 30 minutes: every message your engine queued lands afterwards with no 401, no idempotency_conflict and no gap
clock_skewTimestamps judged against ±90 s
backfill_10k10,000 events at the rate limit
printf '%s' '{"profile":"ingest"}' > body.jsoncurl -sS -X POST 'https://api.sandbox.edflow.space/v1/sandbox/conformance' \  -H 'Content-Type: application/json' \  -H "Authorization: Bearer $EDFLOW_ACCESS_TOKEN" \  --data-binary @body.json

Reset

POST /v1/sandbox/reset resets your organization's sandbox sites to the seed, deleting ledger rows and webhook history for them.

Customer test

SandboxCustomer test
DataSynthetic onlyYour hospital's test-domain feeds, treated as real
LocationUS EastCanada
Simulator, faults, resetAvailableNot available (reset only on the hospital's written request)
ApprovalNoneFour eyes, like live

Dernière mise à jour le

Cette page vous a-t-elle été utile?

Sur cette page