CQL Conformance
Implementation State of ELM Forms
The section numbers refer to the documentation of the ELM Specification v1.5.1. Please note that CQL itself translates to ELM, but doesn't use every ELM feature. Because Blaze implements ELM and not CQL directly, the documentation is about the ELM forms and not about the CQL forms. A clear view about the CQL coverage of Blaze is not available yet.
1. Simple Values
| Num | Group | Expression | State | Notes |
|---|---|---|---|---|
| 1.1. | Literal | ! | only Boolean, Integer, Decimal, String |
2. Structured Values
| Num | Group | Expression | State | Notes |
|---|---|---|---|---|
| 2.1. | Tuple | ✓ | ||
| 2.2. | Instance | ✓ | ||
| 2.3. | Property | ! | no full FHIRPath | FHIRPath is not used by CQL |
3. Clinical Values
| Num | Group | Expression | State | Notes |
|---|---|---|---|---|
| 3.1. | Code | ✓ | ||
| 3.2. | CodeDef | ✓ | ||
| 3.3. | CodeRef | ! | only inside same library | |
| 3.4. | CodeSystemDef | ✓ | ||
| 3.5. | CodeSystemRef | ! | only inside same library | |
| 3.6. | Concept | ✓ | ||
| 3.7. | ConceptDef | ✓ | ||
| 3.8. | ConceptRef | ✓ | ||
| 3.9. | Quantity | ✓ | ||
| 3.10. | Ratio | ✓ | ||
| 3.11. | ValueSetDef | ✗ | ||
| 3.12. | ValueSetRef | ✗ |
4. Type Specifiers
| Num | Group | Expression | State | Notes |
|---|---|---|---|---|
| 4.1. | TypeSpecifier | ✓ | ||
| 4.2. | NamedTypeSpecifier | ✓ | ||
| 4.3. | IntervalTypeSpecifier | ✓ | ||
| 4.4. | ListTypeSpecifier | ✓ | ||
| 4.5. | TupleTypeSpecifier | ✓ | ||
| 4.6. | ChoiceTypeSpecifier | ✓ |
5. Libraries
| Num | Group | Expression | State | Notes |
|---|---|---|---|---|
| 5.1. | Library | ✓ | ||
| 5.2. | IncludeDef | ! | no custom includes, only FHIRHelpers | |
| 5.3. | VersionedIdentifier | ✗ | ||
| 5.4. | ContextDef | ✗ |
6. Data Model
| Num | Group | Expression | State | Notes |
|---|---|---|---|---|
| 6.1. UsingDef | ! | only FHIR R4 |
7. Parameters
| Num | Group | Expression | State | Notes |
|---|---|---|---|---|
| 7.1. | ParameterDef | ✓ | ||
| 7.2. | ParameterRef | ✓ |
8. Expressions
| Num | Group | Expression | State | Notes |
|---|---|---|---|---|
| 8.1. | Expression | ✓ | ||
| 8.2. | OperatorExpression | ✓ | ||
| 8.3. | UnaryExpression | ✓ | ||
| 8.4. | BinaryExpression | ✓ | ||
| 8.5. | TernaryExpression | ✓ | ||
| 8.6. | NaryExpression | ✓ | ||
| 8.7. | AggregateExpression | ✓ |
9. Reusing Logic
| Num | Group | Expression | State | Notes |
|---|---|---|---|---|
| 9.1. | ExpressionDef | ✓ | ||
| 9.2. | ExpressionRef | ! | only inside same library | |
| 9.3. | FunctionDef | ✓ | ||
| 9.4. | FunctionRef | ! | hard coded implementation of some functions | |
| 9.5. | OperandRef | ✓ |
10. Queries
| Num | Group | Expression | State | Notes |
|---|---|---|---|---|
| 10.1. | Query | ✓ | ||
| 10.2. | AliasedQuerySource | ! | only single source | |
| 10.3. | AliasRef | ✓ | ||
| 10.4. | ByColumn | ✓ | ||
| 10.5. | ByDirection | ✓ | ||
| 10.6. | ByExpression | ✓ | ||
| 10.7. | IdentifierRef | ✓ | ||
| 10.8. | LetClause | ✗ | ||
| 10.9. | QueryLetRef | ✗ | ||
| 10.10. | RelationshipClause | ✓ | ||
| 10.11. | ReturnClause | ✓ | ||
| 10.12. | AggregateClause | ✗ | ||
| 10.13. | SortClause | ✓ | ||
| 10.14. | With | ✓ | ||
| 10.15. | Without | ✓ |
11. External Data
| Num | Group | Expression | State | Notes |
|---|---|---|---|---|
| 11.1. | Retrieve | ! | no date ranges | |
| 11.2. | IncludeElement | ✗ |
12. Comparison Operators
| Num | Group | Expression | State | Notes |
|---|---|---|---|---|
| 12.1. | Equal | ✓ | ||
| 12.2. | Equivalent | ✓ | ||
| 12.3. | Greater | ✓ | ||
| 12.4. | GreaterOrEqual | ✓ | ||
| 12.5. | Less | ✓ | ||
| 12.6. | LessOrEqual | ✓ | ||
| 12.7. | NotEqual | ✓ |
13. Logical Operators
| Num | Group | Expression | State | Notes |
|---|---|---|---|---|
| 13.1. | And | ✓ | ||
| 13.2. | Implies | ✓ | ||
| 13.3. | Not | ✓ | ||
| 13.4. | Or | ✓ | ||
| 13.5. | Xor | ✓ |
14. Nullological Operators
| Num | Group | Expression | State | Notes |
|---|---|---|---|---|
| 14.1. | Null | ✓ | ||
| 14.2. | Coalesce | ✓ | ||
| 14.3. | IsFalse | ✓ | ||
| 14.4. | IsNull | ✓ | ||
| 14.5. | IsTrue | ✓ |
15. Conditional Operators
| Num | Group | Expression | State | Notes |
|---|---|---|---|---|
| 15.1. | Case | ✓ | ||
| 15.2. | If | ✓ |
16. Arithmetic Operators
| Num | Group | Expression | State | Notes |
|---|---|---|---|---|
| 16.1. | Abs | ✓ | ||
| 16.2. | Add | ✓ | ||
| 16.3. | Ceiling | ✓ | ||
| 16.4. | Divide | ✓ | ||
| 16.5. | Exp | ✓ | ||
| 16.6. | Floor | ✓ | ||
| 16.7. | HighBoundary | ✗ | ||
| 16.8. | Log | ✓ | ||
| 16.9. | LowBoundary | ✗ | ||
| 16.10. | Ln | ✓ | ||
| 16.11. | MaxValue | ✓ | ||
| 16.12. | MinValue | ✓ | ||
| 16.13. | Modulo | ✓ | ||
| 16.14. | Multiply | ✓ | ||
| 16.15. | Negate | ✓ | ||
| 16.16. | Power | ✓ | ||
| 16.17. | Precision | ✗ | ||
| 16.18. | Predecessor | ✓ | ||
| 16.19. | Round | ✓ | ||
| 16.20. | Subtract | ✓ | ||
| 16.21. | Successor | ✓ | ||
| 16.22. | Truncate | ✓ | ||
| 16.23. | TruncatedDivide | ✓ |
17. String Operators
| Num | Group | Expression | State | Notes |
|---|---|---|---|---|
| 17.1. | Combine | ✓ | ||
| 17.2. | Concatenate | ✓ | ||
| 17.3. | EndsWith | ✓ | ||
| 17.4. | Equal | ✓ | ||
| 17.5. | Equivalent | ✗ | ||
| 17.6. | Indexer | ✓ | ||
| 17.7. | LastPositionOf | ✓ | ||
| 17.8. | Length | ✓ | ||
| 17.9. | Lower | ✓ | ||
| 17.10. | Matches | ✓ | ||
| 17.11. | Not Equal | ✓ | ||
| 17.12. | PositionOf | ✓ | ||
| 17.13. | ReplaceMatches | ✓ | ||
| 17.14. | Split | ✓ | ||
| 17.15. | SplitOnMatches | ✗ | ||
| 17.16. | StartsWith | ✓ | ||
| 17.17. | Substring | ✓ | ||
| 17.18. | Upper | ✓ |
18. Date and Time Operators
| Num | Group | Expression | State | Notes |
|---|---|---|---|---|
| 18.1. | Add | ✓ | ||
| 18.2. | After | ✓ | ||
| 18.3. | Before | ✓ | ||
| 18.4. | Equal | ✓ | ||
| 18.5. | Equivalent | ✓ | ||
| 18.6. | Date | ✓ | ||
| 18.7. | DateFrom | ✓ | ||
| 18.8. | DateTime | ✓ | ||
| 18.9. | DateTimeComponentFrom | ✓ | ||
| 18.10. | DifferenceBetween | ! | same as DurationBetween | |
| 18.11. | DurationBetween | ✓ | ||
| 18.12. | Not Equal | ✓ | ||
| 18.13. | Now | ✓ | ||
| 18.14. | SameAs | ✓ | ||
| 18.15. | SameOrBefore | ✓ | ||
| 18.16. | SameOrAfter | ✓ | ||
| 18.17. | Subtract | ✓ | ||
| 18.18. | Time | ✓ | ||
| 18.19. | TimeFrom | ✓ | ||
| 18.20. | TimezoneOffsetFrom | ✓ | ||
| 18.21. | TimeOfDay | ✓ | ||
| 18.22. | Today | ✓ |
19. Interval Operators
| Num | Group | Expression | State | Notes |
|---|---|---|---|---|
| 19.1. | Interval | ✓ | ||
| 19.2. | After | ✓ | ||
| 19.3. | Before | ✓ | ||
| 19.4. | Collapse | ✓ | ||
| 19.5. | Contains | ✓ | ||
| 19.6. | End | ✓ | ||
| 19.7. | Ends | ✓ | ||
| 19.8. | Equal | ✓ | ||
| 19.9. | Equivalent | ✓ | ||
| 19.10. | Except | ✓ | ||
| 19.11. | Expand | ✗ | ||
| 19.12. | In | ✓ | ||
| 19.13. | Includes | ✓ | ||
| 19.14. | IncludedIn | ✓ | ||
| 19.15. | Intersect | ✓ | ||
| 19.16. | Meets | ✓ | ||
| 19.17. | MeetsBefore | ✓ | ||
| 19.18. | MeetsAfter | ✓ | ||
| 19.19. | Not Equal | ✓ | ||
| 19.20. | Overlaps | ✓ | ||
| 19.21. | OverlapsBefore | ✓ | ||
| 19.22. | OverlapsAfter | ✓ | ||
| 19.23. | PointFrom | ✓ | ||
| 19.24. | ProperContains | ✓ | ||
| 19.25. | ProperIn | ✓ | ||
| 19.26. | ProperIncludes | ✓ | ||
| 19.27. | ProperIncludedIn | ✓ | ||
| 19.28. | Size | ✗ | ||
| 19.29. | Start | ✓ | ||
| 19.30. | Starts | ✓ | ||
| 19.31. | Union | ✓ | ||
| 19.32. | Width | ✓ |
20. List Operators
| Num | Group | Expression | State | Notes |
|---|---|---|---|---|
| 20.1. | List | ✓ | ||
| 20.2. | Contains | ✓ | ||
| 20.3. | Current | ✓ | ||
| 20.4. | Distinct | ✓ | ||
| 20.5. | Equal | ✓ | ||
| 20.6. | Equivalent | ✓ | ||
| 20.7. | Except | ✓ | ||
| 20.8. | Exists | ✓ | ||
| 20.9. | Filter | ✓ | ||
| 20.10. | First | ✓ | ||
| 20.11. | Flatten | ✓ | ||
| 20.12. | ForEach | ✓ | ||
| 20.13. | In | ✓ | ||
| 20.14. | Includes | ✓ | ||
| 20.15. | IncludedIn | ✓ | ||
| 20.16. | IndexOf | ✓ | ||
| 20.17. | Intersect | ✓ | ||
| 20.18. | Last | ! | no orderBy | |
| 20.19. | Not Equal | ✓ | ||
| 20.20. | ProperContains | ✓ | ||
| 20.21. | ProperIn | ✓ | ||
| 20.22. | ProperIncludes | ✓ | ||
| 20.23. | ProperIncludedIn | ✓ | ||
| 20.24. | Repeat | ✗ | ||
| 20.25. | SingletonFrom | ✓ | ||
| 20.26. | Slice | ✓ | ||
| 20.27. | Sort | ✓ | ||
| 20.28. | Times | ✓ | ||
| 20.29. | Union | ✓ |
21. Aggregate Operators
| Num | Group | Expression | State | Notes |
|---|---|---|---|---|
| 21.1. | AllTrue | ! | no path | path not used from CQL |
| 21.2. | AnyTrue | ! | no path | path not used from CQL |
| 21.3. | Avg | ! | no path | path not used from CQL |
| 21.4. | Count | ! | no path | path not used from CQL |
| 21.5. | GeometricMean | ! | no path | path not used from CQL |
| 21.6. | Product | ! | no path | path not used from CQL |
| 21.7. | Max | ! | no path | path not used from CQL |
| 21.8. | Median | ! | no path | path not used from CQL |
| 21.9. | Min | ! | no path | path not used from CQL |
| 21.10. | Mode | ! | no path | path not used from CQL |
| 21.11. | PopulationVariance | ! | no path | path not used from CQL |
| 21.12. | PopulationStdDev | ! | no path | path not used from CQL |
| 21.13. | Sum | ! | no path | path not used from CQL |
| 21.14. | StdDev | ! | no path | path not used from CQL |
| 21.15. | Variance | ! | no path | path not used from CQL |
22. Type Operators
| Num | Group | Expression | State | Notes |
|---|---|---|---|---|
| 22.1. | As | ! | no strictness | |
| 22.2. | CanConvert | ✗ | ||
| 22.3. | CanConvertQuantity | ✓ | ||
| 22.4. | Children | ✓ | ||
| 22.5. | Convert | ✗ | ||
| 22.6. | ConvertQuantity | ✓ | ||
| 22.7. | ConvertsToBoolean | ✓ | ||
| 22.8. | ConvertsToDate | ✓ | ||
| 22.9. | ConvertsToDateTime | ✓ | ||
| 22.10. | ConvertsToDecimal | ✓ | ||
| 22.11. | ConvertsToLong | ✓ | ||
| 22.12. | ConvertsToInteger | ✓ | ||
| 22.13. | ConvertsToQuantity | ✓ | ||
| 22.14. | ConvertsToRatio | ✓ | ||
| 22.15. | ConvertsToString | ✓ | ||
| 22.16. | ConvertsToTime | ✓ | ||
| 22.17. | Descendents | ✓ | ||
| 22.18. | Is | ✓ | ||
| 22.19. | ToBoolean | ✓ | ||
| 22.20. | ToChars | ✓ | ||
| 22.21. | ToConcept | ✓ | ||
| 22.22. | ToDate | ✓ | ||
| 22.23. | ToDateTime | ✓ | ||
| 22.24. | ToDecimal | ✓ | ||
| 22.25. | ToInteger | ✓ | ||
| 22.26. | ToList | ✓ | ||
| 22.27. | ToLong | ✓ | ||
| 22.28. | ToQuantity | ✓ | ||
| 22.29. | ToRatio | ✓ | ||
| 22.30. | ToString | ✓ | ||
| 22.31. | ToTime | ✓ |
23. Clinical Operators
| Num | Group | Expression | State | Notes |
|---|---|---|---|---|
| 23.1. | AnyInCodeSystem | ✗ | ||
| 23.2. | AnyInValueSet | ✗ | ||
| 23.3. | CalculateAge | ✓ | ||
| 23.4. | CalculateAgeAt | ✓ | ||
| 23.5. | Equal | ✓ | ||
| 23.6. | Equivalent | ✓ | ||
| 23.7. | InCodeSystem | ✗ | ||
| 23.8. | InValueSet | ✗ | ||
| 23.9. | ExpandValueSet | ✗ | ||
| 23.10. | Not Equal | ✓ | ||
| 23.11. | SubsumedBy | ✗ | ||
| 23.12. | Subsumes | ✗ |
24. Errors and Messages
| Num | Group | Expression | State | Notes |
|---|---|---|---|---|
| 24.1. Message | ✗ |