Skip to main content

Supported FHIR Interactions

When using the Resource Repository storage strategy provided with the FHIR server, the server supports the following interactions and operations. If your custom FHIR server extends the Resource Repository, it also supports these interactions and operations by default.

HL7® FHIR® interactionsOpens in a new tab are the set of actions that a FHIR client can take on resources. These interactions can be grouped according to whether they act upon an instance, a type, or the whole system. An instance is a specific instance of a resource, for example, Patient/1 refers to an instance of a Patient resource with an id of 1. A type refers to a particular FHIR resource, for example, a Patient or Observation.

The following table summarizes the support for FHIR interactions in the Resource Repository, or a custom FHIR server that has extended the Resource Repository. Click on an interaction to see how it is defined in the HL7 REST API and how to use it.

Interaction Level of Support
createOpens in a new tab Fully supported, including conditional create.
readOpens in a new tab

Conditional read is not supported.

vreadOpens in a new tab

Conditional read is not supported.

updateOpens in a new tab Fully supported, including conditional update.
patchOpens in a new tab Supported for JSON patch documents only. Conditional patch is supported.
deleteOpens in a new tab Fully supported, including conditional delete.
historyOpens in a new tab

Supported for instance interactions only, not type or system. For example, GET [baseURL]/Patient/1/_history is supported, but not GET [baseURL]/Patient/_history or GET [baseURL]/_history.

The _count and _at parameters are not supported.

Paging is not supported.

batchOpens in a new tab Fully supported
transactionOpens in a new tab Circular references within the bundle are not supported.
search Supported with some limitations. For details, see FHIR Search Interaction.

FHIR clients use the search interaction to retrieve resources from the Resource Repository. For full details about the search interaction, refer to FHIR specificationOpens in a new tab. The sections below summarize the default support for the search interaction when the FHIR server is using or extending the Resource Repository:

Searching for Resources of Multiple Types

The resource repository supports searching for resources of multiple typesOpens in a new tab in the following contexts:

System-level Search

If you search without specifying one particular compartment or resource type, your search will potentially look at all resources in the repository.

The generic format for system-level searching is GET [base]?[parameter_list]

For example, to search for all resources updated since January 29, 2025:

GET [base]?_lastUpdated=ge2025-01-29

To search for multiple resource types at the System level, you can search a specified set of resource types by using _type; in this case, all parameters must be common to all specified types. If you do not specify a set of resource types using _type, resources of all types will be searched; in this case all parameters must be supported by all resource types.

For example, because both the MedicationRequest and MedicationDispense resources support the medication parameter, you can search for all MedicationRequest and MedicationDispense resources that have a relationship to a specific medication:

GET [base]?_type=MedicationRequest,MedicationDispense&medication=Medication/med1
Compartment-level Search

You can search within a specific resource compartmentOpens in a new tab, a logical structure that identifies all resources related to a particular Patient, Encounter, RelatedPerson, Practitioner, or Device resource. Compartments can streamline searching.

The generic format for compartment-level searching is GET [base]/[compartment_type]/[compartment_ID]/[type]?[parameter_list]

