expressionTerm
An expression term is a basic unit of expression: a term (literal, identifier, function call, selector), optionally followed by member access, indexing, conversion, arithmetic, or conditional operators.
Examples
Member access via dot
Patient.birthDate
List indexing
Conditions[0]
Unit conversion
convert 5 'mg' to 'g'
Start of an interval
start of "Measurement Period"
If-then-else conditional
if AgeInYears() >= 18 then 'adult' else 'minor'
Case expression
case when AgeInYears() < 2 then 'infant' when AgeInYears() < 18 then 'child' else 'adult' end
Distinct list
distinct ({ 1, 2, 2, 3 })EBNF
expressionTerm
: term
| expressionTerm '.' qualifiedInvocation
| expressionTerm '[' expression ']'
| 'convert' expression 'to' (typeSpecifier | unit)
| ('+' | '-') expressionTerm
| ('start' | 'end') 'of' expressionTerm
| dateTimeComponent 'from' expressionTerm
| 'duration' 'in' pluralDateTimePrecision 'of' expressionTerm
| expressionTerm ('^' | '*' | '/' | 'div' | 'mod' | '+' | '-' | '&') expressionTerm
| 'if' expression 'then' expression 'else' expression
| 'case' expression? caseExpressionItem+ 'else' expression 'end'
| ('distinct' | 'flatten') expression
| ('expand' | 'collapse') expression ('per' ...)?
;