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.
Files changed (299) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +152 -0
  3. package/dist/audit/builder.d.ts +8 -0
  4. package/dist/audit/builder.d.ts.map +1 -0
  5. package/dist/audit/builder.js +37 -0
  6. package/dist/audit/builder.js.map +1 -0
  7. package/dist/audit/types.d.ts +30 -0
  8. package/dist/audit/types.d.ts.map +1 -0
  9. package/dist/audit/types.js +2 -0
  10. package/dist/audit/types.js.map +1 -0
  11. package/dist/formatters/docx.d.ts +5 -0
  12. package/dist/formatters/docx.d.ts.map +1 -0
  13. package/dist/formatters/docx.js +207 -0
  14. package/dist/formatters/docx.js.map +1 -0
  15. package/dist/formatters/json.d.ts +4 -0
  16. package/dist/formatters/json.d.ts.map +1 -0
  17. package/dist/formatters/json.js +4 -0
  18. package/dist/formatters/json.js.map +1 -0
  19. package/dist/formatters/markdown.d.ts +5 -0
  20. package/dist/formatters/markdown.d.ts.map +1 -0
  21. package/dist/formatters/markdown.js +50 -0
  22. package/dist/formatters/markdown.js.map +1 -0
  23. package/dist/knowledge/index.d.ts +8 -0
  24. package/dist/knowledge/index.d.ts.map +1 -0
  25. package/dist/knowledge/index.js +8 -0
  26. package/dist/knowledge/index.js.map +1 -0
  27. package/dist/knowledge/paths.d.ts +9 -0
  28. package/dist/knowledge/paths.d.ts.map +1 -0
  29. package/dist/knowledge/paths.js +35 -0
  30. package/dist/knowledge/paths.js.map +1 -0
  31. package/dist/knowledge/projectStore.d.ts +37 -0
  32. package/dist/knowledge/projectStore.d.ts.map +1 -0
  33. package/dist/knowledge/projectStore.js +112 -0
  34. package/dist/knowledge/projectStore.js.map +1 -0
  35. package/dist/knowledge/rawStore.d.ts +18 -0
  36. package/dist/knowledge/rawStore.d.ts.map +1 -0
  37. package/dist/knowledge/rawStore.js +103 -0
  38. package/dist/knowledge/rawStore.js.map +1 -0
  39. package/dist/knowledge/search.d.ts +19 -0
  40. package/dist/knowledge/search.d.ts.map +1 -0
  41. package/dist/knowledge/search.js +105 -0
  42. package/dist/knowledge/search.js.map +1 -0
  43. package/dist/knowledge/types.d.ts +6 -0
  44. package/dist/knowledge/types.d.ts.map +1 -0
  45. package/dist/knowledge/types.js +2 -0
  46. package/dist/knowledge/types.js.map +1 -0
  47. package/dist/knowledge/wikiStore.d.ts +18 -0
  48. package/dist/knowledge/wikiStore.d.ts.map +1 -0
  49. package/dist/knowledge/wikiStore.js +77 -0
  50. package/dist/knowledge/wikiStore.js.map +1 -0
  51. package/dist/knowledge/yaml.d.ts +17 -0
  52. package/dist/knowledge/yaml.d.ts.map +1 -0
  53. package/dist/knowledge/yaml.js +131 -0
  54. package/dist/knowledge/yaml.js.map +1 -0
  55. package/dist/models/distributions.d.ts +28 -0
  56. package/dist/models/distributions.d.ts.map +1 -0
  57. package/dist/models/distributions.js +99 -0
  58. package/dist/models/distributions.js.map +1 -0
  59. package/dist/models/index.d.ts +11 -0
  60. package/dist/models/index.d.ts.map +1 -0
  61. package/dist/models/index.js +7 -0
  62. package/dist/models/index.js.map +1 -0
  63. package/dist/models/markov.d.ts +42 -0
  64. package/dist/models/markov.d.ts.map +1 -0
  65. package/dist/models/markov.js +82 -0
  66. package/dist/models/markov.js.map +1 -0
  67. package/dist/models/modelUtils.d.ts +29 -0
  68. package/dist/models/modelUtils.d.ts.map +1 -0
  69. package/dist/models/modelUtils.js +139 -0
  70. package/dist/models/modelUtils.js.map +1 -0
  71. package/dist/models/owsa.d.ts +31 -0
  72. package/dist/models/owsa.d.ts.map +1 -0
  73. package/dist/models/owsa.js +103 -0
  74. package/dist/models/owsa.js.map +1 -0
  75. package/dist/models/partsa.d.ts +40 -0
  76. package/dist/models/partsa.d.ts.map +1 -0
  77. package/dist/models/partsa.js +65 -0
  78. package/dist/models/partsa.js.map +1 -0
  79. package/dist/models/psa.d.ts +33 -0
  80. package/dist/models/psa.d.ts.map +1 -0
  81. package/dist/models/psa.js +118 -0
  82. package/dist/models/psa.js.map +1 -0
  83. package/dist/providers/direct/aifa.d.ts +3 -0
  84. package/dist/providers/direct/aifa.d.ts.map +1 -0
  85. package/dist/providers/direct/aifa.js +30 -0
  86. package/dist/providers/direct/aifa.js.map +1 -0
  87. package/dist/providers/direct/allOfUs.d.ts +3 -0
  88. package/dist/providers/direct/allOfUs.d.ts.map +1 -0
  89. package/dist/providers/direct/allOfUs.js +37 -0
  90. package/dist/providers/direct/allOfUs.js.map +1 -0
  91. package/dist/providers/direct/anvisa.d.ts +3 -0
  92. package/dist/providers/direct/anvisa.d.ts.map +1 -0
  93. package/dist/providers/direct/anvisa.js +25 -0
  94. package/dist/providers/direct/anvisa.js.map +1 -0
  95. package/dist/providers/direct/biorxiv.d.ts +3 -0
  96. package/dist/providers/direct/biorxiv.d.ts.map +1 -0
  97. package/dist/providers/direct/biorxiv.js +33 -0
  98. package/dist/providers/direct/biorxiv.js.map +1 -0
  99. package/dist/providers/direct/bnf.d.ts +3 -0
  100. package/dist/providers/direct/bnf.d.ts.map +1 -0
  101. package/dist/providers/direct/bnf.js +30 -0
  102. package/dist/providers/direct/bnf.js.map +1 -0
  103. package/dist/providers/direct/cadthReviews.d.ts +3 -0
  104. package/dist/providers/direct/cadthReviews.d.ts.map +1 -0
  105. package/dist/providers/direct/cadthReviews.js +30 -0
  106. package/dist/providers/direct/cadthReviews.js.map +1 -0
  107. package/dist/providers/direct/chembl.d.ts +3 -0
  108. package/dist/providers/direct/chembl.d.ts.map +1 -0
  109. package/dist/providers/direct/chembl.js +24 -0
  110. package/dist/providers/direct/chembl.js.map +1 -0
  111. package/dist/providers/direct/citeline.d.ts +3 -0
  112. package/dist/providers/direct/citeline.d.ts.map +1 -0
  113. package/dist/providers/direct/citeline.js +50 -0
  114. package/dist/providers/direct/citeline.js.map +1 -0
  115. package/dist/providers/direct/clinicalTrials.d.ts +3 -0
  116. package/dist/providers/direct/clinicalTrials.d.ts.map +1 -0
  117. package/dist/providers/direct/clinicalTrials.js +29 -0
  118. package/dist/providers/direct/clinicalTrials.js.map +1 -0
  119. package/dist/providers/direct/cmsNadac.d.ts +3 -0
  120. package/dist/providers/direct/cmsNadac.d.ts.map +1 -0
  121. package/dist/providers/direct/cmsNadac.js +52 -0
  122. package/dist/providers/direct/cmsNadac.js.map +1 -0
  123. package/dist/providers/direct/cochrane.d.ts +3 -0
  124. package/dist/providers/direct/cochrane.d.ts.map +1 -0
  125. package/dist/providers/direct/cochrane.js +46 -0
  126. package/dist/providers/direct/cochrane.js.map +1 -0
  127. package/dist/providers/direct/conitec.d.ts +3 -0
  128. package/dist/providers/direct/conitec.d.ts.map +1 -0
  129. package/dist/providers/direct/conitec.js +25 -0
  130. package/dist/providers/direct/conitec.js.map +1 -0
  131. package/dist/providers/direct/cortellis.d.ts +3 -0
  132. package/dist/providers/direct/cortellis.d.ts.map +1 -0
  133. package/dist/providers/direct/cortellis.js +52 -0
  134. package/dist/providers/direct/cortellis.js.map +1 -0
  135. package/dist/providers/direct/datasus.d.ts +3 -0
  136. package/dist/providers/direct/datasus.d.ts.map +1 -0
  137. package/dist/providers/direct/datasus.js +30 -0
  138. package/dist/providers/direct/datasus.js.map +1 -0
  139. package/dist/providers/direct/embase.d.ts +3 -0
  140. package/dist/providers/direct/embase.d.ts.map +1 -0
  141. package/dist/providers/direct/embase.js +54 -0
  142. package/dist/providers/direct/embase.js.map +1 -0
  143. package/dist/providers/direct/fonasa.d.ts +3 -0
  144. package/dist/providers/direct/fonasa.d.ts.map +1 -0
  145. package/dist/providers/direct/fonasa.js +25 -0
  146. package/dist/providers/direct/fonasa.js.map +1 -0
  147. package/dist/providers/direct/gbaDecisions.d.ts +3 -0
  148. package/dist/providers/direct/gbaDecisions.d.ts.map +1 -0
  149. package/dist/providers/direct/gbaDecisions.js +30 -0
  150. package/dist/providers/direct/gbaDecisions.js.map +1 -0
  151. package/dist/providers/direct/googleScholar.d.ts +3 -0
  152. package/dist/providers/direct/googleScholar.d.ts.map +1 -0
  153. package/dist/providers/direct/googleScholar.js +39 -0
  154. package/dist/providers/direct/googleScholar.js.map +1 -0
  155. package/dist/providers/direct/hasTc.d.ts +3 -0
  156. package/dist/providers/direct/hasTc.d.ts.map +1 -0
  157. package/dist/providers/direct/hasTc.js +30 -0
  158. package/dist/providers/direct/hasTc.js.map +1 -0
  159. package/dist/providers/direct/hitap.d.ts +3 -0
  160. package/dist/providers/direct/hitap.d.ts.map +1 -0
  161. package/dist/providers/direct/hitap.js +30 -0
  162. package/dist/providers/direct/hitap.js.map +1 -0
  163. package/dist/providers/direct/icerReports.d.ts +3 -0
  164. package/dist/providers/direct/icerReports.d.ts.map +1 -0
  165. package/dist/providers/direct/icerReports.js +30 -0
  166. package/dist/providers/direct/icerReports.js.map +1 -0
  167. package/dist/providers/direct/iets.d.ts +3 -0
  168. package/dist/providers/direct/iets.d.ts.map +1 -0
  169. package/dist/providers/direct/iets.js +25 -0
  170. package/dist/providers/direct/iets.js.map +1 -0
  171. package/dist/providers/direct/ihmeGbd.d.ts +3 -0
  172. package/dist/providers/direct/ihmeGbd.d.ts.map +1 -0
  173. package/dist/providers/direct/ihmeGbd.js +74 -0
  174. package/dist/providers/direct/ihmeGbd.js.map +1 -0
  175. package/dist/providers/direct/index.d.ts +7 -0
  176. package/dist/providers/direct/index.d.ts.map +1 -0
  177. package/dist/providers/direct/index.js +186 -0
  178. package/dist/providers/direct/index.js.map +1 -0
  179. package/dist/providers/direct/inesss.d.ts +3 -0
  180. package/dist/providers/direct/inesss.d.ts.map +1 -0
  181. package/dist/providers/direct/inesss.js +30 -0
  182. package/dist/providers/direct/inesss.js.map +1 -0
  183. package/dist/providers/direct/iqwig.d.ts +3 -0
  184. package/dist/providers/direct/iqwig.d.ts.map +1 -0
  185. package/dist/providers/direct/iqwig.js +30 -0
  186. package/dist/providers/direct/iqwig.js.map +1 -0
  187. package/dist/providers/direct/ispor.d.ts +3 -0
  188. package/dist/providers/direct/ispor.d.ts.map +1 -0
  189. package/dist/providers/direct/ispor.js +35 -0
  190. package/dist/providers/direct/ispor.js.map +1 -0
  191. package/dist/providers/direct/nhsCosts.d.ts +3 -0
  192. package/dist/providers/direct/nhsCosts.d.ts.map +1 -0
  193. package/dist/providers/direct/nhsCosts.js +32 -0
  194. package/dist/providers/direct/nhsCosts.js.map +1 -0
  195. package/dist/providers/direct/niceTa.d.ts +3 -0
  196. package/dist/providers/direct/niceTa.d.ts.map +1 -0
  197. package/dist/providers/direct/niceTa.js +30 -0
  198. package/dist/providers/direct/niceTa.js.map +1 -0
  199. package/dist/providers/direct/oecd.d.ts +3 -0
  200. package/dist/providers/direct/oecd.d.ts.map +1 -0
  201. package/dist/providers/direct/oecd.js +102 -0
  202. package/dist/providers/direct/oecd.js.map +1 -0
  203. package/dist/providers/direct/orangeBook.d.ts +3 -0
  204. package/dist/providers/direct/orangeBook.d.ts.map +1 -0
  205. package/dist/providers/direct/orangeBook.js +48 -0
  206. package/dist/providers/direct/orangeBook.js.map +1 -0
  207. package/dist/providers/direct/paho.d.ts +3 -0
  208. package/dist/providers/direct/paho.d.ts.map +1 -0
  209. package/dist/providers/direct/paho.js +30 -0
  210. package/dist/providers/direct/paho.js.map +1 -0
  211. package/dist/providers/direct/pbacPsd.d.ts +3 -0
  212. package/dist/providers/direct/pbacPsd.d.ts.map +1 -0
  213. package/dist/providers/direct/pbacPsd.js +30 -0
  214. package/dist/providers/direct/pbacPsd.js.map +1 -0
  215. package/dist/providers/direct/pbsSchedule.d.ts +3 -0
  216. package/dist/providers/direct/pbsSchedule.d.ts.map +1 -0
  217. package/dist/providers/direct/pbsSchedule.js +37 -0
  218. package/dist/providers/direct/pbsSchedule.js.map +1 -0
  219. package/dist/providers/direct/pharmapendium.d.ts +3 -0
  220. package/dist/providers/direct/pharmapendium.d.ts.map +1 -0
  221. package/dist/providers/direct/pharmapendium.js +39 -0
  222. package/dist/providers/direct/pharmapendium.js.map +1 -0
  223. package/dist/providers/direct/proxyClient.d.ts +15 -0
  224. package/dist/providers/direct/proxyClient.d.ts.map +1 -0
  225. package/dist/providers/direct/proxyClient.js +76 -0
  226. package/dist/providers/direct/proxyClient.js.map +1 -0
  227. package/dist/providers/direct/pssru.d.ts +3 -0
  228. package/dist/providers/direct/pssru.d.ts.map +1 -0
  229. package/dist/providers/direct/pssru.js +33 -0
  230. package/dist/providers/direct/pssru.js.map +1 -0
  231. package/dist/providers/direct/pubmed.d.ts +3 -0
  232. package/dist/providers/direct/pubmed.d.ts.map +1 -0
  233. package/dist/providers/direct/pubmed.js +73 -0
  234. package/dist/providers/direct/pubmed.js.map +1 -0
  235. package/dist/providers/direct/purpleBook.d.ts +3 -0
  236. package/dist/providers/direct/purpleBook.d.ts.map +1 -0
  237. package/dist/providers/direct/purpleBook.js +52 -0
  238. package/dist/providers/direct/purpleBook.js.map +1 -0
  239. package/dist/providers/direct/tlv.d.ts +3 -0
  240. package/dist/providers/direct/tlv.d.ts.map +1 -0
  241. package/dist/providers/direct/tlv.js +30 -0
  242. package/dist/providers/direct/tlv.js.map +1 -0
  243. package/dist/providers/direct/whoGho.d.ts +3 -0
  244. package/dist/providers/direct/whoGho.d.ts.map +1 -0
  245. package/dist/providers/direct/whoGho.js +51 -0
  246. package/dist/providers/direct/whoGho.js.map +1 -0
  247. package/dist/providers/direct/worldBank.d.ts +3 -0
  248. package/dist/providers/direct/worldBank.d.ts.map +1 -0
  249. package/dist/providers/direct/worldBank.js +54 -0
  250. package/dist/providers/direct/worldBank.js.map +1 -0
  251. package/dist/providers/factory.d.ts +3 -0
  252. package/dist/providers/factory.d.ts.map +1 -0
  253. package/dist/providers/factory.js +8 -0
  254. package/dist/providers/factory.js.map +1 -0
  255. package/dist/providers/hosted/index.d.ts +9 -0
  256. package/dist/providers/hosted/index.d.ts.map +1 -0
  257. package/dist/providers/hosted/index.js +16 -0
  258. package/dist/providers/hosted/index.js.map +1 -0
  259. package/dist/providers/types.d.ts +176 -0
  260. package/dist/providers/types.d.ts.map +1 -0
  261. package/dist/providers/types.js +2 -0
  262. package/dist/providers/types.js.map +1 -0
  263. package/dist/server.d.ts +3 -0
  264. package/dist/server.d.ts.map +1 -0
  265. package/dist/server.js +80 -0
  266. package/dist/server.js.map +1 -0
  267. package/dist/tools/costEffectivenessModel.d.ts +98 -0
  268. package/dist/tools/costEffectivenessModel.d.ts.map +1 -0
  269. package/dist/tools/costEffectivenessModel.js +404 -0
  270. package/dist/tools/costEffectivenessModel.js.map +1 -0
  271. package/dist/tools/htaDossierPrep.d.ts +69 -0
  272. package/dist/tools/htaDossierPrep.d.ts.map +1 -0
  273. package/dist/tools/htaDossierPrep.js +399 -0
  274. package/dist/tools/htaDossierPrep.js.map +1 -0
  275. package/dist/tools/knowledgeRead.d.ts +21 -0
  276. package/dist/tools/knowledgeRead.d.ts.map +1 -0
  277. package/dist/tools/knowledgeRead.js +38 -0
  278. package/dist/tools/knowledgeRead.js.map +1 -0
  279. package/dist/tools/knowledgeSearch.d.ts +37 -0
  280. package/dist/tools/knowledgeSearch.d.ts.map +1 -0
  281. package/dist/tools/knowledgeSearch.js +51 -0
  282. package/dist/tools/knowledgeSearch.js.map +1 -0
  283. package/dist/tools/knowledgeWrite.d.ts +25 -0
  284. package/dist/tools/knowledgeWrite.d.ts.map +1 -0
  285. package/dist/tools/knowledgeWrite.js +40 -0
  286. package/dist/tools/knowledgeWrite.js.map +1 -0
  287. package/dist/tools/literatureSearch.d.ts +42 -0
  288. package/dist/tools/literatureSearch.d.ts.map +1 -0
  289. package/dist/tools/literatureSearch.js +142 -0
  290. package/dist/tools/literatureSearch.js.map +1 -0
  291. package/dist/tools/metabolicProfile.d.ts +19 -0
  292. package/dist/tools/metabolicProfile.d.ts.map +1 -0
  293. package/dist/tools/metabolicProfile.js +150 -0
  294. package/dist/tools/metabolicProfile.js.map +1 -0
  295. package/dist/tools/projectCreate.d.ts +37 -0
  296. package/dist/tools/projectCreate.d.ts.map +1 -0
  297. package/dist/tools/projectCreate.js +61 -0
  298. package/dist/tools/projectCreate.js.map +1 -0
  299. 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"}