Bulk Data Sandboxes


SMART Reference Implementation

The SMART team maintains an open access bulk data sandbox for testing.

Connect

The sandbox can be configured many different ways, but the default setup holds 100 patients and requires no authentication:

https://bulk-data.smarthealthit.org/fhir

Example

Using bulk-data-client:

git clone https://github.com/smart-on-fhir/bulk-data-client.git
cd bulk-data-client
npm ci

node . \
  --fhir-url https://bulk-data.smarthealthit.org/fhir \
  --_type Patient

Using cumulus-etl:

pipx install cumulus-etl

cumulus-etl export \
  'https://bulk-data.smarthealthit.org/fhir/$export?_type=Patient' \
  ./downloads

Epic

Setup

This sandbox requires authentication when doing bulk exports.

Register your application

You will need to register an application in Vendor Services.

  • You’ll want to make a Backend Systems application type.
  • Using the Incoming API feature.
  • Add whatever resources you would like, but you’ll want at least “Patient.Search (R4)” and all the four “Bulk Data” permissions (Delete, File, Kick-off, Status).
  • Enable OAuth 2.0, and you can leave the related settings alone at their defaults.

Once registered, your application will be assigned some IDs. Take note of the Non-Production Client ID. You’ll need to provide this ID later to your bulk export client.

Assign a public/private key pair (.pem file)

You’ll also need to provide a PEM, for authentication to the sandbox. This is a public/private key pair that you can generate and provide to Epic. (For authenticating with a “real” Epic server, you’ll want to generate a different kind of file – a JWK Set file – and publicly host it. But for sandbox use, uploading a PEM file is sufficient.)

Epic has documentation for generating public and private PEM files. Follow those steps, then on your Vendor Services application page, click on the “Upload public key” button:

Epic upload button

Upload the publickey509.pem file from Epic’s instructions and click Save. This change may take some time (up to a couple of hours) to propagate across Epic’s infrastructure.

You will later need to provide your bulk export client with the privatekey.pem file.

Connect

This is the Epic sandbox group URL:

https://fhir.epic.com/interconnect-fhir-oauth/api/FHIR/R4/Group/e3iabhmS8rsueyz7vaimuiaSmfGvi.QwjVXJANlPOgR83

Example

Using cumulus-etl:

pipx install cumulus-etl

cumulus-etl export \
  --smart-client-id=xxx \
  --smart-key=./privatekey.pem \
  'https://fhir.epic.com/interconnect-fhir-oauth/api/FHIR/R4/Group/e3iabhmS8rsueyz7vaimuiaSmfGvi.QwjVXJANlPOgR83/$export?_type=Patient' \
  ./downloads

Further Reading

Epic’s Bulk Export documentation might also be helpful.

Oracle Cerner

Setup

This sandbox requires authentication when doing bulk exports.

Register your application

You will need to register an application in the Code Console.

  • You’ll want to make a System application type.
  • For the Millennium Bulk Data product.
  • Add whatever resources you would like, but you’ll want at least Patient.

Once registered, your application will be assigned some IDs. Take note of the client ID (not the application ID, which you won’t need for this). You’ll need to provide the client ID later to your bulk export client.

Assign a public/private key pair (.jwks file)

You’ll also need to provide a JWKS, for authentication. This is a public/private key pair that you can generate and provide to Oracle.

To generate your own JWKS:

jose jwk gen -s -i "{\"alg\":\"RS384\",\"kid\":\"`uuidgen`\"}" -o private.jwks
jose jwk pub -s -i private.jwks -o public.jwks

View your application details in the Code Console and click on “Cerner Central System Account Details”. You’ll then see a section labeled “JSON Web Key Set” with an Edit button. Enter the contents of your public.jwks file.

You will later need to provide your bulk export client with the private.jwks file.

Connect

This is the Oracle sandbox group URL:

https://fhir-ehr-code.cerner.com/r4/ec2458f2-1e24-41c8-b71b-0e701af7583d/Group/11ec-d16a-c763b73e-98e8-a31715e6a2bf

Example

git clone https://github.com/smart-on-fhir/bulk-data-client.git
cd bulk-data-client
npm ci

# Edit your config file to include your client ID and the first element from your JWKS file

node . \
  --config ./your-config.js \
  --fhir-url https://fhir-ehr-code.cerner.com/r4/ec2458f2-1e24-41c8-b71b-0e701af7583d \
  --group 11ec-d16a-c763b73e-98e8-a31715e6a2bf \
  --_type Patient
pipx install cumulus-etl

cumulus-etl export \
  --smart-client-id=xxx \
  --smart-key=./private.jwks \
  'https://fhir-ehr-code.cerner.com/r4/ec2458f2-1e24-41c8-b71b-0e701af7583d/Group/11ec-d16a-c763b73e-98e8-a31715e6a2bf/$export?_type=Patient' \
  ./downloads

Further Reading

Oracle’s Bulk Export documentation might also be helpful.