heor-agent-mcp 0.1.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/LICENSE +21 -0
- package/README.md +152 -0
- package/dist/audit/builder.d.ts +8 -0
- package/dist/audit/builder.d.ts.map +1 -0
- package/dist/audit/builder.js +37 -0
- package/dist/audit/builder.js.map +1 -0
- package/dist/audit/types.d.ts +30 -0
- package/dist/audit/types.d.ts.map +1 -0
- package/dist/audit/types.js +2 -0
- package/dist/audit/types.js.map +1 -0
- package/dist/formatters/docx.d.ts +5 -0
- package/dist/formatters/docx.d.ts.map +1 -0
- package/dist/formatters/docx.js +207 -0
- package/dist/formatters/docx.js.map +1 -0
- package/dist/formatters/json.d.ts +4 -0
- package/dist/formatters/json.d.ts.map +1 -0
- package/dist/formatters/json.js +4 -0
- package/dist/formatters/json.js.map +1 -0
- package/dist/formatters/markdown.d.ts +5 -0
- package/dist/formatters/markdown.d.ts.map +1 -0
- package/dist/formatters/markdown.js +50 -0
- package/dist/formatters/markdown.js.map +1 -0
- package/dist/knowledge/index.d.ts +8 -0
- package/dist/knowledge/index.d.ts.map +1 -0
- package/dist/knowledge/index.js +8 -0
- package/dist/knowledge/index.js.map +1 -0
- package/dist/knowledge/paths.d.ts +9 -0
- package/dist/knowledge/paths.d.ts.map +1 -0
- package/dist/knowledge/paths.js +35 -0
- package/dist/knowledge/paths.js.map +1 -0
- package/dist/knowledge/projectStore.d.ts +37 -0
- package/dist/knowledge/projectStore.d.ts.map +1 -0
- package/dist/knowledge/projectStore.js +112 -0
- package/dist/knowledge/projectStore.js.map +1 -0
- package/dist/knowledge/rawStore.d.ts +18 -0
- package/dist/knowledge/rawStore.d.ts.map +1 -0
- package/dist/knowledge/rawStore.js +103 -0
- package/dist/knowledge/rawStore.js.map +1 -0
- package/dist/knowledge/search.d.ts +19 -0
- package/dist/knowledge/search.d.ts.map +1 -0
- package/dist/knowledge/search.js +105 -0
- package/dist/knowledge/search.js.map +1 -0
- package/dist/knowledge/types.d.ts +6 -0
- package/dist/knowledge/types.d.ts.map +1 -0
- package/dist/knowledge/types.js +2 -0
- package/dist/knowledge/types.js.map +1 -0
- package/dist/knowledge/wikiStore.d.ts +18 -0
- package/dist/knowledge/wikiStore.d.ts.map +1 -0
- package/dist/knowledge/wikiStore.js +77 -0
- package/dist/knowledge/wikiStore.js.map +1 -0
- package/dist/knowledge/yaml.d.ts +17 -0
- package/dist/knowledge/yaml.d.ts.map +1 -0
- package/dist/knowledge/yaml.js +131 -0
- package/dist/knowledge/yaml.js.map +1 -0
- package/dist/models/distributions.d.ts +28 -0
- package/dist/models/distributions.d.ts.map +1 -0
- package/dist/models/distributions.js +99 -0
- package/dist/models/distributions.js.map +1 -0
- package/dist/models/index.d.ts +11 -0
- package/dist/models/index.d.ts.map +1 -0
- package/dist/models/index.js +7 -0
- package/dist/models/index.js.map +1 -0
- package/dist/models/markov.d.ts +42 -0
- package/dist/models/markov.d.ts.map +1 -0
- package/dist/models/markov.js +82 -0
- package/dist/models/markov.js.map +1 -0
- package/dist/models/modelUtils.d.ts +29 -0
- package/dist/models/modelUtils.d.ts.map +1 -0
- package/dist/models/modelUtils.js +139 -0
- package/dist/models/modelUtils.js.map +1 -0
- package/dist/models/owsa.d.ts +31 -0
- package/dist/models/owsa.d.ts.map +1 -0
- package/dist/models/owsa.js +103 -0
- package/dist/models/owsa.js.map +1 -0
- package/dist/models/partsa.d.ts +40 -0
- package/dist/models/partsa.d.ts.map +1 -0
- package/dist/models/partsa.js +65 -0
- package/dist/models/partsa.js.map +1 -0
- package/dist/models/psa.d.ts +33 -0
- package/dist/models/psa.d.ts.map +1 -0
- package/dist/models/psa.js +118 -0
- package/dist/models/psa.js.map +1 -0
- package/dist/providers/direct/aifa.d.ts +3 -0
- package/dist/providers/direct/aifa.d.ts.map +1 -0
- package/dist/providers/direct/aifa.js +30 -0
- package/dist/providers/direct/aifa.js.map +1 -0
- package/dist/providers/direct/allOfUs.d.ts +3 -0
- package/dist/providers/direct/allOfUs.d.ts.map +1 -0
- package/dist/providers/direct/allOfUs.js +37 -0
- package/dist/providers/direct/allOfUs.js.map +1 -0
- package/dist/providers/direct/anvisa.d.ts +3 -0
- package/dist/providers/direct/anvisa.d.ts.map +1 -0
- package/dist/providers/direct/anvisa.js +25 -0
- package/dist/providers/direct/anvisa.js.map +1 -0
- package/dist/providers/direct/biorxiv.d.ts +3 -0
- package/dist/providers/direct/biorxiv.d.ts.map +1 -0
- package/dist/providers/direct/biorxiv.js +33 -0
- package/dist/providers/direct/biorxiv.js.map +1 -0
- package/dist/providers/direct/bnf.d.ts +3 -0
- package/dist/providers/direct/bnf.d.ts.map +1 -0
- package/dist/providers/direct/bnf.js +30 -0
- package/dist/providers/direct/bnf.js.map +1 -0
- package/dist/providers/direct/cadthReviews.d.ts +3 -0
- package/dist/providers/direct/cadthReviews.d.ts.map +1 -0
- package/dist/providers/direct/cadthReviews.js +30 -0
- package/dist/providers/direct/cadthReviews.js.map +1 -0
- package/dist/providers/direct/chembl.d.ts +3 -0
- package/dist/providers/direct/chembl.d.ts.map +1 -0
- package/dist/providers/direct/chembl.js +24 -0
- package/dist/providers/direct/chembl.js.map +1 -0
- package/dist/providers/direct/citeline.d.ts +3 -0
- package/dist/providers/direct/citeline.d.ts.map +1 -0
- package/dist/providers/direct/citeline.js +50 -0
- package/dist/providers/direct/citeline.js.map +1 -0
- package/dist/providers/direct/clinicalTrials.d.ts +3 -0
- package/dist/providers/direct/clinicalTrials.d.ts.map +1 -0
- package/dist/providers/direct/clinicalTrials.js +29 -0
- package/dist/providers/direct/clinicalTrials.js.map +1 -0
- package/dist/providers/direct/cmsNadac.d.ts +3 -0
- package/dist/providers/direct/cmsNadac.d.ts.map +1 -0
- package/dist/providers/direct/cmsNadac.js +52 -0
- package/dist/providers/direct/cmsNadac.js.map +1 -0
- package/dist/providers/direct/cochrane.d.ts +3 -0
- package/dist/providers/direct/cochrane.d.ts.map +1 -0
- package/dist/providers/direct/cochrane.js +46 -0
- package/dist/providers/direct/cochrane.js.map +1 -0
- package/dist/providers/direct/conitec.d.ts +3 -0
- package/dist/providers/direct/conitec.d.ts.map +1 -0
- package/dist/providers/direct/conitec.js +25 -0
- package/dist/providers/direct/conitec.js.map +1 -0
- package/dist/providers/direct/cortellis.d.ts +3 -0
- package/dist/providers/direct/cortellis.d.ts.map +1 -0
- package/dist/providers/direct/cortellis.js +52 -0
- package/dist/providers/direct/cortellis.js.map +1 -0
- package/dist/providers/direct/datasus.d.ts +3 -0
- package/dist/providers/direct/datasus.d.ts.map +1 -0
- package/dist/providers/direct/datasus.js +30 -0
- package/dist/providers/direct/datasus.js.map +1 -0
- package/dist/providers/direct/embase.d.ts +3 -0
- package/dist/providers/direct/embase.d.ts.map +1 -0
- package/dist/providers/direct/embase.js +54 -0
- package/dist/providers/direct/embase.js.map +1 -0
- package/dist/providers/direct/fonasa.d.ts +3 -0
- package/dist/providers/direct/fonasa.d.ts.map +1 -0
- package/dist/providers/direct/fonasa.js +25 -0
- package/dist/providers/direct/fonasa.js.map +1 -0
- package/dist/providers/direct/gbaDecisions.d.ts +3 -0
- package/dist/providers/direct/gbaDecisions.d.ts.map +1 -0
- package/dist/providers/direct/gbaDecisions.js +30 -0
- package/dist/providers/direct/gbaDecisions.js.map +1 -0
- package/dist/providers/direct/googleScholar.d.ts +3 -0
- package/dist/providers/direct/googleScholar.d.ts.map +1 -0
- package/dist/providers/direct/googleScholar.js +39 -0
- package/dist/providers/direct/googleScholar.js.map +1 -0
- package/dist/providers/direct/hasTc.d.ts +3 -0
- package/dist/providers/direct/hasTc.d.ts.map +1 -0
- package/dist/providers/direct/hasTc.js +30 -0
- package/dist/providers/direct/hasTc.js.map +1 -0
- package/dist/providers/direct/hitap.d.ts +3 -0
- package/dist/providers/direct/hitap.d.ts.map +1 -0
- package/dist/providers/direct/hitap.js +30 -0
- package/dist/providers/direct/hitap.js.map +1 -0
- package/dist/providers/direct/icerReports.d.ts +3 -0
- package/dist/providers/direct/icerReports.d.ts.map +1 -0
- package/dist/providers/direct/icerReports.js +30 -0
- package/dist/providers/direct/icerReports.js.map +1 -0
- package/dist/providers/direct/iets.d.ts +3 -0
- package/dist/providers/direct/iets.d.ts.map +1 -0
- package/dist/providers/direct/iets.js +25 -0
- package/dist/providers/direct/iets.js.map +1 -0
- package/dist/providers/direct/ihmeGbd.d.ts +3 -0
- package/dist/providers/direct/ihmeGbd.d.ts.map +1 -0
- package/dist/providers/direct/ihmeGbd.js +74 -0
- package/dist/providers/direct/ihmeGbd.js.map +1 -0
- package/dist/providers/direct/index.d.ts +7 -0
- package/dist/providers/direct/index.d.ts.map +1 -0
- package/dist/providers/direct/index.js +186 -0
- package/dist/providers/direct/index.js.map +1 -0
- package/dist/providers/direct/inesss.d.ts +3 -0
- package/dist/providers/direct/inesss.d.ts.map +1 -0
- package/dist/providers/direct/inesss.js +30 -0
- package/dist/providers/direct/inesss.js.map +1 -0
- package/dist/providers/direct/iqwig.d.ts +3 -0
- package/dist/providers/direct/iqwig.d.ts.map +1 -0
- package/dist/providers/direct/iqwig.js +30 -0
- package/dist/providers/direct/iqwig.js.map +1 -0
- package/dist/providers/direct/ispor.d.ts +3 -0
- package/dist/providers/direct/ispor.d.ts.map +1 -0
- package/dist/providers/direct/ispor.js +35 -0
- package/dist/providers/direct/ispor.js.map +1 -0
- package/dist/providers/direct/nhsCosts.d.ts +3 -0
- package/dist/providers/direct/nhsCosts.d.ts.map +1 -0
- package/dist/providers/direct/nhsCosts.js +32 -0
- package/dist/providers/direct/nhsCosts.js.map +1 -0
- package/dist/providers/direct/niceTa.d.ts +3 -0
- package/dist/providers/direct/niceTa.d.ts.map +1 -0
- package/dist/providers/direct/niceTa.js +30 -0
- package/dist/providers/direct/niceTa.js.map +1 -0
- package/dist/providers/direct/oecd.d.ts +3 -0
- package/dist/providers/direct/oecd.d.ts.map +1 -0
- package/dist/providers/direct/oecd.js +102 -0
- package/dist/providers/direct/oecd.js.map +1 -0
- package/dist/providers/direct/orangeBook.d.ts +3 -0
- package/dist/providers/direct/orangeBook.d.ts.map +1 -0
- package/dist/providers/direct/orangeBook.js +48 -0
- package/dist/providers/direct/orangeBook.js.map +1 -0
- package/dist/providers/direct/paho.d.ts +3 -0
- package/dist/providers/direct/paho.d.ts.map +1 -0
- package/dist/providers/direct/paho.js +30 -0
- package/dist/providers/direct/paho.js.map +1 -0
- package/dist/providers/direct/pbacPsd.d.ts +3 -0
- package/dist/providers/direct/pbacPsd.d.ts.map +1 -0
- package/dist/providers/direct/pbacPsd.js +30 -0
- package/dist/providers/direct/pbacPsd.js.map +1 -0
- package/dist/providers/direct/pbsSchedule.d.ts +3 -0
- package/dist/providers/direct/pbsSchedule.d.ts.map +1 -0
- package/dist/providers/direct/pbsSchedule.js +37 -0
- package/dist/providers/direct/pbsSchedule.js.map +1 -0
- package/dist/providers/direct/pharmapendium.d.ts +3 -0
- package/dist/providers/direct/pharmapendium.d.ts.map +1 -0
- package/dist/providers/direct/pharmapendium.js +39 -0
- package/dist/providers/direct/pharmapendium.js.map +1 -0
- package/dist/providers/direct/proxyClient.d.ts +15 -0
- package/dist/providers/direct/proxyClient.d.ts.map +1 -0
- package/dist/providers/direct/proxyClient.js +76 -0
- package/dist/providers/direct/proxyClient.js.map +1 -0
- package/dist/providers/direct/pssru.d.ts +3 -0
- package/dist/providers/direct/pssru.d.ts.map +1 -0
- package/dist/providers/direct/pssru.js +33 -0
- package/dist/providers/direct/pssru.js.map +1 -0
- package/dist/providers/direct/pubmed.d.ts +3 -0
- package/dist/providers/direct/pubmed.d.ts.map +1 -0
- package/dist/providers/direct/pubmed.js +73 -0
- package/dist/providers/direct/pubmed.js.map +1 -0
- package/dist/providers/direct/purpleBook.d.ts +3 -0
- package/dist/providers/direct/purpleBook.d.ts.map +1 -0
- package/dist/providers/direct/purpleBook.js +52 -0
- package/dist/providers/direct/purpleBook.js.map +1 -0
- package/dist/providers/direct/tlv.d.ts +3 -0
- package/dist/providers/direct/tlv.d.ts.map +1 -0
- package/dist/providers/direct/tlv.js +30 -0
- package/dist/providers/direct/tlv.js.map +1 -0
- package/dist/providers/direct/whoGho.d.ts +3 -0
- package/dist/providers/direct/whoGho.d.ts.map +1 -0
- package/dist/providers/direct/whoGho.js +51 -0
- package/dist/providers/direct/whoGho.js.map +1 -0
- package/dist/providers/direct/worldBank.d.ts +3 -0
- package/dist/providers/direct/worldBank.d.ts.map +1 -0
- package/dist/providers/direct/worldBank.js +54 -0
- package/dist/providers/direct/worldBank.js.map +1 -0
- package/dist/providers/factory.d.ts +3 -0
- package/dist/providers/factory.d.ts.map +1 -0
- package/dist/providers/factory.js +8 -0
- package/dist/providers/factory.js.map +1 -0
- package/dist/providers/hosted/index.d.ts +9 -0
- package/dist/providers/hosted/index.d.ts.map +1 -0
- package/dist/providers/hosted/index.js +16 -0
- package/dist/providers/hosted/index.js.map +1 -0
- package/dist/providers/types.d.ts +176 -0
- package/dist/providers/types.d.ts.map +1 -0
- package/dist/providers/types.js +2 -0
- package/dist/providers/types.js.map +1 -0
- package/dist/server.d.ts +3 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +80 -0
- package/dist/server.js.map +1 -0
- package/dist/tools/costEffectivenessModel.d.ts +98 -0
- package/dist/tools/costEffectivenessModel.d.ts.map +1 -0
- package/dist/tools/costEffectivenessModel.js +404 -0
- package/dist/tools/costEffectivenessModel.js.map +1 -0
- package/dist/tools/htaDossierPrep.d.ts +69 -0
- package/dist/tools/htaDossierPrep.d.ts.map +1 -0
- package/dist/tools/htaDossierPrep.js +399 -0
- package/dist/tools/htaDossierPrep.js.map +1 -0
- package/dist/tools/knowledgeRead.d.ts +21 -0
- package/dist/tools/knowledgeRead.d.ts.map +1 -0
- package/dist/tools/knowledgeRead.js +38 -0
- package/dist/tools/knowledgeRead.js.map +1 -0
- package/dist/tools/knowledgeSearch.d.ts +37 -0
- package/dist/tools/knowledgeSearch.d.ts.map +1 -0
- package/dist/tools/knowledgeSearch.js +51 -0
- package/dist/tools/knowledgeSearch.js.map +1 -0
- package/dist/tools/knowledgeWrite.d.ts +25 -0
- package/dist/tools/knowledgeWrite.d.ts.map +1 -0
- package/dist/tools/knowledgeWrite.js +40 -0
- package/dist/tools/knowledgeWrite.js.map +1 -0
- package/dist/tools/literatureSearch.d.ts +42 -0
- package/dist/tools/literatureSearch.d.ts.map +1 -0
- package/dist/tools/literatureSearch.js +142 -0
- package/dist/tools/literatureSearch.js.map +1 -0
- package/dist/tools/metabolicProfile.d.ts +19 -0
- package/dist/tools/metabolicProfile.d.ts.map +1 -0
- package/dist/tools/metabolicProfile.js +150 -0
- package/dist/tools/metabolicProfile.js.map +1 -0
- package/dist/tools/projectCreate.d.ts +37 -0
- package/dist/tools/projectCreate.d.ts.map +1 -0
- package/dist/tools/projectCreate.js +61 -0
- package/dist/tools/projectCreate.js.map +1 -0
- package/package.json +71 -0
|
@@ -0,0 +1,404 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
const CEModelSchema = z.object({
|
|
3
|
+
intervention: z.string().min(1),
|
|
4
|
+
comparator: z.string().min(1),
|
|
5
|
+
indication: z.string().min(1),
|
|
6
|
+
time_horizon: z.union([
|
|
7
|
+
z.enum(["lifetime", "5yr", "10yr"]),
|
|
8
|
+
z.number().positive(),
|
|
9
|
+
]),
|
|
10
|
+
perspective: z.enum(["nhs", "us_payer", "societal"]),
|
|
11
|
+
model_type: z.enum(["markov", "partsa", "decision_tree"]).optional(),
|
|
12
|
+
clinical_inputs: z.object({
|
|
13
|
+
efficacy_delta: z.number().min(0).max(1),
|
|
14
|
+
mortality_reduction: z.number().min(0).max(1).optional(),
|
|
15
|
+
ae_rate: z.number().min(0).max(1).optional(),
|
|
16
|
+
}),
|
|
17
|
+
cost_inputs: z.object({
|
|
18
|
+
drug_cost_annual: z.number().nonnegative(),
|
|
19
|
+
admin_cost: z.number().nonnegative().optional(),
|
|
20
|
+
ae_cost: z.number().nonnegative().optional(),
|
|
21
|
+
comparator_cost_annual: z.number().nonnegative(),
|
|
22
|
+
}),
|
|
23
|
+
utility_inputs: z
|
|
24
|
+
.object({
|
|
25
|
+
qaly_on_treatment: z.number().min(0).max(1),
|
|
26
|
+
qaly_comparator: z.number().min(0).max(1),
|
|
27
|
+
})
|
|
28
|
+
.optional(),
|
|
29
|
+
run_psa: z.boolean().optional(),
|
|
30
|
+
psa_iterations: z.number().int().min(1).max(10000).optional(),
|
|
31
|
+
run_owsa: z.boolean().optional(),
|
|
32
|
+
output_format: z.enum(["text", "json", "docx"]).optional(),
|
|
33
|
+
project: z.string().optional(),
|
|
34
|
+
});
|
|
35
|
+
import { runPartSA } from "../models/partsa.js";
|
|
36
|
+
import { runPSA } from "../models/psa.js";
|
|
37
|
+
import { runOWSA, buildDefaultOWSAParameters } from "../models/owsa.js";
|
|
38
|
+
import { runMarkovAndComputeICER, } from "../models/modelUtils.js";
|
|
39
|
+
import { createAuditRecord, addAssumption, setMethodology, } from "../audit/builder.js";
|
|
40
|
+
import { auditToMarkdown } from "../formatters/markdown.js";
|
|
41
|
+
import { contentToDocx } from "../formatters/docx.js";
|
|
42
|
+
import { saveModelRun } from "../knowledge/index.js";
|
|
43
|
+
const WTP_THRESHOLDS = {
|
|
44
|
+
nhs: { low: 20000, high: 30000, currency: "GBP", symbol: "£" },
|
|
45
|
+
us_payer: { low: 100000, high: 150000, currency: "USD", symbol: "$" },
|
|
46
|
+
societal: { low: 50000, high: 100000, currency: "USD", symbol: "$" },
|
|
47
|
+
};
|
|
48
|
+
const DISCOUNT_RATE = 0.035;
|
|
49
|
+
function getTimeHorizonYears(horizon) {
|
|
50
|
+
if (horizon === "lifetime")
|
|
51
|
+
return 40;
|
|
52
|
+
if (horizon === "5yr")
|
|
53
|
+
return 5;
|
|
54
|
+
if (horizon === "10yr")
|
|
55
|
+
return 10;
|
|
56
|
+
return Number(horizon);
|
|
57
|
+
}
|
|
58
|
+
function wtpVerdict(icer, threshold) {
|
|
59
|
+
if (!isFinite(icer) && icer < 0)
|
|
60
|
+
return "dominated";
|
|
61
|
+
if (!isFinite(icer))
|
|
62
|
+
return "not_cost_effective";
|
|
63
|
+
if (icer < threshold.low)
|
|
64
|
+
return "cost_effective";
|
|
65
|
+
if (icer < threshold.high)
|
|
66
|
+
return "borderline";
|
|
67
|
+
return "not_cost_effective";
|
|
68
|
+
}
|
|
69
|
+
function buildWTPAssessment(icer, perspective) {
|
|
70
|
+
const threshold = WTP_THRESHOLDS[perspective];
|
|
71
|
+
return {
|
|
72
|
+
threshold_low: threshold.low,
|
|
73
|
+
threshold_high: threshold.high,
|
|
74
|
+
currency: threshold.currency,
|
|
75
|
+
symbol: threshold.symbol,
|
|
76
|
+
verdict: wtpVerdict(icer, threshold),
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
export async function handleCostEffectivenessModel(rawParams) {
|
|
80
|
+
const params = CEModelSchema.parse(rawParams);
|
|
81
|
+
const outputFormat = params.output_format ?? "text";
|
|
82
|
+
let audit = createAuditRecord("cost_effectiveness_model", params, outputFormat);
|
|
83
|
+
const modelType = params.model_type ?? "markov";
|
|
84
|
+
const years = getTimeHorizonYears(params.time_horizon);
|
|
85
|
+
const threshold = WTP_THRESHOLDS[params.perspective];
|
|
86
|
+
const { symbol } = threshold;
|
|
87
|
+
audit = setMethodology(audit, `Markov model (multi-state) with half-cycle correction and PSA — ${modelType === "partsa" ? "Partitioned Survival Analysis" : "2-state Markov"}`);
|
|
88
|
+
audit = addAssumption(audit, `Discount rate: ${DISCOUNT_RATE * 100}% (NICE reference case)`);
|
|
89
|
+
audit = addAssumption(audit, `Time horizon: ${years} years (${params.time_horizon})`);
|
|
90
|
+
audit = addAssumption(audit, `Perspective: ${params.perspective}`);
|
|
91
|
+
audit = addAssumption(audit, `Markov cycle length: 1 year`);
|
|
92
|
+
if (!params.utility_inputs) {
|
|
93
|
+
audit = addAssumption(audit, `QALY estimate derived from efficacy delta (utility inputs not provided) — use with caution`);
|
|
94
|
+
}
|
|
95
|
+
// --- Base case ---
|
|
96
|
+
let delta_cost;
|
|
97
|
+
let delta_qaly;
|
|
98
|
+
let icer;
|
|
99
|
+
let intervention_cost;
|
|
100
|
+
let comparator_cost;
|
|
101
|
+
let intervention_qaly;
|
|
102
|
+
let comparator_qaly;
|
|
103
|
+
let intervention_lys;
|
|
104
|
+
let comparator_lys;
|
|
105
|
+
let stateNames;
|
|
106
|
+
let nCycles;
|
|
107
|
+
if (modelType === "partsa" && params.survival_inputs) {
|
|
108
|
+
const si = params.survival_inputs;
|
|
109
|
+
const partSAResult = runPartSA({
|
|
110
|
+
intervention_survival: {
|
|
111
|
+
os_median_months: si.os_median_months ?? 24,
|
|
112
|
+
pfs_median_months: si.pfs_median_months ?? 12,
|
|
113
|
+
distribution: si.survival_distribution ?? "exponential",
|
|
114
|
+
weibull_shape: si.weibull_shape,
|
|
115
|
+
},
|
|
116
|
+
comparator_survival: {
|
|
117
|
+
os_median_months: si.os_median_months_comparator ?? 18,
|
|
118
|
+
pfs_median_months: si.pfs_median_months_comparator ?? 9,
|
|
119
|
+
distribution: si.survival_distribution ?? "exponential",
|
|
120
|
+
weibull_shape: si.weibull_shape,
|
|
121
|
+
},
|
|
122
|
+
states: ["PFS", "PD", "Dead"],
|
|
123
|
+
utility_pfs: params.utility_inputs?.qaly_on_treatment ?? 0.75,
|
|
124
|
+
utility_pd: params.utility_inputs?.qaly_comparator ?? 0.55,
|
|
125
|
+
cost_pfs_annual: params.cost_inputs.drug_cost_annual,
|
|
126
|
+
cost_pd_annual: params.cost_inputs.comparator_cost_annual,
|
|
127
|
+
n_cycles: years,
|
|
128
|
+
cycle_length_years: 1,
|
|
129
|
+
discount_rate_costs: DISCOUNT_RATE,
|
|
130
|
+
discount_rate_outcomes: DISCOUNT_RATE,
|
|
131
|
+
});
|
|
132
|
+
delta_cost =
|
|
133
|
+
partSAResult.intervention.total_cost - partSAResult.comparator.total_cost;
|
|
134
|
+
delta_qaly =
|
|
135
|
+
partSAResult.intervention.total_qaly - partSAResult.comparator.total_qaly;
|
|
136
|
+
icer =
|
|
137
|
+
delta_qaly > 0
|
|
138
|
+
? delta_cost / delta_qaly
|
|
139
|
+
: delta_qaly < 0
|
|
140
|
+
? -Infinity
|
|
141
|
+
: Infinity;
|
|
142
|
+
intervention_cost = partSAResult.intervention.total_cost;
|
|
143
|
+
comparator_cost = partSAResult.comparator.total_cost;
|
|
144
|
+
intervention_qaly = partSAResult.intervention.total_qaly;
|
|
145
|
+
comparator_qaly = partSAResult.comparator.total_qaly;
|
|
146
|
+
intervention_lys = partSAResult.intervention.total_lys;
|
|
147
|
+
comparator_lys = partSAResult.comparator.total_lys;
|
|
148
|
+
stateNames = ["PFS", "PD", "Dead"];
|
|
149
|
+
nCycles = years;
|
|
150
|
+
}
|
|
151
|
+
else {
|
|
152
|
+
// Default: Markov
|
|
153
|
+
const markovResult = runMarkovAndComputeICER(params);
|
|
154
|
+
delta_cost = markovResult.delta_cost;
|
|
155
|
+
delta_qaly = markovResult.delta_qaly;
|
|
156
|
+
icer = markovResult.icer;
|
|
157
|
+
intervention_cost = markovResult.intervention_cost;
|
|
158
|
+
comparator_cost = markovResult.comparator_cost;
|
|
159
|
+
intervention_qaly = markovResult.intervention_qaly;
|
|
160
|
+
comparator_qaly = markovResult.comparator_qaly;
|
|
161
|
+
intervention_lys = markovResult.intervention_lys;
|
|
162
|
+
comparator_lys = markovResult.comparator_lys;
|
|
163
|
+
stateNames = params.states ?? ["On-Treatment", "Off-Treatment"];
|
|
164
|
+
nCycles = years;
|
|
165
|
+
}
|
|
166
|
+
const incremental_lys = intervention_lys - comparator_lys;
|
|
167
|
+
// --- PSA ---
|
|
168
|
+
let psaSummary;
|
|
169
|
+
if (params.run_psa !== false && modelType !== "partsa") {
|
|
170
|
+
const n_iterations = Math.min(10000, Math.max(1, params.psa_iterations ?? 1000));
|
|
171
|
+
const psaResult = runPSA({
|
|
172
|
+
base_params: params,
|
|
173
|
+
n_iterations,
|
|
174
|
+
seed: 12345,
|
|
175
|
+
});
|
|
176
|
+
psaSummary = {
|
|
177
|
+
iterations: n_iterations,
|
|
178
|
+
mean_icer: psaResult.mean_icer,
|
|
179
|
+
ci_icer_lower: psaResult.ci_icer_lower,
|
|
180
|
+
ci_icer_upper: psaResult.ci_icer_upper,
|
|
181
|
+
prob_cost_effective: psaResult.prob_cost_effective,
|
|
182
|
+
ceac: psaResult.ceac,
|
|
183
|
+
evpi: psaResult.evpi,
|
|
184
|
+
scatter: psaResult.scatter_sample.map((it) => ({
|
|
185
|
+
delta_cost: it.delta_cost,
|
|
186
|
+
delta_qaly: it.delta_qaly,
|
|
187
|
+
})),
|
|
188
|
+
};
|
|
189
|
+
}
|
|
190
|
+
// --- OWSA ---
|
|
191
|
+
let owsaResults;
|
|
192
|
+
if (params.run_owsa !== false) {
|
|
193
|
+
const owsaParams = buildDefaultOWSAParameters(params);
|
|
194
|
+
const rawOWSA = runOWSA(params, owsaParams, (p) => runMarkovAndComputeICER(p));
|
|
195
|
+
owsaResults = rawOWSA.map((r) => ({
|
|
196
|
+
parameter: r.parameter,
|
|
197
|
+
low_value: r.low_value,
|
|
198
|
+
high_value: r.high_value,
|
|
199
|
+
icer_low: r.icer_low,
|
|
200
|
+
icer_high: r.icer_high,
|
|
201
|
+
impact: r.impact,
|
|
202
|
+
}));
|
|
203
|
+
}
|
|
204
|
+
// --- WTP Analysis ---
|
|
205
|
+
const wtp_analysis = {
|
|
206
|
+
nhs: buildWTPAssessment(icer, "nhs"),
|
|
207
|
+
us_payer: buildWTPAssessment(icer, "us_payer"),
|
|
208
|
+
societal: buildWTPAssessment(icer, "societal"),
|
|
209
|
+
};
|
|
210
|
+
// --- Build result ---
|
|
211
|
+
const modelResult = {
|
|
212
|
+
base_case: {
|
|
213
|
+
icer,
|
|
214
|
+
delta_cost,
|
|
215
|
+
delta_qaly,
|
|
216
|
+
incremental_lys,
|
|
217
|
+
total_cost_intervention: intervention_cost,
|
|
218
|
+
total_cost_comparator: comparator_cost,
|
|
219
|
+
total_qaly_intervention: intervention_qaly,
|
|
220
|
+
total_qaly_comparator: comparator_qaly,
|
|
221
|
+
},
|
|
222
|
+
psa: psaSummary,
|
|
223
|
+
owsa: owsaResults,
|
|
224
|
+
wtp_analysis,
|
|
225
|
+
model_metadata: {
|
|
226
|
+
model_type: modelType,
|
|
227
|
+
states: stateNames,
|
|
228
|
+
cycles: nCycles,
|
|
229
|
+
cycle_length: "1 year",
|
|
230
|
+
discount_rate_costs: DISCOUNT_RATE,
|
|
231
|
+
discount_rate_outcomes: DISCOUNT_RATE,
|
|
232
|
+
time_horizon_years: years,
|
|
233
|
+
},
|
|
234
|
+
audit,
|
|
235
|
+
};
|
|
236
|
+
if (outputFormat === "json") {
|
|
237
|
+
return { content: modelResult, audit };
|
|
238
|
+
}
|
|
239
|
+
// --- Text output (backwards-compatible) ---
|
|
240
|
+
const icerFormatted = isFinite(icer)
|
|
241
|
+
? Math.round(icer).toLocaleString()
|
|
242
|
+
: "Dominated";
|
|
243
|
+
const perspectiveVerdict = wtp_analysis[params.perspective];
|
|
244
|
+
const interpretation = isFinite(icer) && icer >= 0
|
|
245
|
+
? icer < threshold.low
|
|
246
|
+
? `${symbol}${icerFormatted}/QALY — likely cost-effective (below NICE threshold of ${symbol}${threshold.low.toLocaleString()})`
|
|
247
|
+
: icer < threshold.high
|
|
248
|
+
? `${symbol}${icerFormatted}/QALY — borderline cost-effective (within ${symbol}${threshold.low.toLocaleString()}–${symbol}${threshold.high.toLocaleString()} threshold range)`
|
|
249
|
+
: `${symbol}${icerFormatted}/QALY — not cost-effective at standard threshold`
|
|
250
|
+
: "Dominated — intervention costs more and provides less benefit than comparator";
|
|
251
|
+
// PSA section
|
|
252
|
+
const psaSection = [];
|
|
253
|
+
if (psaSummary) {
|
|
254
|
+
const pcePerspective = perspectiveVerdict.currency === "GBP"
|
|
255
|
+
? (psaSummary.prob_cost_effective["nhs_low"] ?? 0)
|
|
256
|
+
: (psaSummary.prob_cost_effective["us_payer_low"] ?? 0);
|
|
257
|
+
const pcePercent = Math.round(pcePerspective * 100);
|
|
258
|
+
psaSection.push(`### Probabilistic Sensitivity Analysis (PSA)`, `Based on ${psaSummary.iterations.toLocaleString()} Monte Carlo iterations:`, `- **Mean ICER:** ${symbol}${Math.round(psaSummary.mean_icer).toLocaleString()}/QALY`, `- **95% CI:** ${symbol}${Math.round(psaSummary.ci_icer_lower).toLocaleString()} – ${symbol}${Math.round(psaSummary.ci_icer_upper).toLocaleString()}/QALY`, `- **Probability cost-effective** at ${params.perspective} threshold: **${pcePercent}%**`, `- **EVPI:** ${symbol}${Math.round(psaSummary.evpi).toLocaleString()} (expected value of perfect information)`, ``);
|
|
259
|
+
}
|
|
260
|
+
// OWSA section (top 5)
|
|
261
|
+
const owsaSection = [];
|
|
262
|
+
if (owsaResults && owsaResults.length > 0) {
|
|
263
|
+
owsaSection.push(`### One-Way Sensitivity Analysis (Tornado)`);
|
|
264
|
+
owsaSection.push(`Top ${Math.min(5, owsaResults.length)} parameters by ICER impact:`);
|
|
265
|
+
owsaSection.push(`| Parameter | Low ICER | High ICER | Impact |`);
|
|
266
|
+
owsaSection.push(`|-----------|----------|-----------|--------|`);
|
|
267
|
+
for (const r of owsaResults.slice(0, 5)) {
|
|
268
|
+
const low = isFinite(r.icer_low)
|
|
269
|
+
? `${symbol}${Math.round(r.icer_low).toLocaleString()}`
|
|
270
|
+
: "N/A";
|
|
271
|
+
const high = isFinite(r.icer_high)
|
|
272
|
+
? `${symbol}${Math.round(r.icer_high).toLocaleString()}`
|
|
273
|
+
: "N/A";
|
|
274
|
+
const impact = isFinite(r.impact)
|
|
275
|
+
? `${symbol}${Math.round(r.impact).toLocaleString()}`
|
|
276
|
+
: "N/A";
|
|
277
|
+
owsaSection.push(`| ${r.parameter} | ${low} | ${high} | ${impact} |`);
|
|
278
|
+
}
|
|
279
|
+
owsaSection.push(``);
|
|
280
|
+
}
|
|
281
|
+
const textLines = [
|
|
282
|
+
`## Cost-Effectiveness Analysis: ${params.intervention} vs ${params.comparator}`,
|
|
283
|
+
`**Indication:** ${params.indication} | **Perspective:** ${params.perspective.toUpperCase()} | **Horizon:** ${params.time_horizon}`,
|
|
284
|
+
``,
|
|
285
|
+
`### ICER Result`,
|
|
286
|
+
`**${symbol}${icerFormatted} per QALY gained**`,
|
|
287
|
+
``,
|
|
288
|
+
`**Interpretation:** ${interpretation}`,
|
|
289
|
+
``,
|
|
290
|
+
`### Base Case Summary`,
|
|
291
|
+
`| Metric | ${params.intervention} | ${params.comparator} | Incremental |`,
|
|
292
|
+
`|--------|${"-".repeat(params.intervention.length + 2)}|${"-".repeat(params.comparator.length + 2)}|-------------|`,
|
|
293
|
+
`| Total Cost | ${symbol}${Math.round(intervention_cost).toLocaleString()} | ${symbol}${Math.round(comparator_cost).toLocaleString()} | ${symbol}${Math.round(delta_cost).toLocaleString()} |`,
|
|
294
|
+
`| Total QALYs | ${intervention_qaly.toFixed(3)} | ${comparator_qaly.toFixed(3)} | ${delta_qaly.toFixed(3)} |`,
|
|
295
|
+
`| Life Years | ${intervention_lys.toFixed(2)} | ${comparator_lys.toFixed(2)} | ${incremental_lys.toFixed(2)} |`,
|
|
296
|
+
``,
|
|
297
|
+
...psaSection,
|
|
298
|
+
...owsaSection,
|
|
299
|
+
`### Model Structure`,
|
|
300
|
+
`Multi-state Markov model with half-cycle correction. Discounted at ${DISCOUNT_RATE * 100}% per NICE reference case.`,
|
|
301
|
+
`States: ${stateNames.join(", ")} | Cycles: ${nCycles} annual cycles`,
|
|
302
|
+
``,
|
|
303
|
+
`---`,
|
|
304
|
+
`> ⚠️ **Disclaimer:** This is a preliminary model for orientation purposes only. Results require validation by a qualified health economist before use in any HTA submission or payer negotiation.`,
|
|
305
|
+
``,
|
|
306
|
+
auditToMarkdown(audit),
|
|
307
|
+
].join("\n");
|
|
308
|
+
if (params.project) {
|
|
309
|
+
try {
|
|
310
|
+
const metadata = {
|
|
311
|
+
intervention: params.intervention,
|
|
312
|
+
comparator: params.comparator,
|
|
313
|
+
indication: params.indication,
|
|
314
|
+
perspective: params.perspective,
|
|
315
|
+
model_type: params.model_type ?? "markov",
|
|
316
|
+
};
|
|
317
|
+
await saveModelRun(params.project, metadata, textLines);
|
|
318
|
+
}
|
|
319
|
+
catch {
|
|
320
|
+
// fail silently — don't break the tool
|
|
321
|
+
}
|
|
322
|
+
}
|
|
323
|
+
if (outputFormat === "docx") {
|
|
324
|
+
const base64 = await contentToDocx("Cost-Effectiveness Analysis Report", textLines, audit);
|
|
325
|
+
const content = `[DOCX Report Generated]\n\nBase64-encoded DOCX (${Math.round(base64.length / 1024)}KB):\n${base64}`;
|
|
326
|
+
return { content, audit };
|
|
327
|
+
}
|
|
328
|
+
const content = textLines;
|
|
329
|
+
return { content, audit };
|
|
330
|
+
}
|
|
331
|
+
export const costEffectivenessModelToolSchema = {
|
|
332
|
+
name: "cost_effectiveness_model",
|
|
333
|
+
description: "Build a cost-utility analysis (ICER, QALY, PSA, sensitivity analysis) for a drug vs comparator. Follows ISPOR good practice guidelines and NICE reference case. Includes probabilistic sensitivity analysis (PSA), one-way sensitivity, and cost-effectiveness acceptability curve (CEAC).",
|
|
334
|
+
inputSchema: {
|
|
335
|
+
type: "object",
|
|
336
|
+
properties: {
|
|
337
|
+
intervention: { type: "string", description: "Drug or treatment name" },
|
|
338
|
+
comparator: {
|
|
339
|
+
type: "string",
|
|
340
|
+
description: "Comparator (standard of care)",
|
|
341
|
+
},
|
|
342
|
+
indication: { type: "string", description: "Disease or condition" },
|
|
343
|
+
time_horizon: {
|
|
344
|
+
type: "string",
|
|
345
|
+
description: "Modelling horizon: 'lifetime', '5yr', '10yr', or years as number",
|
|
346
|
+
},
|
|
347
|
+
perspective: { type: "string", enum: ["nhs", "us_payer", "societal"] },
|
|
348
|
+
model_type: {
|
|
349
|
+
type: "string",
|
|
350
|
+
enum: ["markov", "partsa", "decision_tree"],
|
|
351
|
+
description: "Model type. Default: markov. Use 'partsa' for oncology.",
|
|
352
|
+
},
|
|
353
|
+
clinical_inputs: {
|
|
354
|
+
type: "object",
|
|
355
|
+
properties: {
|
|
356
|
+
efficacy_delta: { type: "number" },
|
|
357
|
+
mortality_reduction: { type: "number" },
|
|
358
|
+
ae_rate: { type: "number" },
|
|
359
|
+
},
|
|
360
|
+
required: ["efficacy_delta"],
|
|
361
|
+
},
|
|
362
|
+
cost_inputs: {
|
|
363
|
+
type: "object",
|
|
364
|
+
properties: {
|
|
365
|
+
drug_cost_annual: { type: "number" },
|
|
366
|
+
admin_cost: { type: "number" },
|
|
367
|
+
ae_cost: { type: "number" },
|
|
368
|
+
comparator_cost_annual: { type: "number" },
|
|
369
|
+
},
|
|
370
|
+
required: ["drug_cost_annual", "comparator_cost_annual"],
|
|
371
|
+
},
|
|
372
|
+
utility_inputs: {
|
|
373
|
+
type: "object",
|
|
374
|
+
properties: {
|
|
375
|
+
qaly_on_treatment: { type: "number" },
|
|
376
|
+
qaly_comparator: { type: "number" },
|
|
377
|
+
},
|
|
378
|
+
},
|
|
379
|
+
run_psa: {
|
|
380
|
+
type: "boolean",
|
|
381
|
+
description: "Run probabilistic sensitivity analysis (default: true)",
|
|
382
|
+
},
|
|
383
|
+
psa_iterations: {
|
|
384
|
+
type: "number",
|
|
385
|
+
description: "PSA iterations (default: 1000, max: 10000)",
|
|
386
|
+
},
|
|
387
|
+
output_format: { type: "string", enum: ["text", "json", "docx"] },
|
|
388
|
+
project: {
|
|
389
|
+
type: "string",
|
|
390
|
+
description: "Project ID for knowledge base persistence. When set, model run is saved to ~/.heor-agent/projects/{project}/raw/models/",
|
|
391
|
+
},
|
|
392
|
+
},
|
|
393
|
+
required: [
|
|
394
|
+
"intervention",
|
|
395
|
+
"comparator",
|
|
396
|
+
"indication",
|
|
397
|
+
"time_horizon",
|
|
398
|
+
"perspective",
|
|
399
|
+
"clinical_inputs",
|
|
400
|
+
"cost_inputs",
|
|
401
|
+
],
|
|
402
|
+
},
|
|
403
|
+
};
|
|
404
|
+
//# sourceMappingURL=costEffectivenessModel.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"costEffectivenessModel.js","sourceRoot":"","sources":["../../src/tools/costEffectivenessModel.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import type { ToolResult } from "../providers/types.js";
|
|
2
|
+
export declare function handleHtaDossierPrep(rawParams: unknown): Promise<ToolResult>;
|
|
3
|
+
export declare const htaDossierPrepToolSchema: {
|
|
4
|
+
name: string;
|
|
5
|
+
description: string;
|
|
6
|
+
inputSchema: {
|
|
7
|
+
type: string;
|
|
8
|
+
properties: {
|
|
9
|
+
hta_body: {
|
|
10
|
+
type: string;
|
|
11
|
+
enum: string[];
|
|
12
|
+
description: string;
|
|
13
|
+
};
|
|
14
|
+
submission_type: {
|
|
15
|
+
type: string;
|
|
16
|
+
enum: string[];
|
|
17
|
+
description: string;
|
|
18
|
+
};
|
|
19
|
+
drug_name: {
|
|
20
|
+
type: string;
|
|
21
|
+
};
|
|
22
|
+
indication: {
|
|
23
|
+
type: string;
|
|
24
|
+
};
|
|
25
|
+
evidence_summary: {
|
|
26
|
+
description: string;
|
|
27
|
+
};
|
|
28
|
+
model_results: {
|
|
29
|
+
description: string;
|
|
30
|
+
};
|
|
31
|
+
picos: {
|
|
32
|
+
type: string;
|
|
33
|
+
description: string;
|
|
34
|
+
items: {
|
|
35
|
+
type: string;
|
|
36
|
+
properties: {
|
|
37
|
+
id: {
|
|
38
|
+
type: string;
|
|
39
|
+
description: string;
|
|
40
|
+
};
|
|
41
|
+
population: {
|
|
42
|
+
type: string;
|
|
43
|
+
};
|
|
44
|
+
comparator: {
|
|
45
|
+
type: string;
|
|
46
|
+
};
|
|
47
|
+
outcomes: {
|
|
48
|
+
type: string;
|
|
49
|
+
items: {
|
|
50
|
+
type: string;
|
|
51
|
+
};
|
|
52
|
+
};
|
|
53
|
+
};
|
|
54
|
+
required: string[];
|
|
55
|
+
};
|
|
56
|
+
};
|
|
57
|
+
output_format: {
|
|
58
|
+
type: string;
|
|
59
|
+
enum: string[];
|
|
60
|
+
};
|
|
61
|
+
project: {
|
|
62
|
+
type: string;
|
|
63
|
+
description: string;
|
|
64
|
+
};
|
|
65
|
+
};
|
|
66
|
+
required: string[];
|
|
67
|
+
};
|
|
68
|
+
};
|
|
69
|
+
//# sourceMappingURL=htaDossierPrep.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"htaDossierPrep.d.ts","sourceRoot":"","sources":["../../src/tools/htaDossierPrep.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAEV,UAAU,EAGX,MAAM,uBAAuB,CAAC;AA0Y/B,wBAAsB,oBAAoB,CACxC,SAAS,EAAE,OAAO,GACjB,OAAO,CAAC,UAAU,CAAC,CA4FrB;AAED,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAsDpC,CAAC"}
|