GraphQL API
Aidbox supports default GraphQL implementation without any extensions (specification) Queries are supported, but mutations are not.
In Aidbox UI there is GraphiQL interface, you can try your queries there.
GraphQL console sends all your requests to $graphql
endpoint which you can use from your application too
GraphQL endpoint
Aidbox uses the /$graphql
endpoint to serve GraphQL requests.
To make a GraphQL request send a GraphQL request object using POST
method.
GraphQL request object can contain three properties:
query
— the GraphQL query to evaluate.operationName
— the name of the operation to evaluate.variables
— the JSON object containing variable values.
You can set the timeout
query parameter to limit execution time. Also there is a config for the default value if the parameter wasn't set.
Refer to the GraphQL documentation to get more information about these properties.
Examples
Simple query
Get IDs of two Patients. This query is similar to FHIR query
Request
Response
Query with variables
Same query as above, but using a variable to specify the number of results returned.
Request:
Response:
Query with a timeout
You can set a timeout (in seconds) for the query.
Request:
Objects, unions, scalars
Aidbox generates an object for every known resource and non-primitive data type.
Aidbox generates a scalar for every known primitive type i.e. for every entity with type primitive
.
Aidbox generates a union for every reference field. Additionally Aidbox generates AllResources
union which contains every resource object.
Fields
Aidbox generates a field for every field in a resource. There are some special fields:
reference fields
revinclude fields
References
Reference fields contain all usual fields of Aidbox references (id
, resourceType
, display
, identifier
) and a special resource
fields.
The resource
field is an AllResource
union. You can use it to fetch referred resource using GraphQL fragments.
Example
The following query is similar to
Request
Response
Revincludes
Aidbox generates special fields to include resources which reference this resource.
Generated fields have the following name structure:
Note: unlike FHIR revincludes, GraphQL revincludes use field path, not parameter name.
Example
The following query is similar to
Request
Response
Queries
Aidbox generates three types of queries:
get by ID,
search,
history.
Get by ID
Aidbox generates query with name
This query accepts a single argument id
and returns a resource with the specified id
.
Example
The following query is similar to
Request
Response
History
Aidbox generates query with name
The query accepts id
argument and return history of a resource with the specified id
.
Example
The following query is similar to
Request
Response
Search
Aidbox generates query with name
The query can accept multiple arguments. Aidbox generates arguments from search parameters.
Each search parameter lead to 2 arguments:
<parameter>
— simple argument, equivalent to using FHIR search parameter<parameter>_list
— represents AND condition
Example
The following query is similar to
Request
Response
Search with conditions
It is possible to encode simple AND and OR conditions for a single parameter.
FHIR allows to encode the following type of conditions for a single parameter:
In GraphQL API <parameter>_list
parameter represents AND condition.
E.g. PatientList(name_list: ["James", "Mary"])
searches for patients which have both names: James and Mary.
Comma represents OR condition.
E.g. PatientList(name: "James,Mary")
searches for patients which have either name James or Mary
You can use both conditions at the same time.
E.g. PatientList(name_list: ["James,Mary", "Robert,Patricia"])
searches for patients which have name James or Mary and name Robert or Patricia.
Search total
Aidbox generates special field total_
which contains total count of matching result. When you use this field, Aidbox can make a query to calculate total, which can be slow (depending on data).
Example
Request
Response
Complex examples
Multiple fragments
Get id of DeviceRequestList resource, add address of Organizations and Practitioners referenced in DeviceRequestList.requester
Common fragment
This example demonstrates how to use fragments, both types of search parameter arguments and reverse includes.
Request
Response
Configuration
Warmup
By default, Aidbox does in memory index cache warmup when the first request comes in.
You can change it to warmup cache on startup.
Or, using Aidbox project:
Revincludes with any type
For the sake of performance, Aidbox does not provide revincludes for references of type Reference(Any)
, e.g. for Task.for
.
When this feature is enabled, schema generation will take 2 minutes (approximately), Until the schema is generated GraphQL requests will wait.
You can enable them using the following environment variable:
or by setting
configuration value in Aidbox project.
Last updated