heor-agent-mcp 1.2.2 → 1.3.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -2
- 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/pv/decisionTree.d.ts +2 -0
- package/dist/pv/decisionTree.d.ts.map +1 -1
- package/dist/pv/decisionTree.js +92 -14
- package/dist/pv/decisionTree.js.map +1 -1
- package/dist/pv/gvpModules.d.ts +2 -1
- package/dist/pv/gvpModules.d.ts.map +1 -1
- package/dist/pv/gvpModules.js +7 -7
- package/dist/pv/gvpModules.js.map +1 -1
- package/dist/pv/signalDecision.d.ts +54 -0
- package/dist/pv/signalDecision.d.ts.map +1 -0
- package/dist/pv/signalDecision.js +115 -0
- package/dist/pv/signalDecision.js.map +1 -0
- package/dist/pv/signalStatistics.d.ts +67 -0
- package/dist/pv/signalStatistics.d.ts.map +1 -0
- package/dist/pv/signalStatistics.js +186 -0
- package/dist/pv/signalStatistics.js.map +1 -0
- package/dist/pv/types.d.ts +8 -1
- package/dist/pv/types.d.ts.map +1 -1
- 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 +37 -3
- package/dist/tools/htaDossierPrep.js.map +1 -1
- 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/dist/tools/pvClassify.d.ts +1 -1
- package/dist/tools/pvClassify.d.ts.map +1 -1
- package/dist/tools/pvClassify.js +20 -7
- package/dist/tools/pvClassify.js.map +1 -1
- package/dist/tools/pvSignalWorkflow.d.ts +82 -0
- package/dist/tools/pvSignalWorkflow.d.ts.map +1 -0
- package/dist/tools/pvSignalWorkflow.js +315 -0
- package/dist/tools/pvSignalWorkflow.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,315 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* pv_signal_workflow — EMA GVP Module IX rev 2 signal management.
|
|
3
|
+
*
|
|
4
|
+
* Given drug-AE case counts from EudraVigilance / FAERS / national PV
|
|
5
|
+
* databases, compute disproportionality statistics (PRR, ROR, IC, MGPS),
|
|
6
|
+
* decide a signal verdict, and emit canonical RMP signal-section text.
|
|
7
|
+
*
|
|
8
|
+
* Pure logic, no I/O. Pairs with pv_classify (planned-study classifier).
|
|
9
|
+
* See design log #14.
|
|
10
|
+
*/
|
|
11
|
+
import { z } from "zod";
|
|
12
|
+
import { addAssumption, addWarning, createAuditRecord, setMethodology, } from "../audit/builder.js";
|
|
13
|
+
import { auditToMarkdown } from "../formatters/markdown.js";
|
|
14
|
+
import { suggestForEnum } from "../util/didYouMean.js";
|
|
15
|
+
import { computeAllStats, decideVerdict } from "../pv/signalDecision.js";
|
|
16
|
+
import { GVP_REVISION } from "../pv/gvpModules.js";
|
|
17
|
+
const DATA_SOURCES = [
|
|
18
|
+
"eudravigilance",
|
|
19
|
+
"faers",
|
|
20
|
+
"vigibase_who",
|
|
21
|
+
"national_db",
|
|
22
|
+
"spontaneous_internal",
|
|
23
|
+
];
|
|
24
|
+
const PvSignalWorkflowSchema = z
|
|
25
|
+
.object({
|
|
26
|
+
drug: z.string().min(1, "drug is required"),
|
|
27
|
+
indication: z.string().min(1, "indication is required"),
|
|
28
|
+
reporting_period_months: z.number().int().min(1).max(120).default(12),
|
|
29
|
+
case_counts: z
|
|
30
|
+
.object({
|
|
31
|
+
drug_event: z.number().int().nonnegative(),
|
|
32
|
+
drug_total: z.number().int().nonnegative(),
|
|
33
|
+
event_total: z.number().int().nonnegative(),
|
|
34
|
+
grand_total: z.number().int().nonnegative(),
|
|
35
|
+
})
|
|
36
|
+
.refine((d) => d.drug_total >= d.drug_event, {
|
|
37
|
+
message: "drug_total must be >= drug_event (cell b = drug_total - drug_event would be negative)",
|
|
38
|
+
})
|
|
39
|
+
.refine((d) => d.event_total >= d.drug_event, {
|
|
40
|
+
message: "event_total must be >= drug_event (cell c = event_total - drug_event would be negative)",
|
|
41
|
+
})
|
|
42
|
+
.refine((d) => d.grand_total >= d.drug_total + (d.event_total - d.drug_event), {
|
|
43
|
+
message: "grand_total too small — cell d = grand_total - drug_total - (event_total - drug_event) would be negative. Check that all 4 counts come from the same database.",
|
|
44
|
+
}),
|
|
45
|
+
data_source: z.enum(DATA_SOURCES).default("eudravigilance"),
|
|
46
|
+
pregnancy_exposure: z.boolean().default(false),
|
|
47
|
+
prior_known_signals: z.array(z.string()).default([]),
|
|
48
|
+
reported_event: z
|
|
49
|
+
.string()
|
|
50
|
+
.optional()
|
|
51
|
+
.describe("Optional: the specific adverse event being scored (e.g., 'lactic acidosis'). REQUIRED to enable previously_known_signal classification — without it, the tool cannot determine whether the disproportionality applies to a known event vs a new one. When omitted with prior_known_signals non-empty, output emits a warning and treats the case as a potentially new signal."),
|
|
52
|
+
outcome_serious: z.boolean().default(false),
|
|
53
|
+
rmp_has_pregnancy_concern: z.boolean().default(false),
|
|
54
|
+
})
|
|
55
|
+
.strict();
|
|
56
|
+
export async function handlePvSignalWorkflow(rawInput) {
|
|
57
|
+
const parsed = PvSignalWorkflowSchema.safeParse(rawInput);
|
|
58
|
+
if (!parsed.success) {
|
|
59
|
+
const messages = [];
|
|
60
|
+
for (const issue of parsed.error.issues) {
|
|
61
|
+
if (issue.code === "invalid_enum_value" &&
|
|
62
|
+
typeof issue.received === "string") {
|
|
63
|
+
const suggestions = suggestForEnum(issue.received, issue.options);
|
|
64
|
+
messages.push(`Invalid ${issue.path.join(".")}: "${issue.received}". Allowed: ${issue.options.join(", ")}.${suggestions.length
|
|
65
|
+
? ` Did you mean ${suggestions.map((s) => `"${s}"`).join(", ")}?`
|
|
66
|
+
: ""}`);
|
|
67
|
+
}
|
|
68
|
+
else {
|
|
69
|
+
messages.push(`${issue.path.join(".") || "input"}: ${issue.message}`);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
throw new Error(messages.join("\n"));
|
|
73
|
+
}
|
|
74
|
+
const input = parsed.data;
|
|
75
|
+
let audit = createAuditRecord("pv.signal_workflow", input, "text");
|
|
76
|
+
audit = setMethodology(audit, "EMA GVP Module IX rev 2 (Signal management); EU Implementing Reg. 2025/1466 (mandatory EVDAS integration from 2026-02-12); Evans 2001 (PRR); van Puijenbroek 2002 (ROR); Bate 1998 / Norén 2006 (IC, BCPNN); DuMouchel 1999 (MGPS, EBGM, gamma-Poisson shrinkage). GVP Considerations P.III for pregnancy follow-up gating.");
|
|
77
|
+
const stats = computeAllStats(input.case_counts, input.outcome_serious);
|
|
78
|
+
const verdict = decideVerdict({
|
|
79
|
+
stats,
|
|
80
|
+
prior_known_signals: input.prior_known_signals,
|
|
81
|
+
reported_event: input.reported_event,
|
|
82
|
+
outcome_serious: input.outcome_serious,
|
|
83
|
+
});
|
|
84
|
+
// Honest-API guard: when caller has prior_known_signals but didn't supply
|
|
85
|
+
// reported_event, we cannot match the disproportionality to a specific
|
|
86
|
+
// known signal. Surface this in the audit so reviewers see we treated it
|
|
87
|
+
// as a potentially new signal rather than silently suppressing it.
|
|
88
|
+
if (input.prior_known_signals.length > 0 &&
|
|
89
|
+
!input.reported_event &&
|
|
90
|
+
[
|
|
91
|
+
stats.prr.threshold_met,
|
|
92
|
+
stats.ror.threshold_met,
|
|
93
|
+
stats.ic.threshold_met,
|
|
94
|
+
stats.mgps.threshold_met,
|
|
95
|
+
].filter(Boolean).length >= 2) {
|
|
96
|
+
audit = addWarning(audit, "prior_known_signals supplied but reported_event missing — cannot match to a specific known signal. Verdict treats this as a potentially new signal. Re-run with reported_event to enable previously_known_signal classification.");
|
|
97
|
+
}
|
|
98
|
+
audit = addAssumption(audit, `${stats.thresholds_used} thresholds applied. ${[
|
|
99
|
+
stats.prr.threshold_met,
|
|
100
|
+
stats.ror.threshold_met,
|
|
101
|
+
stats.ic.threshold_met,
|
|
102
|
+
stats.mgps.threshold_met,
|
|
103
|
+
].filter(Boolean).length}/4 methods triggered.`);
|
|
104
|
+
if (verdict === "confirmed_signal") {
|
|
105
|
+
audit = addWarning(audit, `Confirmed signal — recommend PRAC notification, RMP signal-section update, ICSR review.`);
|
|
106
|
+
}
|
|
107
|
+
const wantsPregnancyFollowup = input.pregnancy_exposure && input.rmp_has_pregnancy_concern;
|
|
108
|
+
const pregnancy_followup = wantsPregnancyFollowup
|
|
109
|
+
? {
|
|
110
|
+
timepoints: ["birth", "3_months", "12_months"],
|
|
111
|
+
followup_protocol_ref: "GVP-P.III-2026",
|
|
112
|
+
structured_data_required: [
|
|
113
|
+
"pregnancy outcome (live birth / spontaneous abortion / elective TOP / stillbirth)",
|
|
114
|
+
"gestational age at exposure",
|
|
115
|
+
"gestational age at delivery",
|
|
116
|
+
"birth weight + length + head circumference",
|
|
117
|
+
"congenital anomalies (any organ system, classified by ICD-10)",
|
|
118
|
+
"developmental milestones at 3 months and 12 months",
|
|
119
|
+
"breastfeeding status at follow-up timepoints",
|
|
120
|
+
],
|
|
121
|
+
}
|
|
122
|
+
: undefined;
|
|
123
|
+
const recommendations = recommendationsFor(verdict, stats, input);
|
|
124
|
+
const rmpText = rmpSignalSectionText(input, stats, verdict);
|
|
125
|
+
const signal_assessment = {
|
|
126
|
+
drug: input.drug,
|
|
127
|
+
period_months: input.reporting_period_months,
|
|
128
|
+
statistics: {
|
|
129
|
+
prr: stats.prr,
|
|
130
|
+
ror: stats.ror,
|
|
131
|
+
ic: stats.ic,
|
|
132
|
+
mgps: stats.mgps,
|
|
133
|
+
chi_squared: stats.chi_squared,
|
|
134
|
+
n_cases: stats.n_cases,
|
|
135
|
+
},
|
|
136
|
+
verdict,
|
|
137
|
+
workflow_recommendation: recommendations,
|
|
138
|
+
rmp_signal_section_text: rmpText,
|
|
139
|
+
pregnancy_followup,
|
|
140
|
+
gvp_revision: GVP_REVISION,
|
|
141
|
+
};
|
|
142
|
+
// ── Markdown report ─────────────────────────────────────────────────────
|
|
143
|
+
const lines = [];
|
|
144
|
+
lines.push(`# PV Signal Assessment — ${input.drug} (${input.indication})`);
|
|
145
|
+
lines.push("");
|
|
146
|
+
lines.push(`**Data source:** ${input.data_source} · **Period:** ${input.reporting_period_months} months · **N cases:** ${stats.n_cases} · **Threshold tier:** ${stats.thresholds_used}`);
|
|
147
|
+
lines.push("");
|
|
148
|
+
lines.push(`**Verdict:** \`${verdict}\``);
|
|
149
|
+
lines.push("");
|
|
150
|
+
lines.push("## Disproportionality statistics");
|
|
151
|
+
lines.push("| Method | Value | 95% CI / posterior | Threshold met? |");
|
|
152
|
+
lines.push("|--------|-------|--------------------|----------------|");
|
|
153
|
+
lines.push(`| PRR (Evans 2001) | ${stats.prr.value.toFixed(2)} | [${stats.prr.ci_low.toFixed(2)}, ${stats.prr.ci_high.toFixed(2)}] | ${stats.prr.threshold_met ? "✅" : "❌"} |`);
|
|
154
|
+
lines.push(`| ROR (van Puijenbroek 2002) | ${stats.ror.value.toFixed(2)} | [${stats.ror.ci_low.toFixed(2)}, ${stats.ror.ci_high.toFixed(2)}] | ${stats.ror.threshold_met ? "✅" : "❌"} |`);
|
|
155
|
+
lines.push(`| IC (BCPNN, Bate 1998) | ${stats.ic.value.toFixed(2)} | IC025 = ${stats.ic.ic025.toFixed(2)} | ${stats.ic.threshold_met ? "✅" : "❌"} |`);
|
|
156
|
+
lines.push(`| MGPS / EBGM (DuMouchel 1999) | ${stats.mgps.ebgm.toFixed(2)} | EB05 = ${stats.mgps.eb05.toFixed(2)} · EB95 = ${stats.mgps.eb95.toFixed(2)} | ${stats.mgps.threshold_met ? "✅" : "❌"} |`);
|
|
157
|
+
lines.push(`| χ² (Yates) | ${stats.chi_squared.toFixed(2)} | — | ${stats.chi_squared >= 4 ? "✅" : "❌"} |`);
|
|
158
|
+
lines.push("");
|
|
159
|
+
lines.push("## Workflow recommendation");
|
|
160
|
+
for (const r of recommendations)
|
|
161
|
+
lines.push(`- ${r}`);
|
|
162
|
+
lines.push("");
|
|
163
|
+
if (pregnancy_followup) {
|
|
164
|
+
lines.push("## GVP Considerations P.III — Pregnancy follow-up");
|
|
165
|
+
lines.push("The drug has a pregnancy-related safety concern in the RMP and pregnancy exposure was reported. Per GVP Considerations P.III (effective 2026-02-09), structured follow-up is required at:");
|
|
166
|
+
lines.push("");
|
|
167
|
+
for (const t of pregnancy_followup.timepoints)
|
|
168
|
+
lines.push(`- **${t}**`);
|
|
169
|
+
lines.push("");
|
|
170
|
+
lines.push(`Structured data to capture (protocol ref \`${pregnancy_followup.followup_protocol_ref}\`):`);
|
|
171
|
+
for (const d of pregnancy_followup.structured_data_required)
|
|
172
|
+
lines.push(`- ${d}`);
|
|
173
|
+
lines.push("");
|
|
174
|
+
}
|
|
175
|
+
else if (input.pregnancy_exposure) {
|
|
176
|
+
lines.push("## Pregnancy exposure noted");
|
|
177
|
+
lines.push("Pregnancy exposure was reported but `rmp_has_pregnancy_concern: false` — per GVP Considerations P.III, structured follow-up is required *in principle only when the medicinal product is associated with pregnancy-related safety concerns identified in the RMP*. Confirm RMP status; if a pregnancy-related risk is in scope, re-run with `rmp_has_pregnancy_concern: true`.");
|
|
178
|
+
lines.push("");
|
|
179
|
+
}
|
|
180
|
+
lines.push("## RMP signal-section text (canonical)");
|
|
181
|
+
lines.push("```");
|
|
182
|
+
lines.push(rmpText);
|
|
183
|
+
lines.push("```");
|
|
184
|
+
lines.push("");
|
|
185
|
+
lines.push("## Roadmap notes");
|
|
186
|
+
lines.push("- **v2 (planned):** EVDAS programmatic integration via eRMR / ICSR download per Reg. 2025/1466 — currently this tool takes user-supplied case counts.");
|
|
187
|
+
lines.push("- **v2 (planned):** Stratified MGPS (by sex / age band) — currently single-stratum gamma-Poisson shrinkage.");
|
|
188
|
+
lines.push("");
|
|
189
|
+
lines.push("## References");
|
|
190
|
+
lines.push("- EMA GVP Module IX rev 2 (Signal management, 2026)");
|
|
191
|
+
lines.push("- EU Implementing Regulation 2025/1466 (mandatory EVDAS integration)");
|
|
192
|
+
lines.push("- EMA GVP Considerations P.III — Pregnancy and breastfeeding");
|
|
193
|
+
lines.push("- Evans SJW et al. (2001). PRR for signal generation. *PDS* 10:483-486.");
|
|
194
|
+
lines.push("- van Puijenbroek EP et al. (2002). ROR for signal detection. *PDS* 11:3-10.");
|
|
195
|
+
lines.push("- Bate A et al. (1998). BCPNN signal detection. *Eur J Clin Pharmacol* 54:315-321.");
|
|
196
|
+
lines.push("- Norén GN et al. (2006). Extending IC to bivariate cases. *Stat Med* 25:1995-2017.");
|
|
197
|
+
lines.push("- DuMouchel W. (1999). Bayesian data mining in large freq tables. *Am Stat* 53:177-190.");
|
|
198
|
+
lines.push("");
|
|
199
|
+
lines.push(auditToMarkdown(audit));
|
|
200
|
+
return {
|
|
201
|
+
content: lines.join("\n"),
|
|
202
|
+
audit,
|
|
203
|
+
signal_assessment,
|
|
204
|
+
};
|
|
205
|
+
}
|
|
206
|
+
function recommendationsFor(verdict, stats, input) {
|
|
207
|
+
const out = [];
|
|
208
|
+
switch (verdict) {
|
|
209
|
+
case "confirmed_signal":
|
|
210
|
+
out.push("Notify PRAC within the next signal management cycle.");
|
|
211
|
+
out.push("Update RMP Part III (PV Plan) with the new signal section text below.");
|
|
212
|
+
out.push("Conduct ICSR-level review of the contributing cases.");
|
|
213
|
+
out.push("Consider whether a label variation is warranted; if yes, file Type II variation.");
|
|
214
|
+
if (input.outcome_serious) {
|
|
215
|
+
out.push("⚠️ AE is serious — accelerated review timeline applies (lower thresholds were used).");
|
|
216
|
+
}
|
|
217
|
+
break;
|
|
218
|
+
case "strengthening_signal":
|
|
219
|
+
out.push("Continue monitoring; re-evaluate at next PSUR cycle.");
|
|
220
|
+
out.push("Document in signal management tracking system; not yet a confirmed signal.");
|
|
221
|
+
out.push(`Currently ${[stats.prr.threshold_met, stats.ror.threshold_met, stats.ic.threshold_met, stats.mgps.threshold_met].filter(Boolean).length}/4 methods trigger; needs ≥2 + N≥3 + χ²≥4 for confirmation.`);
|
|
222
|
+
break;
|
|
223
|
+
case "previously_known_signal":
|
|
224
|
+
out.push("Signal matches a previously-identified known risk in the RMP.");
|
|
225
|
+
out.push("Confirm continued reporting in the next PSUR; no new RMP variation required.");
|
|
226
|
+
break;
|
|
227
|
+
case "refuted_signal":
|
|
228
|
+
out.push("Statistics significantly below threshold with adequate N.");
|
|
229
|
+
out.push("Document non-signal in signal management tracking; no further action required.");
|
|
230
|
+
break;
|
|
231
|
+
case "no_signal":
|
|
232
|
+
default:
|
|
233
|
+
out.push("No disproportionality detected. Continue routine PV monitoring.");
|
|
234
|
+
out.push("Re-evaluate at next PSUR cycle or if N grows materially.");
|
|
235
|
+
}
|
|
236
|
+
if (input.pregnancy_exposure && input.rmp_has_pregnancy_concern) {
|
|
237
|
+
out.push("GVP P.III follow-up required (birth / 3mo / 12mo) — see protocol below.");
|
|
238
|
+
}
|
|
239
|
+
return out;
|
|
240
|
+
}
|
|
241
|
+
function rmpSignalSectionText(input, stats, verdict) {
|
|
242
|
+
return [
|
|
243
|
+
`Signal: ${input.drug} in ${input.indication}.`,
|
|
244
|
+
`Source: ${input.data_source}, ${input.reporting_period_months}-month reporting period.`,
|
|
245
|
+
`Cases (N): ${stats.n_cases}.`,
|
|
246
|
+
`PRR = ${stats.prr.value.toFixed(2)} (95% CI ${stats.prr.ci_low.toFixed(2)}-${stats.prr.ci_high.toFixed(2)}); ROR = ${stats.ror.value.toFixed(2)} (95% CI ${stats.ror.ci_low.toFixed(2)}-${stats.ror.ci_high.toFixed(2)}); IC = ${stats.ic.value.toFixed(2)} (IC025 = ${stats.ic.ic025.toFixed(2)}); EBGM = ${stats.mgps.ebgm.toFixed(2)} (EB05 = ${stats.mgps.eb05.toFixed(2)}); χ² = ${stats.chi_squared.toFixed(2)}.`,
|
|
247
|
+
`Verdict: ${verdict.replace(/_/g, " ")}.`,
|
|
248
|
+
`Threshold tier: ${stats.thresholds_used}.`,
|
|
249
|
+
].join(" ");
|
|
250
|
+
}
|
|
251
|
+
export const pvSignalWorkflowToolSchema = {
|
|
252
|
+
name: "pv.signal_workflow",
|
|
253
|
+
description: "Compute disproportionality statistics (PRR, ROR, IC/BCPNN, MGPS/EBGM) on user-supplied drug-AE case counts and decide a signal verdict per EMA GVP Module IX rev 2. Returns the verdict (no/strengthening/confirmed/previously known/refuted), workflow recommendations, and canonical RMP signal-section text. To classify a finding as previously_known_signal, supply BOTH prior_known_signals AND reported_event so the tool can match the disproportionality to a specific known event. Optionally layers in GVP Considerations P.III pregnancy follow-up (birth/3mo/12mo) when both pregnancy_exposure and rmp_has_pregnancy_concern are true. Pairs with pv_classify. ⚠️ MGPS uses single-stratum gamma-Poisson shrinkage in v1 — when database counts are confounded by sex/age strata, EBGM/EB05 may be inflated; stratified MGPS is planned for v2. v1 takes user counts; v2 will also integrate EVDAS programmatic access per Reg. 2025/1466.",
|
|
254
|
+
annotations: {
|
|
255
|
+
title: "PV Signal Workflow",
|
|
256
|
+
readOnlyHint: true,
|
|
257
|
+
destructiveHint: false,
|
|
258
|
+
idempotentHint: true,
|
|
259
|
+
openWorldHint: false,
|
|
260
|
+
},
|
|
261
|
+
inputSchema: {
|
|
262
|
+
type: "object",
|
|
263
|
+
properties: {
|
|
264
|
+
drug: { type: "string" },
|
|
265
|
+
indication: { type: "string" },
|
|
266
|
+
reporting_period_months: {
|
|
267
|
+
type: "number",
|
|
268
|
+
minimum: 1,
|
|
269
|
+
maximum: 120,
|
|
270
|
+
default: 12,
|
|
271
|
+
},
|
|
272
|
+
case_counts: {
|
|
273
|
+
type: "object",
|
|
274
|
+
properties: {
|
|
275
|
+
drug_event: {
|
|
276
|
+
type: "number",
|
|
277
|
+
minimum: 0,
|
|
278
|
+
description: "a — cases of THIS drug AND THIS event",
|
|
279
|
+
},
|
|
280
|
+
drug_total: {
|
|
281
|
+
type: "number",
|
|
282
|
+
minimum: 0,
|
|
283
|
+
description: "a+b — all cases of the drug",
|
|
284
|
+
},
|
|
285
|
+
event_total: {
|
|
286
|
+
type: "number",
|
|
287
|
+
minimum: 0,
|
|
288
|
+
description: "a+c — all cases of the event",
|
|
289
|
+
},
|
|
290
|
+
grand_total: {
|
|
291
|
+
type: "number",
|
|
292
|
+
minimum: 0,
|
|
293
|
+
description: "a+b+c+d — all cases in DB",
|
|
294
|
+
},
|
|
295
|
+
},
|
|
296
|
+
required: ["drug_event", "drug_total", "event_total", "grand_total"],
|
|
297
|
+
},
|
|
298
|
+
data_source: {
|
|
299
|
+
type: "string",
|
|
300
|
+
enum: DATA_SOURCES,
|
|
301
|
+
default: "eudravigilance",
|
|
302
|
+
},
|
|
303
|
+
pregnancy_exposure: { type: "boolean", default: false },
|
|
304
|
+
prior_known_signals: {
|
|
305
|
+
type: "array",
|
|
306
|
+
items: { type: "string" },
|
|
307
|
+
default: [],
|
|
308
|
+
},
|
|
309
|
+
outcome_serious: { type: "boolean", default: false },
|
|
310
|
+
rmp_has_pregnancy_concern: { type: "boolean", default: false },
|
|
311
|
+
},
|
|
312
|
+
required: ["drug", "indication", "case_counts"],
|
|
313
|
+
},
|
|
314
|
+
};
|
|
315
|
+
//# sourceMappingURL=pvSignalWorkflow.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pvSignalWorkflow.js","sourceRoot":"","sources":["../../src/tools/pvSignalWorkflow.ts"],"names":[],"mappings":"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"}
|