@actuarial-ts/core 0.5.0 → 0.6.1
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 +65 -226
- package/dist/capping.d.ts.map +1 -1
- package/dist/capping.js +39 -6
- package/dist/capping.js.map +1 -1
- package/dist/casualtyDiagnostics.d.ts +19 -49
- package/dist/casualtyDiagnostics.d.ts.map +1 -1
- package/dist/casualtyDiagnostics.js +84 -116
- package/dist/casualtyDiagnostics.js.map +1 -1
- package/dist/diagnosticAggregation.d.ts +32 -0
- package/dist/diagnosticAggregation.d.ts.map +1 -0
- package/dist/diagnosticAggregation.js +73 -0
- package/dist/diagnosticAggregation.js.map +1 -0
- package/dist/diagnosticDefinitions.d.ts +289 -0
- package/dist/diagnosticDefinitions.d.ts.map +1 -0
- package/dist/diagnosticDefinitions.js +1688 -0
- package/dist/diagnosticDefinitions.js.map +1 -0
- package/dist/diagnosticDerivations.d.ts +35 -0
- package/dist/diagnosticDerivations.d.ts.map +1 -0
- package/dist/diagnosticDerivations.js +224 -0
- package/dist/diagnosticDerivations.js.map +1 -0
- package/dist/diagnosticExposure.d.ts +51 -0
- package/dist/diagnosticExposure.d.ts.map +1 -0
- package/dist/diagnosticExposure.js +273 -0
- package/dist/diagnosticExposure.js.map +1 -0
- package/dist/diagnosticExpressions.d.ts +56 -0
- package/dist/diagnosticExpressions.d.ts.map +1 -0
- package/dist/diagnosticExpressions.js +124 -0
- package/dist/diagnosticExpressions.js.map +1 -0
- package/dist/diagnosticFormulas.d.ts +198 -0
- package/dist/diagnosticFormulas.d.ts.map +1 -0
- package/dist/diagnosticFormulas.js +219 -0
- package/dist/diagnosticFormulas.js.map +1 -0
- package/dist/diagnosticIdentity.d.ts +251 -0
- package/dist/diagnosticIdentity.d.ts.map +1 -0
- package/dist/diagnosticIdentity.js +721 -0
- package/dist/diagnosticIdentity.js.map +1 -0
- package/dist/diagnosticOrdering.d.ts +8 -0
- package/dist/diagnosticOrdering.d.ts.map +1 -0
- package/dist/diagnosticOrdering.js +73 -0
- package/dist/diagnosticOrdering.js.map +1 -0
- package/dist/diagnosticPeriodAxis.d.ts +9 -0
- package/dist/diagnosticPeriodAxis.d.ts.map +1 -0
- package/dist/diagnosticPeriodAxis.js +69 -0
- package/dist/diagnosticPeriodAxis.js.map +1 -0
- package/dist/diagnosticPeriods.d.ts +15 -0
- package/dist/diagnosticPeriods.d.ts.map +1 -0
- package/dist/diagnosticPeriods.js +50 -0
- package/dist/diagnosticPeriods.js.map +1 -0
- package/dist/diagnosticPreparation.d.ts +131 -0
- package/dist/diagnosticPreparation.d.ts.map +1 -0
- package/dist/diagnosticPreparation.js +1539 -0
- package/dist/diagnosticPreparation.js.map +1 -0
- package/dist/diagnosticReview.d.ts +66 -0
- package/dist/diagnosticReview.d.ts.map +1 -0
- package/dist/diagnosticReview.js +490 -0
- package/dist/diagnosticReview.js.map +1 -0
- package/dist/diagnosticRules.d.ts +32 -0
- package/dist/diagnosticRules.d.ts.map +1 -0
- package/dist/diagnosticRules.js +32 -0
- package/dist/diagnosticRules.js.map +1 -0
- package/dist/diagnosticRunner.d.ts +86 -0
- package/dist/diagnosticRunner.d.ts.map +1 -0
- package/dist/diagnosticRunner.js +703 -0
- package/dist/diagnosticRunner.js.map +1 -0
- package/dist/diagnosticRuntime.d.ts +26 -0
- package/dist/diagnosticRuntime.d.ts.map +1 -0
- package/dist/diagnosticRuntime.js +243 -0
- package/dist/diagnosticRuntime.js.map +1 -0
- package/dist/diagnosticSourceOrdering.d.ts +6 -0
- package/dist/diagnosticSourceOrdering.d.ts.map +1 -0
- package/dist/diagnosticSourceOrdering.js +38 -0
- package/dist/diagnosticSourceOrdering.js.map +1 -0
- package/dist/index.d.ts +28 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +16 -1
- package/dist/index.js.map +1 -1
- package/dist/mack.d.ts +4 -0
- package/dist/mack.d.ts.map +1 -1
- package/dist/mack.js +32 -4
- package/dist/mack.js.map +1 -1
- package/dist/triangle.d.ts.map +1 -1
- package/dist/triangle.js +59 -9
- package/dist/triangle.js.map +1 -1
- package/dist/types.d.ts +21 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +128 -0
- package/dist/types.js.map +1 -1
- package/dist/version.d.ts +3 -0
- package/dist/version.d.ts.map +1 -0
- package/dist/version.js +3 -0
- package/dist/version.js.map +1 -0
- package/package.json +4 -3
- package/src/capping.ts +109 -18
- package/src/casualtyDiagnostics.ts +79 -189
- package/src/diagnosticAggregation.ts +128 -0
- package/src/diagnosticDefinitions.ts +3624 -0
- package/src/diagnosticDerivations.ts +321 -0
- package/src/diagnosticExposure.ts +482 -0
- package/src/diagnosticExpressions.ts +255 -0
- package/src/diagnosticFormulas.ts +350 -0
- package/src/diagnosticIdentity.ts +1267 -0
- package/src/diagnosticOrdering.ts +106 -0
- package/src/diagnosticPeriodAxis.ts +92 -0
- package/src/diagnosticPeriods.ts +102 -0
- package/src/diagnosticPreparation.ts +2475 -0
- package/src/diagnosticReview.ts +897 -0
- package/src/diagnosticRules.ts +69 -0
- package/src/diagnosticRunner.ts +1114 -0
- package/src/diagnosticRuntime.ts +264 -0
- package/src/diagnosticSourceOrdering.ts +50 -0
- package/src/index.ts +184 -1
- package/src/mack.ts +72 -9
- package/src/triangle.ts +103 -13
- package/src/types.ts +196 -0
- package/src/version.ts +2 -0
- package/dist/metricDiagnostics.d.ts +0 -212
- package/dist/metricDiagnostics.d.ts.map +0 -1
- package/dist/metricDiagnostics.js +0 -627
- package/dist/metricDiagnostics.js.map +0 -1
- package/src/metricDiagnostics.ts +0 -876
|
@@ -0,0 +1,198 @@
|
|
|
1
|
+
import type { DiagnosticDeepReadonly, DiagnosticMeasureKind, DiagnosticMeasureStats, DiagnosticMetricPresentation } from "./diagnosticDefinitions.js";
|
|
2
|
+
import type { DiagnosticMeasureExpression, DiagnosticRoleExpression } from "./diagnosticExpressions.js";
|
|
3
|
+
import type { DiagnosticExpressionOverflow, DiagnosticRuleNotEvaluatedReason } from "./diagnosticRules.js";
|
|
4
|
+
export declare const CASUALTY_FORMULA_TEMPLATES: readonly [{
|
|
5
|
+
readonly id: "frequency";
|
|
6
|
+
readonly version: "1.0.0";
|
|
7
|
+
readonly roles: {
|
|
8
|
+
readonly claims: {
|
|
9
|
+
readonly kind: "count";
|
|
10
|
+
};
|
|
11
|
+
readonly exposure: {
|
|
12
|
+
readonly kind: "exposure";
|
|
13
|
+
};
|
|
14
|
+
};
|
|
15
|
+
readonly numerator: {
|
|
16
|
+
readonly op: "role";
|
|
17
|
+
readonly role: "claims";
|
|
18
|
+
};
|
|
19
|
+
readonly denominator: {
|
|
20
|
+
readonly op: "role";
|
|
21
|
+
readonly role: "exposure";
|
|
22
|
+
};
|
|
23
|
+
readonly denominatorPolicy: "positive-or-null";
|
|
24
|
+
}, {
|
|
25
|
+
readonly id: "share";
|
|
26
|
+
readonly version: "1.0.0";
|
|
27
|
+
readonly roles: {
|
|
28
|
+
readonly part: {
|
|
29
|
+
readonly kind: "count";
|
|
30
|
+
readonly compatibilityGroup: "count-population";
|
|
31
|
+
};
|
|
32
|
+
readonly whole: {
|
|
33
|
+
readonly kind: "count";
|
|
34
|
+
readonly compatibilityGroup: "count-population";
|
|
35
|
+
};
|
|
36
|
+
};
|
|
37
|
+
readonly numerator: {
|
|
38
|
+
readonly op: "role";
|
|
39
|
+
readonly role: "part";
|
|
40
|
+
};
|
|
41
|
+
readonly denominator: {
|
|
42
|
+
readonly op: "role";
|
|
43
|
+
readonly role: "whole";
|
|
44
|
+
};
|
|
45
|
+
readonly denominatorPolicy: "positive-or-null";
|
|
46
|
+
}, {
|
|
47
|
+
readonly id: "paid-to-incurred";
|
|
48
|
+
readonly version: "1.0.0";
|
|
49
|
+
readonly roles: {
|
|
50
|
+
readonly paid: {
|
|
51
|
+
readonly kind: "amount";
|
|
52
|
+
readonly compatibilityGroup: "amount-basis";
|
|
53
|
+
readonly developmentSemantics: "cumulative";
|
|
54
|
+
};
|
|
55
|
+
readonly incurred: {
|
|
56
|
+
readonly kind: "amount";
|
|
57
|
+
readonly compatibilityGroup: "amount-basis";
|
|
58
|
+
readonly developmentSemantics: "cumulative";
|
|
59
|
+
};
|
|
60
|
+
};
|
|
61
|
+
readonly numerator: {
|
|
62
|
+
readonly op: "role";
|
|
63
|
+
readonly role: "paid";
|
|
64
|
+
};
|
|
65
|
+
readonly denominator: {
|
|
66
|
+
readonly op: "role";
|
|
67
|
+
readonly role: "incurred";
|
|
68
|
+
};
|
|
69
|
+
readonly denominatorPolicy: "positive-or-null";
|
|
70
|
+
}, {
|
|
71
|
+
readonly id: "amount-per-exposure";
|
|
72
|
+
readonly version: "1.0.0";
|
|
73
|
+
readonly roles: {
|
|
74
|
+
readonly amount: {
|
|
75
|
+
readonly kind: "amount";
|
|
76
|
+
};
|
|
77
|
+
readonly exposure: {
|
|
78
|
+
readonly kind: "exposure";
|
|
79
|
+
};
|
|
80
|
+
};
|
|
81
|
+
readonly numerator: {
|
|
82
|
+
readonly op: "role";
|
|
83
|
+
readonly role: "amount";
|
|
84
|
+
};
|
|
85
|
+
readonly denominator: {
|
|
86
|
+
readonly op: "role";
|
|
87
|
+
readonly role: "exposure";
|
|
88
|
+
};
|
|
89
|
+
readonly denominatorPolicy: "positive-or-null";
|
|
90
|
+
}, {
|
|
91
|
+
readonly id: "amount-per-claim";
|
|
92
|
+
readonly version: "1.0.0";
|
|
93
|
+
readonly roles: {
|
|
94
|
+
readonly amount: {
|
|
95
|
+
readonly kind: "amount";
|
|
96
|
+
};
|
|
97
|
+
readonly claims: {
|
|
98
|
+
readonly kind: "count";
|
|
99
|
+
};
|
|
100
|
+
};
|
|
101
|
+
readonly numerator: {
|
|
102
|
+
readonly op: "role";
|
|
103
|
+
readonly role: "amount";
|
|
104
|
+
};
|
|
105
|
+
readonly denominator: {
|
|
106
|
+
readonly op: "role";
|
|
107
|
+
readonly role: "claims";
|
|
108
|
+
};
|
|
109
|
+
readonly denominatorPolicy: "positive-or-null";
|
|
110
|
+
}, {
|
|
111
|
+
readonly id: "case-per-open";
|
|
112
|
+
readonly version: "1.0.0";
|
|
113
|
+
readonly roles: {
|
|
114
|
+
readonly incurred: {
|
|
115
|
+
readonly kind: "amount";
|
|
116
|
+
readonly compatibilityGroup: "amount-basis";
|
|
117
|
+
readonly developmentSemantics: "cumulative";
|
|
118
|
+
};
|
|
119
|
+
readonly paid: {
|
|
120
|
+
readonly kind: "amount";
|
|
121
|
+
readonly compatibilityGroup: "amount-basis";
|
|
122
|
+
readonly developmentSemantics: "cumulative";
|
|
123
|
+
};
|
|
124
|
+
readonly open: {
|
|
125
|
+
readonly kind: "count";
|
|
126
|
+
readonly developmentSemantics: "point-in-time";
|
|
127
|
+
};
|
|
128
|
+
};
|
|
129
|
+
readonly numerator: {
|
|
130
|
+
readonly op: "subtract";
|
|
131
|
+
readonly left: {
|
|
132
|
+
readonly op: "role";
|
|
133
|
+
readonly role: "incurred";
|
|
134
|
+
};
|
|
135
|
+
readonly right: {
|
|
136
|
+
readonly op: "role";
|
|
137
|
+
readonly role: "paid";
|
|
138
|
+
};
|
|
139
|
+
};
|
|
140
|
+
readonly denominator: {
|
|
141
|
+
readonly op: "role";
|
|
142
|
+
readonly role: "open";
|
|
143
|
+
};
|
|
144
|
+
readonly denominatorPolicy: "positive-or-null";
|
|
145
|
+
}];
|
|
146
|
+
export interface DiagnosticQuantitySemantics {
|
|
147
|
+
readonly kind: DiagnosticMeasureKind;
|
|
148
|
+
readonly unit: string;
|
|
149
|
+
readonly basisId?: string;
|
|
150
|
+
readonly countPopulationId?: string;
|
|
151
|
+
readonly exposureBasisId?: string;
|
|
152
|
+
}
|
|
153
|
+
export interface DiagnosticQuantity extends DiagnosticQuantitySemantics {
|
|
154
|
+
readonly value: number | null;
|
|
155
|
+
}
|
|
156
|
+
export interface DiagnosticMetricFinding {
|
|
157
|
+
readonly code: string;
|
|
158
|
+
readonly message: string;
|
|
159
|
+
readonly severity: "info" | "warning" | "fail";
|
|
160
|
+
readonly category: "structural" | "aggregation" | "calculation" | "rule" | "presentation";
|
|
161
|
+
readonly ruleId?: string;
|
|
162
|
+
readonly measureId?: string;
|
|
163
|
+
readonly instanceId?: string;
|
|
164
|
+
readonly expressionPath?: string;
|
|
165
|
+
readonly offendingKey?: string;
|
|
166
|
+
readonly sourceGroup?: string;
|
|
167
|
+
readonly group?: string;
|
|
168
|
+
readonly origin?: string;
|
|
169
|
+
readonly valuation?: string;
|
|
170
|
+
readonly developmentAge?: number;
|
|
171
|
+
readonly ageUnit?: string;
|
|
172
|
+
readonly recordId?: string;
|
|
173
|
+
readonly claimId?: string;
|
|
174
|
+
readonly exposureKey?: string;
|
|
175
|
+
readonly sources: readonly import("./diagnosticDefinitions.js").DiagnosticSourceLocation[];
|
|
176
|
+
}
|
|
177
|
+
export interface FinalizedDiagnosticMeasure {
|
|
178
|
+
readonly quantity: DiagnosticQuantity;
|
|
179
|
+
readonly stats: DiagnosticMeasureStats;
|
|
180
|
+
readonly readiness: readonly DiagnosticRuleNotEvaluatedReason[];
|
|
181
|
+
readonly expressionOverflows?: readonly DiagnosticExpressionOverflow[];
|
|
182
|
+
readonly sources?: readonly import("./diagnosticDefinitions.js").DiagnosticSourceLocation[];
|
|
183
|
+
}
|
|
184
|
+
interface ExpressionResult {
|
|
185
|
+
readonly value: number | null;
|
|
186
|
+
readonly reasons: readonly DiagnosticRuleNotEvaluatedReason[];
|
|
187
|
+
readonly overflows: readonly DiagnosticExpressionOverflow[];
|
|
188
|
+
readonly sources: readonly import("./diagnosticDefinitions.js").DiagnosticSourceLocation[];
|
|
189
|
+
}
|
|
190
|
+
export declare function evaluateDiagnosticMeasureExpression(expression: DiagnosticDeepReadonly<DiagnosticMeasureExpression>, measures: Readonly<Record<string, FinalizedDiagnosticMeasure>>, path: string): ExpressionResult;
|
|
191
|
+
export declare function evaluateDiagnosticRoleExpression(expression: DiagnosticDeepReadonly<DiagnosticRoleExpression>, bindings: Readonly<Record<string, ExpressionResult>>, path: string): ExpressionResult;
|
|
192
|
+
export declare function diagnosticRawRatio(numerator: number | null, denominator: number | null): number | null;
|
|
193
|
+
export declare function applyDiagnosticPresentation(rawValue: number | null, presentation: DiagnosticDeepReadonly<DiagnosticMetricPresentation>): {
|
|
194
|
+
readonly value: number | null;
|
|
195
|
+
readonly finding: DiagnosticMetricFinding | null;
|
|
196
|
+
};
|
|
197
|
+
export {};
|
|
198
|
+
//# sourceMappingURL=diagnosticFormulas.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"diagnosticFormulas.d.ts","sourceRoot":"","sources":["../src/diagnosticFormulas.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,sBAAsB,EAEtB,qBAAqB,EACrB,sBAAsB,EACtB,4BAA4B,EAC7B,MAAM,4BAA4B,CAAC;AACpC,OAAO,KAAK,EACV,2BAA2B,EAC3B,wBAAwB,EACzB,MAAM,4BAA4B,CAAC;AACpC,OAAO,KAAK,EACV,4BAA4B,EAC5B,gCAAgC,EACjC,MAAM,sBAAsB,CAAC;AAI9B,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA+EmB,CAAC;AAE3D,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,CAAC,IAAI,EAAE,qBAAqB,CAAC;IACrC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IACpC,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC;CACnC;AAED,MAAM,WAAW,kBAAmB,SAAQ,2BAA2B;IACrE,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CAC/B;AAED,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAAC;IAC/C,QAAQ,CAAC,QAAQ,EACb,YAAY,GACZ,aAAa,GACb,aAAa,GACb,MAAM,GACN,cAAc,CAAC;IACnB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,OAAO,EAAE,SAAS,OAAO,4BAA4B,EAAE,wBAAwB,EAAE,CAAC;CAC5F;AAED,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,QAAQ,EAAE,kBAAkB,CAAC;IACtC,QAAQ,CAAC,KAAK,EAAE,sBAAsB,CAAC;IACvC,QAAQ,CAAC,SAAS,EAAE,SAAS,gCAAgC,EAAE,CAAC;IAChE,QAAQ,CAAC,mBAAmB,CAAC,EAAE,SAAS,4BAA4B,EAAE,CAAC;IACvE,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,OAAO,4BAA4B,EAAE,wBAAwB,EAAE,CAAC;CAC7F;AAED,UAAU,gBAAgB;IACxB,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,QAAQ,CAAC,OAAO,EAAE,SAAS,gCAAgC,EAAE,CAAC;IAC9D,QAAQ,CAAC,SAAS,EAAE,SAAS,4BAA4B,EAAE,CAAC;IAC5D,QAAQ,CAAC,OAAO,EAAE,SAAS,OAAO,4BAA4B,EAAE,wBAAwB,EAAE,CAAC;CAC5F;AAsCD,wBAAgB,mCAAmC,CACjD,UAAU,EAAE,sBAAsB,CAAC,2BAA2B,CAAC,EAC/D,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,0BAA0B,CAAC,CAAC,EAC9D,IAAI,EAAE,MAAM,GACX,gBAAgB,CA4DlB;AAED,wBAAgB,gCAAgC,CAC9C,UAAU,EAAE,sBAAsB,CAAC,wBAAwB,CAAC,EAC5D,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC,EACpD,IAAI,EAAE,MAAM,GACX,gBAAgB,CAkDlB;AAED,wBAAgB,kBAAkB,CAChC,SAAS,EAAE,MAAM,GAAG,IAAI,EACxB,WAAW,EAAE,MAAM,GAAG,IAAI,GACzB,MAAM,GAAG,IAAI,CAWf;AAED,wBAAgB,2BAA2B,CACzC,QAAQ,EAAE,MAAM,GAAG,IAAI,EACvB,YAAY,EAAE,sBAAsB,CAAC,4BAA4B,CAAC,GACjE;IACD,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,QAAQ,CAAC,OAAO,EAAE,uBAAuB,GAAG,IAAI,CAAC;CAClD,CAeA"}
|
|
@@ -0,0 +1,219 @@
|
|
|
1
|
+
import { safeRatio } from "./util.js";
|
|
2
|
+
import { normalizeDiagnosticSourceLocations } from "./diagnosticSourceOrdering.js";
|
|
3
|
+
import { hasDiagnosticOwn } from "./diagnosticRuntime.js";
|
|
4
|
+
export const CASUALTY_FORMULA_TEMPLATES = Object.freeze([
|
|
5
|
+
{
|
|
6
|
+
id: "frequency",
|
|
7
|
+
version: "1.0.0",
|
|
8
|
+
roles: { claims: { kind: "count" }, exposure: { kind: "exposure" } },
|
|
9
|
+
numerator: { op: "role", role: "claims" },
|
|
10
|
+
denominator: { op: "role", role: "exposure" },
|
|
11
|
+
denominatorPolicy: "positive-or-null",
|
|
12
|
+
},
|
|
13
|
+
{
|
|
14
|
+
id: "share",
|
|
15
|
+
version: "1.0.0",
|
|
16
|
+
roles: {
|
|
17
|
+
part: { kind: "count", compatibilityGroup: "count-population" },
|
|
18
|
+
whole: { kind: "count", compatibilityGroup: "count-population" },
|
|
19
|
+
},
|
|
20
|
+
numerator: { op: "role", role: "part" },
|
|
21
|
+
denominator: { op: "role", role: "whole" },
|
|
22
|
+
denominatorPolicy: "positive-or-null",
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
id: "paid-to-incurred",
|
|
26
|
+
version: "1.0.0",
|
|
27
|
+
roles: {
|
|
28
|
+
paid: {
|
|
29
|
+
kind: "amount",
|
|
30
|
+
compatibilityGroup: "amount-basis",
|
|
31
|
+
developmentSemantics: "cumulative",
|
|
32
|
+
},
|
|
33
|
+
incurred: {
|
|
34
|
+
kind: "amount",
|
|
35
|
+
compatibilityGroup: "amount-basis",
|
|
36
|
+
developmentSemantics: "cumulative",
|
|
37
|
+
},
|
|
38
|
+
},
|
|
39
|
+
numerator: { op: "role", role: "paid" },
|
|
40
|
+
denominator: { op: "role", role: "incurred" },
|
|
41
|
+
denominatorPolicy: "positive-or-null",
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
id: "amount-per-exposure",
|
|
45
|
+
version: "1.0.0",
|
|
46
|
+
roles: { amount: { kind: "amount" }, exposure: { kind: "exposure" } },
|
|
47
|
+
numerator: { op: "role", role: "amount" },
|
|
48
|
+
denominator: { op: "role", role: "exposure" },
|
|
49
|
+
denominatorPolicy: "positive-or-null",
|
|
50
|
+
},
|
|
51
|
+
{
|
|
52
|
+
id: "amount-per-claim",
|
|
53
|
+
version: "1.0.0",
|
|
54
|
+
roles: { amount: { kind: "amount" }, claims: { kind: "count" } },
|
|
55
|
+
numerator: { op: "role", role: "amount" },
|
|
56
|
+
denominator: { op: "role", role: "claims" },
|
|
57
|
+
denominatorPolicy: "positive-or-null",
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
id: "case-per-open",
|
|
61
|
+
version: "1.0.0",
|
|
62
|
+
roles: {
|
|
63
|
+
incurred: {
|
|
64
|
+
kind: "amount",
|
|
65
|
+
compatibilityGroup: "amount-basis",
|
|
66
|
+
developmentSemantics: "cumulative",
|
|
67
|
+
},
|
|
68
|
+
paid: {
|
|
69
|
+
kind: "amount",
|
|
70
|
+
compatibilityGroup: "amount-basis",
|
|
71
|
+
developmentSemantics: "cumulative",
|
|
72
|
+
},
|
|
73
|
+
open: { kind: "count", developmentSemantics: "point-in-time" },
|
|
74
|
+
},
|
|
75
|
+
numerator: {
|
|
76
|
+
op: "subtract",
|
|
77
|
+
left: { op: "role", role: "incurred" },
|
|
78
|
+
right: { op: "role", role: "paid" },
|
|
79
|
+
},
|
|
80
|
+
denominator: { op: "role", role: "open" },
|
|
81
|
+
denominatorPolicy: "positive-or-null",
|
|
82
|
+
},
|
|
83
|
+
]);
|
|
84
|
+
function neumaier(values) {
|
|
85
|
+
let sum = 0;
|
|
86
|
+
let correction = 0;
|
|
87
|
+
for (const value of values) {
|
|
88
|
+
const next = sum + value;
|
|
89
|
+
correction +=
|
|
90
|
+
Math.abs(sum) >= Math.abs(value)
|
|
91
|
+
? sum - next + value
|
|
92
|
+
: value - next + sum;
|
|
93
|
+
sum = next;
|
|
94
|
+
if (!Number.isFinite(sum) || !Number.isFinite(correction))
|
|
95
|
+
return null;
|
|
96
|
+
}
|
|
97
|
+
const result = sum + correction;
|
|
98
|
+
return Number.isFinite(result) ? (Object.is(result, -0) ? 0 : result) : null;
|
|
99
|
+
}
|
|
100
|
+
function uniqueReasons(values) {
|
|
101
|
+
const order = [
|
|
102
|
+
"missing",
|
|
103
|
+
"imputed",
|
|
104
|
+
"non-finite",
|
|
105
|
+
"structural-ambiguity",
|
|
106
|
+
"aggregation-overflow",
|
|
107
|
+
"expression-overflow",
|
|
108
|
+
"tolerance-overflow",
|
|
109
|
+
];
|
|
110
|
+
return order.filter((reason) => values.includes(reason));
|
|
111
|
+
}
|
|
112
|
+
function pointer(path, segment) {
|
|
113
|
+
const escaped = String(segment).replaceAll("~", "~0").replaceAll("/", "~1");
|
|
114
|
+
return `${path}/${escaped}`;
|
|
115
|
+
}
|
|
116
|
+
export function evaluateDiagnosticMeasureExpression(expression, measures, path) {
|
|
117
|
+
if (expression.op === "measure") {
|
|
118
|
+
const value = hasDiagnosticOwn(measures, expression.measureId)
|
|
119
|
+
? measures[expression.measureId]
|
|
120
|
+
: undefined;
|
|
121
|
+
return value
|
|
122
|
+
? {
|
|
123
|
+
value: value.quantity.value,
|
|
124
|
+
reasons: value.readiness,
|
|
125
|
+
overflows: value.expressionOverflows ?? [],
|
|
126
|
+
sources: value.sources ?? [],
|
|
127
|
+
}
|
|
128
|
+
: { value: null, reasons: ["missing"], overflows: [], sources: [] };
|
|
129
|
+
}
|
|
130
|
+
const children = expression.op === "add"
|
|
131
|
+
? expression.terms.map((term, index) => evaluateDiagnosticMeasureExpression(term, measures, pointer(pointer(path, "terms"), index)))
|
|
132
|
+
: [
|
|
133
|
+
evaluateDiagnosticMeasureExpression(expression.left, measures, pointer(path, "left")),
|
|
134
|
+
evaluateDiagnosticMeasureExpression(expression.right, measures, pointer(path, "right")),
|
|
135
|
+
];
|
|
136
|
+
const reasons = uniqueReasons(children.flatMap((child) => child.reasons));
|
|
137
|
+
const overflows = children.flatMap((child) => child.overflows);
|
|
138
|
+
const sources = normalizeDiagnosticSourceLocations(children.flatMap((child) => child.sources));
|
|
139
|
+
if (children.some((child) => child.value === null))
|
|
140
|
+
return { value: null, reasons, overflows, sources };
|
|
141
|
+
const value = expression.op === "add"
|
|
142
|
+
? neumaier(children.map((child) => child.value))
|
|
143
|
+
: children[0].value - children[1].value;
|
|
144
|
+
if (value === null || !Number.isFinite(value)) {
|
|
145
|
+
return {
|
|
146
|
+
value: null,
|
|
147
|
+
reasons: uniqueReasons([...reasons, "expression-overflow"]),
|
|
148
|
+
overflows: [...overflows, { expressionPath: path, sources }],
|
|
149
|
+
sources,
|
|
150
|
+
};
|
|
151
|
+
}
|
|
152
|
+
return {
|
|
153
|
+
value: Object.is(value, -0) ? 0 : value,
|
|
154
|
+
reasons,
|
|
155
|
+
overflows,
|
|
156
|
+
sources,
|
|
157
|
+
};
|
|
158
|
+
}
|
|
159
|
+
export function evaluateDiagnosticRoleExpression(expression, bindings, path) {
|
|
160
|
+
if (expression.op === "role")
|
|
161
|
+
return hasDiagnosticOwn(bindings, expression.role)
|
|
162
|
+
? bindings[expression.role]
|
|
163
|
+
: { value: null, reasons: ["missing"], overflows: [], sources: [] };
|
|
164
|
+
const children = expression.op === "add"
|
|
165
|
+
? expression.terms.map((term, index) => evaluateDiagnosticRoleExpression(term, bindings, pointer(pointer(path, "terms"), index)))
|
|
166
|
+
: [
|
|
167
|
+
evaluateDiagnosticRoleExpression(expression.left, bindings, pointer(path, "left")),
|
|
168
|
+
evaluateDiagnosticRoleExpression(expression.right, bindings, pointer(path, "right")),
|
|
169
|
+
];
|
|
170
|
+
const reasons = uniqueReasons(children.flatMap((child) => child.reasons));
|
|
171
|
+
const overflows = children.flatMap((child) => child.overflows);
|
|
172
|
+
const sources = normalizeDiagnosticSourceLocations(children.flatMap((child) => child.sources));
|
|
173
|
+
if (children.some((child) => child.value === null))
|
|
174
|
+
return { value: null, reasons, overflows, sources };
|
|
175
|
+
const value = expression.op === "add"
|
|
176
|
+
? neumaier(children.map((child) => child.value))
|
|
177
|
+
: children[0].value - children[1].value;
|
|
178
|
+
if (value === null || !Number.isFinite(value))
|
|
179
|
+
return {
|
|
180
|
+
value: null,
|
|
181
|
+
reasons: uniqueReasons([...reasons, "expression-overflow"]),
|
|
182
|
+
overflows: [...overflows, { expressionPath: path, sources }],
|
|
183
|
+
sources,
|
|
184
|
+
};
|
|
185
|
+
return {
|
|
186
|
+
value: Object.is(value, -0) ? 0 : value,
|
|
187
|
+
reasons,
|
|
188
|
+
overflows,
|
|
189
|
+
sources,
|
|
190
|
+
};
|
|
191
|
+
}
|
|
192
|
+
export function diagnosticRawRatio(numerator, denominator) {
|
|
193
|
+
if (numerator === null ||
|
|
194
|
+
denominator === null ||
|
|
195
|
+
!Number.isFinite(numerator) ||
|
|
196
|
+
!Number.isFinite(denominator) ||
|
|
197
|
+
denominator <= 0)
|
|
198
|
+
return null;
|
|
199
|
+
const ratio = safeRatio(numerator, denominator);
|
|
200
|
+
return ratio !== null && Number.isFinite(ratio) ? ratio : null;
|
|
201
|
+
}
|
|
202
|
+
export function applyDiagnosticPresentation(rawValue, presentation) {
|
|
203
|
+
if (rawValue === null)
|
|
204
|
+
return { value: null, finding: null };
|
|
205
|
+
const value = rawValue * presentation.scale;
|
|
206
|
+
return Number.isFinite(value)
|
|
207
|
+
? { value: Object.is(value, -0) ? 0 : value, finding: null }
|
|
208
|
+
: {
|
|
209
|
+
value: null,
|
|
210
|
+
finding: {
|
|
211
|
+
code: "diagnostic-presentation-overflow",
|
|
212
|
+
message: "Diagnostic presentation scaling overflowed",
|
|
213
|
+
severity: "fail",
|
|
214
|
+
category: "presentation",
|
|
215
|
+
sources: [],
|
|
216
|
+
},
|
|
217
|
+
};
|
|
218
|
+
}
|
|
219
|
+
//# sourceMappingURL=diagnosticFormulas.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"diagnosticFormulas.js","sourceRoot":"","sources":["../src/diagnosticFormulas.ts"],"names":[],"mappings":"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"}
|