@medplum/core 2.0.24 → 2.0.26

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (90) hide show
  1. package/dist/cjs/index.cjs +28 -14114
  2. package/dist/cjs/index.cjs.map +7 -1
  3. package/dist/esm/index.mjs +31 -29
  4. package/dist/esm/index.mjs.map +7 -1
  5. package/dist/types/client.d.ts +42 -10
  6. package/dist/types/fhirpath/atoms.d.ts +25 -11
  7. package/dist/types/fhirpath/parse.d.ts +33 -33
  8. package/dist/types/index.d.ts +1 -1
  9. package/dist/types/jwt.d.ts +6 -0
  10. package/dist/types/schema.d.ts +1 -0
  11. package/dist/types/search/details.d.ts +3 -1
  12. package/dist/types/types.d.ts +2 -2
  13. package/dist/types/typeschema/validation.d.ts +1 -1
  14. package/dist/types/utils.d.ts +15 -0
  15. package/package.json +5 -2
  16. package/dist/cjs/index.min.cjs +0 -1
  17. package/dist/esm/access.mjs +0 -142
  18. package/dist/esm/access.mjs.map +0 -1
  19. package/dist/esm/base-schema.json.mjs +0 -4408
  20. package/dist/esm/base-schema.json.mjs.map +0 -1
  21. package/dist/esm/base64.mjs +0 -33
  22. package/dist/esm/base64.mjs.map +0 -1
  23. package/dist/esm/bundle.mjs +0 -36
  24. package/dist/esm/bundle.mjs.map +0 -1
  25. package/dist/esm/cache.mjs +0 -64
  26. package/dist/esm/cache.mjs.map +0 -1
  27. package/dist/esm/client.mjs +0 -2168
  28. package/dist/esm/client.mjs.map +0 -1
  29. package/dist/esm/crypto.mjs +0 -22
  30. package/dist/esm/crypto.mjs.map +0 -1
  31. package/dist/esm/eventtarget.mjs +0 -36
  32. package/dist/esm/eventtarget.mjs.map +0 -1
  33. package/dist/esm/fhirlexer/parse.mjs +0 -122
  34. package/dist/esm/fhirlexer/parse.mjs.map +0 -1
  35. package/dist/esm/fhirlexer/tokenize.mjs +0 -231
  36. package/dist/esm/fhirlexer/tokenize.mjs.map +0 -1
  37. package/dist/esm/fhirmapper/parse.mjs +0 -329
  38. package/dist/esm/fhirmapper/parse.mjs.map +0 -1
  39. package/dist/esm/fhirmapper/tokenize.mjs +0 -13
  40. package/dist/esm/fhirmapper/tokenize.mjs.map +0 -1
  41. package/dist/esm/fhirpath/atoms.mjs +0 -347
  42. package/dist/esm/fhirpath/atoms.mjs.map +0 -1
  43. package/dist/esm/fhirpath/date.mjs +0 -24
  44. package/dist/esm/fhirpath/date.mjs.map +0 -1
  45. package/dist/esm/fhirpath/functions.mjs +0 -1626
  46. package/dist/esm/fhirpath/functions.mjs.map +0 -1
  47. package/dist/esm/fhirpath/parse.mjs +0 -145
  48. package/dist/esm/fhirpath/parse.mjs.map +0 -1
  49. package/dist/esm/fhirpath/tokenize.mjs +0 -10
  50. package/dist/esm/fhirpath/tokenize.mjs.map +0 -1
  51. package/dist/esm/fhirpath/utils.mjs +0 -377
  52. package/dist/esm/fhirpath/utils.mjs.map +0 -1
  53. package/dist/esm/filter/parse.mjs +0 -101
  54. package/dist/esm/filter/parse.mjs.map +0 -1
  55. package/dist/esm/filter/tokenize.mjs +0 -16
  56. package/dist/esm/filter/tokenize.mjs.map +0 -1
  57. package/dist/esm/filter/types.mjs +0 -34
  58. package/dist/esm/filter/types.mjs.map +0 -1
  59. package/dist/esm/format.mjs +0 -390
  60. package/dist/esm/format.mjs.map +0 -1
  61. package/dist/esm/hl7.mjs +0 -242
  62. package/dist/esm/hl7.mjs.map +0 -1
  63. package/dist/esm/index.min.mjs +0 -1
  64. package/dist/esm/jwt.mjs +0 -30
  65. package/dist/esm/jwt.mjs.map +0 -1
  66. package/dist/esm/node_modules/tslib/package.json +0 -1
  67. package/dist/esm/outcomes.mjs +0 -295
  68. package/dist/esm/outcomes.mjs.map +0 -1
  69. package/dist/esm/readablepromise.mjs +0 -82
  70. package/dist/esm/readablepromise.mjs.map +0 -1
  71. package/dist/esm/schema.mjs +0 -417
  72. package/dist/esm/schema.mjs.map +0 -1
  73. package/dist/esm/search/details.mjs +0 -162
  74. package/dist/esm/search/details.mjs.map +0 -1
  75. package/dist/esm/search/match.mjs +0 -166
  76. package/dist/esm/search/match.mjs.map +0 -1
  77. package/dist/esm/search/search.mjs +0 -378
  78. package/dist/esm/search/search.mjs.map +0 -1
  79. package/dist/esm/sftp.mjs +0 -24
  80. package/dist/esm/sftp.mjs.map +0 -1
  81. package/dist/esm/storage.mjs +0 -95
  82. package/dist/esm/storage.mjs.map +0 -1
  83. package/dist/esm/types.mjs +0 -370
  84. package/dist/esm/types.mjs.map +0 -1
  85. package/dist/esm/typeschema/types.mjs +0 -278
  86. package/dist/esm/typeschema/types.mjs.map +0 -1
  87. package/dist/esm/typeschema/validation.mjs +0 -262
  88. package/dist/esm/typeschema/validation.mjs.map +0 -1
  89. package/dist/esm/utils.mjs +0 -632
  90. package/dist/esm/utils.mjs.map +0 -1
