expression
The core expression grammar. Expressions encompass all value-producing constructs in CQL, from simple term references to complex timing and interval operations. Operator precedence is embedded in the grammar structure via the ordering of alternatives.
Examples
Simple comparison
AgeInYears() >= 18
Null check
Patient.birthDate is not null
Type cast
cast Obs.value as Quantity
Logical AND
"Has Diabetes" and "Has Hypertension"
Exists check on retrieve
exists [Condition: "Diabetes Mellitus"]
Timing relationship
Encounter.period during "Measurement Period"
EBNF
expression
: expressionTerm
| retrieve
| query
| expression 'is' 'not'? ('null' | 'true' | 'false')
| expression ('is' | 'as') typeSpecifier
| 'cast' expression 'as' typeSpecifier
| 'not' expression
| 'exists' expression
| expression 'properly'? 'between' expressionTerm 'and' expressionTerm
| ... (timing, set, comparison, logical operators)
;