Reference
ViewDefinition structure
name
Name of view definition (computer and database friendly) sql-name: Name is limited to letters, numbers, or underscores and cannot start with an underscore — i.e. with a regular expression of: ^[^][A-Za-z][A-Za-z0-9]+$
сonstant (optional)
Contact details for the publisher. Defined as an array of elemtents that contain the following elements:
name — Name of constant (referred to in FHIRPath as
%[name]
). Name is limited to letters, numbers, or underscores and cannot start with an underscore — i.e. with a regular expression of:^[^][A-Za-z][A-Za-z0-9]+$
value — Value of constant.
select
A collection of columns and nested selects to include in the view. Defined as an array of elements with a following structure:
column — A column to be produced in the resulting table. Contains the following elements:
path — FHIRPath expression that creates a column and defines its content. Supports a subset of FHIRPath described in FHIRPath expressions.
name — Column name produced in the output.
select (optional) — Nested select relative to a parent expression.
forEach (optional) — A FHIRPath expression to retrieve the parent element(s) used in the containing select. The default is effectively
$this
. Can't be set whenforEachOrNull
is set.forEachOrNull (optional) — Same as forEach, but will produce a row with null values if the collection is empty. Can't be set when
forEach
is set.
FHIRPath expressions
SQL on FHIR engine supports a subset of FHIRPath funcitons:
where — returns a collection containing only those elements in the input collection for which the stated
criteria
expression evaluates totrue
. Elements for which the expression evaluates tofalse
or empty ({ }
) are not included in the result.exists — returns
true
if the collection has any elements, andfalse
otherwise. This is the opposite ofempty()
, and as such is a shorthand forempty().not()
. If the input collection is empty ({ }
), the result isfalse
.empty — returns
true
if the input collection is empty ({ }
) andfalse
otherwise.extension — will filter the input collection for items named "extension" with the given url. This is a syntactical shortcut for
.extension.where(url = string)
, but is simpler to write. Will return an empty collection if the input collection is empty or the url is empty.join — the join function takes a collection of strings and joins them into a single string, optionally using the given separator.
ofType — returns a collection that contains all items in the input collection that are of the given type or a subclass thereof. If the input collection is empty (
{ }
), the result is empty.first — returns a collection containing only the first item in the input collection. This function is equivalent to
item[0]
, so it will return an empty collection if the input collection has no items.Boolean operators: and, or, not.
Math operators: addition (+), subtraction (-), multiplication (*), division (/).
Comparison operators: equals (=), not equals (!=), greater than (>), less or equal (<=).
Detailed explanation
exists([criteria: expression]) : Boolean
Returns true
if the collection has any elements, and false
otherwise. Also, this function takes one optional criteria which will be applied to the collection prior to the determination of the exists. If any element meets the criteria then true
will be returned.
For example we have two patients:
First patient:
Second patient:
The following FHIRPath expression will show patient names that contain given name 'Anastasia':
The result of expression will be:
empty() : Boolean
Returns true
if the input colleciton is empty and false otherwise.
extension(url: string) : collection
Will filter the input collection for items named "extension" with the given url. This is a syntactical shortcut for .extension.where(url = string)
, but is simpler to write. Will return an empty collection if the input collection is empty or the url is empty.
getId([resourceType])
Returns the field id
of input element. One optional string argument may be provided to get IDs of resources whose type is equal to the argument
For example we have two observations:
First observation:
Second observation:
The following FHIRPath expression will show ID of subject object if resourceType equals to 'Patient':
The result of expression will be:
join([separator: String]) : String
The join function takes a collection of strings and joins them into a single string, optionally using the given separator.
If the input is empty, the result is empty.
If no separator is specified, the strings are directly concatenated.
First patient:
Second patient:
The following expression will concatenate elements in one string separated with provided string argument:
The result will be:
ofType(type: type specifier) : collection
Returns a collection that contains all items in the input collection that are of the given type or a subclass thereof. If the input collection is empty, the result is empty. The type
argument is an identifier that must resolve to the name of a type in a model.
first() : collection
Returns a collection containing only the first item in the input collection. This function is equivalent to item[0]
, so it will return an empty collection if the input collection has no items.
where(criteria: expression) : collection
Returns a collection containing only those elements in the input collection for which the stated criteria
expression evaluates to true
. Elements for which the expression evaluates to false
or empty are not included in the result.
If the input collection is empty, the result is empty.
First patient:
Second patient:
The following expression will filter patients with names that contain 'Nastya', and their family name will be returned:
The result will be:
Last updated