$import is an implementation of the upcoming FHIR Bulk Import API. This is an asynchronous Operation, which returns url to monitor progress. There are two versions of this operation - /fhir/$import accepts data in FHIR format, /$import works with Aidbox format.
Resource requirements for all import operations:
Operation
id
resourceType
Keep in mind that $import does not validate inserted resources for the sake of performance. Pay attention to the structure of data you insert and use the correct URL for your data format, i.e.: use /fhir prefix for FHIR data.
POST /fhir/$importAccept:text/yamlContent-Type:text/yamlid:syntheacontentEncoding:gzipinputs:- resourceType:Encounterurl:https://storage.googleapis.com/aidbox-public/synthea/100/Encounter.ndjson.gz- resourceType:Organizationurl:https://storage.googleapis.com/aidbox-public/synthea/100/Organization.ndjson.gz- resourceType:Patienturl:https://storage.googleapis.com/aidbox-public/synthea/100/Patient.ndjson.gz
status:200
Parameters
You can monitor progress by using id you provided in request body.
If you didn't provide id in request body, you can use content-location in response header.
Result
Note
For performance reasons $import does raw upsert into the resource table without history update. If you want to store the previous version of resources in history, please set update = true
With this flag, Aidbox will update the history for updated resources. For each resource:
if the resource was not present in DB before the import, the import time will be the same.
if the resource was present in DB before and it's updated during the import, it will double the time importing this resource because of the additional insert operation into the _history table.
/v2/$import on top of the Workflow Engine
Improved version of the $import operation, to enhance its reliability and performance. By implementing this operation on top of the Workflow Engine, it allows the $import operation to be more reliable, continue work after restarts, and handle errors correctly. The Task API also enables the operation to accept multiple requests and execute them from a queue while simultaneously processing multiple items from the "inputs" field (with a default of two items processed simultaneously). Users can monitor the status of the operation through the Monitoring.
In the future, the ability to list and cancel $import operations will be added, as well as detailed progress info on the operation.
Changes in the new $import API:
Executing more than one import with the same id is not possible. Users can omit the `id` field from the request, allowing Aidbox to generate the ID.
The status of the workflow can be accessed with a GET request to /v2/$import/<id> instead of /BulkImportStatus/<id>. The URL for the import status is returned in the content-location header of the $import request.
To start import make a POST request to /v2[/fhir]/$import:
POST /v2/fhir/$importAccept:text/yamlContent-Type:text/yamlid:syntheacontentEncoding:gzipinputs:- resourceType:Encounterurl:https://storage.googleapis.com/aidbox-public/synthea/100/Encounter.ndjson.gz- resourceType:Organizationurl:https://storage.googleapis.com/aidbox-public/synthea/100/Organization.ndjson.gz- resourceType:Patienturl:https://storage.googleapis.com/aidbox-public/synthea/100/Patient.ndjson.gz
Status
200 OK
Headers
Content-Location: /v2/$import/synthea
Parameters
To check the status of the import make a GET request to /v2/$import/<id>: