heor-agent-mcp 0.2.0 → 0.7.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.
Files changed (93) hide show
  1. package/README.md +44 -0
  2. package/dist/formatters/comparisonMarkdown.d.ts +3 -0
  3. package/dist/formatters/comparisonMarkdown.d.ts.map +1 -0
  4. package/dist/formatters/comparisonMarkdown.js +68 -0
  5. package/dist/formatters/comparisonMarkdown.js.map +1 -0
  6. package/dist/models/evppi.d.ts +33 -0
  7. package/dist/models/evppi.d.ts.map +1 -0
  8. package/dist/models/evppi.js +75 -0
  9. package/dist/models/evppi.js.map +1 -0
  10. package/dist/models/modelUtils.d.ts +7 -2
  11. package/dist/models/modelUtils.d.ts.map +1 -1
  12. package/dist/models/modelUtils.js +49 -31
  13. package/dist/models/modelUtils.js.map +1 -1
  14. package/dist/models/psa.d.ts +4 -0
  15. package/dist/models/psa.d.ts.map +1 -1
  16. package/dist/models/psa.js +29 -2
  17. package/dist/models/psa.js.map +1 -1
  18. package/dist/models/survivalFitting.d.ts +47 -0
  19. package/dist/models/survivalFitting.d.ts.map +1 -0
  20. package/dist/models/survivalFitting.js +342 -0
  21. package/dist/models/survivalFitting.js.map +1 -0
  22. package/dist/network/bucher.d.ts +29 -0
  23. package/dist/network/bucher.d.ts.map +1 -0
  24. package/dist/network/bucher.js +125 -0
  25. package/dist/network/bucher.js.map +1 -0
  26. package/dist/network/frequentistNma.d.ts +12 -0
  27. package/dist/network/frequentistNma.d.ts.map +1 -0
  28. package/dist/network/frequentistNma.js +230 -0
  29. package/dist/network/frequentistNma.js.map +1 -0
  30. package/dist/network/index.d.ts +4 -1
  31. package/dist/network/index.d.ts.map +1 -1
  32. package/dist/network/index.js +3 -0
  33. package/dist/network/index.js.map +1 -1
  34. package/dist/network/pathfinder.d.ts +14 -0
  35. package/dist/network/pathfinder.d.ts.map +1 -0
  36. package/dist/network/pathfinder.js +93 -0
  37. package/dist/network/pathfinder.js.map +1 -0
  38. package/dist/network/types.d.ts +45 -0
  39. package/dist/network/types.d.ts.map +1 -1
  40. package/dist/providers/direct/index.d.ts.map +1 -1
  41. package/dist/providers/direct/index.js +82 -27
  42. package/dist/providers/direct/index.js.map +1 -1
  43. package/dist/providers/direct/iqwig.js +1 -1
  44. package/dist/providers/direct/iqwig.js.map +1 -1
  45. package/dist/providers/direct/niceTa.d.ts +4 -0
  46. package/dist/providers/direct/niceTa.d.ts.map +1 -1
  47. package/dist/providers/direct/niceTa.js +76 -25
  48. package/dist/providers/direct/niceTa.js.map +1 -1
  49. package/dist/providers/direct/tlv.js +1 -1
  50. package/dist/providers/direct/tlv.js.map +1 -1
  51. package/dist/providers/types.d.ts +6 -0
  52. package/dist/providers/types.d.ts.map +1 -1
  53. package/dist/server.js +89 -9
  54. package/dist/server.js.map +1 -1
  55. package/dist/tools/budgetImpactModel.d.ts +116 -0
  56. package/dist/tools/budgetImpactModel.d.ts.map +1 -0
  57. package/dist/tools/budgetImpactModel.js +257 -0
  58. package/dist/tools/budgetImpactModel.js.map +1 -0
  59. package/dist/tools/costEffectivenessModel.d.ts +18 -0
  60. package/dist/tools/costEffectivenessModel.d.ts.map +1 -1
  61. package/dist/tools/costEffectivenessModel.js +155 -27
  62. package/dist/tools/costEffectivenessModel.js.map +1 -1
  63. package/dist/tools/htaDossierPrep.d.ts.map +1 -1
  64. package/dist/tools/htaDossierPrep.js +119 -0
  65. package/dist/tools/htaDossierPrep.js.map +1 -1
  66. package/dist/tools/indirectComparison.d.ts +73 -0
  67. package/dist/tools/indirectComparison.d.ts.map +1 -0
  68. package/dist/tools/indirectComparison.js +191 -0
  69. package/dist/tools/indirectComparison.js.map +1 -0
  70. package/dist/tools/knowledgeWrite.d.ts.map +1 -1
  71. package/dist/tools/knowledgeWrite.js +17 -3
  72. package/dist/tools/knowledgeWrite.js.map +1 -1
  73. package/dist/tools/literatureSearch.d.ts +4 -0
  74. package/dist/tools/literatureSearch.d.ts.map +1 -1
  75. package/dist/tools/literatureSearch.js +43 -1
  76. package/dist/tools/literatureSearch.js.map +1 -1
  77. package/dist/tools/populationAdjustedComparison.d.ts +145 -0
  78. package/dist/tools/populationAdjustedComparison.d.ts.map +1 -0
  79. package/dist/tools/populationAdjustedComparison.js +431 -0
  80. package/dist/tools/populationAdjustedComparison.js.map +1 -0
  81. package/dist/tools/screenAbstracts.d.ts +99 -0
  82. package/dist/tools/screenAbstracts.d.ts.map +1 -0
  83. package/dist/tools/screenAbstracts.js +442 -0
  84. package/dist/tools/screenAbstracts.js.map +1 -0
  85. package/dist/tools/survivalFitting.d.ts +56 -0
  86. package/dist/tools/survivalFitting.d.ts.map +1 -0
  87. package/dist/tools/survivalFitting.js +147 -0
  88. package/dist/tools/survivalFitting.js.map +1 -0
  89. package/dist/tools/validateLinks.d.ts +24 -0
  90. package/dist/tools/validateLinks.d.ts.map +1 -0
  91. package/dist/tools/validateLinks.js +171 -0
  92. package/dist/tools/validateLinks.js.map +1 -0
  93. package/package.json +4 -2
@@ -0,0 +1,342 @@
1
+ /**
2
+ * Survival Curve Fitting — fit parametric distributions to Kaplan-Meier data.
3
+ *
4
+ * Supports: Exponential, Weibull, Log-logistic, Log-normal, Gompertz.
5
+ * Uses maximum likelihood estimation via Newton-Raphson optimization.
6
+ * Model selection via AIC/BIC.
7
+ *
8
+ * References:
9
+ * - Latimer NR. NICE DSU TSD 14: Survival analysis (2013)
10
+ * - Collett D. Modelling Survival Data in Medical Research (2015)
11
+ */
12
+ // --- Distribution functions ---
13
+ function expSurvival(t, lambda) {
14
+ return Math.exp(-lambda * t);
15
+ }
16
+ function expHazard(_t, lambda) {
17
+ return lambda;
18
+ }
19
+ function weibullSurvival(t, shape, scale) {
20
+ if (t <= 0)
21
+ return 1;
22
+ return Math.exp(-Math.pow(t / scale, shape));
23
+ }
24
+ function weibullHazard(t, shape, scale) {
25
+ if (t <= 0)
26
+ return 0;
27
+ return (shape / scale) * Math.pow(t / scale, shape - 1);
28
+ }
29
+ function logLogisticSurvival(t, alpha, beta) {
30
+ if (t <= 0)
31
+ return 1;
32
+ return 1 / (1 + Math.pow(t / alpha, beta));
33
+ }
34
+ function logLogisticHazard(t, alpha, beta) {
35
+ if (t <= 0)
36
+ return 0;
37
+ const num = (beta / alpha) * Math.pow(t / alpha, beta - 1);
38
+ const den = 1 + Math.pow(t / alpha, beta);
39
+ return num / den;
40
+ }
41
+ function logNormalSurvival(t, mu, sigma) {
42
+ if (t <= 0)
43
+ return 1;
44
+ // S(t) = 1 - Phi((ln(t) - mu) / sigma)
45
+ const z = (Math.log(t) - mu) / sigma;
46
+ return 1 - normalCDF(z);
47
+ }
48
+ function logNormalHazard(t, mu, sigma) {
49
+ if (t <= 0)
50
+ return 0;
51
+ const z = (Math.log(t) - mu) / sigma;
52
+ const phi = normalPDF(z);
53
+ const bigPhi = normalCDF(z);
54
+ return phi / (sigma * t * (1 - bigPhi));
55
+ }
56
+ function gompertzSurvival(t, shape, rate) {
57
+ if (t <= 0)
58
+ return 1;
59
+ if (Math.abs(shape) < 1e-10)
60
+ return Math.exp(-rate * t);
61
+ return Math.exp(-(rate / shape) * (Math.exp(shape * t) - 1));
62
+ }
63
+ function gompertzHazard(t, shape, rate) {
64
+ return rate * Math.exp(shape * t);
65
+ }
66
+ // --- Normal distribution helpers ---
67
+ function normalPDF(z) {
68
+ return Math.exp(-0.5 * z * z) / Math.sqrt(2 * Math.PI);
69
+ }
70
+ function normalCDF(z) {
71
+ // Abramowitz & Stegun approximation (error < 7.5e-8)
72
+ const a1 = 0.254829592;
73
+ const a2 = -0.284496736;
74
+ const a3 = 1.421413741;
75
+ const a4 = -1.453152027;
76
+ const a5 = 1.061405429;
77
+ const p = 0.3275911;
78
+ const sign = z < 0 ? -1 : 1;
79
+ const x = Math.abs(z) / Math.sqrt(2);
80
+ const t = 1 / (1 + p * x);
81
+ const y = 1 - ((((a5 * t + a4) * t + a3) * t + a2) * t + a1) * t * Math.exp(-x * x);
82
+ return 0.5 * (1 + sign * y);
83
+ }
84
+ // --- Log-likelihood computation ---
85
+ /**
86
+ * Compute log-likelihood for interval-censored KM data.
87
+ * Each KM step represents an interval where the survival function
88
+ * drops — we compute the likelihood of the observed survival proportions.
89
+ */
90
+ function logLikelihood(data, survFn) {
91
+ let ll = 0;
92
+ for (let i = 0; i < data.length; i++) {
93
+ const observed = data[i].survival;
94
+ const predicted = Math.max(1e-15, Math.min(1 - 1e-15, survFn(data[i].time)));
95
+ // Events in this interval
96
+ const nAtRisk = data[i].n_at_risk ?? 100;
97
+ const prevSurv = i === 0 ? 1 : data[i - 1].survival;
98
+ const events = Math.round((prevSurv - observed) * nAtRisk);
99
+ const censored = Math.max(0, (i === 0 ? nAtRisk : (data[i].n_at_risk ?? nAtRisk)) - events);
100
+ // Contribution: events contribute log(f(t)), censored contribute log(S(t))
101
+ if (events > 0) {
102
+ const prevPredicted = i === 0 ? 1 : survFn(data[i - 1].time);
103
+ const density = Math.max(1e-15, prevPredicted - predicted);
104
+ ll += events * Math.log(density);
105
+ }
106
+ if (censored > 0) {
107
+ ll += censored * Math.log(predicted);
108
+ }
109
+ }
110
+ return ll;
111
+ }
112
+ // --- Optimization (grid search + Nelder-Mead simplex) ---
113
+ function nelderMead(fn, initial, maxIter = 500) {
114
+ const n = initial.length;
115
+ const alpha = 1;
116
+ const gamma = 2;
117
+ const rho = 0.5;
118
+ const sigma = 0.5;
119
+ // Build initial simplex
120
+ const simplex = [];
121
+ simplex.push({ point: [...initial], value: fn(initial) });
122
+ for (let i = 0; i < n; i++) {
123
+ const point = [...initial];
124
+ point[i] = point[i] * 1.5 + 0.1;
125
+ simplex.push({ point, value: fn(point) });
126
+ }
127
+ for (let iter = 0; iter < maxIter; iter++) {
128
+ simplex.sort((a, b) => a.value - b.value);
129
+ // Centroid (excluding worst)
130
+ const centroid = new Array(n).fill(0);
131
+ for (let i = 0; i < n; i++) {
132
+ for (let j = 0; j < n; j++) {
133
+ centroid[j] += simplex[i].point[j] / n;
134
+ }
135
+ }
136
+ const worst = simplex[n];
137
+ // Reflection
138
+ const reflected = centroid.map((c, j) => c + alpha * (c - worst.point[j]));
139
+ const fReflected = fn(reflected);
140
+ if (fReflected < simplex[n - 1].value && fReflected >= simplex[0].value) {
141
+ simplex[n] = { point: reflected, value: fReflected };
142
+ continue;
143
+ }
144
+ if (fReflected < simplex[0].value) {
145
+ // Expansion
146
+ const expanded = centroid.map((c, j) => c + gamma * (reflected[j] - c));
147
+ const fExpanded = fn(expanded);
148
+ simplex[n] = fExpanded < fReflected
149
+ ? { point: expanded, value: fExpanded }
150
+ : { point: reflected, value: fReflected };
151
+ continue;
152
+ }
153
+ // Contraction
154
+ const contracted = centroid.map((c, j) => c + rho * (worst.point[j] - c));
155
+ const fContracted = fn(contracted);
156
+ if (fContracted < worst.value) {
157
+ simplex[n] = { point: contracted, value: fContracted };
158
+ continue;
159
+ }
160
+ // Shrink
161
+ const best = simplex[0].point;
162
+ for (let i = 1; i <= n; i++) {
163
+ simplex[i].point = simplex[i].point.map((p, j) => best[j] + sigma * (p - best[j]));
164
+ simplex[i].value = fn(simplex[i].point);
165
+ }
166
+ }
167
+ simplex.sort((a, b) => a.value - b.value);
168
+ return simplex[0].point;
169
+ }
170
+ // --- Fitting functions ---
171
+ function fitExponential(data) {
172
+ // MLE for exponential: lambda = events / total_time
173
+ // Use optimization for consistency with interval-censored data
174
+ const medianTime = data.find((d) => d.survival <= 0.5)?.time ?? data[data.length - 1].time;
175
+ const lambdaInit = Math.log(2) / medianTime;
176
+ const opt = nelderMead((p) => -logLikelihood(data, (t) => expSurvival(t, Math.max(1e-6, p[0]))), [lambdaInit]);
177
+ const lambda = Math.max(1e-6, opt[0]);
178
+ const ll = logLikelihood(data, (t) => expSurvival(t, lambda));
179
+ const k = 1;
180
+ const n = data.length;
181
+ return {
182
+ name: "exponential",
183
+ params: { lambda },
184
+ aic: -2 * ll + 2 * k,
185
+ bic: -2 * ll + k * Math.log(n),
186
+ log_likelihood: ll,
187
+ survival_at: (t) => expSurvival(t, lambda),
188
+ hazard_at: (t) => expHazard(t, lambda),
189
+ median_survival: Math.log(2) / lambda,
190
+ mean_survival_restricted: restrictedMean(data, (t) => expSurvival(t, lambda)),
191
+ };
192
+ }
193
+ function fitWeibull(data) {
194
+ const medianTime = data.find((d) => d.survival <= 0.5)?.time ?? data[data.length - 1].time;
195
+ const scaleInit = medianTime / Math.pow(Math.log(2), 1);
196
+ const opt = nelderMead((p) => -logLikelihood(data, (t) => weibullSurvival(t, Math.max(0.1, p[0]), Math.max(0.01, p[1]))), [1.0, scaleInit]);
197
+ const shape = Math.max(0.1, opt[0]);
198
+ const scale = Math.max(0.01, opt[1]);
199
+ const ll = logLikelihood(data, (t) => weibullSurvival(t, shape, scale));
200
+ const k = 2;
201
+ const n = data.length;
202
+ const median = scale * Math.pow(Math.log(2), 1 / shape);
203
+ return {
204
+ name: "weibull",
205
+ params: { shape, scale },
206
+ aic: -2 * ll + 2 * k,
207
+ bic: -2 * ll + k * Math.log(n),
208
+ log_likelihood: ll,
209
+ survival_at: (t) => weibullSurvival(t, shape, scale),
210
+ hazard_at: (t) => weibullHazard(t, shape, scale),
211
+ median_survival: median,
212
+ mean_survival_restricted: restrictedMean(data, (t) => weibullSurvival(t, shape, scale)),
213
+ };
214
+ }
215
+ function fitLogLogistic(data) {
216
+ const medianTime = data.find((d) => d.survival <= 0.5)?.time ?? data[data.length - 1].time;
217
+ const opt = nelderMead((p) => -logLikelihood(data, (t) => logLogisticSurvival(t, Math.max(0.01, p[0]), Math.max(0.1, p[1]))), [medianTime, 1.5]);
218
+ const alpha = Math.max(0.01, opt[0]);
219
+ const beta = Math.max(0.1, opt[1]);
220
+ const ll = logLikelihood(data, (t) => logLogisticSurvival(t, alpha, beta));
221
+ const k = 2;
222
+ const n = data.length;
223
+ return {
224
+ name: "log_logistic",
225
+ params: { alpha, beta },
226
+ aic: -2 * ll + 2 * k,
227
+ bic: -2 * ll + k * Math.log(n),
228
+ log_likelihood: ll,
229
+ survival_at: (t) => logLogisticSurvival(t, alpha, beta),
230
+ hazard_at: (t) => logLogisticHazard(t, alpha, beta),
231
+ median_survival: alpha,
232
+ mean_survival_restricted: restrictedMean(data, (t) => logLogisticSurvival(t, alpha, beta)),
233
+ };
234
+ }
235
+ function fitLogNormal(data) {
236
+ const medianTime = data.find((d) => d.survival <= 0.5)?.time ?? data[data.length - 1].time;
237
+ const muInit = Math.log(Math.max(0.1, medianTime));
238
+ const opt = nelderMead((p) => -logLikelihood(data, (t) => logNormalSurvival(t, p[0], Math.max(0.01, p[1]))), [muInit, 0.8]);
239
+ const mu = opt[0];
240
+ const sigma = Math.max(0.01, opt[1]);
241
+ const ll = logLikelihood(data, (t) => logNormalSurvival(t, mu, sigma));
242
+ const k = 2;
243
+ const n = data.length;
244
+ return {
245
+ name: "log_normal",
246
+ params: { mu, sigma },
247
+ aic: -2 * ll + 2 * k,
248
+ bic: -2 * ll + k * Math.log(n),
249
+ log_likelihood: ll,
250
+ survival_at: (t) => logNormalSurvival(t, mu, sigma),
251
+ hazard_at: (t) => logNormalHazard(t, mu, sigma),
252
+ median_survival: Math.exp(mu),
253
+ mean_survival_restricted: restrictedMean(data, (t) => logNormalSurvival(t, mu, sigma)),
254
+ };
255
+ }
256
+ function fitGompertz(data) {
257
+ const medianTime = data.find((d) => d.survival <= 0.5)?.time ?? data[data.length - 1].time;
258
+ const rateInit = Math.log(2) / medianTime;
259
+ const opt = nelderMead((p) => -logLikelihood(data, (t) => gompertzSurvival(t, p[0], Math.max(1e-6, p[1]))), [0.01, rateInit]);
260
+ const shape = opt[0];
261
+ const rate = Math.max(1e-6, opt[1]);
262
+ const ll = logLikelihood(data, (t) => gompertzSurvival(t, shape, rate));
263
+ const k = 2;
264
+ const n = data.length;
265
+ // Median: solve S(t) = 0.5 numerically
266
+ let median = medianTime;
267
+ for (let t = 0.01; t < medianTime * 5; t += 0.01) {
268
+ if (gompertzSurvival(t, shape, rate) <= 0.5) {
269
+ median = t;
270
+ break;
271
+ }
272
+ }
273
+ return {
274
+ name: "gompertz",
275
+ params: { shape, rate },
276
+ aic: -2 * ll + 2 * k,
277
+ bic: -2 * ll + k * Math.log(n),
278
+ log_likelihood: ll,
279
+ survival_at: (t) => gompertzSurvival(t, shape, rate),
280
+ hazard_at: (t) => gompertzHazard(t, shape, rate),
281
+ median_survival: median,
282
+ mean_survival_restricted: restrictedMean(data, (t) => gompertzSurvival(t, shape, rate)),
283
+ };
284
+ }
285
+ function restrictedMean(data, survFn) {
286
+ const maxT = data[data.length - 1].time;
287
+ const steps = 200;
288
+ const dt = maxT / steps;
289
+ let area = 0;
290
+ for (let i = 0; i < steps; i++) {
291
+ const t1 = i * dt;
292
+ const t2 = (i + 1) * dt;
293
+ area += 0.5 * (survFn(t1) + survFn(t2)) * dt;
294
+ }
295
+ return area;
296
+ }
297
+ // --- Main fitting function ---
298
+ export function fitSurvivalCurves(data, timeUnit = "months") {
299
+ if (data.length < 3) {
300
+ throw new Error("At least 3 data points required for curve fitting");
301
+ }
302
+ // Sort by time
303
+ const sorted = [...data].sort((a, b) => a.time - b.time);
304
+ // Fit all distributions
305
+ const fits = [
306
+ fitExponential(sorted),
307
+ fitWeibull(sorted),
308
+ fitLogLogistic(sorted),
309
+ fitLogNormal(sorted),
310
+ fitGompertz(sorted),
311
+ ];
312
+ // Sort by AIC
313
+ const byAIC = [...fits].sort((a, b) => a.aic - b.aic);
314
+ const byBIC = [...fits].sort((a, b) => a.bic - b.bic);
315
+ // Generate extrapolation table
316
+ const maxObserved = sorted[sorted.length - 1].time;
317
+ const extrapolationTimes = [];
318
+ for (let t = 0; t <= maxObserved * 2; t += maxObserved / 10) {
319
+ extrapolationTimes.push(Math.round(t * 10) / 10);
320
+ }
321
+ const extrapolations = extrapolationTimes.map((t) => {
322
+ const kmPoint = sorted.find((d) => Math.abs(d.time - t) < maxObserved / 20);
323
+ return {
324
+ time: t,
325
+ km_observed: kmPoint?.survival,
326
+ exponential: fits[0].survival_at(t),
327
+ weibull: fits[1].survival_at(t),
328
+ log_logistic: fits[2].survival_at(t),
329
+ log_normal: fits[3].survival_at(t),
330
+ gompertz: fits[4].survival_at(t),
331
+ };
332
+ });
333
+ return {
334
+ fits,
335
+ best_aic: byAIC[0],
336
+ best_bic: byBIC[0],
337
+ km_data: sorted,
338
+ time_unit: timeUnit,
339
+ extrapolations,
340
+ };
341
+ }
342
+ //# sourceMappingURL=survivalFitting.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"survivalFitting.js","sourceRoot":"","sources":["../../src/models/survivalFitting.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ import type { EffectMeasure, PooledEstimate, DirectComparison, IndirectEstimate } from "./types.js";
2
+ /** Standard error from 95% CI */
3
+ export declare function seFromCI(lower: number, upper: number): number;
4
+ /** Normal CDF approximation (Abramowitz & Stegun 26.2.17) */
5
+ export declare function normalCDF(x: number): number;
6
+ /** Two-tailed p-value from z-score */
7
+ export declare function pValueFromZ(z: number): number;
8
+ /** Fixed-effect inverse-variance pooling */
9
+ export declare function poolFixedEffect(studies: Array<{
10
+ value: number;
11
+ se: number;
12
+ }>): PooledEstimate;
13
+ /** Bucher indirect comparison: A vs C = A vs B - C vs B */
14
+ export declare function bucherIndirect(ab: PooledEstimate, cb: PooledEstimate): {
15
+ value: number;
16
+ se: number;
17
+ z: number;
18
+ p_value: number;
19
+ };
20
+ /**
21
+ * Compute a single indirect comparison A vs C through common comparator B.
22
+ *
23
+ * directAB: studies comparing A (intervention) vs B (comparator)
24
+ * directCB: studies comparing C (intervention) vs B (comparator)
25
+ *
26
+ * Returns the indirect estimate of A vs C.
27
+ */
28
+ export declare function computeIndirectComparison(intervention: string, comparator: string, bridge: string, directAB: DirectComparison[], directCB: DirectComparison[], outcome: string, measure: EffectMeasure): IndirectEstimate;
29
+ //# sourceMappingURL=bucher.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bucher.d.ts","sourceRoot":"","sources":["../../src/network/bucher.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,aAAa,EACb,cAAc,EACd,gBAAgB,EAChB,gBAAgB,EACjB,MAAM,YAAY,CAAC;AAEpB,iCAAiC;AACjC,wBAAgB,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAE7D;AAED,6DAA6D;AAC7D,wBAAgB,SAAS,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAc3C;AAED,sCAAsC;AACtC,wBAAgB,WAAW,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAE7C;AAiDD,4CAA4C;AAC5C,wBAAgB,eAAe,CAC7B,OAAO,EAAE,KAAK,CAAC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,CAAC,GAC5C,cAAc,CAqBhB;AAED,2DAA2D;AAC3D,wBAAgB,cAAc,CAC5B,EAAE,EAAE,cAAc,EAClB,EAAE,EAAE,cAAc,GACjB;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAM3D;AAED;;;;;;;GAOG;AACH,wBAAgB,yBAAyB,CACvC,YAAY,EAAE,MAAM,EACpB,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,gBAAgB,EAAE,EAC5B,QAAQ,EAAE,gBAAgB,EAAE,EAC5B,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,aAAa,GACrB,gBAAgB,CAoDlB"}
@@ -0,0 +1,125 @@
1
+ /** Standard error from 95% CI */
2
+ export function seFromCI(lower, upper) {
3
+ return (upper - lower) / 3.92;
4
+ }
5
+ /** Normal CDF approximation (Abramowitz & Stegun 26.2.17) */
6
+ export function normalCDF(x) {
7
+ const sign = x < 0 ? -1 : 1;
8
+ const z = Math.abs(x);
9
+ const t = 1.0 / (1.0 + 0.2316419 * z);
10
+ const d = 0.3989422804014327; // 1/sqrt(2*pi)
11
+ const p = d *
12
+ Math.exp((-z * z) / 2.0) *
13
+ (t *
14
+ (0.319381530 +
15
+ t *
16
+ (-0.356563782 +
17
+ t * (1.781477937 + t * (-1.821255978 + t * 1.330274429)))));
18
+ return sign === 1 ? 1.0 - p : p;
19
+ }
20
+ /** Two-tailed p-value from z-score */
21
+ export function pValueFromZ(z) {
22
+ return 2 * (1 - normalCDF(Math.abs(z)));
23
+ }
24
+ /** Whether the measure operates on a log scale */
25
+ function isLogScale(measure) {
26
+ return measure === "OR" || measure === "RR" || measure === "HR";
27
+ }
28
+ /** Convert to working scale (log for ratio measures) */
29
+ function toWorkingScale(estimate, se, measure) {
30
+ if (isLogScale(measure)) {
31
+ return { value: Math.log(estimate), se };
32
+ }
33
+ return { value: estimate, se };
34
+ }
35
+ /** Convert SE from CI on the original scale to working scale */
36
+ function seOnWorkingScale(estimate, ci_lower, ci_upper, measure) {
37
+ if (isLogScale(measure)) {
38
+ return (Math.log(ci_upper) - Math.log(ci_lower)) / 3.92;
39
+ }
40
+ return seFromCI(ci_lower, ci_upper);
41
+ }
42
+ /** Back-transform from working scale */
43
+ function fromWorkingScale(value, lower, upper, measure) {
44
+ if (isLogScale(measure)) {
45
+ return {
46
+ estimate: Math.exp(value),
47
+ ci_lower: Math.exp(lower),
48
+ ci_upper: Math.exp(upper),
49
+ };
50
+ }
51
+ return { estimate: value, ci_lower: lower, ci_upper: upper };
52
+ }
53
+ /** Fixed-effect inverse-variance pooling */
54
+ export function poolFixedEffect(studies) {
55
+ if (studies.length === 0) {
56
+ throw new Error("No studies to pool");
57
+ }
58
+ if (studies.length === 1) {
59
+ return { value: studies[0].value, se: studies[0].se, n_studies: 1 };
60
+ }
61
+ let sumW = 0;
62
+ let sumWY = 0;
63
+ for (const s of studies) {
64
+ const w = 1 / (s.se * s.se);
65
+ sumW += w;
66
+ sumWY += w * s.value;
67
+ }
68
+ return {
69
+ value: sumWY / sumW,
70
+ se: Math.sqrt(1 / sumW),
71
+ n_studies: studies.length,
72
+ };
73
+ }
74
+ /** Bucher indirect comparison: A vs C = A vs B - C vs B */
75
+ export function bucherIndirect(ab, cb) {
76
+ const value = ab.value - cb.value;
77
+ const se = Math.sqrt(ab.se * ab.se + cb.se * cb.se);
78
+ const z = value / se;
79
+ const p_value = pValueFromZ(z);
80
+ return { value, se, z, p_value };
81
+ }
82
+ /**
83
+ * Compute a single indirect comparison A vs C through common comparator B.
84
+ *
85
+ * directAB: studies comparing A (intervention) vs B (comparator)
86
+ * directCB: studies comparing C (intervention) vs B (comparator)
87
+ *
88
+ * Returns the indirect estimate of A vs C.
89
+ */
90
+ export function computeIndirectComparison(intervention, comparator, bridge, directAB, directCB, outcome, measure) {
91
+ // Convert to working scale and pool
92
+ const abStudies = directAB.map((d) => ({
93
+ value: toWorkingScale(d.estimate, seOnWorkingScale(d.estimate, d.ci_lower, d.ci_upper, measure), measure).value,
94
+ se: seOnWorkingScale(d.estimate, d.ci_lower, d.ci_upper, measure),
95
+ }));
96
+ const cbStudies = directCB.map((d) => ({
97
+ value: toWorkingScale(d.estimate, seOnWorkingScale(d.estimate, d.ci_lower, d.ci_upper, measure), measure).value,
98
+ se: seOnWorkingScale(d.estimate, d.ci_lower, d.ci_upper, measure),
99
+ }));
100
+ const pooledAB = poolFixedEffect(abStudies);
101
+ const pooledCB = poolFixedEffect(cbStudies);
102
+ // Bucher indirect
103
+ const indirect = bucherIndirect(pooledAB, pooledCB);
104
+ // Back-transform
105
+ const ciLowerWorking = indirect.value - 1.96 * indirect.se;
106
+ const ciUpperWorking = indirect.value + 1.96 * indirect.se;
107
+ const result = fromWorkingScale(indirect.value, ciLowerWorking, ciUpperWorking, measure);
108
+ return {
109
+ intervention,
110
+ comparator,
111
+ commonComparator: bridge,
112
+ outcome,
113
+ measure,
114
+ method: "bucher",
115
+ estimate: result.estimate,
116
+ se: indirect.se,
117
+ ci_lower: result.ci_lower,
118
+ ci_upper: result.ci_upper,
119
+ z: indirect.z,
120
+ p_value: indirect.p_value,
121
+ pooled_ab: pooledAB,
122
+ pooled_bc: pooledCB,
123
+ };
124
+ }
125
+ //# sourceMappingURL=bucher.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bucher.js","sourceRoot":"","sources":["../../src/network/bucher.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import type { DirectComparison, EffectMeasure, IndirectEstimate } from "./types.js";
2
+ /**
3
+ * Frequentist contrast-based NMA using weighted least squares.
4
+ *
5
+ * Given a set of direct comparisons (possibly multiple per edge),
6
+ * estimates all pairwise treatment effects relative to a reference.
7
+ *
8
+ * For small networks this is equivalent to the graph-theoretical
9
+ * approach (Rücker 2012).
10
+ */
11
+ export declare function frequentistNMA(comparisons: DirectComparison[], outcome: string, measure: EffectMeasure): IndirectEstimate[];
12
+ //# sourceMappingURL=frequentistNma.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"frequentistNma.d.ts","sourceRoot":"","sources":["../../src/network/frequentistNma.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,gBAAgB,EAChB,aAAa,EACb,gBAAgB,EAEjB,MAAM,YAAY,CAAC;AA0BpB;;;;;;;;GAQG;AACH,wBAAgB,cAAc,CAC5B,WAAW,EAAE,gBAAgB,EAAE,EAC/B,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,aAAa,GACrB,gBAAgB,EAAE,CA4LpB"}