You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Recursively evaluate projection without deduplication (see below)
Subsetting functions
Function
Description
first()
Returns the first element of the collection
Combining functions
Function
Description
union(other)
Merge two collections, eliminating duplicates via FHIRPath equality (equivalent to |)
combine(other)
Merge two collections without eliminating duplicates
Both functions follow the type-reconciliation rules used by the | operator
(for example, Integer is promoted to Decimal when merging with a Decimal
collection), and neither introduces a new iteration context — arguments are
evaluated against the same focus that applies to the function's input, so
expressions like name.select(use.union(given)) resolve given against the
current name element, matching name.select(use | given).
Boolean functions
Function
Description
not()
Boolean negation
String functions
Function
Description
join(separator?)
Join strings with optional separator
Type functions
Function
Description
is(type)
Type checking (equivalent to is operator)
as(type)
Type casting (equivalent to as operator)
Conversion functions
Function
Description
toBoolean()
Convert to Boolean
toInteger()
Convert to Integer
toDecimal()
Convert to Decimal
toString()
Convert to String
toDate()
Convert to Date
toDateTime()
Convert to DateTime
toTime()
Convert to Time
toQuantity(unit?)
Convert to Quantity with optional unit conversion using UCUM
Function
Description
convertsToBoolean()
Check if convertible to Boolean
convertsToInteger()
Check if convertible to Integer
convertsToDecimal()
Check if convertible to Decimal
convertsToString()
Check if convertible to String
convertsToDate()
Check if convertible to Date
convertsToDateTime()
Check if convertible to DateTime
convertsToTime()
Check if convertible to Time
convertsToQuantity(unit?)
Check if convertible to Quantity
Limitations
The following FHIRPath features are not currently supported:
Equivalence operators: ~ and !~
Aggregate functions: sum(), avg(), min(), max()
Special variables: $index, $total
Quantity arithmetic: Math operations on Quantity types
DateTime arithmetic: DateTime math operations
Full resource resolution: The resolve() function extracts type
information only and does not support field traversal
Recursive traversal depth
Both repeat and repeatAll use static type analysis to determine how to
handle the recursion. When the projection expression produces the same FHIR
type at each level (e.g. navigating item within a Questionnaire), the
traversal is bounded by a configurable maximum depth. The default maximum depth
is 10.
For Extension traversal, depth exhaustion silently stops and returns results
collected up to that point. For other types, depth exhaustion raises an error.
The maximum depth can be configured:
In the Pathling libraries, via the maxUnboundTraversalDepth parameter in
the query configuration.
In the Pathling server, via the pathling.query.maxUnboundTraversalDepth
configuration property.
Additional functions
Pathling also supports additional functions beyond the standard FHIRPath
specification:
FHIR-specific functions - Functions defined in the FHIR
specification for use with FHIR data, including extension, resolve,
memberOf, subsumes, and subsumedBy.
Extension functions - Functions unique to Pathling,
including terminology functions like designation, display, property, and
translate, plus the Coding literal data type.