@smile-digital-health/crl 4.47.0 → 4.107.0
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.
- package/README.md +4 -18
- package/dist/ast/branchCondition.d.ts +28 -0
- package/dist/ast/branchCondition.js +250 -0
- package/dist/ast/branchCondition.js.map +1 -0
- package/dist/ast/builder.d.ts +6 -3
- package/dist/ast/builder.js +73 -12
- package/dist/ast/builder.js.map +1 -1
- package/dist/ast/criterionClassify.d.ts +2 -0
- package/dist/ast/criterionClassify.js +60 -0
- package/dist/ast/criterionClassify.js.map +1 -0
- package/dist/ast/criterionExpansion.d.ts +47 -0
- package/dist/ast/criterionExpansion.js +222 -0
- package/dist/ast/criterionExpansion.js.map +1 -0
- package/dist/ast/inferenceWalk.d.ts +10 -0
- package/dist/ast/inferenceWalk.js +65 -0
- package/dist/ast/inferenceWalk.js.map +1 -0
- package/dist/ast/types.d.ts +57 -3
- package/dist/ast/types.js +8 -0
- package/dist/ast/types.js.map +1 -1
- package/dist/ast/utils.js +6 -0
- package/dist/ast/utils.js.map +1 -1
- package/dist/authoring-kit/index.js +267 -37
- package/dist/authoring-kit/index.js.map +1 -1
- package/dist/authoring-kit/reference.d.ts +3 -3
- package/dist/authoring-kit/reference.js +133 -67
- package/dist/authoring-kit/reference.js.map +1 -1
- package/dist/authoring-kit/types.d.ts +1 -1
- package/dist/cel/validator/types.d.ts +1 -1
- package/dist/cel/validator/validator.js +4 -1
- package/dist/cel/validator/validator.js.map +1 -1
- package/dist/cql-emitter/catalog/CRLCommon.cql +9 -1
- package/dist/cql-emitter/catalog/CaseFeatureCommon.cql +5 -1
- package/dist/cql-emitter/cqlStrings.d.ts +1 -0
- package/dist/cql-emitter/cqlStrings.js +4 -0
- package/dist/cql-emitter/cqlStrings.js.map +1 -1
- package/dist/cql-emitter/emitCQL.d.ts +1 -0
- package/dist/cql-emitter/emitCQL.js +141 -33
- package/dist/cql-emitter/emitCQL.js.map +1 -1
- package/dist/cql-emitter/layeredEmit.js +8 -3
- package/dist/cql-emitter/layeredEmit.js.map +1 -1
- package/dist/cql-emitter/lowerLocalCodes.d.ts +1 -0
- package/dist/cql-emitter/lowerLocalCodes.js +26 -18
- package/dist/cql-emitter/lowerLocalCodes.js.map +1 -1
- package/dist/cre/expandDecisions.d.ts +13 -0
- package/dist/cre/expandDecisions.js +69 -0
- package/dist/cre/expandDecisions.js.map +1 -0
- package/dist/cre/index.d.ts +3 -3
- package/dist/cre/index.js +4 -1
- package/dist/cre/index.js.map +1 -1
- package/dist/cre/run.d.ts +65 -1
- package/dist/cre/run.js +135 -21
- package/dist/cre/run.js.map +1 -1
- package/dist/cre/viewModel.d.ts +53 -4
- package/dist/cre/viewModel.js +194 -16
- package/dist/cre/viewModel.js.map +1 -1
- package/dist/dispositions/displayName.d.ts +7 -0
- package/dist/dispositions/displayName.js +18 -3
- package/dist/dispositions/displayName.js.map +1 -1
- package/dist/dispositions/index.d.ts +2 -1
- package/dist/dispositions/index.js +3 -1
- package/dist/dispositions/index.js.map +1 -1
- package/dist/dispositions/types.d.ts +1 -0
- package/dist/fhir-emitter/caseFeatureCollection.js +14 -60
- package/dist/fhir-emitter/caseFeatureCollection.js.map +1 -1
- package/dist/fhir-emitter/closureOrchestrator.js +34 -42
- package/dist/fhir-emitter/closureOrchestrator.js.map +1 -1
- package/dist/fhir-emitter/decision.d.ts +3 -2
- package/dist/fhir-emitter/decision.js +221 -75
- package/dist/fhir-emitter/decision.js.map +1 -1
- package/dist/fhir-emitter/types.js.map +1 -1
- package/dist/flags/buildFlagDraft.d.ts +12 -0
- package/dist/flags/buildFlagDraft.js +70 -0
- package/dist/flags/buildFlagDraft.js.map +1 -0
- package/dist/flags/flagVocab.d.ts +55 -0
- package/dist/flags/flagVocab.js +179 -0
- package/dist/flags/flagVocab.js.map +1 -0
- package/dist/flags/mvFlag.d.ts +30 -0
- package/dist/flags/mvFlag.js +70 -0
- package/dist/flags/mvFlag.js.map +1 -0
- package/dist/flags/mvFlagAnchor.d.ts +24 -0
- package/dist/flags/mvFlagAnchor.js +38 -0
- package/dist/flags/mvFlagAnchor.js.map +1 -0
- package/dist/flags/mvFlagStore.d.ts +15 -0
- package/dist/flags/mvFlagStore.js +87 -0
- package/dist/flags/mvFlagStore.js.map +1 -0
- package/dist/flags/occurrenceKey.d.ts +27 -0
- package/dist/flags/occurrenceKey.js +73 -0
- package/dist/flags/occurrenceKey.js.map +1 -0
- package/dist/grammar/generated/antlr/CRLLexer.d.ts +51 -50
- package/dist/grammar/generated/antlr/CRLLexer.js +466 -459
- package/dist/grammar/generated/antlr/CRLLexer.js.map +1 -1
- package/dist/grammar/generated/antlr/CRLParser.d.ts +195 -114
- package/dist/grammar/generated/antlr/CRLParser.js +1260 -782
- package/dist/grammar/generated/antlr/CRLParser.js.map +1 -1
- package/dist/grammar/generated/antlr/CRLParserListener.d.ts +21 -0
- package/dist/grammar/generated/antlr/CRLParserVisitor.d.ts +14 -0
- package/dist/imports/computeEmitClosure.js +7 -3
- package/dist/imports/computeEmitClosure.js.map +1 -1
- package/dist/imports/emit.d.ts +1 -0
- package/dist/imports/emit.js +41 -3
- package/dist/imports/emit.js.map +1 -1
- package/dist/imports/namespace.js +2 -0
- package/dist/imports/namespace.js.map +1 -1
- package/dist/imports/scopes.d.ts +1 -0
- package/dist/imports/scopes.js +5 -0
- package/dist/imports/scopes.js.map +1 -1
- package/dist/index.d.ts +27 -6
- package/dist/index.js +93 -3
- package/dist/index.js.map +1 -1
- package/dist/language-services/projectIndex.js +6 -1
- package/dist/language-services/projectIndex.js.map +1 -1
- package/dist/mcp/server.js +304 -12
- package/dist/mcp/server.js.map +1 -1
- package/dist/meta/generated/registry.generated.d.ts +322 -0
- package/dist/meta/generated/registry.generated.js +398 -0
- package/dist/meta/generated/registry.generated.js.map +1 -0
- package/dist/meta/parseMetaTag.d.ts +15 -0
- package/dist/meta/parseMetaTag.js +33 -0
- package/dist/meta/parseMetaTag.js.map +1 -0
- package/dist/meta/registry.d.ts +13 -0
- package/dist/meta/registry.js +62 -0
- package/dist/meta/registry.js.map +1 -0
- package/dist/provenance/cockpitModel.d.ts +13 -0
- package/dist/provenance/cockpitModel.js +24 -1
- package/dist/provenance/cockpitModel.js.map +1 -1
- package/dist/provenance/conceptShape.d.ts +13 -0
- package/dist/provenance/conceptShape.js +100 -0
- package/dist/provenance/conceptShape.js.map +1 -0
- package/dist/provenance/crlStructure.d.ts +1 -0
- package/dist/provenance/crlStructure.js +30 -4
- package/dist/provenance/crlStructure.js.map +1 -1
- package/dist/provenance/definedAsExpr.d.ts +69 -0
- package/dist/provenance/definedAsExpr.js +176 -0
- package/dist/provenance/definedAsExpr.js.map +1 -0
- package/dist/provenance/failedCriteria.d.ts +8 -4
- package/dist/provenance/failedCriteria.js +20 -2
- package/dist/provenance/failedCriteria.js.map +1 -1
- package/dist/provenance/generate.js +16 -2
- package/dist/provenance/generate.js.map +1 -1
- package/dist/provenance/guardOutline.d.ts +26 -0
- package/dist/provenance/guardOutline.js +211 -0
- package/dist/provenance/guardOutline.js.map +1 -0
- package/dist/provenance/index.d.ts +7 -1
- package/dist/provenance/index.js +20 -2
- package/dist/provenance/index.js.map +1 -1
- package/dist/provenance/indexer.js +15 -1
- package/dist/provenance/indexer.js.map +1 -1
- package/dist/provenance/policyLayout.d.ts +10 -0
- package/dist/provenance/policyLayout.js +76 -0
- package/dist/provenance/policyLayout.js.map +1 -0
- package/dist/template-match/agePredicate.d.ts +7 -0
- package/dist/template-match/agePredicate.js +53 -0
- package/dist/template-match/agePredicate.js.map +1 -0
- package/dist/template-match/matcher.js +109 -2
- package/dist/template-match/matcher.js.map +1 -1
- package/dist/validator/agePredicateValidator.d.ts +7 -0
- package/dist/validator/agePredicateValidator.js +51 -0
- package/dist/validator/agePredicateValidator.js.map +1 -0
- package/dist/validator/cycleDetector.d.ts +2 -0
- package/dist/validator/cycleDetector.js +61 -1
- package/dist/validator/cycleDetector.js.map +1 -1
- package/dist/validator/metaTagValidator.d.ts +10 -0
- package/dist/validator/metaTagValidator.js +97 -0
- package/dist/validator/metaTagValidator.js.map +1 -0
- package/dist/validator/nameUniquenessValidator.js +45 -29
- package/dist/validator/nameUniquenessValidator.js.map +1 -1
- package/dist/validator/referenceResolver.d.ts +1 -0
- package/dist/validator/referenceResolver.js +85 -14
- package/dist/validator/referenceResolver.js.map +1 -1
- package/dist/validator/validator.d.ts +19 -2
- package/dist/validator/validator.js +0 -0
- package/dist/validator/validator.js.map +1 -1
- package/package.json +124 -127
package/README.md
CHANGED
|
@@ -405,8 +405,8 @@ npm test
|
|
|
405
405
|
# Run tests with coverage
|
|
406
406
|
npm run test:coverage
|
|
407
407
|
|
|
408
|
-
# Run specific test files
|
|
409
|
-
npx
|
|
408
|
+
# Run specific test files (vitest positional filter — substring match on the test path)
|
|
409
|
+
npx vitest run --root ../.. --project crl src/ast/tests/decision-structure.test.ts
|
|
410
410
|
|
|
411
411
|
# Run tests in watch mode (useful during development)
|
|
412
412
|
npm run test:watch
|
|
@@ -556,23 +556,9 @@ This project implements robust, layered error handling across all stages of the
|
|
|
556
556
|
}
|
|
557
557
|
```
|
|
558
558
|
|
|
559
|
-
####
|
|
559
|
+
#### Test Output and Console Errors
|
|
560
560
|
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
```js
|
|
564
|
-
beforeAll(() => {
|
|
565
|
-
jest.spyOn(console, 'error').mockImplementation(() => {});
|
|
566
|
-
});
|
|
567
|
-
```
|
|
568
|
-
|
|
569
|
-
And registering it in `jest.config.js`:
|
|
570
|
-
|
|
571
|
-
```js
|
|
572
|
-
setupFilesAfterEnv: ['<rootDir>/jest.setup.js'],
|
|
573
|
-
```
|
|
574
|
-
|
|
575
|
-
This ensures that error logs are visible during development and CLI runs, but do not clutter test output.
|
|
561
|
+
These tests run on [vitest](https://vitest.dev/) (migrated from jest). There is intentionally **no** global `console.error` suppression: a global mute made real failure diagnostics dead code, and the muted lines only fire on failure paths anyway (so removing it added no noise on green runs). A suite that intentionally exercises an error path mutes `console.error` locally instead — e.g. `vi.spyOn(console, "error").mockImplementation(() => {})` scoped to that test, restored after.
|
|
576
562
|
|
|
577
563
|
## Editor Support: VS Code Extension
|
|
578
564
|
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import type { BranchCondition, BranchConditionAnd, BranchConditionOr, BranchConditionRef, BranchConditionCriterionRef, BranchConditionNot, BranchConditionLiteral, ReferenceName } from "./types";
|
|
2
|
+
import { type CriterionTable, type ExpandedSize, type ExpansionReason } from "./criterionExpansion";
|
|
3
|
+
export declare function visitBranchCondition<T>(c: BranchCondition, v: {
|
|
4
|
+
ref: (node: BranchConditionRef) => T;
|
|
5
|
+
and: (node: BranchConditionAnd, operands: T[]) => T;
|
|
6
|
+
or: (node: BranchConditionOr, operands: T[]) => T;
|
|
7
|
+
criterionRef: (node: BranchConditionCriterionRef) => T;
|
|
8
|
+
not: (node: BranchConditionNot, operand: T) => T;
|
|
9
|
+
}): T;
|
|
10
|
+
export declare function branchConditionRefs(c: BranchCondition): BranchConditionRef[];
|
|
11
|
+
export declare function branchConditionConceptRefsStrict(c: BranchCondition, where: string): BranchConditionRef[];
|
|
12
|
+
export declare function branchConditionConceptRefsFollowingCriteria(c: BranchCondition, table: CriterionTable): BranchConditionRef[];
|
|
13
|
+
export declare function branchConditionConceptRefsExpanded(c: BranchCondition, table: CriterionTable, where: string): {
|
|
14
|
+
refs: BranchConditionRef[];
|
|
15
|
+
overflow?: {
|
|
16
|
+
status: ExpansionReason;
|
|
17
|
+
detail?: ExpandedSize["detail"];
|
|
18
|
+
};
|
|
19
|
+
};
|
|
20
|
+
export declare function containsNot(c: BranchCondition): boolean;
|
|
21
|
+
export declare function toNNF(c: BranchCondition): BranchCondition;
|
|
22
|
+
export declare function branchConditionDNF(c: BranchCondition): BranchConditionLiteral[][];
|
|
23
|
+
export declare function branchConditionArmCount(c: BranchCondition, cap?: number): number;
|
|
24
|
+
export declare function assertWellFormedBranchCondition(c: BranchCondition): void;
|
|
25
|
+
export declare function soleRef(c: BranchCondition): BranchConditionRef | null;
|
|
26
|
+
export declare function describeBranchCondition(c: BranchCondition, display: (r: ReferenceName) => string, opts?: {
|
|
27
|
+
markerAware?: boolean;
|
|
28
|
+
}): string;
|
|
@@ -0,0 +1,250 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.visitBranchCondition = visitBranchCondition;
|
|
4
|
+
exports.branchConditionRefs = branchConditionRefs;
|
|
5
|
+
exports.branchConditionConceptRefsStrict = branchConditionConceptRefsStrict;
|
|
6
|
+
exports.branchConditionConceptRefsFollowingCriteria = branchConditionConceptRefsFollowingCriteria;
|
|
7
|
+
exports.branchConditionConceptRefsExpanded = branchConditionConceptRefsExpanded;
|
|
8
|
+
exports.containsNot = containsNot;
|
|
9
|
+
exports.toNNF = toNNF;
|
|
10
|
+
exports.branchConditionDNF = branchConditionDNF;
|
|
11
|
+
exports.branchConditionArmCount = branchConditionArmCount;
|
|
12
|
+
exports.assertWellFormedBranchCondition = assertWellFormedBranchCondition;
|
|
13
|
+
exports.soleRef = soleRef;
|
|
14
|
+
exports.describeBranchCondition = describeBranchCondition;
|
|
15
|
+
const types_1 = require("./types");
|
|
16
|
+
const criterionExpansion_1 = require("./criterionExpansion");
|
|
17
|
+
function unexpandedCriterion(node, where) {
|
|
18
|
+
throw new Error(`internal: un-expanded criterion reference "${String(node.ref)}" reached ${where} — criterion expansion must run before this seam`);
|
|
19
|
+
}
|
|
20
|
+
function visitBranchCondition(c, v) {
|
|
21
|
+
switch (c.type) {
|
|
22
|
+
case "BranchConditionRef":
|
|
23
|
+
return v.ref(c);
|
|
24
|
+
case "BranchConditionCriterionRef":
|
|
25
|
+
return v.criterionRef(c);
|
|
26
|
+
case "BranchConditionNot":
|
|
27
|
+
return v.not(c, visitBranchCondition(c.operand, v));
|
|
28
|
+
case "BranchConditionAnd":
|
|
29
|
+
return v.and(c, c.operands.map((o) => visitBranchCondition(o, v)));
|
|
30
|
+
case "BranchConditionOr":
|
|
31
|
+
return v.or(c, c.operands.map((o) => visitBranchCondition(o, v)));
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
function branchConditionRefs(c) {
|
|
35
|
+
const out = [];
|
|
36
|
+
const walk = (n) => {
|
|
37
|
+
if (n.type === "BranchConditionRef")
|
|
38
|
+
out.push(n);
|
|
39
|
+
else if (n.type === "BranchConditionCriterionRef")
|
|
40
|
+
return;
|
|
41
|
+
else if (n.type === "BranchConditionNot") {
|
|
42
|
+
if (n.operand)
|
|
43
|
+
walk(n.operand);
|
|
44
|
+
}
|
|
45
|
+
else if (Array.isArray(n.operands))
|
|
46
|
+
n.operands.forEach(walk);
|
|
47
|
+
};
|
|
48
|
+
walk(c);
|
|
49
|
+
return out;
|
|
50
|
+
}
|
|
51
|
+
function branchConditionConceptRefsStrict(c, where) {
|
|
52
|
+
const out = [];
|
|
53
|
+
const walk = (n) => {
|
|
54
|
+
if (n.type === "BranchConditionRef")
|
|
55
|
+
out.push(n);
|
|
56
|
+
else if (n.type === "BranchConditionCriterionRef")
|
|
57
|
+
unexpandedCriterion(n, where);
|
|
58
|
+
else if (n.type === "BranchConditionNot") {
|
|
59
|
+
if (n.operand)
|
|
60
|
+
walk(n.operand);
|
|
61
|
+
}
|
|
62
|
+
else if (Array.isArray(n.operands))
|
|
63
|
+
n.operands.forEach(walk);
|
|
64
|
+
};
|
|
65
|
+
walk(c);
|
|
66
|
+
return out;
|
|
67
|
+
}
|
|
68
|
+
function branchConditionConceptRefsFollowingCriteria(c, table) {
|
|
69
|
+
if ((0, criterionExpansion_1.containsCriterionRef)(c) && (0, criterionExpansion_1.expandedSize)(c, table).status !== "ok") {
|
|
70
|
+
return branchConditionRefs(c);
|
|
71
|
+
}
|
|
72
|
+
const out = [];
|
|
73
|
+
const active = new Set();
|
|
74
|
+
const walk = (n) => {
|
|
75
|
+
if (n.type === "BranchConditionRef") {
|
|
76
|
+
out.push(n);
|
|
77
|
+
return;
|
|
78
|
+
}
|
|
79
|
+
if (n.type === "BranchConditionCriterionRef") {
|
|
80
|
+
const name = (0, types_1.getRefName)(n.ref);
|
|
81
|
+
const crit = table.get(name);
|
|
82
|
+
if (!crit || active.has(name))
|
|
83
|
+
return;
|
|
84
|
+
active.add(name);
|
|
85
|
+
walk(crit.condition);
|
|
86
|
+
active.delete(name);
|
|
87
|
+
return;
|
|
88
|
+
}
|
|
89
|
+
if (n.type === "BranchConditionNot") {
|
|
90
|
+
if (n.operand)
|
|
91
|
+
walk(n.operand);
|
|
92
|
+
return;
|
|
93
|
+
}
|
|
94
|
+
if (Array.isArray(n.operands))
|
|
95
|
+
n.operands.forEach(walk);
|
|
96
|
+
};
|
|
97
|
+
walk(c);
|
|
98
|
+
return out;
|
|
99
|
+
}
|
|
100
|
+
function branchConditionConceptRefsExpanded(c, table, where) {
|
|
101
|
+
const g = (0, criterionExpansion_1.expandGuardOrRecord)(c, table);
|
|
102
|
+
if (!g.ok)
|
|
103
|
+
return { refs: [], overflow: { status: g.status, detail: g.detail } };
|
|
104
|
+
return { refs: branchConditionConceptRefsStrict(g.cond, where) };
|
|
105
|
+
}
|
|
106
|
+
function containsNot(c) {
|
|
107
|
+
switch (c.type) {
|
|
108
|
+
case "BranchConditionNot":
|
|
109
|
+
return true;
|
|
110
|
+
case "BranchConditionRef":
|
|
111
|
+
case "BranchConditionCriterionRef":
|
|
112
|
+
return false;
|
|
113
|
+
case "BranchConditionAnd":
|
|
114
|
+
case "BranchConditionOr":
|
|
115
|
+
return c.operands.some(containsNot);
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
function toNNF(c) {
|
|
119
|
+
if (!containsNot(c) && !(0, criterionExpansion_1.containsCriterionRef)(c))
|
|
120
|
+
return c;
|
|
121
|
+
const nnf = (n, negated) => {
|
|
122
|
+
const withMarker = (out) => n.sourcedFromCriterion ? { ...out, sourcedFromCriterion: n.sourcedFromCriterion } : out;
|
|
123
|
+
switch (n.type) {
|
|
124
|
+
case "BranchConditionCriterionRef":
|
|
125
|
+
return unexpandedCriterion(n, "toNNF");
|
|
126
|
+
case "BranchConditionRef":
|
|
127
|
+
if (!negated)
|
|
128
|
+
return withMarker(n);
|
|
129
|
+
return withMarker({
|
|
130
|
+
type: "BranchConditionNot",
|
|
131
|
+
operand: { type: "BranchConditionRef", ref: n.ref, location: n.location },
|
|
132
|
+
location: n.location,
|
|
133
|
+
});
|
|
134
|
+
case "BranchConditionNot":
|
|
135
|
+
return withMarker(nnf(n.operand, !negated));
|
|
136
|
+
case "BranchConditionAnd":
|
|
137
|
+
case "BranchConditionOr": {
|
|
138
|
+
const flipTo = negated && n.type === "BranchConditionAnd"
|
|
139
|
+
? "BranchConditionOr"
|
|
140
|
+
: negated && n.type === "BranchConditionOr"
|
|
141
|
+
? "BranchConditionAnd"
|
|
142
|
+
: n.type;
|
|
143
|
+
return withMarker({
|
|
144
|
+
type: flipTo,
|
|
145
|
+
operands: n.operands.map((o) => nnf(o, negated)),
|
|
146
|
+
location: n.location,
|
|
147
|
+
});
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
};
|
|
151
|
+
return nnf(c, false);
|
|
152
|
+
}
|
|
153
|
+
function branchConditionDNF(c) {
|
|
154
|
+
const dnf = (n) => {
|
|
155
|
+
switch (n.type) {
|
|
156
|
+
case "BranchConditionRef":
|
|
157
|
+
return [[n]];
|
|
158
|
+
case "BranchConditionNot": {
|
|
159
|
+
if (n.operand.type !== "BranchConditionRef") {
|
|
160
|
+
throw new Error(`internal: branchConditionDNF saw a non-normalized negation over ${n.operand.type} — toNNF must run first`);
|
|
161
|
+
}
|
|
162
|
+
return [[n]];
|
|
163
|
+
}
|
|
164
|
+
case "BranchConditionCriterionRef":
|
|
165
|
+
return unexpandedCriterion(n, "branchConditionDNF");
|
|
166
|
+
case "BranchConditionOr":
|
|
167
|
+
return n.operands.flatMap((o) => dnf(o));
|
|
168
|
+
case "BranchConditionAnd": {
|
|
169
|
+
let arms = [[]];
|
|
170
|
+
for (const operand of n.operands) {
|
|
171
|
+
const opArms = dnf(operand);
|
|
172
|
+
const next = [];
|
|
173
|
+
for (const arm of arms)
|
|
174
|
+
for (const opArm of opArms)
|
|
175
|
+
next.push([...arm, ...opArm]);
|
|
176
|
+
arms = next;
|
|
177
|
+
}
|
|
178
|
+
return arms;
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
};
|
|
182
|
+
return dnf(toNNF(c));
|
|
183
|
+
}
|
|
184
|
+
function branchConditionArmCount(c, cap = 16) {
|
|
185
|
+
const ceiling = cap + 1;
|
|
186
|
+
const go = (n) => {
|
|
187
|
+
if (n.type === "BranchConditionRef")
|
|
188
|
+
return 1;
|
|
189
|
+
if (n.type === "BranchConditionNot")
|
|
190
|
+
return 1;
|
|
191
|
+
if (n.type === "BranchConditionCriterionRef")
|
|
192
|
+
return unexpandedCriterion(n, "branchConditionArmCount");
|
|
193
|
+
if (n.type === "BranchConditionOr") {
|
|
194
|
+
let sum = 0;
|
|
195
|
+
for (const o of n.operands) {
|
|
196
|
+
sum += go(o);
|
|
197
|
+
if (sum >= ceiling)
|
|
198
|
+
return ceiling;
|
|
199
|
+
}
|
|
200
|
+
return sum;
|
|
201
|
+
}
|
|
202
|
+
let product = 1;
|
|
203
|
+
for (const o of n.operands) {
|
|
204
|
+
product *= go(o);
|
|
205
|
+
if (product >= ceiling)
|
|
206
|
+
return ceiling;
|
|
207
|
+
}
|
|
208
|
+
return product;
|
|
209
|
+
};
|
|
210
|
+
return go(toNNF(c));
|
|
211
|
+
}
|
|
212
|
+
function assertWellFormedBranchCondition(c) {
|
|
213
|
+
const check = (n) => {
|
|
214
|
+
if (n.type === "BranchConditionRef" || n.type === "BranchConditionCriterionRef")
|
|
215
|
+
return;
|
|
216
|
+
if (n.type === "BranchConditionNot") {
|
|
217
|
+
check(n.operand);
|
|
218
|
+
return;
|
|
219
|
+
}
|
|
220
|
+
if (n.operands.length < 2) {
|
|
221
|
+
throw new Error(`${n.type} requires >= 2 operands, got ${n.operands.length}`);
|
|
222
|
+
}
|
|
223
|
+
n.operands.forEach(check);
|
|
224
|
+
};
|
|
225
|
+
check(c);
|
|
226
|
+
}
|
|
227
|
+
function soleRef(c) {
|
|
228
|
+
return c.type === "BranchConditionRef" ? c : null;
|
|
229
|
+
}
|
|
230
|
+
function describeBranchCondition(c, display, opts = {}) {
|
|
231
|
+
const markerAware = opts.markerAware ?? false;
|
|
232
|
+
const isNameLeaf = (n) => markerAware && n.sourcedFromCriterion !== undefined;
|
|
233
|
+
const go = (n, parentOp) => {
|
|
234
|
+
if (isNameLeaf(n))
|
|
235
|
+
return display(n.sourcedFromCriterion.name);
|
|
236
|
+
if (n.type === "BranchConditionRef" || n.type === "BranchConditionCriterionRef")
|
|
237
|
+
return display(n.ref);
|
|
238
|
+
if (n.type === "BranchConditionNot") {
|
|
239
|
+
const compound = !isNameLeaf(n.operand) &&
|
|
240
|
+
(n.operand.type === "BranchConditionAnd" || n.operand.type === "BranchConditionOr");
|
|
241
|
+
const inner = go(n.operand, null);
|
|
242
|
+
return `not ${compound ? `(${inner})` : inner}`;
|
|
243
|
+
}
|
|
244
|
+
const op = n.type === "BranchConditionAnd" ? "and" : "or";
|
|
245
|
+
const inner = n.operands.map((o) => go(o, op)).join(` ${op} `);
|
|
246
|
+
return parentOp !== null && parentOp !== op ? `(${inner})` : inner;
|
|
247
|
+
};
|
|
248
|
+
return go(c, null);
|
|
249
|
+
}
|
|
250
|
+
//# sourceMappingURL=branchCondition.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"branchCondition.js","sourceRoot":"","sources":["../../src/ast/branchCondition.ts"],"names":[],"mappings":"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"}
|
package/dist/ast/builder.d.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { ParserRuleContext } from "antlr4ts/ParserRuleContext";
|
|
2
2
|
import { AbstractParseTreeVisitor } from "antlr4ts/tree/AbstractParseTreeVisitor";
|
|
3
|
-
import { CrlContext, DecisionStatementContext, DecisionBodyContext, BranchItemContext, BlockBodyContext, ActionItemContext, ActionStatementContext, RecommendStatementContext, UseStatementContext, TerminologyStatementContext, TerminologyValuesetContext, ActivityStatementContext, ConceptStatementContext, ParameterStatementContext, LibraryStatementContext, IncludeStatementContext, DefinitionIsBodyContext, DefinedAsBodyContext, DefinedAsBareRefContext, DefinedAsCompositionContext, CompositionExpressionContext, SemOrContext, SemAndContext, SemNotContext, CompositionRefContext, CompositionGroupContext, NarrativeContext, NConceptRefContext, NQuantityContext, NWordContext, NArgGroupElementContext, QuantityContext, ArgGroupContext, ArgDisjunctionContext, ArgConjunctionContext, ArgSingletonContext, AVConceptRefContext, AVQuantityContext, AVNestedGroupContext, WhenWithBodyContext, WhenSingleActionContext, OtherwiseWithBodyContext, OtherwiseSingleActionContext } from "../grammar/generated/antlr/CRLParser";
|
|
3
|
+
import { CrlContext, DecisionStatementContext, CriterionStatementContext, DecisionBodyContext, BranchItemContext, BlockBodyContext, ActionItemContext, ActionStatementContext, RecommendStatementContext, UseStatementContext, TerminologyStatementContext, TerminologyValuesetContext, ActivityStatementContext, ConceptStatementContext, ParameterStatementContext, LibraryStatementContext, IncludeStatementContext, DefinitionIsBodyContext, DefinedAsBodyContext, DefinedAsBareRefContext, DefinedAsCompositionContext, CompositionExpressionContext, SemOrContext, SemAndContext, SemNotContext, CompositionRefContext, CompositionGroupContext, NarrativeContext, NConceptRefContext, NQuantityContext, NWordContext, NArgGroupElementContext, QuantityContext, ArgGroupContext, ArgDisjunctionContext, ArgConjunctionContext, ArgSingletonContext, AVConceptRefContext, AVQuantityContext, AVNestedGroupContext, WhenWithBodyContext, WhenSingleActionContext, OtherwiseWithBodyContext, OtherwiseSingleActionContext } from "../grammar/generated/antlr/CRLParser";
|
|
4
4
|
import { CRLParserVisitor } from "../grammar/generated/antlr/CRLParserVisitor";
|
|
5
5
|
import type { CRLError } from "../types/errors";
|
|
6
|
-
import { ASTNode, Decision, DecisionBody, WhenBlock, OtherwiseBlock, BranchBlock, BlockBody, ActionStatement, RecommendActivity, UseDecision, Terminology, TerminologyValueset, TerminologySystem, TerminologyCode, Activity, ActivityBody, ActivityRequest, ActivityWith, ActivityBecause, Concept, Parameter, DefinedAsDefinition, DefinedAsBareRef, DefinedAsComposition, CompositionExpression, CompositionRef, CompositionGroup, DefinitionIsDefinition, NarrativeClause, NConceptRef, NWord, NDisjunction, NConjunction, Quantity } from "./types";
|
|
6
|
+
import { ASTNode, Decision, Criterion, DecisionBody, WhenBlock, OtherwiseBlock, BranchBlock, BlockBody, ActionStatement, RecommendActivity, UseDecision, Terminology, TerminologyValueset, TerminologySystem, TerminologyCode, Activity, ActivityBody, ActivityRequest, ActivityWith, ActivityBecause, Concept, Parameter, DefinedAsDefinition, DefinedAsBareRef, DefinedAsComposition, CompositionExpression, CompositionRef, CompositionGroup, DefinitionIsDefinition, NarrativeClause, NConceptRef, NWord, NDisjunction, NConjunction, Quantity } from "./types";
|
|
7
7
|
import type { CRL, LibraryDeclaration, Include } from "./types";
|
|
8
8
|
export declare class CRLAstBuilder extends AbstractParseTreeVisitor<ASTNode> implements CRLParserVisitor<ASTNode> {
|
|
9
9
|
private readonly errors;
|
|
@@ -14,8 +14,11 @@ export declare class CRLAstBuilder extends AbstractParseTreeVisitor<ASTNode> imp
|
|
|
14
14
|
visitLibraryStatement(ctx: LibraryStatementContext): LibraryDeclaration;
|
|
15
15
|
visitIncludeStatement(ctx: IncludeStatementContext): Include;
|
|
16
16
|
visitDecisionStatement(ctx: DecisionStatementContext): Decision;
|
|
17
|
+
visitCriterionStatement(ctx: CriterionStatementContext): Criterion;
|
|
17
18
|
visitDecisionBody(ctx: DecisionBodyContext): DecisionBody;
|
|
18
19
|
visitBranchItem(ctx: BranchItemContext): BranchBlock;
|
|
20
|
+
private branchConditionFrom;
|
|
21
|
+
private bcAtomToCondition;
|
|
19
22
|
visitWhenWithBody(ctx: WhenWithBodyContext): WhenBlock;
|
|
20
23
|
visitWhenSingleAction(ctx: WhenSingleActionContext): WhenBlock;
|
|
21
24
|
visitOtherwiseWithBody(ctx: OtherwiseWithBodyContext): OtherwiseBlock;
|
|
@@ -36,7 +39,7 @@ export declare class CRLAstBuilder extends AbstractParseTreeVisitor<ASTNode> imp
|
|
|
36
39
|
visitActivityWith(ctx: import("../grammar/generated/antlr/CRLParser").ActivityWithContext): ActivityWith;
|
|
37
40
|
visitActivityBecause(ctx: import("../grammar/generated/antlr/CRLParser").ActivityBecauseContext): ActivityBecause;
|
|
38
41
|
private parseConceptTypes;
|
|
39
|
-
private
|
|
42
|
+
private metaFrom;
|
|
40
43
|
private parseEvidence;
|
|
41
44
|
private parseConceptDefinition;
|
|
42
45
|
private buildCodedFrom;
|
package/dist/ast/builder.js
CHANGED
|
@@ -95,9 +95,11 @@ class CRLAstBuilder extends AbstractParseTreeVisitor_1.AbstractParseTreeVisitor
|
|
|
95
95
|
}
|
|
96
96
|
visitLibraryStatement(ctx) {
|
|
97
97
|
const name = ctx.identifier().text.slice(1, -1);
|
|
98
|
+
const meta = this.metaFrom(ctx.metaLine());
|
|
98
99
|
return {
|
|
99
100
|
type: "LibraryDeclaration",
|
|
100
101
|
name,
|
|
102
|
+
...(meta.length > 0 ? { meta } : {}),
|
|
101
103
|
location: getLocation(ctx),
|
|
102
104
|
};
|
|
103
105
|
}
|
|
@@ -114,8 +116,15 @@ class CRLAstBuilder extends AbstractParseTreeVisitor_1.AbstractParseTreeVisitor
|
|
|
114
116
|
}
|
|
115
117
|
visitDecisionStatement(ctx) {
|
|
116
118
|
const name = ctx.decisionIdentifier().text.slice(1, -1);
|
|
117
|
-
const
|
|
118
|
-
|
|
119
|
+
const decisionBody = ctx.decisionBody();
|
|
120
|
+
const body = this.visit(decisionBody);
|
|
121
|
+
const meta = this.metaFrom(decisionBody.metaLine());
|
|
122
|
+
return { type: "Decision", name, body, ...(meta.length > 0 ? { meta } : {}), location: getLocation(ctx) };
|
|
123
|
+
}
|
|
124
|
+
visitCriterionStatement(ctx) {
|
|
125
|
+
const name = ctx.criterionIdentifier().text.slice(1, -1);
|
|
126
|
+
const condition = this.branchConditionFrom(ctx.branchCondition());
|
|
127
|
+
return { type: "Criterion", name, condition, location: getLocation(ctx) };
|
|
119
128
|
}
|
|
120
129
|
visitDecisionBody(ctx) {
|
|
121
130
|
const qualifier = qualifierFrom(ctx.blockQualifier());
|
|
@@ -139,15 +148,65 @@ class CRLAstBuilder extends AbstractParseTreeVisitor_1.AbstractParseTreeVisitor
|
|
|
139
148
|
this.reportError("Unknown branchItem alternative", ctx);
|
|
140
149
|
return null;
|
|
141
150
|
}
|
|
151
|
+
branchConditionFrom(ctx) {
|
|
152
|
+
const atoms = ctx.bcAtom();
|
|
153
|
+
if (atoms.length === 0) {
|
|
154
|
+
this.reportError("a `when` guard must have at least one condition", ctx);
|
|
155
|
+
return { type: "BranchConditionRef", ref: "", location: getLocation(ctx) };
|
|
156
|
+
}
|
|
157
|
+
if (atoms.length === 1)
|
|
158
|
+
return this.bcAtomToCondition(atoms[0]);
|
|
159
|
+
const ands = ctx.AND();
|
|
160
|
+
const ors = ctx.OR();
|
|
161
|
+
if (ands.length > 0 && ors.length > 0) {
|
|
162
|
+
this.reportError("mixed 'and'/'or' in a `when` guard requires parentheses, e.g. `(A or B) and C`", ctx);
|
|
163
|
+
}
|
|
164
|
+
const operands = atoms.map((a) => this.bcAtomToCondition(a));
|
|
165
|
+
const location = getLocation(ctx);
|
|
166
|
+
return ors.length > 0 && ands.length === 0
|
|
167
|
+
? { type: "BranchConditionOr", operands, location }
|
|
168
|
+
: { type: "BranchConditionAnd", operands, location };
|
|
169
|
+
}
|
|
170
|
+
bcAtomToCondition(ctx) {
|
|
171
|
+
if (ctx instanceof CRLParser_1.BcRefContext) {
|
|
172
|
+
const refCtx = ctx.conceptReference();
|
|
173
|
+
return {
|
|
174
|
+
type: "BranchConditionRef",
|
|
175
|
+
ref: refFromRefContext(refCtx),
|
|
176
|
+
location: getLocation(refCtx),
|
|
177
|
+
};
|
|
178
|
+
}
|
|
179
|
+
if (ctx instanceof CRLParser_1.BcGroupContext) {
|
|
180
|
+
return this.branchConditionFrom(ctx.branchCondition());
|
|
181
|
+
}
|
|
182
|
+
if (ctx instanceof CRLParser_1.BcNotContext) {
|
|
183
|
+
const inner = ctx.bcAtom();
|
|
184
|
+
if (!inner) {
|
|
185
|
+
this.reportError("`not` must be followed by a condition", ctx);
|
|
186
|
+
return {
|
|
187
|
+
type: "BranchConditionNot",
|
|
188
|
+
operand: { type: "BranchConditionRef", ref: "", location: getLocation(ctx) },
|
|
189
|
+
location: getLocation(ctx),
|
|
190
|
+
};
|
|
191
|
+
}
|
|
192
|
+
return {
|
|
193
|
+
type: "BranchConditionNot",
|
|
194
|
+
operand: this.bcAtomToCondition(inner),
|
|
195
|
+
location: getLocation(ctx),
|
|
196
|
+
};
|
|
197
|
+
}
|
|
198
|
+
this.reportError("Unknown bcAtom alternative", ctx);
|
|
199
|
+
return { type: "BranchConditionRef", ref: "", location: getLocation(ctx) };
|
|
200
|
+
}
|
|
142
201
|
visitWhenWithBody(ctx) {
|
|
143
|
-
const
|
|
202
|
+
const condition = this.branchConditionFrom(ctx.branchCondition());
|
|
144
203
|
const body = this.visit(ctx.blockBody());
|
|
145
|
-
return { type: "WhenBlock",
|
|
204
|
+
return { type: "WhenBlock", condition, body, location: getLocation(ctx) };
|
|
146
205
|
}
|
|
147
206
|
visitWhenSingleAction(ctx) {
|
|
148
|
-
const
|
|
207
|
+
const condition = this.branchConditionFrom(ctx.branchCondition());
|
|
149
208
|
const action = this.visit(ctx.actionStatement());
|
|
150
|
-
return { type: "WhenBlock",
|
|
209
|
+
return { type: "WhenBlock", condition, body: action, location: getLocation(ctx) };
|
|
151
210
|
}
|
|
152
211
|
visitOtherwiseWithBody(ctx) {
|
|
153
212
|
const body = this.visit(ctx.blockBody());
|
|
@@ -363,18 +422,20 @@ class CRLAstBuilder extends AbstractParseTreeVisitor_1.AbstractParseTreeVisitor
|
|
|
363
422
|
}
|
|
364
423
|
return { conceptType, valueTypes };
|
|
365
424
|
}
|
|
366
|
-
|
|
367
|
-
const metaLines = bodyCtx.metaLine?.() ?? [];
|
|
425
|
+
metaFrom(metaLines) {
|
|
368
426
|
const metas = [];
|
|
369
427
|
for (const metaCtx of metaLines) {
|
|
370
|
-
|
|
428
|
+
if (!metaCtx)
|
|
429
|
+
continue;
|
|
430
|
+
const backtickCtx = metaCtx.backtickString?.();
|
|
431
|
+
const location = getLocation(metaCtx);
|
|
371
432
|
if (backtickCtx?.text !== undefined) {
|
|
372
|
-
metas.push(backtickCtx.text.slice(1, -1));
|
|
433
|
+
metas.push({ text: backtickCtx.text.slice(1, -1), location });
|
|
373
434
|
}
|
|
374
435
|
else if (backtickCtx?.BACKTICK_STRING) {
|
|
375
436
|
const token = backtickCtx.BACKTICK_STRING();
|
|
376
437
|
if (token?.text !== undefined) {
|
|
377
|
-
metas.push(token.text.slice(1, -1));
|
|
438
|
+
metas.push({ text: token.text.slice(1, -1), location });
|
|
378
439
|
}
|
|
379
440
|
}
|
|
380
441
|
}
|
|
@@ -534,7 +595,7 @@ class CRLAstBuilder extends AbstractParseTreeVisitor_1.AbstractParseTreeVisitor
|
|
|
534
595
|
}
|
|
535
596
|
const types = this.parseConceptTypes(bodyCtx, ctx);
|
|
536
597
|
const { conceptType, valueTypes } = types;
|
|
537
|
-
const meta = this.
|
|
598
|
+
const meta = this.metaFrom(bodyCtx.metaLine());
|
|
538
599
|
const evidence = this.parseEvidence(bodyCtx);
|
|
539
600
|
const code = this.parseCode(bodyCtx);
|
|
540
601
|
const definition = this.parseConceptDefinition(bodyCtx, ctx);
|
package/dist/ast/builder.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"builder.js","sourceRoot":"","sources":["../../src/ast/builder.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"builder.js","sourceRoot":"","sources":["../../src/ast/builder.ts"],"names":[],"mappings":"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"}
|