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,30 @@
|
|
|
1
|
+
export async function fetchBnf(query, maxResults) {
|
|
2
|
+
const entries = [
|
|
3
|
+
{
|
|
4
|
+
title: `BNF Drug Pricing: ${query}`,
|
|
5
|
+
abstract: `The British National Formulary (BNF) is the authoritative UK drug reference, including prices, dosing, indications, and contraindications. For "${query}", search the NICE BNF website. NHS list prices are used as the primary drug cost input in NICE economic models. Prices are updated monthly.`,
|
|
6
|
+
url: `https://bnf.nice.org.uk/search/?q=${encodeURIComponent(query)}`,
|
|
7
|
+
},
|
|
8
|
+
{
|
|
9
|
+
title: `NHS Drug Tariff — Community Pharmacy Prices`,
|
|
10
|
+
abstract: `NHS Business Services Authority publishes the monthly Drug Tariff with reimbursement prices paid to community pharmacies for drugs dispensed in primary care. Complementary to BNF for understanding community prescribing costs.`,
|
|
11
|
+
url: "https://www.nhsbsa.nhs.uk/pharmacies-gp-practices-and-appliance-contractors/drug-tariff",
|
|
12
|
+
},
|
|
13
|
+
{
|
|
14
|
+
title: `Electronic Medicines Compendium (emc)`,
|
|
15
|
+
abstract: `Free access to Summary of Product Characteristics (SmPC) and Patient Information Leaflets (PILs) for UK-licensed medicines. Required for confirming indications and dosing when building cost models.`,
|
|
16
|
+
url: `https://www.medicines.org.uk/emc/search?q=${encodeURIComponent(query)}`,
|
|
17
|
+
},
|
|
18
|
+
];
|
|
19
|
+
return entries.slice(0, maxResults).map((e, i) => ({
|
|
20
|
+
id: `bnf_${i}`,
|
|
21
|
+
source: "bnf",
|
|
22
|
+
title: e.title,
|
|
23
|
+
authors: ["Joint Formulary Committee (BMJ Group & Royal Pharmaceutical Society)"],
|
|
24
|
+
date: new Date().getFullYear().toString(),
|
|
25
|
+
study_type: "drug_pricing",
|
|
26
|
+
abstract: e.abstract,
|
|
27
|
+
url: e.url,
|
|
28
|
+
}));
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=bnf.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bnf.js","sourceRoot":"","sources":["../../../src/providers/direct/bnf.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,KAAa,EAAE,UAAkB;IAC9D,MAAM,OAAO,GAAG;QACd;YACE,KAAK,EAAE,qBAAqB,KAAK,EAAE;YACnC,QAAQ,EAAE,mJAAmJ,KAAK,8IAA8I;YAChT,GAAG,EAAE,qCAAqC,kBAAkB,CAAC,KAAK,CAAC,EAAE;SACtE;QACD;YACE,KAAK,EAAE,6CAA6C;YACpD,QAAQ,EAAE,mOAAmO;YAC7O,GAAG,EAAE,yFAAyF;SAC/F;QACD;YACE,KAAK,EAAE,uCAAuC;YAC9C,QAAQ,EAAE,uMAAuM;YACjN,GAAG,EAAE,6CAA6C,kBAAkB,CAAC,KAAK,CAAC,EAAE;SAC9E;KACF,CAAC;IAEF,OAAO,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;QACjD,EAAE,EAAE,OAAO,CAAC,EAAE;QACd,MAAM,EAAE,KAAc;QACtB,KAAK,EAAE,CAAC,CAAC,KAAK;QACd,OAAO,EAAE,CAAC,sEAAsE,CAAC;QACjF,IAAI,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE;QACzC,UAAU,EAAE,cAAc;QAC1B,QAAQ,EAAE,CAAC,CAAC,QAAQ;QACpB,GAAG,EAAE,CAAC,CAAC,GAAG;KACX,CAAC,CAAC,CAAC;AACN,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cadthReviews.d.ts","sourceRoot":"","sources":["../../../src/providers/direct/cadthReviews.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAEpD,wBAAsB,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC,CA6BtG"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
export async function fetchCadthReviews(query, maxResults) {
|
|
2
|
+
const entries = [
|
|
3
|
+
{
|
|
4
|
+
title: `CADTH CDR (Common Drug Review) Reports: ${query}`,
|
|
5
|
+
abstract: `CADTH's Common Drug Review (CDR) and pan-Canadian Oncology Drug Review (pCODR) provide independent health technology assessments for reimbursement decisions across Canadian provinces. Each review includes clinical evidence summary, pharmacoeconomic review, and formulary recommendations. Search "${query}" to find past CDR/pCODR decisions relevant to the drug or indication. Key for benchmarking Canadian market access strategy and understanding CADTH's evidence standards.`,
|
|
6
|
+
url: `https://www.cadth.ca/reimbursement-reviews-search?search_api_fulltext=${encodeURIComponent(query)}`,
|
|
7
|
+
},
|
|
8
|
+
{
|
|
9
|
+
title: `CADTH Pan-Canadian Oncology Drug Review (pCODR)`,
|
|
10
|
+
abstract: `pCODR reviews oncology drugs for reimbursement across Canada. Includes initial and resubmission reviews with clinical and pharmacoeconomic summaries, expert committee recommendations, and pan-Canadian reimbursement conditions. Essential for oncology HTA submissions targeting Canadian payers.`,
|
|
11
|
+
url: "https://www.cadth.ca/pcodr",
|
|
12
|
+
},
|
|
13
|
+
{
|
|
14
|
+
title: `CADTH Methods and Guidelines`,
|
|
15
|
+
abstract: `CADTH's methodological guidelines for health technology assessments, including pharmacoeconomic guidelines for Canada. Covers modelling standards, utility values, costs, willingness-to-pay thresholds, and indirect treatment comparisons. Required reference for preparing Canadian HTA submissions.`,
|
|
16
|
+
url: "https://www.cadth.ca/methods-and-guidelines",
|
|
17
|
+
},
|
|
18
|
+
];
|
|
19
|
+
return entries.slice(0, maxResults).map((e, i) => ({
|
|
20
|
+
id: `cadth_reviews_${i}`,
|
|
21
|
+
source: "cadth_reviews",
|
|
22
|
+
title: e.title,
|
|
23
|
+
authors: ["CADTH — Canadian Agency for Drugs and Technologies in Health"],
|
|
24
|
+
date: new Date().getFullYear().toString(),
|
|
25
|
+
study_type: "hta_report",
|
|
26
|
+
abstract: e.abstract,
|
|
27
|
+
url: e.url,
|
|
28
|
+
}));
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=cadthReviews.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cadthReviews.js","sourceRoot":"","sources":["../../../src/providers/direct/cadthReviews.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,KAAa,EAAE,UAAkB;IACvE,MAAM,OAAO,GAAG;QACd;YACE,KAAK,EAAE,2CAA2C,KAAK,EAAE;YACzD,QAAQ,EAAE,2SAA2S,KAAK,2KAA2K;YACre,GAAG,EAAE,yEAAyE,kBAAkB,CAAC,KAAK,CAAC,EAAE;SAC1G;QACD;YACE,KAAK,EAAE,iDAAiD;YACxD,QAAQ,EAAE,sSAAsS;YAChT,GAAG,EAAE,4BAA4B;SAClC;QACD;YACE,KAAK,EAAE,8BAA8B;YACrC,QAAQ,EAAE,ySAAyS;YACnT,GAAG,EAAE,6CAA6C;SACnD;KACF,CAAC;IAEF,OAAO,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;QACjD,EAAE,EAAE,iBAAiB,CAAC,EAAE;QACxB,MAAM,EAAE,eAAwB;QAChC,KAAK,EAAE,CAAC,CAAC,KAAK;QACd,OAAO,EAAE,CAAC,8DAA8D,CAAC;QACzE,IAAI,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE;QACzC,UAAU,EAAE,YAAY;QACxB,QAAQ,EAAE,CAAC,CAAC,QAAQ;QACpB,GAAG,EAAE,CAAC,CAAC,GAAG;KACX,CAAC,CAAC,CAAC;AACN,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chembl.d.ts","sourceRoot":"","sources":["../../../src/providers/direct/chembl.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAYpD,wBAAsB,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAoBhG"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
const BASE = "https://www.ebi.ac.uk/chembl/api/data";
|
|
2
|
+
export async function fetchChembl(query, maxResults) {
|
|
3
|
+
try {
|
|
4
|
+
const url = `${BASE}/molecule.json?pref_name__icontains=${encodeURIComponent(query)}&limit=${maxResults}`;
|
|
5
|
+
const res = await fetch(url);
|
|
6
|
+
if (!res.ok)
|
|
7
|
+
return [];
|
|
8
|
+
const data = await res.json();
|
|
9
|
+
return (data.molecules ?? []).map((mol) => ({
|
|
10
|
+
id: `chembl_${mol.molecule_chembl_id}`,
|
|
11
|
+
source: "chembl",
|
|
12
|
+
title: mol.pref_name ?? mol.molecule_chembl_id,
|
|
13
|
+
authors: [],
|
|
14
|
+
date: mol.first_approval ? `${mol.first_approval}` : "",
|
|
15
|
+
study_type: "compound_data",
|
|
16
|
+
abstract: `${mol.molecule_type ?? "Molecule"} — MW: ${mol.molecule_properties?.full_mwt ?? "unknown"}`,
|
|
17
|
+
url: `https://www.ebi.ac.uk/chembl/compound_report_card/${mol.molecule_chembl_id}/`,
|
|
18
|
+
}));
|
|
19
|
+
}
|
|
20
|
+
catch {
|
|
21
|
+
return [];
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=chembl.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chembl.js","sourceRoot":"","sources":["../../../src/providers/direct/chembl.ts"],"names":[],"mappings":"AAEA,MAAM,IAAI,GAAG,uCAAuC,CAAC;AAUrD,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,KAAa,EAAE,UAAkB;IACjE,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,GAAG,IAAI,uCAAuC,kBAAkB,CAAC,KAAK,CAAC,UAAU,UAAU,EAAE,CAAC;QAC1G,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC;QAC7B,IAAI,CAAC,GAAG,CAAC,EAAE;YAAE,OAAO,EAAE,CAAC;QAEvB,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAqC,CAAC;QACjE,OAAO,CAAC,IAAI,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;YAC1C,EAAE,EAAE,UAAU,GAAG,CAAC,kBAAkB,EAAE;YACtC,MAAM,EAAE,QAAiB;YACzB,KAAK,EAAE,GAAG,CAAC,SAAS,IAAI,GAAG,CAAC,kBAAkB;YAC9C,OAAO,EAAE,EAAE;YACX,IAAI,EAAE,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,EAAE;YACvD,UAAU,EAAE,eAAe;YAC3B,QAAQ,EAAE,GAAG,GAAG,CAAC,aAAa,IAAI,UAAU,UAAU,GAAG,CAAC,mBAAmB,EAAE,QAAQ,IAAI,SAAS,EAAE;YACtG,GAAG,EAAE,qDAAqD,GAAG,CAAC,kBAAkB,GAAG;SACpF,CAAC,CAAC,CAAC;IACN,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"citeline.d.ts","sourceRoot":"","sources":["../../../src/providers/direct/citeline.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAsBpD,wBAAsB,aAAa,CACjC,KAAK,EAAE,MAAM,EACb,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,gBAAgB,EAAE,CAAC,CA4C7B"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { fetchViaProxy, getProxyUrl } from "./proxyClient.js";
|
|
2
|
+
// Citeline TrialTrove API (Informa/Citeline)
|
|
3
|
+
const BASE = "https://api.citeline.com/trialtrove/v1/trials";
|
|
4
|
+
export async function fetchCiteline(query, maxResults) {
|
|
5
|
+
// Try proxy first (user has Teva access via proxy)
|
|
6
|
+
if (getProxyUrl()) {
|
|
7
|
+
const proxyResults = await fetchViaProxy("citeline", query, maxResults);
|
|
8
|
+
if (proxyResults.length > 0)
|
|
9
|
+
return proxyResults;
|
|
10
|
+
}
|
|
11
|
+
// Fall back to direct API call if key is set
|
|
12
|
+
const apiKey = process.env.CITELINE_API_KEY;
|
|
13
|
+
if (!apiKey)
|
|
14
|
+
return [];
|
|
15
|
+
try {
|
|
16
|
+
const url = `${BASE}?q=${encodeURIComponent(query)}&limit=${maxResults}`;
|
|
17
|
+
const res = await fetch(url, {
|
|
18
|
+
headers: {
|
|
19
|
+
Authorization: `Bearer ${apiKey}`,
|
|
20
|
+
Accept: "application/json",
|
|
21
|
+
},
|
|
22
|
+
});
|
|
23
|
+
if (!res.ok)
|
|
24
|
+
return [];
|
|
25
|
+
const data = (await res.json());
|
|
26
|
+
const trials = data.trials ?? [];
|
|
27
|
+
return trials.slice(0, maxResults).map((t, i) => ({
|
|
28
|
+
id: `citeline_${t.trialId ?? i}`,
|
|
29
|
+
source: "citeline",
|
|
30
|
+
title: t.title ?? "Untitled trial",
|
|
31
|
+
authors: t.sponsors ?? [],
|
|
32
|
+
date: t.startDate ?? "",
|
|
33
|
+
study_type: "rct",
|
|
34
|
+
abstract: [
|
|
35
|
+
`Phase: ${t.phase ?? "N/A"}`,
|
|
36
|
+
`Status: ${t.status ?? "N/A"}`,
|
|
37
|
+
`Indication: ${t.indication ?? "N/A"}`,
|
|
38
|
+
`Therapeutic area: ${t.therapeuticArea ?? "N/A"}`,
|
|
39
|
+
t.primaryOutcome ? `Primary outcome: ${t.primaryOutcome}` : null,
|
|
40
|
+
]
|
|
41
|
+
.filter(Boolean)
|
|
42
|
+
.join(" | "),
|
|
43
|
+
url: `https://citeline.informa.com/trial/${t.trialId ?? ""}`,
|
|
44
|
+
}));
|
|
45
|
+
}
|
|
46
|
+
catch {
|
|
47
|
+
return [];
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=citeline.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"citeline.js","sourceRoot":"","sources":["../../../src/providers/direct/citeline.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE9D,6CAA6C;AAC7C,MAAM,IAAI,GAAG,+CAA+C,CAAC;AAkB7D,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,KAAa,EACb,UAAkB;IAElB,mDAAmD;IACnD,IAAI,WAAW,EAAE,EAAE,CAAC;QAClB,MAAM,YAAY,GAAG,MAAM,aAAa,CAAC,UAAU,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC;QACxE,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC;YAAE,OAAO,YAAY,CAAC;IACnD,CAAC;IAED,6CAA6C;IAC7C,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC;IAC5C,IAAI,CAAC,MAAM;QAAE,OAAO,EAAE,CAAC;IAEvB,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,GAAG,IAAI,MAAM,kBAAkB,CAAC,KAAK,CAAC,UAAU,UAAU,EAAE,CAAC;QACzE,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;YAC3B,OAAO,EAAE;gBACP,aAAa,EAAE,UAAU,MAAM,EAAE;gBACjC,MAAM,EAAE,kBAAkB;aAC3B;SACF,CAAC,CAAC;QACH,IAAI,CAAC,GAAG,CAAC,EAAE;YAAE,OAAO,EAAE,CAAC;QACvB,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAqB,CAAC;QACpD,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC;QAEjC,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;YAChD,EAAE,EAAE,YAAY,CAAC,CAAC,OAAO,IAAI,CAAC,EAAE;YAChC,MAAM,EAAE,UAAmB;YAC3B,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,gBAAgB;YAClC,OAAO,EAAE,CAAC,CAAC,QAAQ,IAAI,EAAE;YACzB,IAAI,EAAE,CAAC,CAAC,SAAS,IAAI,EAAE;YACvB,UAAU,EAAE,KAAK;YACjB,QAAQ,EAAE;gBACR,UAAU,CAAC,CAAC,KAAK,IAAI,KAAK,EAAE;gBAC5B,WAAW,CAAC,CAAC,MAAM,IAAI,KAAK,EAAE;gBAC9B,eAAe,CAAC,CAAC,UAAU,IAAI,KAAK,EAAE;gBACtC,qBAAqB,CAAC,CAAC,eAAe,IAAI,KAAK,EAAE;gBACjD,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,IAAI;aACjE;iBACE,MAAM,CAAC,OAAO,CAAC;iBACf,IAAI,CAAC,KAAK,CAAC;YACd,GAAG,EAAE,sCAAsC,CAAC,CAAC,OAAO,IAAI,EAAE,EAAE;SAC7D,CAAC,CAAC,CAAC;IACN,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"clinicalTrials.d.ts","sourceRoot":"","sources":["../../../src/providers/direct/clinicalTrials.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAcpD,wBAAsB,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAyBxG"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
const BASE = "https://clinicaltrials.gov/api/v2/studies";
|
|
2
|
+
export async function fetchClinicalTrials(query, maxResults) {
|
|
3
|
+
try {
|
|
4
|
+
const url = `${BASE}?query.term=${encodeURIComponent(query)}&pageSize=${maxResults}&format=json`;
|
|
5
|
+
const res = await fetch(url);
|
|
6
|
+
if (!res.ok)
|
|
7
|
+
return [];
|
|
8
|
+
const data = (await res.json());
|
|
9
|
+
return (data.studies ?? []).map((study) => {
|
|
10
|
+
const id = study.protocolSection.identificationModule;
|
|
11
|
+
const desc = study.protocolSection.descriptionModule;
|
|
12
|
+
const contacts = study.protocolSection.contactsLocationsModule;
|
|
13
|
+
return {
|
|
14
|
+
id: `ct_${id.nctId}`,
|
|
15
|
+
source: "clinicaltrials",
|
|
16
|
+
title: id.briefTitle,
|
|
17
|
+
authors: contacts?.overallOfficials?.map((o) => o.name) ?? [],
|
|
18
|
+
date: study.protocolSection.statusModule.startDateStruct?.date ?? "",
|
|
19
|
+
study_type: study.protocolSection.designModule?.studyType?.toLowerCase() ?? "unknown",
|
|
20
|
+
abstract: desc?.briefSummary ?? "",
|
|
21
|
+
url: `https://clinicaltrials.gov/study/${id.nctId}`,
|
|
22
|
+
};
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
catch {
|
|
26
|
+
return [];
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=clinicalTrials.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"clinicalTrials.js","sourceRoot":"","sources":["../../../src/providers/direct/clinicalTrials.ts"],"names":[],"mappings":"AAEA,MAAM,IAAI,GAAG,2CAA2C,CAAC;AAYzD,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,KAAa,EAAE,UAAkB;IACzE,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,GAAG,IAAI,eAAe,kBAAkB,CAAC,KAAK,CAAC,aAAa,UAAU,cAAc,CAAC;QACjG,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC;QAC7B,IAAI,CAAC,GAAG,CAAC,EAAE;YAAE,OAAO,EAAE,CAAC;QAEvB,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAA2B,CAAC;QAC1D,OAAO,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;YACxC,MAAM,EAAE,GAAG,KAAK,CAAC,eAAe,CAAC,oBAAoB,CAAC;YACtD,MAAM,IAAI,GAAG,KAAK,CAAC,eAAe,CAAC,iBAAiB,CAAC;YACrD,MAAM,QAAQ,GAAG,KAAK,CAAC,eAAe,CAAC,uBAAuB,CAAC;YAC/D,OAAO;gBACL,EAAE,EAAE,MAAM,EAAE,CAAC,KAAK,EAAE;gBACpB,MAAM,EAAE,gBAAyB;gBACjC,KAAK,EAAE,EAAE,CAAC,UAAU;gBACpB,OAAO,EAAE,QAAQ,EAAE,gBAAgB,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE;gBAC7D,IAAI,EAAE,KAAK,CAAC,eAAe,CAAC,YAAY,CAAC,eAAe,EAAE,IAAI,IAAI,EAAE;gBACpE,UAAU,EAAE,KAAK,CAAC,eAAe,CAAC,YAAY,EAAE,SAAS,EAAE,WAAW,EAAE,IAAI,SAAS;gBACrF,QAAQ,EAAE,IAAI,EAAE,YAAY,IAAI,EAAE;gBAClC,GAAG,EAAE,oCAAoC,EAAE,CAAC,KAAK,EAAE;aACpD,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cmsNadac.d.ts","sourceRoot":"","sources":["../../../src/providers/direct/cmsNadac.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAoBpD,wBAAsB,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC,CA+BlG"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
// CMS publishes NADAC data via data.cms.gov. The dataset UUID can be found at:
|
|
2
|
+
// https://data.cms.gov/dataset/nadac
|
|
3
|
+
// We use the data.cms.gov Resources API which returns JSON.
|
|
4
|
+
const BASE = "https://data.cms.gov/data-api/v1/dataset";
|
|
5
|
+
// NADAC dataset UUID (stable since 2022)
|
|
6
|
+
const NADAC_DATASET_ID = "dfa2ab14-06c2-4b99-9f0e-215a6713b5f2";
|
|
7
|
+
export async function fetchCmsNadac(query, maxResults) {
|
|
8
|
+
try {
|
|
9
|
+
// The CMS data-api supports filter syntax
|
|
10
|
+
const url = `${BASE}/${NADAC_DATASET_ID}/data?filter[NDC Description][condition][path]=NDC Description&filter[NDC Description][condition][operator]=CONTAINS&filter[NDC Description][condition][value]=${encodeURIComponent(query.toUpperCase())}&size=${Math.min(maxResults, 100)}`;
|
|
11
|
+
const res = await fetch(url);
|
|
12
|
+
if (!res.ok)
|
|
13
|
+
return getFallback(query, maxResults);
|
|
14
|
+
const data = (await res.json());
|
|
15
|
+
if (!Array.isArray(data) || data.length === 0)
|
|
16
|
+
return getFallback(query, maxResults);
|
|
17
|
+
return data.slice(0, maxResults).map((row, i) => ({
|
|
18
|
+
id: `cms_nadac_${row["NDC"] ?? i}`,
|
|
19
|
+
source: "cms_nadac",
|
|
20
|
+
title: `${row["NDC Description"] ?? "Unknown drug"} — NADAC $${row["NADAC Per Unit"] ?? "N/A"}/${row["Pricing Unit"] ?? "unit"}`,
|
|
21
|
+
authors: ["Centers for Medicare & Medicaid Services"],
|
|
22
|
+
date: row["Effective Date"] ?? "",
|
|
23
|
+
study_type: "pricing",
|
|
24
|
+
abstract: [
|
|
25
|
+
`NDC: ${row["NDC"] ?? "N/A"}`,
|
|
26
|
+
`NADAC per unit: $${row["NADAC Per Unit"] ?? "N/A"}`,
|
|
27
|
+
`Pricing unit: ${row["Pricing Unit"] ?? "N/A"}`,
|
|
28
|
+
`Classification: ${row["Classification for Rate Setting"] ?? "N/A"}`,
|
|
29
|
+
`Pharmacy type: ${row["Pharmacy Type Indicator"] ?? "N/A"}`,
|
|
30
|
+
`OTC: ${row["OTC"] ?? "N"}`,
|
|
31
|
+
`Effective: ${row["Effective Date"] ?? ""}`,
|
|
32
|
+
].join(" | "),
|
|
33
|
+
url: `https://data.cms.gov/dataset/dfa2ab14-06c2-4b99-9f0e-215a6713b5f2/data?filter[NDC]=${row["NDC"] ?? ""}`,
|
|
34
|
+
}));
|
|
35
|
+
}
|
|
36
|
+
catch {
|
|
37
|
+
return getFallback(query, maxResults);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
function getFallback(query, maxResults) {
|
|
41
|
+
return [{
|
|
42
|
+
id: "cms_nadac_search",
|
|
43
|
+
source: "cms_nadac",
|
|
44
|
+
title: `CMS NADAC Search: ${query}`,
|
|
45
|
+
authors: ["Centers for Medicare & Medicaid Services"],
|
|
46
|
+
date: new Date().getFullYear().toString(),
|
|
47
|
+
study_type: "pricing",
|
|
48
|
+
abstract: `Search the CMS National Average Drug Acquisition Cost (NADAC) dataset for "${query}". NADAC provides weekly updated average acquisition costs for all covered outpatient drugs, based on a monthly survey of retail community pharmacies. Used as a reference benchmark for Medicaid pharmacy reimbursement.`,
|
|
49
|
+
url: `https://data.cms.gov/dataset/nadac?query=${encodeURIComponent(query)}`,
|
|
50
|
+
}].slice(0, maxResults);
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=cmsNadac.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cmsNadac.js","sourceRoot":"","sources":["../../../src/providers/direct/cmsNadac.ts"],"names":[],"mappings":"AAEA,+EAA+E;AAC/E,qCAAqC;AACrC,4DAA4D;AAC5D,MAAM,IAAI,GAAG,0CAA0C,CAAC;AACxD,yCAAyC;AACzC,MAAM,gBAAgB,GAAG,sCAAsC,CAAC;AAahE,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,KAAa,EAAE,UAAkB;IACnE,IAAI,CAAC;QACH,0CAA0C;QAC1C,MAAM,GAAG,GAAG,GAAG,IAAI,IAAI,gBAAgB,kKAAkK,kBAAkB,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,SAAS,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,EAAE,CAAC;QACrR,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC;QAC7B,IAAI,CAAC,GAAG,CAAC,EAAE;YAAE,OAAO,WAAW,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;QAEnD,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAe,CAAC;QAC9C,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,WAAW,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;QAErF,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;YAChD,EAAE,EAAE,aAAa,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;YAClC,MAAM,EAAE,WAAoB;YAC5B,KAAK,EAAE,GAAG,GAAG,CAAC,iBAAiB,CAAC,IAAI,cAAc,aAAa,GAAG,CAAC,gBAAgB,CAAC,IAAI,KAAK,IAAI,GAAG,CAAC,cAAc,CAAC,IAAI,MAAM,EAAE;YAChI,OAAO,EAAE,CAAC,0CAA0C,CAAC;YACrD,IAAI,EAAE,GAAG,CAAC,gBAAgB,CAAC,IAAI,EAAE;YACjC,UAAU,EAAE,SAAS;YACrB,QAAQ,EAAE;gBACR,QAAQ,GAAG,CAAC,KAAK,CAAC,IAAI,KAAK,EAAE;gBAC7B,oBAAoB,GAAG,CAAC,gBAAgB,CAAC,IAAI,KAAK,EAAE;gBACpD,iBAAiB,GAAG,CAAC,cAAc,CAAC,IAAI,KAAK,EAAE;gBAC/C,mBAAmB,GAAG,CAAC,iCAAiC,CAAC,IAAI,KAAK,EAAE;gBACpE,kBAAkB,GAAG,CAAC,yBAAyB,CAAC,IAAI,KAAK,EAAE;gBAC3D,QAAQ,GAAG,CAAC,KAAK,CAAC,IAAI,GAAG,EAAE;gBAC3B,cAAc,GAAG,CAAC,gBAAgB,CAAC,IAAI,EAAE,EAAE;aAC5C,CAAC,IAAI,CAAC,KAAK,CAAC;YACb,GAAG,EAAE,sFAAsF,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE;SAC9G,CAAC,CAAC,CAAC;IACN,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,WAAW,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;IACxC,CAAC;AACH,CAAC;AAED,SAAS,WAAW,CAAC,KAAa,EAAE,UAAkB;IACpD,OAAO,CAAC;YACN,EAAE,EAAE,kBAAkB;YACtB,MAAM,EAAE,WAAoB;YAC5B,KAAK,EAAE,qBAAqB,KAAK,EAAE;YACnC,OAAO,EAAE,CAAC,0CAA0C,CAAC;YACrD,IAAI,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE;YACzC,UAAU,EAAE,SAAS;YACrB,QAAQ,EAAE,8EAA8E,KAAK,2NAA2N;YACxT,GAAG,EAAE,4CAA4C,kBAAkB,CAAC,KAAK,CAAC,EAAE;SAC7E,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;AAC1B,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cochrane.d.ts","sourceRoot":"","sources":["../../../src/providers/direct/cochrane.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAmBpD,wBAAsB,aAAa,CACjC,KAAK,EAAE,MAAM,EACb,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAwC7B"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { fetchViaProxy, getProxyUrl } from "./proxyClient.js";
|
|
2
|
+
// Wiley Online Library API — Cochrane Library is published by Wiley
|
|
3
|
+
const BASE = "https://api.wiley.com/onlinelibrary/tdm/v1/articles";
|
|
4
|
+
export async function fetchCochrane(query, maxResults) {
|
|
5
|
+
// Try proxy first (user has Teva access via proxy)
|
|
6
|
+
if (getProxyUrl()) {
|
|
7
|
+
const proxyResults = await fetchViaProxy("cochrane", query, maxResults);
|
|
8
|
+
if (proxyResults.length > 0)
|
|
9
|
+
return proxyResults;
|
|
10
|
+
}
|
|
11
|
+
// Fall back to direct API call if key is set
|
|
12
|
+
const apiKey = process.env.COCHRANE_API_KEY;
|
|
13
|
+
if (!apiKey)
|
|
14
|
+
return [];
|
|
15
|
+
try {
|
|
16
|
+
const url = `${BASE}?q=${encodeURIComponent(query)}&rows=${maxResults}&filter=publication:cochrane`;
|
|
17
|
+
const res = await fetch(url, {
|
|
18
|
+
headers: {
|
|
19
|
+
"Wiley-TDM-Client-Token": apiKey,
|
|
20
|
+
Accept: "application/json",
|
|
21
|
+
},
|
|
22
|
+
});
|
|
23
|
+
if (!res.ok)
|
|
24
|
+
return [];
|
|
25
|
+
const data = (await res.json());
|
|
26
|
+
const items = data.items ?? [];
|
|
27
|
+
return items.slice(0, maxResults).map((item, i) => ({
|
|
28
|
+
id: `cochrane_${item.doi ?? i}`,
|
|
29
|
+
source: "cochrane",
|
|
30
|
+
title: item.title ?? "Untitled Cochrane Review",
|
|
31
|
+
authors: item.authors ?? [],
|
|
32
|
+
date: item.publicationDate ?? "",
|
|
33
|
+
study_type: item.reviewType?.toLowerCase().includes("meta")
|
|
34
|
+
? "meta_analysis"
|
|
35
|
+
: "review",
|
|
36
|
+
abstract: item.abstract ?? "",
|
|
37
|
+
url: item.doi
|
|
38
|
+
? `https://doi.org/${item.doi}`
|
|
39
|
+
: "https://www.cochranelibrary.com/",
|
|
40
|
+
}));
|
|
41
|
+
}
|
|
42
|
+
catch {
|
|
43
|
+
return [];
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=cochrane.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cochrane.js","sourceRoot":"","sources":["../../../src/providers/direct/cochrane.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE9D,oEAAoE;AACpE,MAAM,IAAI,GAAG,qDAAqD,CAAC;AAenE,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,KAAa,EACb,UAAkB;IAElB,mDAAmD;IACnD,IAAI,WAAW,EAAE,EAAE,CAAC;QAClB,MAAM,YAAY,GAAG,MAAM,aAAa,CAAC,UAAU,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC;QACxE,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC;YAAE,OAAO,YAAY,CAAC;IACnD,CAAC;IAED,6CAA6C;IAC7C,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC;IAC5C,IAAI,CAAC,MAAM;QAAE,OAAO,EAAE,CAAC;IAEvB,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,GAAG,IAAI,MAAM,kBAAkB,CAAC,KAAK,CAAC,SAAS,UAAU,8BAA8B,CAAC;QACpG,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;YAC3B,OAAO,EAAE;gBACP,wBAAwB,EAAE,MAAM;gBAChC,MAAM,EAAE,kBAAkB;aAC3B;SACF,CAAC,CAAC;QACH,IAAI,CAAC,GAAG,CAAC,EAAE;YAAE,OAAO,EAAE,CAAC;QACvB,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAqB,CAAC;QACpD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;QAE/B,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;YAClD,EAAE,EAAE,YAAY,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE;YAC/B,MAAM,EAAE,UAAmB;YAC3B,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,0BAA0B;YAC/C,OAAO,EAAE,IAAI,CAAC,OAAO,IAAI,EAAE;YAC3B,IAAI,EAAE,IAAI,CAAC,eAAe,IAAI,EAAE;YAChC,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,WAAW,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC;gBACzD,CAAC,CAAC,eAAe;gBACjB,CAAC,CAAC,QAAQ;YACZ,QAAQ,EAAE,IAAI,CAAC,QAAQ,IAAI,EAAE;YAC7B,GAAG,EAAE,IAAI,CAAC,GAAG;gBACX,CAAC,CAAC,mBAAmB,IAAI,CAAC,GAAG,EAAE;gBAC/B,CAAC,CAAC,kCAAkC;SACvC,CAAC,CAAC,CAAC;IACN,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"conitec.d.ts","sourceRoot":"","sources":["../../../src/providers/direct/conitec.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAEpD,wBAAsB,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAwBjG"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
export async function fetchConitec(query, maxResults) {
|
|
2
|
+
const entries = [
|
|
3
|
+
{
|
|
4
|
+
title: `CONITEC Reports: ${query}`,
|
|
5
|
+
abstract: `CONITEC (Comissão Nacional de Incorporação de Tecnologias no SUS) is Brazil's HTA agency. Published reports include cost-effectiveness analyses, budget impact analyses, and incorporation recommendations for SUS. Search "${query}" for relevant Brazilian HTA precedents. Decisions published in Portuguese.`,
|
|
6
|
+
url: `https://www.gov.br/conitec/pt-br/assuntos/tecnologias-avaliadas/busca?search_api_fulltext=${encodeURIComponent(query)}`,
|
|
7
|
+
},
|
|
8
|
+
{
|
|
9
|
+
title: `CONITEC Methodology Guidelines`,
|
|
10
|
+
abstract: `CONITEC's methodology guidelines for economic evaluation of health technologies in Brazil. Covers cost-effectiveness analysis, budget impact analysis, and recommendations structure for SUS submissions.`,
|
|
11
|
+
url: "https://www.gov.br/conitec/pt-br/assuntos/diretrizes-metodologicas",
|
|
12
|
+
},
|
|
13
|
+
];
|
|
14
|
+
return entries.slice(0, maxResults).map((e, i) => ({
|
|
15
|
+
id: `conitec_${i}`,
|
|
16
|
+
source: "conitec",
|
|
17
|
+
title: e.title,
|
|
18
|
+
authors: ["CONITEC — Brazilian Ministry of Health"],
|
|
19
|
+
date: new Date().getFullYear().toString(),
|
|
20
|
+
study_type: "hta_report",
|
|
21
|
+
abstract: e.abstract,
|
|
22
|
+
url: e.url,
|
|
23
|
+
}));
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=conitec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"conitec.js","sourceRoot":"","sources":["../../../src/providers/direct/conitec.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,KAAa,EAAE,UAAkB;IAClE,MAAM,OAAO,GAAG;QACd;YACE,KAAK,EAAE,oBAAoB,KAAK,EAAE;YAClC,QAAQ,EAAE,+NAA+N,KAAK,6EAA6E;YAC3T,GAAG,EAAE,6FAA6F,kBAAkB,CAAC,KAAK,CAAC,EAAE;SAC9H;QACD;YACE,KAAK,EAAE,gCAAgC;YACvC,QAAQ,EAAE,2MAA2M;YACrN,GAAG,EAAE,oEAAoE;SAC1E;KACF,CAAC;IAEF,OAAO,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;QACjD,EAAE,EAAE,WAAW,CAAC,EAAE;QAClB,MAAM,EAAE,SAAkB;QAC1B,KAAK,EAAE,CAAC,CAAC,KAAK;QACd,OAAO,EAAE,CAAC,wCAAwC,CAAC;QACnD,IAAI,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE;QACzC,UAAU,EAAE,YAAY;QACxB,QAAQ,EAAE,CAAC,CAAC,QAAQ;QACpB,GAAG,EAAE,CAAC,CAAC,GAAG;KACX,CAAC,CAAC,CAAC;AACN,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cortellis.d.ts","sourceRoot":"","sources":["../../../src/providers/direct/cortellis.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAqBpD,wBAAsB,cAAc,CAClC,KAAK,EAAE,MAAM,EACb,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,gBAAgB,EAAE,CAAC,CA8C7B"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { fetchViaProxy, getProxyUrl } from "./proxyClient.js";
|
|
2
|
+
// Clarivate Cortellis Competitive Intelligence API
|
|
3
|
+
const BASE = "https://api.cortellis.com/v2/search/ci";
|
|
4
|
+
export async function fetchCortellis(query, maxResults) {
|
|
5
|
+
// Try proxy first (user has Teva access via proxy)
|
|
6
|
+
if (getProxyUrl()) {
|
|
7
|
+
const proxyResults = await fetchViaProxy("cortellis", query, maxResults);
|
|
8
|
+
if (proxyResults.length > 0)
|
|
9
|
+
return proxyResults;
|
|
10
|
+
}
|
|
11
|
+
// Fall back to direct API call if key is set
|
|
12
|
+
const apiKey = process.env.CORTELLIS_API_KEY;
|
|
13
|
+
if (!apiKey)
|
|
14
|
+
return [];
|
|
15
|
+
try {
|
|
16
|
+
const url = `${BASE}?q=${encodeURIComponent(query)}&limit=${maxResults}`;
|
|
17
|
+
const res = await fetch(url, {
|
|
18
|
+
headers: {
|
|
19
|
+
Authorization: `Bearer ${apiKey}`,
|
|
20
|
+
Accept: "application/json",
|
|
21
|
+
},
|
|
22
|
+
});
|
|
23
|
+
if (!res.ok)
|
|
24
|
+
return [];
|
|
25
|
+
const data = (await res.json());
|
|
26
|
+
const drugs = data.results ?? [];
|
|
27
|
+
return drugs.slice(0, maxResults).map((d, i) => ({
|
|
28
|
+
id: `cortellis_${d.id ?? i}`,
|
|
29
|
+
source: "cortellis",
|
|
30
|
+
title: `${d.name ?? "Unknown"} (${d.phase ?? "N/A"}) — ${d.sponsor ?? "Unknown sponsor"}`,
|
|
31
|
+
authors: [d.sponsor ?? "Clarivate"],
|
|
32
|
+
date: d.updatedDate ?? "",
|
|
33
|
+
study_type: "pipeline",
|
|
34
|
+
abstract: [
|
|
35
|
+
`Phase: ${d.phase ?? "N/A"}`,
|
|
36
|
+
`Sponsor: ${d.sponsor ?? "N/A"}`,
|
|
37
|
+
`Indications: ${(d.indications ?? []).join(", ") || "N/A"}`,
|
|
38
|
+
`MoA: ${d.mechanismOfAction ?? "N/A"}`,
|
|
39
|
+
d.consensusForecast
|
|
40
|
+
? `Consensus forecast: ${d.consensusForecast}`
|
|
41
|
+
: null,
|
|
42
|
+
]
|
|
43
|
+
.filter(Boolean)
|
|
44
|
+
.join(" | "),
|
|
45
|
+
url: `https://www.cortellis.com/`,
|
|
46
|
+
}));
|
|
47
|
+
}
|
|
48
|
+
catch {
|
|
49
|
+
return [];
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=cortellis.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cortellis.js","sourceRoot":"","sources":["../../../src/providers/direct/cortellis.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE9D,mDAAmD;AACnD,MAAM,IAAI,GAAG,wCAAwC,CAAC;AAiBtD,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,KAAa,EACb,UAAkB;IAElB,mDAAmD;IACnD,IAAI,WAAW,EAAE,EAAE,CAAC;QAClB,MAAM,YAAY,GAAG,MAAM,aAAa,CAAC,WAAW,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC;QACzE,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC;YAAE,OAAO,YAAY,CAAC;IACnD,CAAC;IAED,6CAA6C;IAC7C,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC;IAC7C,IAAI,CAAC,MAAM;QAAE,OAAO,EAAE,CAAC;IAEvB,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,GAAG,IAAI,MAAM,kBAAkB,CAAC,KAAK,CAAC,UAAU,UAAU,EAAE,CAAC;QACzE,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;YAC3B,OAAO,EAAE;gBACP,aAAa,EAAE,UAAU,MAAM,EAAE;gBACjC,MAAM,EAAE,kBAAkB;aAC3B;SACF,CAAC,CAAC;QACH,IAAI,CAAC,GAAG,CAAC,EAAE;YAAE,OAAO,EAAE,CAAC;QACvB,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAsB,CAAC;QACrD,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC;QAEjC,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;YAC/C,EAAE,EAAE,aAAa,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE;YAC5B,MAAM,EAAE,WAAoB;YAC5B,KAAK,EAAE,GAAG,CAAC,CAAC,IAAI,IAAI,SAAS,KAAK,CAAC,CAAC,KAAK,IAAI,KAAK,OAAO,CAAC,CAAC,OAAO,IAAI,iBAAiB,EAAE;YACzF,OAAO,EAAE,CAAC,CAAC,CAAC,OAAO,IAAI,WAAW,CAAC;YACnC,IAAI,EAAE,CAAC,CAAC,WAAW,IAAI,EAAE;YACzB,UAAU,EAAE,UAAU;YACtB,QAAQ,EAAE;gBACR,UAAU,CAAC,CAAC,KAAK,IAAI,KAAK,EAAE;gBAC5B,YAAY,CAAC,CAAC,OAAO,IAAI,KAAK,EAAE;gBAChC,gBAAgB,CAAC,CAAC,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,EAAE;gBAC3D,QAAQ,CAAC,CAAC,iBAAiB,IAAI,KAAK,EAAE;gBACtC,CAAC,CAAC,iBAAiB;oBACjB,CAAC,CAAC,uBAAuB,CAAC,CAAC,iBAAiB,EAAE;oBAC9C,CAAC,CAAC,IAAI;aACT;iBACE,MAAM,CAAC,OAAO,CAAC;iBACf,IAAI,CAAC,KAAK,CAAC;YACd,GAAG,EAAE,4BAA4B;SAClC,CAAC,CAAC,CAAC;IACN,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"datasus.d.ts","sourceRoot":"","sources":["../../../src/providers/direct/datasus.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAEpD,wBAAsB,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC,CA6BjG"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
export async function fetchDatasus(query, maxResults) {
|
|
2
|
+
const entries = [
|
|
3
|
+
{
|
|
4
|
+
title: `DATASUS TabNet: ${query}`,
|
|
5
|
+
abstract: `Brazilian Unified Health System (SUS) database. TabNet provides web-based access to aggregated SUS data: hospitalizations (SIH/SUS), outpatient procedures (SIA/SUS), mortality (SIM), births (SINASC), notifiable diseases (SINAN), and population estimates. Essential for Brazilian HEOR studies and CONITEC submissions. Search "${query}" across all modules.`,
|
|
6
|
+
url: `http://tabnet.datasus.gov.br/cgi/tabcgi.exe?sih/cnv/qiuf.def`,
|
|
7
|
+
},
|
|
8
|
+
{
|
|
9
|
+
title: `SIH/SUS Hospital Information System — ${query}`,
|
|
10
|
+
abstract: `SIH/SUS (Sistema de Informações Hospitalares) contains all SUS-funded hospital admissions in Brazil with ICD-10 diagnoses, procedures, length of stay, and reimbursement. ~12M admissions/year. Primary source for Brazilian hospitalization cost data.`,
|
|
11
|
+
url: `http://www2.datasus.gov.br/DATASUS/index.php?area=0202`,
|
|
12
|
+
},
|
|
13
|
+
{
|
|
14
|
+
title: `SIA/SUS Ambulatory Information System`,
|
|
15
|
+
abstract: `SIA/SUS covers outpatient procedures funded by SUS: consultations, exams, specialty appointments, chemotherapy, radiotherapy, dialysis. Used for outpatient cost modeling in Brazilian HEOR submissions.`,
|
|
16
|
+
url: `http://www2.datasus.gov.br/DATASUS/index.php?area=0201`,
|
|
17
|
+
},
|
|
18
|
+
];
|
|
19
|
+
return entries.slice(0, maxResults).map((e, i) => ({
|
|
20
|
+
id: `datasus_${i}`,
|
|
21
|
+
source: "datasus",
|
|
22
|
+
title: e.title,
|
|
23
|
+
authors: ["Brazilian Ministry of Health — DATASUS"],
|
|
24
|
+
date: new Date().getFullYear().toString(),
|
|
25
|
+
study_type: "registry",
|
|
26
|
+
abstract: e.abstract,
|
|
27
|
+
url: e.url,
|
|
28
|
+
}));
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=datasus.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"datasus.js","sourceRoot":"","sources":["../../../src/providers/direct/datasus.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,KAAa,EAAE,UAAkB;IAClE,MAAM,OAAO,GAAG;QACd;YACE,KAAK,EAAE,mBAAmB,KAAK,EAAE;YACjC,QAAQ,EAAE,wUAAwU,KAAK,uBAAuB;YAC9W,GAAG,EAAE,8DAA8D;SACpE;QACD;YACE,KAAK,EAAE,yCAAyC,KAAK,EAAE;YACvD,QAAQ,EAAE,yPAAyP;YACnQ,GAAG,EAAE,wDAAwD;SAC9D;QACD;YACE,KAAK,EAAE,uCAAuC;YAC9C,QAAQ,EAAE,0MAA0M;YACpN,GAAG,EAAE,wDAAwD;SAC9D;KACF,CAAC;IAEF,OAAO,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;QACjD,EAAE,EAAE,WAAW,CAAC,EAAE;QAClB,MAAM,EAAE,SAAkB;QAC1B,KAAK,EAAE,CAAC,CAAC,KAAK;QACd,OAAO,EAAE,CAAC,wCAAwC,CAAC;QACnD,IAAI,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE;QACzC,UAAU,EAAE,UAAU;QACtB,QAAQ,EAAE,CAAC,CAAC,QAAQ;QACpB,GAAG,EAAE,CAAC,CAAC,GAAG;KACX,CAAC,CAAC,CAAC;AACN,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"embase.d.ts","sourceRoot":"","sources":["../../../src/providers/direct/embase.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAsBpD,wBAAsB,WAAW,CAC/B,KAAK,EAAE,MAAM,EACb,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAuC7B"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
const BASE = "https://api.elsevier.com/content/search/embase";
|
|
2
|
+
export async function fetchEmbase(query, maxResults) {
|
|
3
|
+
const apiKey = process.env.ELSEVIER_API_KEY;
|
|
4
|
+
if (!apiKey)
|
|
5
|
+
return [];
|
|
6
|
+
try {
|
|
7
|
+
const url = `${BASE}?query=${encodeURIComponent(query)}&count=${maxResults}&field=title,creator,coverDate,description,url,doi,pii,subtypeDescription`;
|
|
8
|
+
const res = await fetch(url, {
|
|
9
|
+
headers: {
|
|
10
|
+
"X-ELS-APIKey": apiKey,
|
|
11
|
+
"Accept": "application/json",
|
|
12
|
+
},
|
|
13
|
+
});
|
|
14
|
+
if (!res.ok)
|
|
15
|
+
return [];
|
|
16
|
+
const data = (await res.json());
|
|
17
|
+
const entries = data["search-results"]?.entry ?? [];
|
|
18
|
+
return entries
|
|
19
|
+
.filter((e) => e["dc:title"])
|
|
20
|
+
.map((e, i) => {
|
|
21
|
+
const doi = e["prism:doi"];
|
|
22
|
+
const pii = e["pii"];
|
|
23
|
+
const id = doi ?? pii ?? `embase_${i}`;
|
|
24
|
+
return {
|
|
25
|
+
id: `embase_${id}`,
|
|
26
|
+
source: "embase",
|
|
27
|
+
title: e["dc:title"] ?? "",
|
|
28
|
+
authors: e["dc:creator"] ? [e["dc:creator"]] : [],
|
|
29
|
+
date: e["prism:coverDate"] ?? "",
|
|
30
|
+
study_type: mapSubtype(e["subtypeDescription"]),
|
|
31
|
+
abstract: e["dc:description"] ?? "",
|
|
32
|
+
url: doi
|
|
33
|
+
? `https://doi.org/${doi}`
|
|
34
|
+
: (e["prism:url"] ?? ""),
|
|
35
|
+
};
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
catch {
|
|
39
|
+
return [];
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
function mapSubtype(subtype) {
|
|
43
|
+
if (!subtype)
|
|
44
|
+
return "unknown";
|
|
45
|
+
const s = subtype.toLowerCase();
|
|
46
|
+
if (s.includes("review") || s.includes("meta"))
|
|
47
|
+
return "review";
|
|
48
|
+
if (s.includes("randomized") || s.includes("controlled"))
|
|
49
|
+
return "rct";
|
|
50
|
+
if (s.includes("observational") || s.includes("cohort"))
|
|
51
|
+
return "observational";
|
|
52
|
+
return "unknown";
|
|
53
|
+
}
|
|
54
|
+
//# sourceMappingURL=embase.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"embase.js","sourceRoot":"","sources":["../../../src/providers/direct/embase.ts"],"names":[],"mappings":"AAEA,MAAM,IAAI,GAAG,gDAAgD,CAAC;AAoB9D,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,KAAa,EACb,UAAkB;IAElB,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC;IAC5C,IAAI,CAAC,MAAM;QAAE,OAAO,EAAE,CAAC;IAEvB,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,GAAG,IAAI,UAAU,kBAAkB,CAAC,KAAK,CAAC,UAAU,UAAU,2EAA2E,CAAC;QACtJ,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;YAC3B,OAAO,EAAE;gBACP,cAAc,EAAE,MAAM;gBACtB,QAAQ,EAAE,kBAAkB;aAC7B;SACF,CAAC,CAAC;QACH,IAAI,CAAC,GAAG,CAAC,EAAE;YAAE,OAAO,EAAE,CAAC;QAEvB,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAqB,CAAC;QACpD,MAAM,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAAC,EAAE,KAAK,IAAI,EAAE,CAAC;QAEpD,OAAO,OAAO;aACX,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;aAC5B,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YACZ,MAAM,GAAG,GAAG,CAAC,CAAC,WAAW,CAAC,CAAC;YAC3B,MAAM,GAAG,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;YACrB,MAAM,EAAE,GAAG,GAAG,IAAI,GAAG,IAAI,UAAU,CAAC,EAAE,CAAC;YACvC,OAAO;gBACL,EAAE,EAAE,UAAU,EAAE,EAAE;gBAClB,MAAM,EAAE,QAAiB;gBACzB,KAAK,EAAE,CAAC,CAAC,UAAU,CAAC,IAAI,EAAE;gBAC1B,OAAO,EAAE,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;gBACjD,IAAI,EAAE,CAAC,CAAC,iBAAiB,CAAC,IAAI,EAAE;gBAChC,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC;gBAC/C,QAAQ,EAAE,CAAC,CAAC,gBAAgB,CAAC,IAAI,EAAE;gBACnC,GAAG,EAAE,GAAG;oBACN,CAAC,CAAC,mBAAmB,GAAG,EAAE;oBAC1B,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;aAC3B,CAAC;QACJ,CAAC,CAAC,CAAC;IACP,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED,SAAS,UAAU,CAAC,OAAgB;IAClC,IAAI,CAAC,OAAO;QAAE,OAAO,SAAS,CAAC;IAC/B,MAAM,CAAC,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAChC,IAAI,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC;QAAE,OAAO,QAAQ,CAAC;IAChE,IAAI,CAAC,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,YAAY,CAAC;QAAE,OAAO,KAAK,CAAC;IACvE,IAAI,CAAC,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC;QAAE,OAAO,eAAe,CAAC;IAChF,OAAO,SAAS,CAAC;AACnB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fonasa.d.ts","sourceRoot":"","sources":["../../../src/providers/direct/fonasa.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAEpD,wBAAsB,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAwBhG"}
|