@@ -1,347 +0,0 @@
1
- import { PrefixOperatorAtom, InfixOperatorAtom } from '../fhirlexer/parse.mjs';
2
- import { isResource, PropertyType } from '../types.mjs';
3
- import { functions } from './functions.mjs';
4
- import { getTypedPropertyValue, isQuantity, booleanToTypedValue, toTypedValue, removeDuplicates, fhirPathArrayEquals, fhirPathNot, fhirPathArrayEquivalent, fhirPathIs, toJsBoolean } from './utils.mjs';
5
-
6
- class FhirPathAtom {
7
- constructor(original, child) {
8
- this.original = original;
9
- this.child = child;
10
- }
11
- eval(context, input) {
12
- try {
13
- if (input.length > 0) {
14
- return input.map((e) => this.child.eval(context, [e])).flat();
15
- }
16
- else {
17
- return this.child.eval(context, []);
18
- }
19
- }
20
- catch (error) {
21
- throw new Error(`FhirPathError on "${this.original}": ${error}`);
22
- }
23
- }
24
- toString() {
25
- return this.child.toString();
26
- }
27
- }
28
- class LiteralAtom {
29
- constructor(value) {
30
- this.value = value;
31
- }
32
- eval() {
33
- return [this.value];
34
- }
35
- toString() {
36
- const value = this.value.value;
37
- if (typeof value === 'string') {
38
- return `'${value}'`;
39
- }
40
- return value.toString();
41
- }
42
- }
43
- class SymbolAtom {
44
- constructor(name) {
45
- this.name = name;
46
- }
47
- eval(context, input) {
48
- if (this.name === '$this') {
49
- return input;
50
- }
51
- if (this.name.startsWith('%')) {
52
- const symbol = context.variables[this.name.slice(1)];
53
- if (!symbol) {
54
- throw new Error(`Undefined variable ${this.name}`);
55
- }
56
- return [symbol];
57
- }
58
- return input.flatMap((e) => this.evalValue(e)).filter((e) => e?.value !== undefined);
59
- }
60
- evalValue(typedValue) {
61
- const input = typedValue.value;
62
- if (!input || typeof input !== 'object') {
63
- return undefined;
64
- }
65
- if (isResource(input) && input.resourceType === this.name) {
66
- return typedValue;
67
- }
68
- return getTypedPropertyValue(typedValue, this.name);
69
- }
70
- toString() {
71
- return this.name;
72
- }
73
- }
74
- class EmptySetAtom {
75
- eval() {
76
- return [];
77
- }
78
- toString() {
79
- return '{}';
80
- }
81
- }
82
- class UnaryOperatorAtom extends PrefixOperatorAtom {
83
- constructor(operator, child, impl) {
84
- super(operator, child);
85
- this.impl = impl;
86
- }
87
- eval(context, input) {
88
- return this.impl(this.child.eval(context, input));
89
- }
90
- toString() {
91
- return this.child.toString();
92
- }
93
- }
94
- class AsAtom extends InfixOperatorAtom {
95
- constructor(left, right) {
96
- super('as', left, right);
97
- }
98
- eval(context, input) {
99
- return functions.ofType(context, this.left.eval(context, input), this.right);
100
- }
101
- }
102
- class ArithemticOperatorAtom extends InfixOperatorAtom {
103
- constructor(operator, left, right, impl) {
104
- super(operator, left, right);
105
- this.impl = impl;
106
- }
107
- eval(context, input) {
108
- const leftEvalResult = this.left.eval(context, input);
109
- if (leftEvalResult.length !== 1) {
110
- return [];
111
- }
112
- const rightEvalResult = this.right.eval(context, input);
113
- if (rightEvalResult.length !== 1) {
114
- return [];
115
- }
116
- const leftValue = leftEvalResult[0].value;
117
- const rightValue = rightEvalResult[0].value;
118
- const leftNumber = isQuantity(leftValue) ? leftValue.value : leftValue;
119
- const rightNumber = isQuantity(rightValue) ? rightValue.value : rightValue;
120
- const result = this.impl(leftNumber, rightNumber);
121
- if (typeof result === 'boolean') {
122
- return booleanToTypedValue(result);
123
- }
124
- else if (isQuantity(leftValue)) {
125
- return [{ type: PropertyType.Quantity, value: { ...leftValue, value: result } }];
126
- }
127
- else {
128
- return [toTypedValue(result)];
129
- }
130
- }
131
- }
132
- class ConcatAtom extends InfixOperatorAtom {
133
- constructor(left, right) {
134
- super('&', left, right);
135
- }
136
- eval(context, input) {
137
- const leftValue = this.left.eval(context, input);
138
- const rightValue = this.right.eval(context, input);
139
- const result = [...leftValue, ...rightValue];
140
- if (result.length > 0 && result.every((e) => typeof e.value === 'string')) {
141
- return [{ type: PropertyType.string, value: result.map((e) => e.value).join('') }];
142
- }
143
- return result;
144
- }
145
- }
146
- class ContainsAtom extends InfixOperatorAtom {
147
- constructor(left, right) {
148
- super('contains', left, right);
149
- }
150
- eval(context, input) {
151
- const leftValue = this.left.eval(context, input);
152
- const rightValue = this.right.eval(context, input);
153
- return booleanToTypedValue(leftValue.some((e) => e.value === rightValue[0].value));
154
- }
155
- }
156
- class InAtom extends InfixOperatorAtom {
157
- constructor(left, right) {
158
- super('in', left, right);
159
- }
160
- eval(context, input) {
161
- const leftValue = this.left.eval(context, input);
162
- const rightValue = this.right.eval(context, input);
163
- return booleanToTypedValue(rightValue.some((e) => e.value === leftValue[0].value));
164
- }
165
- }
166
- class DotAtom extends InfixOperatorAtom {
167
- constructor(left, right) {
168
- super('.', left, right);
169
- }
170
- eval(context, input) {
171
- return this.right.eval(context, this.left.eval(context, input));
172
- }
173
- toString() {
174
- return `${this.left.toString()}.${this.right.toString()}`;
175
- }
176
- }
177
- class UnionAtom extends InfixOperatorAtom {
178
- constructor(left, right) {
179
- super('|', left, right);
180
- }
181
- eval(context, input) {
182
- const leftResult = this.left.eval(context, input);
183
- const rightResult = this.right.eval(context, input);
184
- return removeDuplicates([...leftResult, ...rightResult]);
185
- }
186
- }
187
- class EqualsAtom extends InfixOperatorAtom {
188
- constructor(left, right) {
189
- super('=', left, right);
190
- }
191
- eval(context, input) {
192
- const leftValue = this.left.eval(context, input);
193
- const rightValue = this.right.eval(context, input);
194
- return fhirPathArrayEquals(leftValue, rightValue);
195
- }
196
- }
197
- class NotEqualsAtom extends InfixOperatorAtom {
198
- constructor(left, right) {
199
- super('!=', left, right);
200
- }
201
- eval(context, input) {
202
- const leftValue = this.left.eval(context, input);
203
- const rightValue = this.right.eval(context, input);
204
- return fhirPathNot(fhirPathArrayEquals(leftValue, rightValue));
205
- }
206
- }
207
- class EquivalentAtom extends InfixOperatorAtom {
208
- constructor(left, right) {
209
- super('~', left, right);
210
- }
211
- eval(context, input) {
212
- const leftValue = this.left.eval(context, input);
213
- const rightValue = this.right.eval(context, input);
214
- return fhirPathArrayEquivalent(leftValue, rightValue);
215
- }
216
- }
217
- class NotEquivalentAtom extends InfixOperatorAtom {
218
- constructor(left, right) {
219
- super('!~', left, right);
220
- }
221
- eval(context, input) {
222
- const leftValue = this.left.eval(context, input);
223
- const rightValue = this.right.eval(context, input);
224
- return fhirPathNot(fhirPathArrayEquivalent(leftValue, rightValue));
225
- }
226
- }
227
- class IsAtom extends InfixOperatorAtom {
228
- constructor(left, right) {
229
- super('is', left, right);
230
- }
231
- eval(context, input) {
232
- const leftValue = this.left.eval(context, input);
233
- if (leftValue.length !== 1) {
234
- return [];
235
- }
236
- const typeName = this.right.name;
237
- return booleanToTypedValue(fhirPathIs(leftValue[0], typeName));
238
- }
239
- }
240
- /**
241
- * 6.5.1. and
242
- * Returns true if both operands evaluate to true,
243
- * false if either operand evaluates to false,
244
- * and the empty collection otherwise.
245
- */
246
- class AndAtom extends InfixOperatorAtom {
247
- constructor(left, right) {
248
- super('and', left, right);
249
- }
250
- eval(context, input) {
251
- const leftValue = this.left.eval(context, input);
252
- const rightValue = this.right.eval(context, input);
253
- if (leftValue[0]?.value === true && rightValue[0]?.value === true) {
254
- return booleanToTypedValue(true);
255
- }
256
- if (leftValue[0]?.value === false || rightValue[0]?.value === false) {
257
- return booleanToTypedValue(false);
258
- }
259
- return [];
260
- }
261
- }
262
- class OrAtom extends InfixOperatorAtom {
263
- constructor(left, right) {
264
- super('or', left, right);
265
- }
266
- eval(context, input) {
267
- const leftValue = this.left.eval(context, input);
268
- if (toJsBoolean(leftValue)) {
269
- return leftValue;
270
- }
271
- const rightValue = this.right.eval(context, input);
272
- if (toJsBoolean(rightValue)) {
273
- return rightValue;
274
- }
275
- return [];
276
- }
277
- }
278
- /**
279
- * 6.5.4. xor
280
- * Returns true if exactly one of the operands evaluates to true,
281
- * false if either both operands evaluate to true or both operands evaluate to false,
282
- * and the empty collection otherwise.
283
- */
284
- class XorAtom extends InfixOperatorAtom {
285
- constructor(left, right) {
286
- super('xor', left, right);
287
- }
288
- eval(context, input) {
289
- const leftResult = this.left.eval(context, input);
290
- const rightResult = this.right.eval(context, input);
291
- if (leftResult.length === 0 && rightResult.length === 0) {
292
- return [];
293
- }
294
- const leftValue = leftResult.length === 0 ? null : leftResult[0].value;
295
- const rightValue = rightResult.length === 0 ? null : rightResult[0].value;
296
- if ((leftValue === true && rightValue !== true) || (leftValue !== true && rightValue === true)) {
297
- return booleanToTypedValue(true);
298
- }
299
- if ((leftValue === true && rightValue === true) || (leftValue === false && rightValue === false)) {
300
- return booleanToTypedValue(false);
301
- }
302
- return [];
303
- }
304
- }
305
- class FunctionAtom {
306
- constructor(name, args) {
307
- this.name = name;
308
- this.args = args;
309
- }
310
- eval(context, input) {
311
- const impl = functions[this.name];
312
- if (!impl) {
313
- throw new Error('Unrecognized function: ' + this.name);
314
- }
315
- return impl(context, input, ...this.args);
316
- }
317
- toString() {
318
- return `${this.name}(${this.args.map((arg) => arg.toString()).join(', ')})`;
319
- }
320
- }
321
- class IndexerAtom {
322
- constructor(left, expr) {
323
- this.left = left;
324
- this.expr = expr;
325
- }
326
- eval(context, input) {
327
- const evalResult = this.expr.eval(context, input);
328
- if (evalResult.length !== 1) {
329
- return [];
330
- }
331
- const index = evalResult[0].value;
332
- if (typeof index !== 'number') {
333
- throw new Error(`Invalid indexer expression: should return integer}`);
334
- }
335
- const leftResult = this.left.eval(context, input);
336
- if (!(index in leftResult)) {
337
- return [];
338
- }
339
- return [leftResult[index]];
340
- }
341
- toString() {
342
- return `${this.left.toString()}[${this.expr.toString()}]`;
343
- }
344
- }
345
-
346
- export { AndAtom, ArithemticOperatorAtom, AsAtom, ConcatAtom, ContainsAtom, DotAtom, EmptySetAtom, EqualsAtom, EquivalentAtom, FhirPathAtom, FunctionAtom, InAtom, IndexerAtom, IsAtom, LiteralAtom, NotEqualsAtom, NotEquivalentAtom, OrAtom, SymbolAtom, UnaryOperatorAtom, UnionAtom, XorAtom };
347
- //# sourceMappingURL=atoms.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"atoms.mjs","sources":["../../../src/fhirpath/atoms.ts"],"sourcesContent":["import { Atom, AtomContext, InfixOperatorAtom, PrefixOperatorAtom } from '../fhirlexer';\nimport { PropertyType, TypedValue, isResource } from '../types';\nimport { functions } from './functions';\nimport {\n booleanToTypedValue,\n fhirPathArrayEquals,\n fhirPathArrayEquivalent,\n fhirPathIs,\n fhirPathNot,\n getTypedPropertyValue,\n isQuantity,\n removeDuplicates,\n toJsBoolean,\n toTypedValue,\n} from './utils';\nexport class FhirPathAtom implements Atom {\n constructor(public readonly original: string, public readonly child: Atom) {}\n\n eval(context: AtomContext, input: TypedValue[]): TypedValue[] {\n try {\n if (input.length > 0) {\n return input.map((e) => this.child.eval(context, [e])).flat();\n } else {\n return this.child.eval(context, []);\n }\n } catch (error) {\n throw new Error(`FhirPathError on \"${this.original}\": ${error}`);\n }\n }\n\n toString(): string {\n return this.child.toString();\n }\n}\n\nexport class LiteralAtom implements Atom {\n constructor(public readonly value: TypedValue) {}\n eval(): TypedValue[] {\n return [this.value];\n }\n\n toString(): string {\n const value = this.value.value;\n if (typeof value === 'string') {\n return `'${value}'`;\n }\n return value.toString();\n }\n}\n\nexport class SymbolAtom implements Atom {\n constructor(public readonly name: string) {}\n eval(context: AtomContext, input: TypedValue[]): TypedValue[] {\n if (this.name === '$this') {\n return input;\n }\n if (this.name.startsWith('%')) {\n const symbol = context.variables[this.name.slice(1)];\n if (!symbol) {\n throw new Error(`Undefined variable ${this.name}`);\n }\n return [symbol];\n }\n return input.flatMap((e) => this.evalValue(e)).filter((e) => e?.value !== undefined) as TypedValue[];\n }\n\n private evalValue(typedValue: TypedValue): TypedValue[] | TypedValue | undefined {\n const input = typedValue.value;\n if (!input || typeof input !== 'object') {\n return undefined;\n }\n\n if (isResource(input) && input.resourceType === this.name) {\n return typedValue;\n }\n\n return getTypedPropertyValue(typedValue, this.name);\n }\n\n toString(): string {\n return this.name;\n }\n}\n\nexport class EmptySetAtom implements Atom {\n eval(): [] {\n return [];\n }\n\n toString(): string {\n return '{}';\n }\n}\n\nexport class UnaryOperatorAtom extends PrefixOperatorAtom {\n constructor(operator: string, child: Atom, public readonly impl: (x: TypedValue[]) => TypedValue[]) {\n super(operator, child);\n }\n\n eval(context: AtomContext, input: TypedValue[]): TypedValue[] {\n return this.impl(this.child.eval(context, input));\n }\n\n toString(): string {\n return this.child.toString();\n }\n}\n\nexport class AsAtom extends InfixOperatorAtom {\n constructor(left: Atom, right: Atom) {\n super('as', left, right);\n }\n\n eval(context: AtomContext, input: TypedValue[]): TypedValue[] {\n return functions.ofType(context, this.left.eval(context, input), this.right);\n }\n}\n\nexport class ArithemticOperatorAtom extends InfixOperatorAtom {\n constructor(\n operator: string,\n left: Atom,\n right: Atom,\n public readonly impl: (x: number, y: number) => number | boolean\n ) {\n super(operator, left, right);\n }\n\n eval(context: AtomContext, input: TypedValue[]): TypedValue[] {\n const leftEvalResult = this.left.eval(context, input);\n if (leftEvalResult.length !== 1) {\n return [];\n }\n const rightEvalResult = this.right.eval(context, input);\n if (rightEvalResult.length !== 1) {\n return [];\n }\n const leftValue = leftEvalResult[0].value;\n const rightValue = rightEvalResult[0].value;\n const leftNumber = isQuantity(leftValue) ? leftValue.value : leftValue;\n const rightNumber = isQuantity(rightValue) ? rightValue.value : rightValue;\n const result = this.impl(leftNumber, rightNumber);\n if (typeof result === 'boolean') {\n return booleanToTypedValue(result);\n } else if (isQuantity(leftValue)) {\n return [{ type: PropertyType.Quantity, value: { ...leftValue, value: result } }];\n } else {\n return [toTypedValue(result)];\n }\n }\n}\n\nexport class ConcatAtom extends InfixOperatorAtom {\n constructor(left: Atom, right: Atom) {\n super('&', left, right);\n }\n\n eval(context: AtomContext, input: TypedValue[]): TypedValue[] {\n const leftValue = this.left.eval(context, input);\n const rightValue = this.right.eval(context, input);\n const result = [...leftValue, ...rightValue];\n if (result.length > 0 && result.every((e) => typeof e.value === 'string')) {\n return [{ type: PropertyType.string, value: result.map((e) => e.value as string).join('') }];\n }\n return result;\n }\n}\n\nexport class ContainsAtom extends InfixOperatorAtom {\n constructor(left: Atom, right: Atom) {\n super('contains', left, right);\n }\n\n eval(context: AtomContext, input: TypedValue[]): TypedValue[] {\n const leftValue = this.left.eval(context, input);\n const rightValue = this.right.eval(context, input);\n return booleanToTypedValue(leftValue.some((e) => e.value === rightValue[0].value));\n }\n}\n\nexport class InAtom extends InfixOperatorAtom {\n constructor(left: Atom, right: Atom) {\n super('in', left, right);\n }\n\n eval(context: AtomContext, input: TypedValue[]): TypedValue[] {\n const leftValue = this.left.eval(context, input);\n const rightValue = this.right.eval(context, input);\n return booleanToTypedValue(rightValue.some((e) => e.value === leftValue[0].value));\n }\n}\n\nexport class DotAtom extends InfixOperatorAtom {\n constructor(left: Atom, right: Atom) {\n super('.', left, right);\n }\n\n eval(context: AtomContext, input: TypedValue[]): TypedValue[] {\n return this.right.eval(context, this.left.eval(context, input));\n }\n\n toString(): string {\n return `${this.left.toString()}.${this.right.toString()}`;\n }\n}\n\nexport class UnionAtom extends InfixOperatorAtom {\n constructor(left: Atom, right: Atom) {\n super('|', left, right);\n }\n\n eval(context: AtomContext, input: TypedValue[]): TypedValue[] {\n const leftResult = this.left.eval(context, input);\n const rightResult = this.right.eval(context, input);\n return removeDuplicates([...leftResult, ...rightResult]);\n }\n}\n\nexport class EqualsAtom extends InfixOperatorAtom {\n constructor(left: Atom, right: Atom) {\n super('=', left, right);\n }\n\n eval(context: AtomContext, input: TypedValue[]): TypedValue[] {\n const leftValue = this.left.eval(context, input);\n const rightValue = this.right.eval(context, input);\n return fhirPathArrayEquals(leftValue, rightValue);\n }\n}\n\nexport class NotEqualsAtom extends InfixOperatorAtom {\n constructor(left: Atom, right: Atom) {\n super('!=', left, right);\n }\n\n eval(context: AtomContext, input: TypedValue[]): TypedValue[] {\n const leftValue = this.left.eval(context, input);\n const rightValue = this.right.eval(context, input);\n return fhirPathNot(fhirPathArrayEquals(leftValue, rightValue));\n }\n}\n\nexport class EquivalentAtom extends InfixOperatorAtom {\n constructor(left: Atom, right: Atom) {\n super('~', left, right);\n }\n\n eval(context: AtomContext, input: TypedValue[]): TypedValue[] {\n const leftValue = this.left.eval(context, input);\n const rightValue = this.right.eval(context, input);\n return fhirPathArrayEquivalent(leftValue, rightValue);\n }\n}\n\nexport class NotEquivalentAtom extends InfixOperatorAtom {\n constructor(left: Atom, right: Atom) {\n super('!~', left, right);\n }\n\n eval(context: AtomContext, input: TypedValue[]): TypedValue[] {\n const leftValue = this.left.eval(context, input);\n const rightValue = this.right.eval(context, input);\n return fhirPathNot(fhirPathArrayEquivalent(leftValue, rightValue));\n }\n}\n\nexport class IsAtom extends InfixOperatorAtom {\n constructor(left: Atom, right: Atom) {\n super('is', left, right);\n }\n\n eval(context: AtomContext, input: TypedValue[]): TypedValue[] {\n const leftValue = this.left.eval(context, input);\n if (leftValue.length !== 1) {\n return [];\n }\n const typeName = (this.right as SymbolAtom).name;\n return booleanToTypedValue(fhirPathIs(leftValue[0], typeName));\n }\n}\n\n/**\n * 6.5.1. and\n * Returns true if both operands evaluate to true,\n * false if either operand evaluates to false,\n * and the empty collection otherwise.\n */\nexport class AndAtom extends InfixOperatorAtom {\n constructor(left: Atom, right: Atom) {\n super('and', left, right);\n }\n\n eval(context: AtomContext, input: TypedValue[]): TypedValue[] {\n const leftValue = this.left.eval(context, input);\n const rightValue = this.right.eval(context, input);\n if (leftValue[0]?.value === true && rightValue[0]?.value === true) {\n return booleanToTypedValue(true);\n }\n if (leftValue[0]?.value === false || rightValue[0]?.value === false) {\n return booleanToTypedValue(false);\n }\n return [];\n }\n}\n\nexport class OrAtom extends InfixOperatorAtom {\n constructor(left: Atom, right: Atom) {\n super('or', left, right);\n }\n\n eval(context: AtomContext, input: TypedValue[]): TypedValue[] {\n const leftValue = this.left.eval(context, input);\n if (toJsBoolean(leftValue)) {\n return leftValue;\n }\n\n const rightValue = this.right.eval(context, input);\n if (toJsBoolean(rightValue)) {\n return rightValue;\n }\n\n return [];\n }\n}\n\n/**\n * 6.5.4. xor\n * Returns true if exactly one of the operands evaluates to true,\n * false if either both operands evaluate to true or both operands evaluate to false,\n * and the empty collection otherwise.\n */\nexport class XorAtom extends InfixOperatorAtom {\n constructor(left: Atom, right: Atom) {\n super('xor', left, right);\n }\n\n eval(context: AtomContext, input: TypedValue[]): TypedValue[] {\n const leftResult = this.left.eval(context, input);\n const rightResult = this.right.eval(context, input);\n if (leftResult.length === 0 && rightResult.length === 0) {\n return [];\n }\n const leftValue = leftResult.length === 0 ? null : leftResult[0].value;\n const rightValue = rightResult.length === 0 ? null : rightResult[0].value;\n if ((leftValue === true && rightValue !== true) || (leftValue !== true && rightValue === true)) {\n return booleanToTypedValue(true);\n }\n if ((leftValue === true && rightValue === true) || (leftValue === false && rightValue === false)) {\n return booleanToTypedValue(false);\n }\n return [];\n }\n}\n\nexport class FunctionAtom implements Atom {\n constructor(public readonly name: string, public readonly args: Atom[]) {}\n eval(context: AtomContext, input: TypedValue[]): TypedValue[] {\n const impl = functions[this.name];\n if (!impl) {\n throw new Error('Unrecognized function: ' + this.name);\n }\n return impl(context, input, ...this.args);\n }\n\n toString(): string {\n return `${this.name}(${this.args.map((arg) => arg.toString()).join(', ')})`;\n }\n}\n\nexport class IndexerAtom implements Atom {\n constructor(public readonly left: Atom, public readonly expr: Atom) {}\n eval(context: AtomContext, input: TypedValue[]): TypedValue[] {\n const evalResult = this.expr.eval(context, input);\n if (evalResult.length !== 1) {\n return [];\n }\n const index = evalResult[0].value;\n if (typeof index !== 'number') {\n throw new Error(`Invalid indexer expression: should return integer}`);\n }\n const leftResult = this.left.eval(context, input);\n if (!(index in leftResult)) {\n return [];\n }\n return [leftResult[index]];\n }\n\n toString(): string {\n return `${this.left.toString()}[${this.expr.toString()}]`;\n }\n}\n"],"names":[],"mappings":"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"}
@@ -1,24 +0,0 @@
1
- function parseDateString(str) {
2
- if (str.startsWith('T')) {
3
- // If a time string,
4
- // then normalize to full length.
5
- return str + 'T00:00:00.000Z'.substring(str.length);
6
- }
7
- if (str.length <= 10) {
8
- // If a local date (i.e., "2021-01-01"),
9
- // then return as-is.
10
- return str;
11
- }
12
- try {
13
- // Try to normalize to UTC
14
- return new Date(str).toISOString();
15
- }
16
- catch (e) {
17
- // Fallback to original input
18
- // This happens on unsupported time formats such as "2021-01-01T12"
19
- return str;
20
- }
21
- }
22
-
23
- export { parseDateString };
24
- //# sourceMappingURL=date.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"date.mjs","sources":["../../../src/fhirpath/date.ts"],"sourcesContent":["export function parseDateString(str: string): string {\n if (str.startsWith('T')) {\n // If a time string,\n // then normalize to full length.\n return str + 'T00:00:00.000Z'.substring(str.length);\n }\n\n if (str.length <= 10) {\n // If a local date (i.e., \"2021-01-01\"),\n // then return as-is.\n return str;\n }\n\n try {\n // Try to normalize to UTC\n return new Date(str).toISOString();\n } catch (e) {\n // Fallback to original input\n // This happens on unsupported time formats such as \"2021-01-01T12\"\n return str;\n }\n}\n"],"names":[],"mappings":"AAAM,SAAU,eAAe,CAAC,GAAW,EAAA;AACzC,IAAA,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;;;QAGvB,OAAO,GAAG,GAAG,gBAAgB,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AACrD,KAAA;AAED,IAAA,IAAI,GAAG,CAAC,MAAM,IAAI,EAAE,EAAE;;;AAGpB,QAAA,OAAO,GAAG,CAAC;AACZ,KAAA;IAED,IAAI;;QAEF,OAAO,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC;AACpC,KAAA;AAAC,IAAA,OAAO,CAAC,EAAE;;;AAGV,QAAA,OAAO,GAAG,CAAC;AACZ,KAAA;AACH;;;;"}