FHIR
FHIR settings
General
General FHIR settings
Enable FHIR compliant mode
Enforces FHIR compatibility when enabled:
- Adds various attributes and endpoints info to CapabilityStatement
- Sanitises CapabilityStatement (i.e. removes attributes containing null values and empty arrays)
- Adds
/fhir
to base URL for FHIR search parameters definitions in CapabilityStatement - Adds
BOX_WEB_BASE_URL
inBundle.link.url
- Adds FHIR date search parameter validation on lastUpdated search parameter
- Adds
alg: RS256
entry for JWKS - Changes validation error status to 422 (instead of 400)
- Changes cache-control header to no-store on authorization code auth flow (instead of
no-cache
,no-store
,max-age=0
,must-revalidate
) - Removes
Bundle.entry
if empty
ID | fhir.compliant-mode |
Type | Bool |
Default value | false |
Environment variable | BOX_FHIR_COMPLIANT_MODE |
Deprecated environment variables | AIDBOX_FHIR_COMPLIANT_MODE , BOX_COMPLIANT__MODE__ENABLED? , AIDBOX_COMPLIANCE |
Sensitive | false — value will be visible in plaintext in Admin UI |
Set via | Admin UI → Settings Environment variables |
Hot reload | true — setting can be changed at runtime |
Return 404 on deleting non-existent resources
Controls server response when deleting non-existing resources. When enabled, returns 404 (Not Found) status code instead of the default 204 (No Content). Follows FHIR REST implementation where DELETE operations on missing resources can signal resource absence rather than successful deletion.
ID | fhir.return-404-on-empty-delete |
Type | Bool |
Default value | false |
Environment variable | BOX_FHIR_RETURN_404_ON_EMPTY_DELETE |
Deprecated environment variables | BOX_FEATURES_HTTP_RETURN__404__ON__EMPTY__DELETE |
Sensitive | false — value will be visible in plaintext in Admin UI |
Set via | Admin UI → Settings Environment variables |
Hot reload | true — setting can be changed at runtime |
Transaction max isolation level
Sets the maximum (inclusive) isolation level for transactions. Can be overridden by the x-max-isolation-level
header.
ID | fhir.transaction-max-isolation-level |
Type | Enum |
Values | none read-committed repeatable-read serializable |
Default value | none |
Environment variable | BOX_FHIR_TRANSACTION_MAX_ISOLATION_LEVEL |
Deprecated environment variables | BOX_FEATURES_FHIR_TRANSACTION_MAX__ISOLATION__LEVEL |
Sensitive | false — value will be visible in plaintext in Admin UI |
Set via | Admin UI → Settings Environment variables |
Hot reload | false — setting requires system restart |
Validation
Validation settings
Enable FHIR Schema validation mode
Activates the FHIR Schema validation engine which replaces legacy ZEN and Entity/Attribute validation systems. Provides more comprehensive structure validation against the FHIR resource schemas, ensuring stronger conformance to FHIR specifications and more precise error reporting.
ID | fhir.validation.fhir-schema-validation |
Type | Bool |
Default value | false |
Environment variable | BOX_FHIR_SCHEMA_VALIDATION |
Deprecated environment variables | AIDBOX_FHIR_SCHEMA_VALIDATION |
Sensitive | false — value will be visible in plaintext in Admin UI |
Set via | Admin UI → Settings Environment variables |
Hot reload | false — setting requires system restart |
Enforce strict profile resolution
Requires all referenced profiles to be pre-loaded in Aidbox before validation. When enabled, validation fails if profiles referenced in resources are unknown to the server. Ensures complete validation integrity by preventing partial validation against unknown profiles.
ID | fhir.validation.strict-profile-resolution |
Type | Bool |
Default value | false |
Environment variable | BOX_FHIR_VALIDATOR_STRICT_PROFILE_RESOLUTION |
Deprecated environment variables | AIDBOX_VALIDATOR_STRICT_PROFILE_RESOLUTION_ENABLED |
Sensitive | false — value will be visible in plaintext in Admin UI |
Set via | Admin UI → Settings Environment variables |
Hot reload | false — setting requires system restart |
Enforce strict FHIR extension resolution
Requires all referenced extensions to be formally defined in profiles loaded to the server.
ID | fhir.validation.strict-extension-resolution |
Type | Bool |
Default value | false |
Environment variable | BOX_FHIR_VALIDATOR_STRICT_EXTENSION_RESOLUTION |
Deprecated environment variables | AIDBOX_VALIDATOR_STRICT_EXTENSION_RESOLUTION_ENABLED |
Sensitive | false — value will be visible in plaintext in Admin UI |
Set via | Admin UI → Settings Environment variables |
Hot reload | false — setting requires system restart |
Skip FHIR reference validation
Bypasses validation of resource references during FHIR operations. When enabled, allows creating and updating resources containing references to non-existent target resources. Useful for staged data loading or systems with eventual consistency but may compromise referential integrity.
ID | fhir.validation.skip-reference |
Type | Bool |
Default value | false |
Environment variable | BOX_FHIR_VALIDATION_SKIP_REFERENCE |
Deprecated environment variables | AIDBOX_FEATURES_VALIDATION_SKIP__REFERENCE , BOX_FEATURES_VALIDATION_SKIP__REFERENCE |
Sensitive | false — value will be visible in plaintext in Admin UI |
Set via | Admin UI → Settings Environment variables |
Hot reload | true — setting can be changed at runtime |
Correct Aidbox format
Transforms polymorphic extensions from FHIR format to Aidbox's internal format. When enabled, extensions like extension.*.valueString
are stored as extension.0.value.string
instead. Improves query performance and consistency in Aidbox-specific operations while maintaining FHIR compatibility in API responses.
ID | fhir.validation.correct-aidbox-format |
Type | Bool |
Default value | false |
Environment variable | BOX_FHIR_CORRECT_AIDBOX_FORMAT |
Deprecated environment variables | AIDBOX_CORRECT_AIDBOX_FORMAT |
Sensitive | false — value will be visible in plaintext in Admin UI |
Set via | Admin UI → Settings Environment variables |
Hot reload | true — setting can be changed at runtime |
createdAt extension URL
Specifies the URL for the createdAt
extension.
ID | fhir.validation.createdat-url |
Type | String |
Default value | ex:createdAt |
Environment variable | BOX_FHIR_CREATEDAT_URL |
Deprecated environment variables | AIDBOX_CREATED_AT_URL |
Sensitive | false — value will be visible in plaintext in Admin UI |
Set via | Admin UI → Settings Environment variables |
Hot reload | false — setting requires system restart |
JSON schema datetime
Enables strict datetime validation in JSON schema validation engine.
ID | fhir.validation.json-schema-datetime-regex |
Type | String |
Default value | #{} |
Environment variable | BOX_FHIR_JSON_SCHEMA_DATETIME_REGEX |
Deprecated environment variables | BOX_COMPATIBILITY_VALIDATION_JSON__SCHEMA_REGEX |
Sensitive | false — value will be visible in plaintext in Admin UI |
Set via | Admin UI → Settings Environment variables |
Hot reload | false — setting requires system restart |
Legacy FCE package
The name and version of the package from which Aidbox first-class extensions are generated Format: package-name#package-version
ID | fhir.validation.legacy-fce-package |
Type | String |
Default value | (no default) |
Environment variable | BOX_FHIR_LEGACY_FCE_PACKAGE |
Available from | 2508 |
Sensitive | false — value will be visible in plaintext in Admin UI |
Set via | Admin UI → Settings Environment variables |
Hot reload | false — setting requires system restart |
Search
Search settings
Use correct range arithmetic in search
FHIR date search is range based. That is, dates are always converted to datetime ranges and then compared.
Historically, Aidbox uses slightly different range comparison arithmetic. Turn on this setting to use FHIR comparisons.
ID | fhir.search.comparisons |
Type | Bool |
Default value | false |
Environment variable | BOX_FHIR_SEARCH_COMPARISONS |
Deprecated environment variables | BOX_SEARCH_FHIR__COMPARISONS |
Sensitive | false — value will be visible in plaintext in Admin UI |
Set via | Admin UI → Settings Environment variables |
Hot reload | true — setting can be changed at runtime |
Enable FHIR-conformant (rev)include behavior
Due to historical reasons Aidbox treats the _include and _revinclude parameters slightly differently from the behavior described in the specification (without FHIR-conformant mode on). The _(rev)include search parameter without the :iterate or :recurse modifier should only be applied to the initial ("matched") result. However, in Aidbox mode, it is also applied to the previous _(rev)include. The _(rev)include parameter with the :iterate(:recurse) modifier should be repeatedly applied to the result with included resources. However, in Aidbox mode, it only resolves cyclic references. In Aidbox mode, it is possible to search without specifying source type: GET /Patient?_include=general-practitioner, but in the FHIR-conformant mode it is not possible.
ID | fhir.search.include.conformant |
Type | Bool |
Default value | false |
Environment variable | BOX_FHIR_SEARCH_INCLUDE_CONFORMANT |
Deprecated environment variables | BOX_SEARCH_INCLUDE_CONFORMANT |
Sensitive | false — value will be visible in plaintext in Admin UI |
Set via | Admin UI → Settings Environment variables |
Hot reload | true — setting can be changed at runtime |
Authorize inline requests
Authorize inline requests (_revinclude
and _include
) with access policies. Learn more
ID | fhir.search.authorize-inline-requests |
Type | Bool |
Default value | false |
Environment variable | BOX_FHIR_SEARCH_AUTHORIZE_INLINE_REQUESTS |
Deprecated environment variables | BOX_SEARCH_AUTHORIZE_INLINE_REQUESTS |
Sensitive | false — value will be visible in plaintext in Admin UI |
Set via | Admin UI → Settings Environment variables |
Hot reload | true — setting can be changed at runtime |
Use semi join in chained searches
When the search query does not use _has search parameters, use subselect instead of INNER JOIN for forward chain searches. This is a performance optimization which could require building additional indexes.
ID | fhir.search.chain.subselect |
Type | Bool |
Default value | false |
Environment variable | BOX_FHIR_SEARCH_CHAIN_SUBSELECT |
Deprecated environment variables | BOX_SEARCH_CHAIN_SUBSELECT |
Sensitive | false — value will be visible in plaintext in Admin UI |
Set via | Admin UI → Settings Environment variables |
Hot reload | true — setting can be changed at runtime |
Enable FHIR composite search parameters
Enable support for FHIR composite search parameters.
ID | fhir.search.composite-parameters |
Type | Bool |
Default value | false |
Environment variable | BOX_FHIR_SEARCH_COMPOSITE_PARAMETERS |
Deprecated environment variables | BOX_SEARCH_COMPOSITE__SEARCH |
Sensitive | false — value will be visible in plaintext in Admin UI |
Set via | Admin UI → Settings Environment variables |
Hot reload | false — setting requires system restart |
Iteration limit for (rev)include:iterate
Maximum number of iterations for _include
and _revinclude
with :recur
or :iterate
modifier.
The default value is 10. If set to 0, queries for _(rev)include will not be performed. If set to a negative value, no limit will be applied.
ID | fhir.search.include.iterate-max |
Type | Int |
Default value | 10 |
Environment variable | BOX_FHIR_SEARCH_INCLUDE_ITERATE_MAX |
Deprecated environment variables | BOX_SEARCH_INCLUDE_ITERATE__MAX |
Sensitive | false — value will be visible in plaintext in Admin UI |
Set via | Admin UI → Settings Environment variables |
Hot reload | true — setting can be changed at runtime |
Default search timeout
Default timeout value (seconds). Also uses as timeout for the count
query.
ID | fhir.search.default-params.timeout |
Type | Int |
Default value | 60 |
Environment variable | BOX_FHIR_SEARCH_DEFAULT_PARAMS_TIMEOUT |
Deprecated environment variables | BOX_SEARCH_DEFAULT__PARAMS_TIMEOUT |
Sensitive | false — value will be visible in plaintext in Admin UI |
Set via | Admin UI → Settings Environment variables |
Hot reload | true — setting can be changed at runtime |
Default number of results per search page
This is the default value of the _count search parameter.
It limits number of results per page
ID | fhir.search.default-params.count |
Type | Int |
Default value | 100 |
Environment variable | BOX_FHIR_SEARCH_DEFAULT_PARAMS_COUNT |
Deprecated environment variables | BOX_SEARCH_DEFAULT__PARAMS_COUNT |
Sensitive | false — value will be visible in plaintext in Admin UI |
Set via | Admin UI → Settings Environment variables |
Hot reload | true — setting can be changed at runtime |
Default search result count estimation method
FHIR search response bundle may contain a result count estimation.
ID | fhir.search.default-params.total |
Type | Enum |
Values | none — omit estimation (fastest)estimate — use approximate value (fast)accurate — use exact value (could be slow) |
Default value | accurate |
Environment variable | BOX_FHIR_SEARCH_DEFAULT_PARAMS_TOTAL |
Deprecated environment variables | BOX_SEARCH_DEFAULT__PARAMS_TOTAL |
Sensitive | false — value will be visible in plaintext in Admin UI |
Set via | Admin UI → Settings Environment variables |
Hot reload | true — setting can be changed at runtime |
SQL operator to use for token search
Token and Reference search parameters use exact match.
Aidbox uses Postgres @> operator for this type of searches. The @> operator is the containment operator. It checks that FHIR resource contains some subresource.
The main advantage of the @> operator is that the single GIN index covers all token and reference searches. However sometimes Postgres planner can not build effecient query plan.
Alternatively in some cases it is possible to extract value directly using #>> operator. This operator extracts value from the given path. There is a limitation: path must not contain any arrays. Engines options:
ID | fhir.search.token-operator |
Type | Enum |
Values | @> — One GIN index per resource covers all token searches. Sometimes the Postgres planner can incorrectly estimate the index lookup cost, which leads to slow queries.#>> — Needs an index per #>> expression. If path to the target element contains arrays, @> will be used instead. |
Default value | @> |
Environment variable | BOX_FHIR_SEARCH_TOKEN_OPERATOR |
Deprecated environment variables | BOX_SEARCH_TOKEN__OPERATOR |
Sensitive | false — value will be visible in plaintext in Admin UI |
Set via | Admin UI → Settings Environment variables |
Hot reload | true — setting can be changed at runtime |
JSONB query engine
Aidbox has two engines to search: jsonpath and jsonknife.
The engine is responsible for SQL generation for search operations. SQL by jsonpath and jsonknife is different for search parameter types: date, number, quantity, reference, string, token, uri. _lastUpdated, _createdAt senarch parameters and :missing modifier searches also differ by engine. jsonpath-engine:
jsonknife: *using indexes makes performance approximately the same
ID | fhir.search.engine |
Type | Enum |
Values | knife — Legacy engine. Uses custom Postgres module in Aidboxdb and SQL functions fallback in other Postgres instances. Being phased out. Has better performance for dates, number and quantity search parameters. Using indexes makes performance approximately the samejsonpath — <ul><li>JSONpath language is available starting from PostgreSQL 12.</li><li>supported by PostgreSQL without external extensions, can be used with managed PostgreSQL, e.g. Azure PostgreSQL</li><li>better performance for string search parameters and all string-related search (e.g. :text modifier)*</li><li>will be supported as main engine</li></ul> |
Default value | knife |
Environment variable | BOX_FHIR_SEARCH_ENGINE |
Deprecated environment variables | BOX_SEARCH_ENGINE |
Sensitive | false — value will be visible in plaintext in Admin UI |
Set via | Admin UI → Settings Environment variables |
Hot reload | false — setting requires system restart |
Enable support for multiple languages in search
FHIR uses special extension to provide translations in resources. Enable this setting to turn on the _search-language parameter. This parameter (_search-language) specifies which language to use for search. i.e. which translation in a resource to use.
This feature requires Aidbox to build more complex (so possibly slower) queries. Leave this setting disabled if you don't need to search across translations.
ID | fhir.search.multilingual.enable |
Type | Bool |
Default value | false |
Environment variable | BOX_FHIR_SEARCH_MULTILINGUAL_ENABLE |
Deprecated environment variables | BOX_FEATURES_MULTILINGUAL_ENABLE__SEARCH__LANGUAGE |
Sensitive | false — value will be visible in plaintext in Admin UI |
Set via | Admin UI → Settings Environment variables |
Hot reload | true — setting can be changed at runtime |
Use Accept-Language header for search
Use the Accept-Language header to specify search language
See fhir.search.multilingual.enable for details.
ID | fhir.search.multilingual.use-accept-language-header |
Type | Bool |
Default value | false |
Environment variable | BOX_FHIR_SEARCH_MULTILINGUAL_USE_ACCEPT_LANGUAGE_HEADER |
Deprecated environment variables | BOX_FEATURES_MULTILINGUAL_USE__ACCEPT__LANGUAGE__HEADER |
Sensitive | false — value will be visible in plaintext in Admin UI |
Set via | Admin UI → Settings Environment variables |
Hot reload | true — setting can be changed at runtime |
Use main value if translation is not found
When the _search-language parameter is used, Aidbox uses translation in FHIR extension for search.
If this setting is enabled, Aidbox additionally uses the main value (i.e. not in translation extension)
ID | fhir.search.multilingual.fallback |
Type | Bool |
Default value | true |
Environment variable | BOX_FHIR_SEARCH_MULTILINGUAL_FALLBACK |
Deprecated environment variables | BOX_FEATURES_MULTILINGUAL_FALLBACK |
Sensitive | false — value will be visible in plaintext in Admin UI |
Set via | Admin UI → Settings Environment variables |
Hot reload | true — setting can be changed at runtime |
Terminology
Terminology settings
FHIR terminology service base URL
Specifies the base URL of the terminology server used for code validation and ValueSet expansion operations. Required for validating coded elements against their ValueSets and CodeSystems. When not configured, code validation is skipped entirely.
ID | fhir.terminology.service-base-url |
Type | String |
Default value | (no default) |
Environment variable | BOX_FHIR_TERMINOLOGY_SERVICE_BASE_URL |
Deprecated environment variables | AIDBOX_TERMINOLOGY_SERVICE_BASE_URL |
Sensitive | false — value will be visible in plaintext in Admin UI |
Set via | Admin UI → Settings Environment variables |
Hot reload | true — setting can be changed at runtime |
Terminology Engine
Controls how Aidbox handles terminology APIs
ID | fhir.terminology.engine |
Type | Enum |
Values | hybrid — Combines local storage with external server fallback (recommended)legacy — Routes all requests to external terminology serverslocal — Uses only resources stored in Aidbox's FAR |
Default value | legacy |
Environment variable | BOX_FHIR_TERMINOLOGY_ENGINE |
Available from | 2507 |
Sensitive | false — value will be visible in plaintext in Admin UI |
Set via | Admin UI → Settings Environment variables |
Hot reload | false — setting requires system restart |
External Terminology Server
Specifies the base URL of an external terminology server to be used in 'hybrid' terminology engine mode. This setting is ignored for other modes.
ID | fhir.terminology.engine.hybrid.external-tx-server |
Type | String |
Default value | (no default) |
Environment variable | BOX_FHIR_TERMINOLOGY_ENGINE_HYBRID_EXTERNAL_TX_SERVER |
Available from | 2507 |
Sensitive | false — value will be visible in plaintext in Admin UI |
Set via | Admin UI → Settings Environment variables |
Hot reload | false — setting requires system restart |
Bulk Data Export
Bulk Data Export settings
Bulk storage provider
Storage provider for bulk export
ID | fhir.bulk-storage.provider |
Type | Enum |
Values | gcp — Google Cloud Platformaws — Amazon Web Servicesazure — Microsoft Azure: Cloud Computing Services |
Default value | (no default) |
Environment variable | BOX_FHIR_BULK_STORAGE_PROVIDER |
Deprecated environment variables | BOX_BULK__STORAGE_BACKEND |
Sensitive | false — value will be visible in plaintext in Admin UI |
Set via | Admin UI → Settings Environment variables |
Hot reload | true — setting can be changed at runtime |
GCP service account
GCPServiceAccount
resource ID for $export
ID | fhir.bulk-storage.gcp.service-account |
Type | String |
Default value | (no default) |
Environment variable | BOX_FHIR_BULK_STORAGE_GCP_SERVICE_ACCOUNT |
Deprecated environment variables | BOX_BULK__STORAGE_GCP_SERVICE__ACCOUNT |
Sensitive | false — value will be visible in plaintext in Admin UI |
Set via | Admin UI → Settings Environment variables |
Hot reload | true — setting can be changed at runtime |
GCP bucket
GCP bucket name for $export
ID | fhir.bulk-storage.gcp.bucket |
Type | String |
Default value | (no default) |
Environment variable | BOX_FHIR_BULK_STORAGE_GCP_BUCKET |
Deprecated environment variables | BOX_BULK__STORAGE_GCP_BUCKET |
Sensitive | false — value will be visible in plaintext in Admin UI |
Set via | Admin UI → Settings Environment variables |
Hot reload | true — setting can be changed at runtime |
AWS service account ID
AWS Account resource ID for $export
ID | fhir.bulk-storage.aws.account |
Type | String |
Default value | (no default) |
Environment variable | BOX_FHIR_BULK_STORAGE_AWS_ACCOUNT |
Deprecated environment variables | BOX_BULK__STORAGE_AWS_ACCOUNT |
Sensitive | false — value will be visible in plaintext in Admin UI |
Set via | Admin UI → Settings Environment variables |
Hot reload | true — setting can be changed at runtime |
AWS bucket
AWS S3 bucket name for $export
ID | fhir.bulk-storage.aws.bucket |
Type | String |
Default value | (no default) |
Environment variable | BOX_FHIR_BULK_STORAGE_AWS_BUCKET |
Deprecated environment variables | BOX_BULK__STORAGE_AWS_BUCKET |
Sensitive | false — value will be visible in plaintext in Admin UI |
Set via | Admin UI → Settings Environment variables |
Hot reload | true — setting can be changed at runtime |
Azure service account ID
Azure Container resource ID for $export
ID | fhir.bulk-storage.azure.container |
Type | String |
Default value | (no default) |
Environment variable | BOX_FHIR_BULK_STORAGE_AZURE_CONTAINER |
Deprecated environment variables | BOX_BULK__STORAGE_AZURE_CONTAINER |
Sensitive | false — value will be visible in plaintext in Admin UI |
Set via | Admin UI → Settings Environment variables |
Hot reload | true — setting can be changed at runtime |
Last updated 2025-08-27T00:21:08Z