-
Notifications
You must be signed in to change notification settings - Fork 23
/
115_NonDeterministicSupport.cql
29 lines (22 loc) · 1.2 KB
/
115_NonDeterministicSupport.cql
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
library NonDeterministicSupport
/*
[CQLIT-171](https://oncprojectracking.healthit.gov/support/browse/CQLIT-171) - Randomly pick an element for a list
Does CQL support a mechanism for randomly picking an item from a list?
*/
/*
The short answer is no.
CQL is purposely a deterministic language, so we don't have functions like Random().
This was a design decision in the very earliest phases of language development to
ensure that systems could reliably cache intermediate results. Even functions
like Today() and Now() are defined deterministically so that they return the same
value within any given evaluation session.
Having said that, CQL 1.3 introduced the ability to define external libraries.
From the perspective of the translator, external definitions are just function signatures;
it's up to the engine to resolve external definitions and provide the run-time
implementation for them. For engines, this would be fairly straightforward to
support, but:
1. It would tie the CQL that uses the external definitions to engines that understood
those externals (reducing portability)
2. The Java-based open source engine does support external libraries, but it's not a feature
that has been well-tested.
*/