A sandbox payer for CRD / DTR / PAS clients
If you're building a CDS Hooks CRD client, a DTR questionnaire flow, or a PAS
$submit integration, this is a live counterparty to test against — no real
payer will let untrusted code near their production endpoint. Get a token, run three curls, see
the full round trip in under ten minutes.
1. Get a token
Use the shared quickstart token below to skip straight to the curls, or sign up with your email for your own isolated tenant — your own bearer token, your own synthetic patient, and a dashboard to inspect your traffic. No password, just a magic link.
2. Three requests, one flow
CRD hook → DTR questionnaire package → PAS submit. Each command feeds the next.
export TOKEN=demo-quickstart-token
export BASE=https://fhir-sandbox.greenice.net
# 1) CRD: ask "does this order need prior auth?" -- fetch a fixture hook call, then send it
curl -s "$BASE/api/crd/scenarios/prior-auth-required/hooks/order-sign" \
-H "Authorization: Bearer $TOKEN" -o hook-request.json
curl -s -X POST "$BASE/cds-services/order-sign-crd" \
-H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \
-d @hook-request.json | tee crd-response.json
# 2) DTR: fetch the questionnaire package the CRD response pointed at
curl -s "$BASE/api/dtr/scenarios/prior-auth-required/variants/prior-auth-required-canonical" \
-H "Authorization: Bearer $TOKEN" -o dtr-request.json
curl -s -X POST "$BASE/fhir/Questionnaire/\$questionnaire-package" \
-H "Authorization: Bearer $TOKEN" -H "Content-Type: application/fhir+json" \
-d @dtr-request.json | tee dtr-response.json
# 3) PAS: submit the prior-auth request, see the (corrected) decision code
curl -s "$BASE/api/pas/scenarios/prior-auth-required/variants/prior-auth-required-initial" \
-H "Authorization: Bearer $TOKEN" -o pas-request.json
curl -s -X POST "$BASE/fhir/Claim/\$submit" \
-H "Authorization: Bearer $TOKEN" -H "Content-Type: application/fhir+json" \
-d @pas-request.json | tee pas-response.json
Prefer to browse instead of copy-pasting exact ids? The scenario picker lists every clinical module with ready-made commands, and every request you make here shows up immediately in the inspector.
What this sandbox changes vs. the upstream engine
| Behavior | Detail |
|---|---|
| Namespace | Canonical URIs use https://cms0057-payer-sandbox-5vvnexrbpq-uc.a.run.app, not the
upstream engine's internal example.org placeholder (which live FHIR validators reject). |
| Denial code | Prior-auth denials return review action A3 by
default (matches the IG's own official example) instead of the upstream engine's native
A2. Configurable per token — see PATCH /api/tenant/config. |
| Data cleanup | Self-referencing Patient.link entries and the broken
subscription seed resource are fixed at this layer. |
| Auth | Bearer token required (the upstream engine itself has none). |