To search for multiple resource types within the same compartment, you can use the wildcard character (*) in the [type] position of the query URL, and you can use the $everything operation:

  • A simple example of how to use the wildcard character: GET [base]/Patient/100000001/* returns all resources in the compartment.

  • You can also use the wildcard character in conjunction with any search parameters common to all the resource types the search is targeting. This is especially useful if you use the _type parameter. For example: GET [base]/Patient/100000001/*?status=final&_type=Observation,DiagnosticReport is supported because both the Observation and DiagnosticReport resource type include the status element. This query searches all Observation and DiagnosticReport resources associated with the specified patient, and returns those that are in final status.

  • The wildcard syntax provides a different result than the $everything operation. GET [base]/Patient/100000001/* returns any and all resources associated with the specified Patient—including, for example, a Patient’s DiagnosticReport resources. By contrast, GET [base]/Patient/100000001/$everything returns all resources associated with the Patient resource as well as resources associated with those resources. Compared with the previous search, this search would also include Practitioner resources associated with the Patient’s DiagnosticReport resources.

Note:

Search Parameter Types

Each search parameter has a search parameter typeOpens in a new tab that determines how the parameter behaves.

Parameter Type Level of Support
compositeOpens in a new tab Not supported
dateOpens in a new tab Fully supported
numberOpens in a new tab Fully supported
quantityOpens in a new tab Fully supported
referenceOpens in a new tab Fully supported*
stringOpens in a new tab Fully supported
tokenOpens in a new tab Fully supported
uriOpens in a new tab Fully supported

* In addition to the reference search functionality described in the FHIR specification, chained search is supported for canonical references, including the use of the _include and _revinclude search result parameters.

Search Parameters

The following summarizes FHIR server support for standard search parametersOpens in a new tab when retrieving resources from the Resource Repository.

Parameter Level of Support
_content Not supported
_filter Not supported
_has Fully supported as described in the official specificationOpens in a new tab
_id Fully supported as described in the official specificationOpens in a new tab
_lastUpdated Fully supported as described in the official specificationOpens in a new tab
_list Fully supported for Type-level search and Type-level + functional list search as described in the official specificationOpens in a new tab. Supported for system-level search only when the _list value is a resource ID. (For example, system-level search on a functional list, which requires a scoping search parameter, is not supported)
_profile Fully supported as described in the official specificationOpens in a new tab
_query Not supported
_security Fully supported as described in the official specificationOpens in a new tab
_source Fully supported
_tag Fully supported as described in the official specificationOpens in a new tab
_text Not supported
_type Fully supported as described in the official specificationOpens in a new tab.

Modifiers in Search

ModifiersOpens in a new tab can be added to the end of a parameter to affect the results of the search.

Modifier Level of Support
:above Supported for URI
:below Supported for URI
:code-text Not supported
:contains Fully supported (strings and URIs)
:exact Fully supported
:identifier Fully supported
:in Not supported
:iterate Fully supported
:missing Fully supported
:not Fully supported
:not-in Not supported
:of-type Fully supported
:text Supported for references and tokens, not supported for strings
:text-advanced Not supported
:[type] Fully supported

Prefixes in Search

When using search parameters of type number, date, and quantity, you can add a prefixOpens in a new tab to the parameter’s value to affect what resources match the search. For example, [parameter]=le100 returns values that are less than or equal to 100.

Prefix Level of Support
eq Fully supported
ne Fully supported
gt Fully supported
lt Fully supported
ge Fully supported
le Fully supported
sa Fully supported
eb Fully supported
ap Fully supported

Search Result Parameters

Search result parametersOpens in a new tab help manage the resources returned by a search.

Search result parameter Level of Support
_contained Not supported
_containedType Not supported
_count Fully supported as described in the official specificationOpens in a new tab
_elements Fully supported as described in the official specificationOpens in a new tab
_graph Not supported
_include Fully supported as described in the official specificationOpens in a new tab
_maxresults Fully supported as described in the official specificationOpens in a new tab.
Note:

Queries using this parameter can be made more efficient by setting the Use TOP for _maxresults FHIR configuration setting. See the table in Configuring an Existing FHIR Server for details and important considerations.

_revinclude Fully supported as described in the official specificationOpens in a new tab
_score Not supported
_sort Fully supported as described in the official specificationOpens in a new tab
_summary Supports _summary=count, _summary=data, and _summary=text. For details, see the official specificationOpens in a new tab.
_total Not supported

Search in Legacy Resource Repositories

Search in Legacy Resource Repositories Older than 2024.1

Prior to version 2024.1, the Resource Repository’s search interaction was implemented using a different search strategy. This legacy strategy is still supported in this version; however, the legacy strategy provides a limited set of features compared to the current strategy that is described here.

If you have upgraded an instance with a preexisting Resource Repository to this version from a version prior to 2024.1, see JSON Legacy SQL Strategy for a comparison of supported features and instructions for upgrading your Resource Repository from the legacy strategy to the current strategy.

Search in Legacy Resource Repositories Older than 2020.1

For FHIR servers developed using InterSystems IRIS for Health 2019.4 or earlier, the data in the old Resource Repository must be migrated before using the new FHIR server architecture.

See Migrating Data from a Pre–2020.1 Resource Repository.

FeedbackOpens in a new tab