Search

Search API for FHIR resources

Aidbox provides a Search API for all stored resources. Aidbox Search API is superset of FHIR Search API.

There are two versions of API, which differ by resources format:

  • search by /[resourceType] returns results in Aidbox Format

  • search by /fhir/[resourceType] returns data in FHIR Format

All data stored and searched in Aidbox Format, and converted on fly to FHIR on FHIR endpoints!

Base search request is composed of list of pairs param = value:

GET [base]/[resourceType]?param=value&param=value&...

Where param can be one of:

Simple search by patient name:

GET /Patient?name=Max&_elements=id, birthDAte

Special Parameters

Parameter

_id

FHIR

Search and sort by resource id

_lastUpdated

FHIR

Search and sort by resource last modification date

_text

FHIR

Full text search by resource narrative

_content

FHIR

Full text search by resource content

_ilike

ILIKE search by resource content

_elements

FHIR+

Include or exclude specific resource elements

_summary

FHIR

Include only summary elements

_list

FHIR

Search resources included into specific List

_sort

FHIR

Sort search results

_total

FHIR

Turn on/off total count

_include

FHIR

Include referenced resources into result

_revinclude

FHIR

Include into result resources, which reference searched resources

_explain

See query execution plan

_result

Change result format

Search Parameters

Search defined in terms of "search parameters". SearchParameter is a meta-resource, which describes which part of resource and how you can make searchable.

Search parameter can be one of the following types:

Type

Description

number

Search parameter SHALL be a number (a whole number, or a decimal).

date

Search parameter is on a date/time. The date format is the standard XML format, though other formats may be supported.

string

Search parameter is a simple string, like a name part. Search is case-insensitive and accent-insensitive. May match just the start of a string. String parameters may contain spaces.

token

Search parameter on a coded element or identifier. May be used to search through the text, displayname, code and code/codesystem (for codes) and label, system and key (for identifier). Its value is either a string or a pair of namespace and value, separated by a "|", depending on the modifier used.

reference

A reference to another resource.

composite

A composite search parameter that combines a search on two values together.

quantity

A search parameter that searches on a quantity.

uri

A search parameter that searches on a URI (RFC 3986).

Depending on the value type, different modifiers can be applied.

Common

  • :missing

GET /Entity?description:missing=true

For gender:missing=true, server will return all resources that don't have a value for the gender parameter.

Strings

  • :exact — no partial matches, case sensitive;

  • :contains — case insensitive, partial match at start or end.

Default behavior is case insensitive, partial match at start.

GET /Patient?name:exact=Alex

Token

Reference

Reference describes the relationship between resources. Following options are available for filtering by reference:

Сoded element or identifier

GET /Patient?gender=female
[parameter]=[id]
[parameter]=[type]/[id]

For example, let's find all encounters related to a specified patient:

GET /Encounter?subject=patientid
GET /Encounter?subject=Patient/patientid

Prefixes

For Numbers, Dates and Quantities (will be supported), we can use the following conditionals in search:

  • eq - equal (default)

  • ne - non-equal

  • lt - less than

  • le - less or equal

  • gt - greater than

  • ge - greater or equal

GET /Patient?birthdate=gt1986-04-28

Want to know more about Aidbox, FHIR, and search? Join our community chat (#aidbox channel).