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.
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. This section summarizes the default support for the search interaction when the FHIR server is using or extending the Resource Repository.
Note:
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, they provide a limited set of features compared to the current strategy, described in this documentation.
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.
General Support Notes
Keep in mind that a FHIR server using or extending the Resource Repository:
-
Does not support searching across multiple resource types across compartments. For example GET [base]?_id=1 is not supported.
-
Does support the use of the wildcard character (*) to search across multiple resource types within a compartment. For example: GET [base]/Patient/100000001/* is supported. Within a compartment, the search can use the wildcard in conjunction with any search parameters common to all the resource types which 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.
Note:
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.
Search Parameter Types
Each search parameter has a search parameter typeOpens in a new tab that determines how the parameter behaves.
* For canonical references, chained search is not supported. The use of the search result parameters _include and _revinclude for canonical references is also not supported.
Modifiers
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 |
Not supported |
:not |
Not 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
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 |