heor-agent-mcp 1.3.1 → 1.4.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/dist/data/niceTaPrecedents.d.ts +72 -0
- package/dist/data/niceTaPrecedents.d.ts.map +1 -0
- package/dist/data/niceTaPrecedents.js +152 -0
- package/dist/data/niceTaPrecedents.js.map +1 -0
- package/dist/jca/scopeEligibility.d.ts +55 -0
- package/dist/jca/scopeEligibility.d.ts.map +1 -0
- package/dist/jca/scopeEligibility.js +56 -0
- package/dist/jca/scopeEligibility.js.map +1 -0
- package/dist/server.js +5 -0
- package/dist/server.js.map +1 -1
- package/dist/tools/htaDossierPrep.d.ts.map +1 -1
- package/dist/tools/htaDossierPrep.js +34 -0
- package/dist/tools/htaDossierPrep.js.map +1 -1
- package/dist/tools/htaWorkflow.d.ts +299 -0
- package/dist/tools/htaWorkflow.d.ts.map +1 -0
- package/dist/tools/htaWorkflow.js +580 -0
- package/dist/tools/htaWorkflow.js.map +1 -0
- package/dist/tools/jcaPicoScope.d.ts.map +1 -1
- package/dist/tools/jcaPicoScope.js +58 -0
- package/dist/tools/jcaPicoScope.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* NICE Technology Appraisal precedent lookup.
|
|
3
|
+
*
|
|
4
|
+
* Maps drug-indication pairs to the relevant NICE TA number(s).
|
|
5
|
+
* Used by `hta_dossier` (NICE branch) to surface known precedents
|
|
6
|
+
* upfront and to catch user prompt errors of the form
|
|
7
|
+
* "cite TA902 for HFrEF" (TA902 is HFpEF/HFmrEF; TA679 is HFrEF).
|
|
8
|
+
*
|
|
9
|
+
* Verification policy:
|
|
10
|
+
* - Each entry is the canonical TA at time of writing (2026-05).
|
|
11
|
+
* - Indications use lowercase free-form keywords; matching is
|
|
12
|
+
* substring-based to tolerate user phrasing variation.
|
|
13
|
+
* - When the user passes a different TA number in prose, the
|
|
14
|
+
* tool surfaces both the user's number and the canonical one
|
|
15
|
+
* without auto-overriding (we annotate the mismatch but
|
|
16
|
+
* defer to user judgement).
|
|
17
|
+
*
|
|
18
|
+
* To add an entry: append to PRECEDENTS, keep keywords lowercase,
|
|
19
|
+
* keep `confidence: "high"` only for personally-verified entries.
|
|
20
|
+
*
|
|
21
|
+
* See design log #16.
|
|
22
|
+
*/
|
|
23
|
+
export interface NicePrecedent {
|
|
24
|
+
ta_number: string;
|
|
25
|
+
drug: string;
|
|
26
|
+
indication_keywords: string[];
|
|
27
|
+
title: string;
|
|
28
|
+
date: string;
|
|
29
|
+
url: string;
|
|
30
|
+
notes?: string;
|
|
31
|
+
confidence: "high" | "medium";
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* v1 list — top NICE TAs likely to be cited in HEOR submissions
|
|
35
|
+
* for the indications HEORAgent is most often used for. Expand
|
|
36
|
+
* over time. ~50 entries is enough to catch the common confusions
|
|
37
|
+
* (HFrEF vs HFpEF, indication-specific TAs, biosimilar splits).
|
|
38
|
+
*/
|
|
39
|
+
export declare const PRECEDENTS: ReadonlyArray<NicePrecedent>;
|
|
40
|
+
/**
|
|
41
|
+
* Look up NICE TA precedents that match the given drug and indication
|
|
42
|
+
* substrings. Returns 0..n matches, ranked by drug match first then
|
|
43
|
+
* by number of indication keyword matches.
|
|
44
|
+
*
|
|
45
|
+
* Matching is intentionally loose: we want to catch "HFrEF",
|
|
46
|
+
* "heart failure with reduced ejection fraction", and "hf with
|
|
47
|
+
* reduced EF" all matching TA679. Both drug name and indication
|
|
48
|
+
* are lowercased before substring comparison.
|
|
49
|
+
*/
|
|
50
|
+
export declare function findPrecedents(drug: string, indication: string): NicePrecedent[];
|
|
51
|
+
/**
|
|
52
|
+
* Detect when a user-supplied TA number is mismatched against the
|
|
53
|
+
* canonical TA for the indication. Returns a structured warning
|
|
54
|
+
* payload the caller can surface in the dossier output and audit.
|
|
55
|
+
*
|
|
56
|
+
* Example: user prompt "cite TA902 for dapagliflozin HFrEF"
|
|
57
|
+
* → detects TA902 in prose, looks up canonical TA for
|
|
58
|
+
* dapagliflozin+HFrEF (TA679), and returns a warning recommending
|
|
59
|
+
* correction.
|
|
60
|
+
*/
|
|
61
|
+
export interface PrecedentMismatch {
|
|
62
|
+
user_supplied: string;
|
|
63
|
+
canonical: string;
|
|
64
|
+
user_supplied_url?: string;
|
|
65
|
+
canonical_url: string;
|
|
66
|
+
drug: string;
|
|
67
|
+
indication: string;
|
|
68
|
+
explanation: string;
|
|
69
|
+
}
|
|
70
|
+
export declare function detectMismatch(drug: string, indication: string, userSuppliedTaNumber: string | null | undefined): PrecedentMismatch | null;
|
|
71
|
+
export declare function extractTaNumber(text: string): string | null;
|
|
72
|
+
//# sourceMappingURL=niceTaPrecedents.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"niceTaPrecedents.d.ts","sourceRoot":"","sources":["../../src/data/niceTaPrecedents.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,mBAAmB,EAAE,MAAM,EAAE,CAAC;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,GAAG,QAAQ,CAAC;CAC/B;AAED;;;;;GAKG;AACH,eAAO,MAAM,UAAU,EAAE,aAAa,CAAC,aAAa,CAuEnD,CAAC;AAEF;;;;;;;;;GASG;AACH,wBAAgB,cAAc,CAC5B,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,MAAM,GACjB,aAAa,EAAE,CAkBjB;AAED;;;;;;;;;GASG;AACH,MAAM,WAAW,iBAAiB;IAChC,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,aAAa,EAAE,MAAM,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,wBAAgB,cAAc,CAC5B,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,MAAM,EAClB,oBAAoB,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAC9C,iBAAiB,GAAG,IAAI,CAiC1B;AAQD,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAG3D"}
|
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* v1 list — top NICE TAs likely to be cited in HEOR submissions
|
|
3
|
+
* for the indications HEORAgent is most often used for. Expand
|
|
4
|
+
* over time. ~50 entries is enough to catch the common confusions
|
|
5
|
+
* (HFrEF vs HFpEF, indication-specific TAs, biosimilar splits).
|
|
6
|
+
*/
|
|
7
|
+
export const PRECEDENTS = [
|
|
8
|
+
// SGLT2 inhibitors in heart failure — the TA679 / TA902 confusion
|
|
9
|
+
// that the management benchmark exposed.
|
|
10
|
+
{
|
|
11
|
+
ta_number: "TA679",
|
|
12
|
+
drug: "dapagliflozin",
|
|
13
|
+
indication_keywords: ["hfref", "heart failure with reduced ejection fraction", "reduced ejection fraction"],
|
|
14
|
+
title: "Dapagliflozin for treating chronic heart failure with reduced ejection fraction",
|
|
15
|
+
date: "2021-02",
|
|
16
|
+
url: "https://www.nice.org.uk/guidance/ta679",
|
|
17
|
+
notes: "DO NOT confuse with TA902 — TA902 covers HFpEF/HFmrEF, not HFrEF.",
|
|
18
|
+
confidence: "high",
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
ta_number: "TA902",
|
|
22
|
+
drug: "dapagliflozin",
|
|
23
|
+
indication_keywords: ["hfpef", "hfmref", "preserved ejection fraction", "mildly reduced ejection fraction"],
|
|
24
|
+
title: "Dapagliflozin for treating chronic heart failure with preserved or mildly reduced ejection fraction",
|
|
25
|
+
date: "2023-06",
|
|
26
|
+
url: "https://www.nice.org.uk/guidance/ta902",
|
|
27
|
+
notes: "DO NOT confuse with TA679 — TA679 covers HFrEF.",
|
|
28
|
+
confidence: "high",
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
ta_number: "TA773",
|
|
32
|
+
drug: "empagliflozin",
|
|
33
|
+
indication_keywords: ["hfref", "heart failure with reduced ejection fraction"],
|
|
34
|
+
title: "Empagliflozin for treating chronic heart failure with reduced ejection fraction",
|
|
35
|
+
date: "2022-03",
|
|
36
|
+
url: "https://www.nice.org.uk/guidance/ta773",
|
|
37
|
+
confidence: "high",
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
ta_number: "TA929",
|
|
41
|
+
drug: "empagliflozin",
|
|
42
|
+
indication_keywords: ["hfpef", "hfmref", "preserved ejection fraction", "mildly reduced ejection fraction"],
|
|
43
|
+
title: "Empagliflozin for treating chronic heart failure with preserved or mildly reduced ejection fraction",
|
|
44
|
+
date: "2023-09",
|
|
45
|
+
url: "https://www.nice.org.uk/guidance/ta929",
|
|
46
|
+
confidence: "high",
|
|
47
|
+
},
|
|
48
|
+
// SGLT2i in CKD
|
|
49
|
+
{
|
|
50
|
+
ta_number: "TA775",
|
|
51
|
+
drug: "dapagliflozin",
|
|
52
|
+
indication_keywords: ["chronic kidney disease", "ckd"],
|
|
53
|
+
title: "Dapagliflozin for treating chronic kidney disease",
|
|
54
|
+
date: "2022-03",
|
|
55
|
+
url: "https://www.nice.org.uk/guidance/ta775",
|
|
56
|
+
confidence: "high",
|
|
57
|
+
},
|
|
58
|
+
// SGLT2i in T2D
|
|
59
|
+
{
|
|
60
|
+
ta_number: "TA288",
|
|
61
|
+
drug: "dapagliflozin",
|
|
62
|
+
indication_keywords: ["type 2 diabetes", "t2dm", "type-2 diabetes"],
|
|
63
|
+
title: "Dapagliflozin in combination therapy for treating type 2 diabetes",
|
|
64
|
+
date: "2013-06",
|
|
65
|
+
url: "https://www.nice.org.uk/guidance/ta288",
|
|
66
|
+
confidence: "high",
|
|
67
|
+
},
|
|
68
|
+
// ARNI in HF
|
|
69
|
+
{
|
|
70
|
+
ta_number: "TA388",
|
|
71
|
+
drug: "sacubitril valsartan",
|
|
72
|
+
indication_keywords: ["heart failure", "hfref", "reduced ejection fraction"],
|
|
73
|
+
title: "Sacubitril valsartan for treating symptomatic chronic heart failure with reduced ejection fraction",
|
|
74
|
+
date: "2016-04",
|
|
75
|
+
url: "https://www.nice.org.uk/guidance/ta388",
|
|
76
|
+
confidence: "high",
|
|
77
|
+
},
|
|
78
|
+
];
|
|
79
|
+
/**
|
|
80
|
+
* Look up NICE TA precedents that match the given drug and indication
|
|
81
|
+
* substrings. Returns 0..n matches, ranked by drug match first then
|
|
82
|
+
* by number of indication keyword matches.
|
|
83
|
+
*
|
|
84
|
+
* Matching is intentionally loose: we want to catch "HFrEF",
|
|
85
|
+
* "heart failure with reduced ejection fraction", and "hf with
|
|
86
|
+
* reduced EF" all matching TA679. Both drug name and indication
|
|
87
|
+
* are lowercased before substring comparison.
|
|
88
|
+
*/
|
|
89
|
+
export function findPrecedents(drug, indication) {
|
|
90
|
+
const drugLower = drug.toLowerCase().trim();
|
|
91
|
+
const indicationLower = indication.toLowerCase().trim();
|
|
92
|
+
if (!drugLower || !indicationLower)
|
|
93
|
+
return [];
|
|
94
|
+
const scored = PRECEDENTS.map((p) => {
|
|
95
|
+
const drugMatch = drugLower.includes(p.drug) || p.drug.includes(drugLower);
|
|
96
|
+
if (!drugMatch)
|
|
97
|
+
return { p, score: 0 };
|
|
98
|
+
const matchedKeywords = p.indication_keywords.filter((kw) => indicationLower.includes(kw));
|
|
99
|
+
return { p, score: matchedKeywords.length };
|
|
100
|
+
});
|
|
101
|
+
return scored
|
|
102
|
+
.filter((s) => s.score > 0)
|
|
103
|
+
.sort((a, b) => b.score - a.score)
|
|
104
|
+
.map((s) => s.p);
|
|
105
|
+
}
|
|
106
|
+
export function detectMismatch(drug, indication, userSuppliedTaNumber) {
|
|
107
|
+
if (!userSuppliedTaNumber)
|
|
108
|
+
return null;
|
|
109
|
+
const userTa = userSuppliedTaNumber.trim().toUpperCase();
|
|
110
|
+
const canonical = findPrecedents(drug, indication);
|
|
111
|
+
if (canonical.length === 0)
|
|
112
|
+
return null;
|
|
113
|
+
const top = canonical[0];
|
|
114
|
+
if (top.ta_number.toUpperCase() === userTa)
|
|
115
|
+
return null;
|
|
116
|
+
// Check whether the user-supplied TA exists in our table for any
|
|
117
|
+
// OTHER indication of the same drug — if so, we can give a much
|
|
118
|
+
// more informative explanation.
|
|
119
|
+
const userTaEntry = PRECEDENTS.find((p) => p.ta_number.toUpperCase() === userTa);
|
|
120
|
+
let explanation;
|
|
121
|
+
if (userTaEntry) {
|
|
122
|
+
explanation =
|
|
123
|
+
`User cited ${userTa} (${userTaEntry.title}) but the canonical NICE TA for ` +
|
|
124
|
+
`"${drug} ${indication}" is ${top.ta_number} (${top.title}). ` +
|
|
125
|
+
`${userTaEntry.notes ?? ""} ${top.notes ?? ""}`.trim();
|
|
126
|
+
}
|
|
127
|
+
else {
|
|
128
|
+
explanation =
|
|
129
|
+
`User cited ${userTa} but the canonical NICE TA for ` +
|
|
130
|
+
`"${drug} ${indication}" is ${top.ta_number} (${top.title}).`;
|
|
131
|
+
}
|
|
132
|
+
return {
|
|
133
|
+
user_supplied: userTa,
|
|
134
|
+
canonical: top.ta_number,
|
|
135
|
+
user_supplied_url: userTaEntry?.url,
|
|
136
|
+
canonical_url: top.url,
|
|
137
|
+
drug,
|
|
138
|
+
indication,
|
|
139
|
+
explanation,
|
|
140
|
+
};
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* Extract a TA number (e.g. "TA902") from arbitrary prose. Returns
|
|
144
|
+
* the first match or null. Used to scan e.g. evidence_summary for
|
|
145
|
+
* a TA number the user may have referenced informally.
|
|
146
|
+
*/
|
|
147
|
+
const TA_NUMBER_REGEX = /\b(TA\d{2,4})\b/i;
|
|
148
|
+
export function extractTaNumber(text) {
|
|
149
|
+
const m = text.match(TA_NUMBER_REGEX);
|
|
150
|
+
return m ? m[1].toUpperCase() : null;
|
|
151
|
+
}
|
|
152
|
+
//# sourceMappingURL=niceTaPrecedents.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"niceTaPrecedents.js","sourceRoot":"","sources":["../../src/data/niceTaPrecedents.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* EU JCA scope eligibility checker.
|
|
3
|
+
*
|
|
4
|
+
* Per Regulation (EU) 2021/2282, JCA scope is phased:
|
|
5
|
+
* • From 12 January 2025: oncology medicinal products + ATMPs with
|
|
6
|
+
* new active substances.
|
|
7
|
+
* • From 13 January 2028: orphan medicinal products added.
|
|
8
|
+
* • From 13 January 2030: all new medicinal products.
|
|
9
|
+
*
|
|
10
|
+
* Therefore, a request to produce a JCA PICO matrix for, e.g.,
|
|
11
|
+
* dapagliflozin in HFrEF (cardiovascular, small molecule) is asking
|
|
12
|
+
* for something that does not exist today and won't until 2030.
|
|
13
|
+
*
|
|
14
|
+
* This module exposes a pure function the `jca_pico_scope` tool calls
|
|
15
|
+
* before producing any output, so the tool can:
|
|
16
|
+
* (a) refuse to produce a fabricated JCA matrix when the indication
|
|
17
|
+
* is not in scope, AND
|
|
18
|
+
* (b) explain the scope rule, the canonical Regulation reference,
|
|
19
|
+
* and the year the indication WILL be in scope.
|
|
20
|
+
*
|
|
21
|
+
* This closes the gap that Claude.ai surfaced during the management
|
|
22
|
+
* benchmark — Claude.ai dynamically discovered the JCA scope reality
|
|
23
|
+
* via web search; HEORAgent now has it baked in.
|
|
24
|
+
*
|
|
25
|
+
* See design log #16.
|
|
26
|
+
*/
|
|
27
|
+
import type { IndicationCategory } from "./types.js";
|
|
28
|
+
export type DrugClassForScope = "monoclonal_antibody" | "small_molecule" | "atmp_cell" | "atmp_gene" | "atmp_tissue" | "biosimilar" | "vaccine" | "radiopharmaceutical" | "other";
|
|
29
|
+
export interface ScopeEligibility {
|
|
30
|
+
/** True if the indication-drug-class combo is currently in JCA scope. */
|
|
31
|
+
in_scope: boolean;
|
|
32
|
+
/** Year (Jan 13) the combo enters JCA scope per Reg 2021/2282. */
|
|
33
|
+
in_scope_from_year: 2025 | 2028 | 2030;
|
|
34
|
+
/** Phase that gates scope entry. */
|
|
35
|
+
phase: "oncology_atmp" | "orphan" | "all_medicinal";
|
|
36
|
+
/** Human-readable explanation suitable for surfacing in tool output. */
|
|
37
|
+
explanation: string;
|
|
38
|
+
/** Canonical Regulation references. */
|
|
39
|
+
references: string[];
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Determine whether a drug-indication combo is currently in JCA scope.
|
|
43
|
+
*
|
|
44
|
+
* Inputs are the same shape `jca_pico_scope` already collects, so the
|
|
45
|
+
* tool can call this with no schema change. The optional `is_orphan`
|
|
46
|
+
* flag tells us whether the product is orphan-designated; when omitted,
|
|
47
|
+
* we conservatively assume not orphan so the function never falsely
|
|
48
|
+
* places a combo in 2028 scope.
|
|
49
|
+
*/
|
|
50
|
+
export declare function checkScopeEligibility(args: {
|
|
51
|
+
indication_category: IndicationCategory;
|
|
52
|
+
drug_class: DrugClassForScope;
|
|
53
|
+
is_orphan?: boolean;
|
|
54
|
+
}): ScopeEligibility;
|
|
55
|
+
//# sourceMappingURL=scopeEligibility.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scopeEligibility.d.ts","sourceRoot":"","sources":["../../src/jca/scopeEligibility.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAErD,MAAM,MAAM,iBAAiB,GACzB,qBAAqB,GACrB,gBAAgB,GAChB,WAAW,GACX,WAAW,GACX,aAAa,GACb,YAAY,GACZ,SAAS,GACT,qBAAqB,GACrB,OAAO,CAAC;AAEZ,MAAM,WAAW,gBAAgB;IAC/B,yEAAyE;IACzE,QAAQ,EAAE,OAAO,CAAC;IAClB,kEAAkE;IAClE,kBAAkB,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;IACvC,oCAAoC;IACpC,KAAK,EAAE,eAAe,GAAG,QAAQ,GAAG,eAAe,CAAC;IACpD,wEAAwE;IACxE,WAAW,EAAE,MAAM,CAAC;IACpB,uCAAuC;IACvC,UAAU,EAAE,MAAM,EAAE,CAAC;CACtB;AAED;;;;;;;;GAQG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE;IAC1C,mBAAmB,EAAE,kBAAkB,CAAC;IACxC,UAAU,EAAE,iBAAiB,CAAC;IAC9B,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB,GAAG,gBAAgB,CAqDnB"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Determine whether a drug-indication combo is currently in JCA scope.
|
|
3
|
+
*
|
|
4
|
+
* Inputs are the same shape `jca_pico_scope` already collects, so the
|
|
5
|
+
* tool can call this with no schema change. The optional `is_orphan`
|
|
6
|
+
* flag tells us whether the product is orphan-designated; when omitted,
|
|
7
|
+
* we conservatively assume not orphan so the function never falsely
|
|
8
|
+
* places a combo in 2028 scope.
|
|
9
|
+
*/
|
|
10
|
+
export function checkScopeEligibility(args) {
|
|
11
|
+
const refs = [
|
|
12
|
+
"Regulation (EU) 2021/2282 (HTA Regulation), Article 7 — phased scope.",
|
|
13
|
+
"EU Implementing Regulation 2024/1381 — JCA procedural rules.",
|
|
14
|
+
"European Commission factsheet, JCA for Medicinal Products (Jan 2025): https://health.ec.europa.eu/document/download/ced91156-ffe1-472d-85eb-aa6a91dd707e_en?filename=hta_htar_factsheet-jca_en.pdf",
|
|
15
|
+
];
|
|
16
|
+
// Phase 1 (in scope NOW, since 12 Jan 2025): oncology medicinal
|
|
17
|
+
// products + ATMP-class drugs (cell, gene, tissue) with new
|
|
18
|
+
// active substances.
|
|
19
|
+
const isOncology = args.indication_category === "oncology_nsclc" ||
|
|
20
|
+
args.indication_category === "oncology_other";
|
|
21
|
+
const isAtmp = args.drug_class === "atmp_cell" ||
|
|
22
|
+
args.drug_class === "atmp_gene" ||
|
|
23
|
+
args.drug_class === "atmp_tissue";
|
|
24
|
+
if (isOncology || isAtmp) {
|
|
25
|
+
return {
|
|
26
|
+
in_scope: true,
|
|
27
|
+
in_scope_from_year: 2025,
|
|
28
|
+
phase: "oncology_atmp",
|
|
29
|
+
explanation: "In JCA scope since 12 January 2025 (Phase 1: oncology medicinal products + ATMPs with new active substances).",
|
|
30
|
+
references: refs,
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
// Phase 2 (in scope from 13 Jan 2028): orphan-designated medicinal
|
|
34
|
+
// products. We treat this conservatively — only flag in-scope=true
|
|
35
|
+
// for orphan when the user explicitly sets is_orphan AND we're
|
|
36
|
+
// already past 2028. Since we can't predict the future, we always
|
|
37
|
+
// return out-of-scope today but with the right "in_scope_from_year".
|
|
38
|
+
if (args.is_orphan === true) {
|
|
39
|
+
return {
|
|
40
|
+
in_scope: false,
|
|
41
|
+
in_scope_from_year: 2028,
|
|
42
|
+
phase: "orphan",
|
|
43
|
+
explanation: "Orphan-designated medicinal products enter JCA scope from 13 January 2028 (Phase 2 of Reg 2021/2282). Until then, this indication is assessed at the national level only — produce a consolidated national-HTA PICO matrix instead.",
|
|
44
|
+
references: refs,
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
// Phase 3 (in scope from 13 Jan 2030): all new medicinal products.
|
|
48
|
+
return {
|
|
49
|
+
in_scope: false,
|
|
50
|
+
in_scope_from_year: 2030,
|
|
51
|
+
phase: "all_medicinal",
|
|
52
|
+
explanation: "Cardiovascular, metabolic, respiratory, neurology, infectious disease, rheumatology, IBD, and other non-oncology / non-ATMP indications enter JCA scope from 13 January 2030 (Phase 3 of Reg 2021/2282). Until then, this indication is assessed at the national level only — produce a consolidated national-HTA PICO matrix instead.",
|
|
53
|
+
references: refs,
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
//# sourceMappingURL=scopeEligibility.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scopeEligibility.js","sourceRoot":"","sources":["../../src/jca/scopeEligibility.ts"],"names":[],"mappings":"AAoDA;;;;;;;;GAQG;AACH,MAAM,UAAU,qBAAqB,CAAC,IAIrC;IACC,MAAM,IAAI,GAAG;QACX,uEAAuE;QACvE,8DAA8D;QAC9D,oMAAoM;KACrM,CAAC;IAEF,gEAAgE;IAChE,4DAA4D;IAC5D,qBAAqB;IACrB,MAAM,UAAU,GACd,IAAI,CAAC,mBAAmB,KAAK,gBAAgB;QAC7C,IAAI,CAAC,mBAAmB,KAAK,gBAAgB,CAAC;IAChD,MAAM,MAAM,GACV,IAAI,CAAC,UAAU,KAAK,WAAW;QAC/B,IAAI,CAAC,UAAU,KAAK,WAAW;QAC/B,IAAI,CAAC,UAAU,KAAK,aAAa,CAAC;IACpC,IAAI,UAAU,IAAI,MAAM,EAAE,CAAC;QACzB,OAAO;YACL,QAAQ,EAAE,IAAI;YACd,kBAAkB,EAAE,IAAI;YACxB,KAAK,EAAE,eAAe;YACtB,WAAW,EACT,+GAA+G;YACjH,UAAU,EAAE,IAAI;SACjB,CAAC;IACJ,CAAC;IAED,mEAAmE;IACnE,mEAAmE;IACnE,+DAA+D;IAC/D,kEAAkE;IAClE,qEAAqE;IACrE,IAAI,IAAI,CAAC,SAAS,KAAK,IAAI,EAAE,CAAC;QAC5B,OAAO;YACL,QAAQ,EAAE,KAAK;YACf,kBAAkB,EAAE,IAAI;YACxB,KAAK,EAAE,QAAQ;YACf,WAAW,EACT,qOAAqO;YACvO,UAAU,EAAE,IAAI;SACjB,CAAC;IACJ,CAAC;IAED,mEAAmE;IACnE,OAAO;QACL,QAAQ,EAAE,KAAK;QACf,kBAAkB,EAAE,IAAI;QACxB,KAAK,EAAE,eAAe;QACtB,WAAW,EACT,wUAAwU;QAC1U,UAAU,EAAE,IAAI;KACjB,CAAC;AACJ,CAAC"}
|
package/dist/server.js
CHANGED
|
@@ -27,6 +27,7 @@ import { handleUtilityValueSet, utilityValueSetToolSchema, } from "./tools/utili
|
|
|
27
27
|
import { handleItcFeasibility, itcFeasibilityToolSchema, } from "./tools/itcFeasibility.js";
|
|
28
28
|
import { handleExamples, examplesToolSchema } from "./tools/examples.js";
|
|
29
29
|
import { handleMaicWorkflow, maicWorkflowToolSchema, } from "./tools/maicWorkflow.js";
|
|
30
|
+
import { handleHtaWorkflow, htaWorkflowToolSchema, } from "./tools/htaWorkflow.js";
|
|
30
31
|
import { handlePvClassify, pvClassifyToolSchema } from "./tools/pvClassify.js";
|
|
31
32
|
import { handleJcaPicoScope, jcaPicoScopeToolSchema, } from "./tools/jcaPicoScope.js";
|
|
32
33
|
import { handlePvSignalWorkflow, pvSignalWorkflowToolSchema, } from "./tools/pvSignalWorkflow.js";
|
|
@@ -164,6 +165,7 @@ function createMcpServer(surfaceRef = { value: "direct_mcp" }, sessionIdRef = {
|
|
|
164
165
|
pvClassifyToolSchema,
|
|
165
166
|
jcaPicoScopeToolSchema,
|
|
166
167
|
pvSignalWorkflowToolSchema,
|
|
168
|
+
htaWorkflowToolSchema,
|
|
167
169
|
],
|
|
168
170
|
}));
|
|
169
171
|
server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
@@ -238,6 +240,9 @@ function createMcpServer(surfaceRef = { value: "direct_mcp" }, sessionIdRef = {
|
|
|
238
240
|
case "pv.signal_workflow":
|
|
239
241
|
result = await handlePvSignalWorkflow(args);
|
|
240
242
|
break;
|
|
243
|
+
case "hta.workflow":
|
|
244
|
+
result = await handleHtaWorkflow(args);
|
|
245
|
+
break;
|
|
241
246
|
default:
|
|
242
247
|
trackToolCall(name, Date.now() - callStart, "error", sessionIdRef.value || undefined, {
|
|
243
248
|
surface: surfaceRef.value,
|
package/dist/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +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;
|
|
1
|
+
{"version":3,"file":"htaDossierPrep.d.ts","sourceRoot":"","sources":["../../src/tools/htaDossierPrep.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAEV,UAAU,EAGX,MAAM,uBAAuB,CAAC;AA64B/B,wBAAsB,oBAAoB,CACxC,SAAS,EAAE,OAAO,GACjB,OAAO,CAAC,UAAU,CAAC,CAuMrB;AAED,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAyFpC,CAAC"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
2
|
import { LiteratureResultSchema, RobResultsSchema, CEModelResultSchema, } from "../schemas/dossierInputSchemas.js";
|
|
3
|
+
import { detectMismatch, extractTaNumber, findPrecedents, } from "../data/niceTaPrecedents.js";
|
|
3
4
|
const DossierSchema = z.object({
|
|
4
5
|
hta_body: z.enum(["nice", "ema", "fda", "iqwig", "has", "jca", "gvd"]),
|
|
5
6
|
submission_type: z.enum([
|
|
@@ -674,6 +675,39 @@ export async function handleHtaDossierPrep(rawParams) {
|
|
|
674
675
|
lines.push(`## ${params.hta_body.toUpperCase()} ${params.submission_type.toUpperCase()} Dossier Draft`);
|
|
675
676
|
lines.push(`**Drug:** ${params.drug_name} | **Indication:** ${params.indication}`);
|
|
676
677
|
lines.push(`**Template:** ${methodology}\n`);
|
|
678
|
+
// ── NICE TA precedent surfacing (closes the TA902/TA679 gap
|
|
679
|
+
// revealed by the management benchmark — see design log #16).
|
|
680
|
+
// For NICE submissions, we look up the canonical TA for the
|
|
681
|
+
// drug-indication and emit it upfront. If the user passed a
|
|
682
|
+
// different TA number anywhere in their evidence_summary
|
|
683
|
+
// prose, we flag the mismatch with both URLs so the user
|
|
684
|
+
// can choose the correct one rather than silently overriding.
|
|
685
|
+
if (params.hta_body === "nice") {
|
|
686
|
+
const matches = findPrecedents(params.drug_name, params.indication);
|
|
687
|
+
if (matches.length > 0) {
|
|
688
|
+
const top = matches[0];
|
|
689
|
+
lines.push(`### Relevant NICE Technology Appraisal`);
|
|
690
|
+
lines.push(`- **${top.ta_number}** — ${top.title}`);
|
|
691
|
+
lines.push(`- Date: ${top.date} · URL: ${top.url}`);
|
|
692
|
+
if (top.notes)
|
|
693
|
+
lines.push(`- ⚠️ ${top.notes}`);
|
|
694
|
+
lines.push("");
|
|
695
|
+
audit = addAssumption(audit, `Canonical NICE TA precedent surfaced: ${top.ta_number} (${top.title}).`);
|
|
696
|
+
// Scan user-supplied evidence prose for a competing TA number.
|
|
697
|
+
// This catches the "cite TA902 for HFrEF" prompt error pattern.
|
|
698
|
+
if (typeof params.evidence_summary === "string") {
|
|
699
|
+
const userTa = extractTaNumber(params.evidence_summary);
|
|
700
|
+
if (userTa) {
|
|
701
|
+
const mismatch = detectMismatch(params.drug_name, params.indication, userTa);
|
|
702
|
+
if (mismatch) {
|
|
703
|
+
lines.push(`> ⚠️ **TA mismatch detected.** ${mismatch.explanation}`);
|
|
704
|
+
lines.push("");
|
|
705
|
+
audit = addWarning(audit, `User-supplied TA ${mismatch.user_supplied} does not match canonical ${mismatch.canonical} for "${params.drug_name} ${params.indication}".`);
|
|
706
|
+
}
|
|
707
|
+
}
|
|
708
|
+
}
|
|
709
|
+
}
|
|
710
|
+
}
|
|
677
711
|
const gaps = [];
|
|
678
712
|
for (const sectionName of sections) {
|
|
679
713
|
const { content, status } = buildSection(sectionName, params.drug_name, params.indication, params.evidence_summary);
|