SQL on FHIR
2.1.0-pre - release
SQL on FHIR, published by SQL on FHIR Working Group. This guide is not an authorized publication; it is the continuous build for version 2.1.0-pre built by the FHIR (HL7® FHIR® Standard) CI Build. This version is based on the current content of https://github.com/HL7/sql-on-fhir/ and changes regularly. See the Directory of published versions
| Official URL: http://sql-on-fhir.org/OperationDefinition/$sqlquery-export | Version: 2.1.0-pre | |||
| Active as of 2026-06-13 | Computable Name: SQLQueryExport | |||
Export SQLQuery Library results asynchronously using the FHIR Asynchronous Bulk Data Request Pattern.
Export SQLQuery Library results asynchronously using the FHIR Asynchronous Bulk Data Request Pattern.
Use Cases:
Endpoints:
| Level | Endpoint | Query Source |
|---|---|---|
| System | POST [base]/$sqlquery-export |
query parameter (1..*) |
| Type | POST [base]/Library/$sqlquery-export |
query parameter (1..*) |
| Instance | POST [base]/Library/[id]/$sqlquery-export |
Bound Library resource |
Execution Flow:
Prefer: respond-async header202 Accepted with Content-Location polling URL200 OK with the manifest in the bodyoutput.location URLs in the manifestThis operation combines the query source and parameter binding from
$sqlquery-run with the asynchronous
export pattern from $viewdefinition-export.
Key Features:
query parameter — each with its own parametersview parameter — supply ViewDefinitions referenced in the Library’s relatedArtifact entries (materialized as tables for SQL to query; only SQL query results appear in the export output)query repetition can have its own parameters resourceURL: [base]/$sqlquery-export
URL: [base]/Library/$sqlquery-export
URL: [base]/Library/[id]/$sqlquery-export
| Use | Name | Scope | Cardinality | Type | Binding | Documentation |
| IN | query | system, type | 1..* | One or more SQLQuery Libraries to export. Each repetition identifies a single query. Applies at system and type level only; at instance level the bound Library identified by the request URL is the query source and this parameter does not apply. | ||
| IN | query.name | 0..1 | string | Optional friendly name for the exported query output. | ||
| IN | query.queryReference | 0..1 | Reference | Reference to a SQLQuery Library stored on the server. | ||
| IN | query.queryResource | 0..1 | Resource | Inline SQLQuery Library resource to execute. | ||
| IN | query.parameters | 0..1 | Parameters | Input parameters for this query. Parameters are bound by name to parameters declared in the SQLQuery Library (Library.parameter.name). | ||
| IN | view | system, type | 0..* | ViewDefinitions that serve as table sources for the SQL queries. Provides ViewDefinitions referenced in the Library's relatedArtifact entries. These are materialized as tables for the SQL to query against — they do not produce separate output entries. | ||
| IN | view.name | 0..1 | string | Optional friendly name for the ViewDefinition. | ||
| IN | view.viewReference | 0..1 | Reference | Reference to a ViewDefinition stored on the server. | ||
| IN | view.viewResource | 0..1 | Resource | Inline ViewDefinition resource. | ||
| IN | clientTrackingId | system, type | 0..1 | string | Client-provided tracking identifier for the export operation. | |
| IN | _format | system, type | 0..1 | code | Export Output Format Codes (Extensible) | Output format for the exported files (csv, ndjson, parquet, json). See Common Operation Behavior (operations-common.html). |
| IN | header | system, type | 0..1 | boolean | Include CSV headers (default true). Applies only when csv output is requested. | |
| IN | patient | system, type | 0..* | Reference | Filter exported data to the supplied patient(s). | |
| IN | group | system, type | 0..* | Reference | Filter exported data to members of the supplied group(s). | |
| IN | _since | system, type | 0..1 | instant | Export only resources updated since this instant. | |
| IN | source | system, type | 0..1 | string | External data source containing the ViewDefinition tables. | |
| OUT | exportId | 1..1 | string | Server-generated identifier assigned to the export request. | ||
| OUT | clientTrackingId | 0..1 | string | Echoed client tracking identifier when provided. | ||
| OUT | status | 1..1 | code | Export Status Codes (Required) | Status of the export (accepted, in-progress, completed, cancelled, failed). | |
| OUT | location | 1..1 | uri | URL to poll for export status updates. | ||
| OUT | cancelUrl | 0..1 | uri | Optional URL for cancelling the export. | ||
| OUT | _format | 0..1 | code | Output Format Codes (Extensible) | Format of the exported files (echoed from input if supplied). | |
| OUT | exportStartTime | 0..1 | instant | Timestamp when the export operation began. | ||
| OUT | exportEndTime | 0..1 | instant | Timestamp when the export operation completed. | ||
| OUT | exportDuration | 0..1 | integer | Duration of the export in seconds. | ||
| OUT | estimatedTimeRemaining | 0..1 | integer | Estimated seconds remaining until completion. | ||
| OUT | output | 0..* | Output information for each exported SQL query result. One entry per query; ViewDefinitions supplied via the view parameter do not produce output entries. | |||
| OUT | output.name | 1..1 | string | Name assigned to the exported output. | ||
| OUT | output.location | 1..* | uri | Download URL(s) for the exported file(s). |
This operation follows the FHIR Asynchronous Bulk Data Request Pattern; the completion response is specified once in Common Operation Behavior — Asynchronous Delivery:
Prefer: respond-async header and query source parameters202 Accepted with Content-Location header pointing to status URL202 Accepted while export is in progress (MAY include interim results)200 OK with the manifest Parameters resource (exportId, status, output, …) in the response bodyoutput.location URLs in the manifestNote: This operation uses a FHIR Parameters resource as the manifest instead of the Bulk Data JSON manifest object to:
Note: Completion is signalled by 200 OK with the manifest in the body of the status-poll response, as in the FHIR Asynchronous Bulk Data Request Pattern. The operation does not use a 303 See Other redirect to a separate result resource, so standard Bulk Data clients interoperate without special handling.
sequenceDiagram
participant C as Client
participant S as Server
rect rgb(240, 248, 255)
Note over C,S: Step 1: Kick-off
C->>S: POST /Library/$sqlquery-export<br/>Prefer: respond-async<br/>Body: Parameters{query, _format, ...}
S-->>C: 202 Accepted<br/>Content-Location: /status/abc123<br/>Body: Parameters{exportId, status: accepted}
end
rect rgb(245, 245, 245)
Note over C,S: Step 2: Polling (repeat while in progress)
C->>S: GET /status/abc123
S-->>C: 202 Accepted<br/>Retry-After: 10, X-Progress: 45%<br/>Body: Parameters{status: in-progress}
end
rect rgb(240, 255, 240)
Note over C,S: Step 3: Completion
C->>S: GET /status/abc123
S-->>C: 200 OK<br/>Body: Parameters{status: completed, output: [{name, location}]}
end
rect rgb(255, 248, 240)
Note over C,S: Step 4: Download
C->>S: GET /export/abc123/bp-results.csv
S-->>C: 200 OK<br/>Content-Type: text/csv<br/>Body: patient_id,systolic,...
end
sequenceDiagram
participant C as Client
participant S as Server
C->>S: DELETE /status/abc123
S-->>C: 202 Accepted
C->>S: GET /status/abc123 (subsequent poll)
S-->>C: 404 Not Found
sequenceDiagram
participant C as Client
participant S as Server
C->>S: GET /status/abc123
S-->>C: 500 Internal Server Error<br/>Body: OperationOutcome{severity: error, diagnostics: ...}
The operation can export data from:
source parameterOptional filtering parameters:
patient - Export only resources for this patientgroup - Export only resources for this group_since - Export only resources updated since this timePrefer: respond-async (required) - Specifies that the response should be asynchronousAccept (recommended) - Specifies the format of the kick-off responseAccept (recommended) - Specifies the format of the status response, including the completion (200 OK) response that carries the manifestEach status-poll request’s headers apply to that poll’s response. Because
completion is delivered as 200 OK with the manifest in the body of the
status-poll response (there is no separate result resource), the Accept header
sent on the completing poll governs the representation of the manifest. This
allows a client to negotiate a different representation for interim status
responses (e.g. minimal JSON) than for the final manifest if it chooses.
query Parameter (1..*, system+type scope)Each repetition identifies a single SQLQuery Library to export. At least one query is required at system/type level.
At the instance level (POST [base]/Library/[id]/$sqlquery-export), the bound Library identified by the request URL serves as the single query source and the query parameter does not apply. The export targets that one Library, optionally combined with the export control, filtering, and data source parameters listed below. Instance-level invocation does not provide a slot for per-query parameter binding; clients that need to pass parameters should use the system or type level with a query.parameters part.
| Part Name | Type | Min | Max | Description |
|---|---|---|---|---|
| name | string | 0 | 1 | Optional friendly name for the exported query output |
| queryReference | Reference | 0¹ | 1 | Reference to a SQLQuery Library on the server. Details |
| queryResource | Resource | 0¹ | 1 | Inline SQLQuery Library resource |
| parameters | Parameters | 0 | 1 | Input parameters for this query. Details |
¹ Either queryReference or queryResource is required per query repetition.
view Parameter (0..*, system+type scope)Provides ViewDefinitions that serve as table sources for the SQL queries. These are the ViewDefinitions referenced in the Library’s relatedArtifact entries. ViewDefinitions supplied here are materialized as tables for the SQL to query against — they do not produce separate output entries. Only the SQL query results appear in the export output.
| Part Name | Type | Min | Max | Description |
|---|---|---|---|---|
| name | string | 0 | 1 | Optional friendly name for the ViewDefinition |
| viewReference | Reference | 0² | 1 | Reference to a ViewDefinition stored on the server |
| viewResource | Resource | 0² | 1 | Inline ViewDefinition resource |
² Either viewReference or viewResource is required per view repetition.
| Name | Type | Min | Max | Description |
|---|---|---|---|---|
| clientTrackingId | string | 0 | 1 | Client-provided tracking ID for the export operation |
| _format | code | 0 | 1 | Output format: csv, ndjson, parquet, json. Details |
| header | boolean | 0 | 1 | Include CSV headers (default true). Applies only when csv output is requested |
| Name | Type | Min | Max | Description |
|---|---|---|---|---|
| patient | Reference | 0 | * | Filter by patient reference. Details |
| group | Reference | 0 | * | Filter by group membership. Details |
| _since | instant | 0 | 1 | Export only resources updated since this time. Details |
| Name | Type | Min | Max | Description |
|---|---|---|---|---|
| source | string | 0 | 1 | External data source (e.g., URI, bucket name). If absent, uses server data |
If server does not support a parameter, request should be rejected with 400 Bad Request
and OperationOutcome resource in the body with clarification that the parameter is not supported.
Server should document which parameters it supports in its CapabilityStatement.
The queryReference parameter MAY be specified using any of the following formats:
| A canonical URL (e.g. “http://example.org/fhir/Library/patient-bp-query | 1.0.0”) |
Servers MAY choose which reference formats they support. Servers SHALL document which reference formats they support in their CapabilityStatement.
The supported formats (json, ndjson, csv, parquet) and the default are
defined in
Common Operation Behavior and apply to
this operation. The fhir format is available on the run operations only:
json, ndjson and csv by default; servers MAY
support parquet, and SHALL document supported formats in the
CapabilityStatement._format is omitted, the server SHALL produce the export output in ndjson
format.When provided, the server SHALL NOT return resources in the patient compartments belonging to patients outside of this list.
If a client requests patients who are not present on the server,
the server SHOULD return details via a FHIR OperationOutcome resource in an error response to the request.
When provided, the server SHALL NOT return resources that are not a member of the supplied Group.
If a client requests groups that are not present on the server,
the server SHOULD return details via a FHIR OperationOutcome resource in an error response to the request.
Resources will be included in the response if their state has changed after the supplied time
(e.g., if Resource.meta.lastUpdated is later than the supplied _since time).
In the case of a Group level export, the server MAY return additional resources modified prior to the supplied time
if the resources belong to the patient compartment of a patient added to the Group after the supplied time (this behavior SHOULD be clearly documented by the server).
For Patient- and Group-level requests, the server MAY return resources that are referenced by the resources being returned
regardless of when the referenced resources were last updated.
For resources where the server does not maintain a last updated time,
the server MAY include these resources in a response irrespective of the _since value supplied by a client.
Query parameters are passed as a nested Parameters resource within each
query repetition (per-query binding via the parameters part), following the
same pattern as $sqlquery-run and the
CQL $evaluate operation.
See Parameter Types on the
SQLQuery profile for the binding rules and the mapping from
Library.parameter.type to the value[x] element to use.
Output parameters appear in the completion response — the 200 OK
status-poll response that carries the manifest. They are not present in the
202 Accepted responses returned while the export is still in progress.
| Name | Type | Min | Max | Description |
|---|---|---|---|---|
| exportId | string | 1 | 1 | Server-generated export ID |
| clientTrackingId | string | 0 | 1 | Client-provided tracking ID (echoed from input if provided) |
| Name | Type | Min | Max | Description |
|---|---|---|---|---|
| _format | code | 0 | 1 | The format of the exported files (echoed from input if provided) |
| exportStartTime | instant | 0 | 1 | When the export operation began |
| exportEndTime | instant | 0 | 1 | When the export operation completed |
| exportDuration | integer | 0 | 1 | The actual duration of the export in seconds |
| Name | Type | Min | Max | Description |
|---|---|---|---|---|
| output | complex | 0 | * | Output information for each exported SQL query result (one per query; ViewDefinitions supplied via view do not produce output entries) |
| output.name | string | 1 | 1 | The name of the exported output. Details |
| output.location | uri | 1 | * | URL(s) to download the exported file(s). Details |
During status polling (202 Accepted responses), servers MAY include the following in the response body:
| Name | Type | Min | Max | Description |
|---|---|---|---|---|
| exportId | string | 0 | 1 | Server-generated export ID |
| estimatedTimeRemaining | integer | 0 | 1 | Estimated seconds until completion |
Servers MAY also include partial/interim results during polling. The format of interim responses is implementation-defined.
The output.name parameter identifies the exported query result. The value is determined as follows:
name was provided in the query part, the server SHOULD use itname elementWhen multiple queries are exported, each produces a separate output entry with a distinct name.
For large exports, servers MAY partition the output into multiple files. When partitioning occurs:
output.location parameter can repeat within a single output entryfilename.part1.parquet, filename.part2.parquet)Example of partitioned output:
{
"name": "output",
"part": [
{
"name": "name",
"valueString": "patient_bp_results"
},
{
"name": "location",
"valueUri": "https://example.com/export/123/patient_bp_results.part1.csv"
},
{
"name": "location",
"valueUri": "https://example.com/export/123/patient_bp_results.part2.csv"
}
]
}
Clients MUST download all parts to obtain the complete dataset.
The $sqlquery-export operation uses standard HTTP status codes to indicate the outcome:
| Status Code | Description | When to Use |
|---|---|---|
| 202 Accepted | In Progress | Export request accepted or still in progress during polling |
| 200 OK | Complete | Export complete; the status-poll response body carries the manifest |
| 400 Bad Request | Client Error | Invalid parameters, unsupported parameters, missing required headers |
| 404 Not Found | Not Found | SQLQuery Library not found, or cancelled export status URL |
| 422 Unprocessable Entity | Business Logic Error | Valid request but query is invalid or cannot be executed |
| 500 Internal Server Error | Server Error | Unexpected server error; on a status poll, indicates operation failure |
All error responses (4xx and 5xx) SHOULD include an OperationOutcome resource providing details about the error.
When the server does not support certain parameters, it returns 400 Bad Request:
HTTP/1.1 400 Bad Request
Content-Type: application/fhir+json
{
"resourceType": "OperationOutcome",
"issue": [
{
"severity": "error",
"code": "not-supported",
"diagnostics": "The server does not support the 'source' parameter"
}
]
}
When a provided SQLQuery Library is invalid:
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/fhir+json
{
"resourceType": "OperationOutcome",
"issue": [
{
"severity": "error",
"code": "invalid",
"diagnostics": "The SQLQuery Library contains invalid SQL: syntax error near 'SELCT'"
}
]
}
When a referenced SQLQuery Library does not exist:
HTTP/1.1 404 Not Found
Content-Type: application/fhir+json
{
"resourceType": "OperationOutcome",
"issue": [
{
"severity": "error",
"code": "not-found",
"diagnostics": "SQLQuery Library with reference 'Library/non-existent' not found"
}
]
}
When a query parameter value type does not match the declared Library.parameter.type:
HTTP/1.1 400 Bad Request
Content-Type: application/fhir+json
{
"resourceType": "OperationOutcome",
"issue": [
{
"severity": "error",
"code": "invalid",
"diagnostics": "Parameter 'from_date' expects type 'date' but received 'valueString'"
}
]
}
When filtering by patient or group that doesn’t exist:
HTTP/1.1 404 Not Found
Content-Type: application/fhir+json
{
"resourceType": "OperationOutcome",
"issue": [
{
"severity": "error",
"code": "not-found",
"diagnostics": "Patient with reference 'Patient/12345' not found"
}
]
}
POST Library/$sqlquery-export with Prefer: respond-async header and one or more query parameters.202 Accepted status codeContent-Location header with the absolute URL for subsequent status requests (polling location)status parameter set to accepted and location parameter400 Bad Request and OperationOutcome resource in the body.202 Accepted with optional Parameters resource for interim statusX-Progress header to indicate completion percentageRetry-After header to indicate when to retry200 OK status codeParameters resource in the body containing status = completed, the
export metadata, and the output entries with their download locations303 See Other redirect and no separate result URL500 Internal Server Error) with an
OperationOutcome body. Polling-transport errors and operation failures are
distinguished by the status code on the poll response itself.DELETE request to the status polling URL202 Accepted404 Not Foundoutput.location download URLs SHALL remain valid for at least 24 hours after
export completion:
Expires header to indicate when the URLs expire401 Unauthorized or 403 Forbiddenoutput.location parameters.This example demonstrates the full lifecycle of a SQL query export from initiation through completion.
Step 1: Kick-off Request
Client initiates export of a SQLQuery Library with parameters and patient filtering:
POST /Library/$sqlquery-export HTTP/1.1
Host: example.com
Content-Type: application/fhir+json
Prefer: respond-async
Accept: application/fhir+json
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGc...
{
"resourceType": "Parameters",
"parameter": [
{
"name": "clientTrackingId",
"valueString": "bp-report-2026-03"
},
{
"name": "query",
"part": [
{
"name": "name",
"valueString": "patient-bp-results"
},
{
"name": "queryReference",
"valueReference": {
"reference": "Library/patient-bp-query"
}
},
{
"name": "parameters",
"resource": {
"resourceType": "Parameters",
"parameter": [
{
"name": "from_date",
"valueDate": "2024-01-01"
}
]
}
}
]
},
{
"name": "patient",
"valueReference": {
"reference": "Patient/123"
}
},
{
"name": "_since",
"valueInstant": "2026-01-01T00:00:00Z"
},
{
"name": "_format",
"valueCode": "csv"
}
]
}
Step 2: Kick-off Response
Server accepts the request and provides polling location:
HTTP/1.1 202 Accepted
Content-Location: https://example.com/fhir/export/550e8400-e29b-41d4-a716-446655440000/status
Content-Type: application/fhir+json
{
"resourceType": "Parameters",
"parameter": [
{
"name": "exportId",
"valueString": "550e8400-e29b-41d4-a716-446655440000"
},
{
"name": "clientTrackingId",
"valueString": "bp-report-2026-03"
},
{
"name": "status",
"valueCode": "accepted"
},
{
"name": "location",
"valueUri": "https://example.com/fhir/export/550e8400-e29b-41d4-a716-446655440000/status"
}
]
}
Step 3: First Status Poll (Starting)
Client polls immediately:
GET /fhir/export/550e8400-e29b-41d4-a716-446655440000/status HTTP/1.1
Host: example.com
Accept: application/fhir+json
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGc...
Response shows export is starting:
HTTP/1.1 202 Accepted
Content-Type: application/fhir+json
Retry-After: 5
X-Progress: 0%
{
"resourceType": "Parameters",
"parameter": [
{
"name": "exportId",
"valueString": "550e8400-e29b-41d4-a716-446655440000"
},
{
"name": "clientTrackingId",
"valueString": "bp-report-2026-03"
},
{
"name": "status",
"valueCode": "in-progress"
},
{
"name": "location",
"valueUri": "https://example.com/fhir/export/550e8400-e29b-41d4-a716-446655440000/status"
},
{
"name": "exportStartTime",
"valueInstant": "2026-03-03T14:30:00Z"
}
]
}
Step 4: Second Status Poll (In Progress)
After 5 seconds, client polls again:
GET /fhir/export/550e8400-e29b-41d4-a716-446655440000/status HTTP/1.1
Host: example.com
Accept: application/fhir+json
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGc...
Response shows progress:
HTTP/1.1 202 Accepted
Content-Type: application/fhir+json
Retry-After: 10
X-Progress: 65%
{
"resourceType": "Parameters",
"parameter": [
{
"name": "exportId",
"valueString": "550e8400-e29b-41d4-a716-446655440000"
},
{
"name": "clientTrackingId",
"valueString": "bp-report-2026-03"
},
{
"name": "status",
"valueCode": "in-progress"
},
{
"name": "location",
"valueUri": "https://example.com/fhir/export/550e8400-e29b-41d4-a716-446655440000/status"
},
{
"name": "exportStartTime",
"valueInstant": "2026-03-03T14:30:00Z"
},
{
"name": "estimatedTimeRemaining",
"valueInteger": 25
}
]
}
Step 5: Final Status Poll (Completed)
After another 10 seconds:
GET /fhir/export/550e8400-e29b-41d4-a716-446655440000/status HTTP/1.1
Host: example.com
Accept: application/fhir+json
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGc...
The status poll returns 200 OK with the manifest in the body; there is no redirect:
HTTP/1.1 200 OK
Content-Type: application/fhir+json
Expires: Wed, 04 Mar 2026 14:30:42 GMT
{
"resourceType": "Parameters",
"parameter": [
{
"name": "exportId",
"valueString": "550e8400-e29b-41d4-a716-446655440000"
},
{
"name": "clientTrackingId",
"valueString": "bp-report-2026-03"
},
{
"name": "status",
"valueCode": "completed"
},
{
"name": "_format",
"valueCode": "csv"
},
{
"name": "exportStartTime",
"valueInstant": "2026-03-03T14:30:00Z"
},
{
"name": "exportEndTime",
"valueInstant": "2026-03-03T14:31:15Z"
},
{
"name": "exportDuration",
"valueInteger": 75
},
{
"name": "output",
"part": [
{
"name": "name",
"valueString": "patient-bp-results"
},
{
"name": "location",
"valueUri": "https://example.com/fhir/export/550e8400-e29b-41d4-a716-446655440000/patient-bp-results.csv"
}
]
}
]
}
Step 6: Download Files
Client downloads each file:
GET /fhir/export/550e8400-e29b-41d4-a716-446655440000/patient-bp-results.csv HTTP/1.1
Host: example.com
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGc...
HTTP/1.1 200 OK
Content-Type: text/csv
Content-Disposition: attachment; filename="patient-bp-results.csv"
patient_id,systolic,effective_date
Patient/123,120,2024-01-15
Patient/123,118,2024-02-20
Patient/456,135,2024-01-20
Pass the SQLQuery Library inline for ad-hoc queries:
POST /Library/$sqlquery-export HTTP/1.1
Host: example.com
Content-Type: application/fhir+json
Prefer: respond-async
{
"resourceType": "Parameters",
"parameter": [
{
"name": "_format",
"valueCode": "ndjson"
},
{
"name": "query",
"part": [
{
"name": "name",
"valueString": "active-patients"
},
{
"name": "queryResource",
"resource": {
"resourceType": "Library",
"meta": { "profile": ["https://sql-on-fhir.org/ig/StructureDefinition/SQLQuery"] },
"type": { "coding": [{ "system": "https://sql-on-fhir.org/ig/CodeSystem/LibraryTypesCodes", "code": "sql-query" }] },
"status": "active",
"relatedArtifact": [
{ "type": "depends-on", "resource": "https://example.org/ViewDefinition/patient_view", "label": "p" }
],
"content": [{
"contentType": "application/sql",
"title": "SELECT p.id, p.name FROM p WHERE p.active = true",
"data": "U0VMRUNUIHAuaWQsIHAubmFtZSBGUk9NIHAgV0hFUkUgcC5hY3RpdmUgPSB0cnVl"
}]
}
}
]
},
{
"name": "_since",
"valueInstant": "2026-01-01T00:00:00Z"
}
]
}
Export multiple queries in one operation, providing a ViewDefinition table source inline:
POST /Library/$sqlquery-export HTTP/1.1
Host: example.com
Content-Type: application/fhir+json
Prefer: respond-async
{
"resourceType": "Parameters",
"parameter": [
{
"name": "query",
"part": [
{
"name": "name",
"valueString": "bp-summary"
},
{
"name": "queryReference",
"valueReference": {
"reference": "Library/bp-summary-query"
}
}
]
},
{
"name": "query",
"part": [
{
"name": "name",
"valueString": "lab-summary"
},
{
"name": "queryReference",
"valueReference": {
"reference": "Library/lab-summary-query"
}
},
{
"name": "parameters",
"resource": {
"resourceType": "Parameters",
"parameter": [
{
"name": "loinc_code",
"valueString": "2093-3"
}
]
}
}
]
},
{
"name": "view",
"part": [
{
"name": "viewReference",
"valueReference": {
"reference": "ViewDefinition/UsCoreBloodPressures"
}
}
]
},
{
"name": "_format",
"valueCode": "csv"
}
]
}