@mcpassure/mcp-anvisa-bulario 0.0.1 → 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.en.md +196 -0
- package/README.md +192 -5
- package/dist/cache/sqlite-cache.d.ts +13 -0
- package/dist/cache/sqlite-cache.d.ts.map +1 -0
- package/dist/cache/sqlite-cache.js +58 -0
- package/dist/cache/sqlite-cache.js.map +1 -0
- package/dist/cache/types.d.ts +17 -0
- package/dist/cache/types.d.ts.map +1 -0
- package/dist/cache/types.js +7 -0
- package/dist/cache/types.js.map +1 -0
- package/dist/config.d.ts +12 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +17 -0
- package/dist/config.js.map +1 -0
- package/dist/domain/repository.d.ts +47 -0
- package/dist/domain/repository.d.ts.map +1 -0
- package/dist/domain/repository.js +88 -0
- package/dist/domain/repository.js.map +1 -0
- package/dist/domain/types.d.ts +2 -0
- package/dist/domain/types.d.ts.map +1 -0
- package/dist/domain/types.js +2 -0
- package/dist/domain/types.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +37 -0
- package/dist/index.js.map +1 -0
- package/dist/prompts/handlers.d.ts +24 -0
- package/dist/prompts/handlers.d.ts.map +1 -0
- package/dist/prompts/handlers.js +267 -0
- package/dist/prompts/handlers.js.map +1 -0
- package/dist/prompts/index.d.ts +4 -0
- package/dist/prompts/index.d.ts.map +1 -0
- package/dist/prompts/index.js +35 -0
- package/dist/prompts/index.js.map +1 -0
- package/dist/prompts/schemas.d.ts +22 -0
- package/dist/prompts/schemas.d.ts.map +1 -0
- package/dist/prompts/schemas.js +15 -0
- package/dist/prompts/schemas.js.map +1 -0
- package/dist/resources/handlers.d.ts +5 -0
- package/dist/resources/handlers.d.ts.map +1 -0
- package/dist/resources/handlers.js +145 -0
- package/dist/resources/handlers.js.map +1 -0
- package/dist/resources/index.d.ts +4 -0
- package/dist/resources/index.d.ts.map +1 -0
- package/dist/resources/index.js +48 -0
- package/dist/resources/index.js.map +1 -0
- package/dist/schemas/tools.d.ts +134 -0
- package/dist/schemas/tools.d.ts.map +1 -0
- package/dist/schemas/tools.js +106 -0
- package/dist/schemas/tools.js.map +1 -0
- package/dist/server.d.ts +4 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +25 -0
- package/dist/server.js.map +1 -0
- package/dist/sources/anvisa-api.d.ts +25 -0
- package/dist/sources/anvisa-api.d.ts.map +1 -0
- package/dist/sources/anvisa-api.js +153 -0
- package/dist/sources/anvisa-api.js.map +1 -0
- package/dist/sources/anvisa-dados-abertos.d.ts +12 -0
- package/dist/sources/anvisa-dados-abertos.d.ts.map +1 -0
- package/dist/sources/anvisa-dados-abertos.js +27 -0
- package/dist/sources/anvisa-dados-abertos.js.map +1 -0
- package/dist/sources/anvisa-portal.d.ts +12 -0
- package/dist/sources/anvisa-portal.d.ts.map +1 -0
- package/dist/sources/anvisa-portal.js +27 -0
- package/dist/sources/anvisa-portal.js.map +1 -0
- package/dist/sources/types.d.ts +56 -0
- package/dist/sources/types.d.ts.map +1 -0
- package/dist/sources/types.js +2 -0
- package/dist/sources/types.js.map +1 -0
- package/dist/tools/buscar-por-classe-terapeutica.d.ts +4 -0
- package/dist/tools/buscar-por-classe-terapeutica.d.ts.map +1 -0
- package/dist/tools/buscar-por-classe-terapeutica.js +30 -0
- package/dist/tools/buscar-por-classe-terapeutica.js.map +1 -0
- package/dist/tools/buscar-por-nome.d.ts +4 -0
- package/dist/tools/buscar-por-nome.d.ts.map +1 -0
- package/dist/tools/buscar-por-nome.js +25 -0
- package/dist/tools/buscar-por-nome.js.map +1 -0
- package/dist/tools/buscar-por-principio-ativo.d.ts +4 -0
- package/dist/tools/buscar-por-principio-ativo.d.ts.map +1 -0
- package/dist/tools/buscar-por-principio-ativo.js +25 -0
- package/dist/tools/buscar-por-principio-ativo.js.map +1 -0
- package/dist/tools/consultar-bula.d.ts +4 -0
- package/dist/tools/consultar-bula.d.ts.map +1 -0
- package/dist/tools/consultar-bula.js +42 -0
- package/dist/tools/consultar-bula.js.map +1 -0
- package/dist/tools/filtrar-por-tarja.d.ts +4 -0
- package/dist/tools/filtrar-por-tarja.d.ts.map +1 -0
- package/dist/tools/filtrar-por-tarja.js +29 -0
- package/dist/tools/filtrar-por-tarja.js.map +1 -0
- package/dist/tools/listar-apresentacoes.d.ts +4 -0
- package/dist/tools/listar-apresentacoes.d.ts.map +1 -0
- package/dist/tools/listar-apresentacoes.js +34 -0
- package/dist/tools/listar-apresentacoes.js.map +1 -0
- package/dist/tools/shared.d.ts +97 -0
- package/dist/tools/shared.d.ts.map +1 -0
- package/dist/tools/shared.js +34 -0
- package/dist/tools/shared.js.map +1 -0
- package/dist/utils/backoff.d.ts +8 -0
- package/dist/utils/backoff.d.ts.map +1 -0
- package/dist/utils/backoff.js +37 -0
- package/dist/utils/backoff.js.map +1 -0
- package/dist/utils/http.d.ts +45 -0
- package/dist/utils/http.d.ts.map +1 -0
- package/dist/utils/http.js +175 -0
- package/dist/utils/http.js.map +1 -0
- package/dist/utils/meta.d.ts +8 -0
- package/dist/utils/meta.d.ts.map +1 -0
- package/dist/utils/meta.js +13 -0
- package/dist/utils/meta.js.map +1 -0
- package/dist/utils/playwright-http.d.ts +2 -0
- package/dist/utils/playwright-http.d.ts.map +1 -0
- package/dist/utils/playwright-http.js +4 -0
- package/dist/utils/playwright-http.js.map +1 -0
- package/package.json +68 -6
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
export const TARJAS_JSON = JSON.stringify({
|
|
2
|
+
tarjas: [
|
|
3
|
+
{
|
|
4
|
+
codigo: "sem_tarja",
|
|
5
|
+
nome: "Sem tarja",
|
|
6
|
+
descricao: "Venda livre — sem retenção de receita.",
|
|
7
|
+
},
|
|
8
|
+
{
|
|
9
|
+
codigo: "amarela",
|
|
10
|
+
nome: "Tarja Amarela",
|
|
11
|
+
descricao: "Venda sob prescrição — antibióticos e outros medicamentos sujeitos a controle.",
|
|
12
|
+
},
|
|
13
|
+
{
|
|
14
|
+
codigo: "vermelha",
|
|
15
|
+
nome: "Tarja Vermelha",
|
|
16
|
+
descricao: "Venda sob prescrição médica — receita simples retida.",
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
codigo: "preta",
|
|
20
|
+
nome: "Tarja Preta",
|
|
21
|
+
descricao: "Controle especial — Portaria 344/98 (psicotrópicos, entorpecentes).",
|
|
22
|
+
},
|
|
23
|
+
],
|
|
24
|
+
fonte: "RDC ANVISA 357/2020 e Portaria SVS/MS 344/1998",
|
|
25
|
+
}, null, 2);
|
|
26
|
+
const CLASSES_TERAPEUTICAS_HARDCODED = [
|
|
27
|
+
"Analgésico",
|
|
28
|
+
"Anti-inflamatório",
|
|
29
|
+
"Antibiótico",
|
|
30
|
+
"Antifúngico",
|
|
31
|
+
"Antiviral",
|
|
32
|
+
"Antiparasitário",
|
|
33
|
+
"Anti-hipertensivo",
|
|
34
|
+
"Antidiabético",
|
|
35
|
+
"Anticoagulante",
|
|
36
|
+
"Antiarrítmico",
|
|
37
|
+
"Diurético",
|
|
38
|
+
"Broncodilatador",
|
|
39
|
+
"Corticosteroide",
|
|
40
|
+
"Imunossupressor",
|
|
41
|
+
"Antineoplásico",
|
|
42
|
+
"Ansiolítico",
|
|
43
|
+
"Antidepressivo",
|
|
44
|
+
"Antipsicótico",
|
|
45
|
+
"Antiepiléptico",
|
|
46
|
+
"Antiparkinsônico",
|
|
47
|
+
"Opiáceo",
|
|
48
|
+
"Psicotrópico",
|
|
49
|
+
"Hormônio",
|
|
50
|
+
"Anticoncepcional",
|
|
51
|
+
"Vitamina e Suplemento",
|
|
52
|
+
"Gastroprotetores",
|
|
53
|
+
"Antiácido",
|
|
54
|
+
"Antiemético",
|
|
55
|
+
"Laxante",
|
|
56
|
+
"Antidiarreico",
|
|
57
|
+
"Hipnótico",
|
|
58
|
+
"Relaxante Muscular",
|
|
59
|
+
"Imunomodulador",
|
|
60
|
+
"Vacina",
|
|
61
|
+
"Hemostático",
|
|
62
|
+
"Antialérgico",
|
|
63
|
+
"Descongestionante",
|
|
64
|
+
"Mucolítico",
|
|
65
|
+
"Antitussígeno",
|
|
66
|
+
"Dermatológico",
|
|
67
|
+
"Oftálmico",
|
|
68
|
+
"Otológico",
|
|
69
|
+
"Antisséptico",
|
|
70
|
+
];
|
|
71
|
+
export async function getClassesTerapeuticasJson(_repository) {
|
|
72
|
+
return JSON.stringify({
|
|
73
|
+
classes_terapeuticas: CLASSES_TERAPEUTICAS_HARDCODED.sort(),
|
|
74
|
+
total: CLASSES_TERAPEUTICAS_HARDCODED.length,
|
|
75
|
+
fonte: "Bulário Eletrônico ANVISA — principais classes indexadas",
|
|
76
|
+
nota: "Lista representativa. Consulte o Bulário ANVISA para listagem completa atualizada.",
|
|
77
|
+
}, null, 2);
|
|
78
|
+
}
|
|
79
|
+
export const SCOPE_MARKDOWN = `# Escopo do MCP @mcpassure/mcp-anvisa-bulario
|
|
80
|
+
|
|
81
|
+
## 🇧🇷 Português (BR)
|
|
82
|
+
|
|
83
|
+
### O que este MCP faz
|
|
84
|
+
|
|
85
|
+
Consulta ao **Bulário Eletrônico da ANVISA** (Agência Nacional de Vigilância Sanitária), incluindo:
|
|
86
|
+
|
|
87
|
+
- Busca de medicamentos por nome comercial, princípio ativo, classe terapêutica ou tarja
|
|
88
|
+
- Recuperação de bulas (paciente e profissional) em PDF via número de registro ANVISA
|
|
89
|
+
- Listagem de apresentações comerciais (concentração, forma farmacêutica, fabricante)
|
|
90
|
+
- Filtragem por tarja regulatória (Livre, Vermelha, Preta)
|
|
91
|
+
- Transport Playwright resistente a proteção Cloudflare do portal ANVISA
|
|
92
|
+
- Cache local SQLite para redução de latência e requisições repetidas
|
|
93
|
+
|
|
94
|
+
### O que este MCP NÃO faz
|
|
95
|
+
|
|
96
|
+
- ❌ Não substitui consulta direta à ANVISA para fins regulatórios oficiais
|
|
97
|
+
- ❌ Não fornece preços de medicamentos (consulte CMED/ANVISA)
|
|
98
|
+
- ❌ Não verifica interações medicamentosas
|
|
99
|
+
- ❌ Não emite receitas ou laudos médicos
|
|
100
|
+
- ❌ Não cobre medicamentos fitoterápicos, cosméticos ou saneantes
|
|
101
|
+
- ❌ Não acessa dados de farmacovigilância ou notificações de eventos adversos
|
|
102
|
+
|
|
103
|
+
### ⚠️ Disclaimer regulatório
|
|
104
|
+
|
|
105
|
+
Dados obtidos do Bulário Eletrônico ANVISA com latência de cache configurável.
|
|
106
|
+
**Decisões clínicas ou regulatórias devem sempre utilizar a fonte ANVISA oficial e atualizada.**
|
|
107
|
+
|
|
108
|
+
Medicamentos sob **Tarja Preta** (Portaria SVS/MS 344/1998) estão sujeitos a controle especial —
|
|
109
|
+
psicotrópicos, entorpecentes, precursores e outras substâncias de controle especial.
|
|
110
|
+
O uso inadequado é crime previsto em lei.
|
|
111
|
+
|
|
112
|
+
---
|
|
113
|
+
|
|
114
|
+
## 🇺🇸 English
|
|
115
|
+
|
|
116
|
+
### What this MCP does
|
|
117
|
+
|
|
118
|
+
Queries the **ANVISA Electronic Drug Information Database** (Brazilian Health Regulatory Agency), including:
|
|
119
|
+
|
|
120
|
+
- Search medications by trade name, active ingredient (INN/DCB), therapeutic class, or controlled-substance tier
|
|
121
|
+
- Retrieve patient and prescriber leaflets (bulas) in PDF via ANVISA registration number
|
|
122
|
+
- List commercial presentations (dosage, pharmaceutical form, manufacturer)
|
|
123
|
+
- Filter by regulatory tier (Sem Tarja/OTC, Tarja Vermelha/Rx, Tarja Preta/controlled)
|
|
124
|
+
- Cloudflare-resistant Playwright transport for the ANVISA portal
|
|
125
|
+
- Local SQLite cache to reduce latency on repeated queries
|
|
126
|
+
|
|
127
|
+
### What this MCP does NOT do
|
|
128
|
+
|
|
129
|
+
- ❌ Does not replace official ANVISA consultation for regulatory compliance
|
|
130
|
+
- ❌ Does not provide drug pricing (see CMED/ANVISA)
|
|
131
|
+
- ❌ Does not check drug interactions
|
|
132
|
+
- ❌ Does not issue prescriptions or medical reports
|
|
133
|
+
- ❌ Does not cover phytotherapeutics, cosmetics, or sanitizers
|
|
134
|
+
- ❌ Does not access pharmacovigilance data or adverse event reports
|
|
135
|
+
|
|
136
|
+
### ⚠️ Regulatory disclaimer
|
|
137
|
+
|
|
138
|
+
Data sourced from the ANVISA Electronic Drug Information Database with configurable cache latency.
|
|
139
|
+
**Clinical or regulatory decisions must always use the official and up-to-date ANVISA source.**
|
|
140
|
+
|
|
141
|
+
Medications classified as **Tarja Preta** (Black-banded — controlled substance under Brazilian
|
|
142
|
+
Ordinance SVS/MS 344/1998) are subject to special control — psychotropics, narcotics, precursors,
|
|
143
|
+
and other controlled substances. Misuse is a criminal offense under Brazilian law.
|
|
144
|
+
`;
|
|
145
|
+
//# sourceMappingURL=handlers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"handlers.js","sourceRoot":"","sources":["../../src/resources/handlers.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CACvC;IACE,MAAM,EAAE;QACN;YACE,MAAM,EAAE,WAAW;YACnB,IAAI,EAAE,WAAW;YACjB,SAAS,EAAE,wCAAwC;SACpD;QACD;YACE,MAAM,EAAE,SAAS;YACjB,IAAI,EAAE,eAAe;YACrB,SAAS,EAAE,gFAAgF;SAC5F;QACD;YACE,MAAM,EAAE,UAAU;YAClB,IAAI,EAAE,gBAAgB;YACtB,SAAS,EAAE,uDAAuD;SACnE;QACD;YACE,MAAM,EAAE,OAAO;YACf,IAAI,EAAE,aAAa;YACnB,SAAS,EAAE,qEAAqE;SACjF;KACF;IACD,KAAK,EAAE,gDAAgD;CACxD,EACD,IAAI,EACJ,CAAC,CACF,CAAC;AAEF,MAAM,8BAA8B,GAAG;IACrC,YAAY;IACZ,mBAAmB;IACnB,aAAa;IACb,aAAa;IACb,WAAW;IACX,iBAAiB;IACjB,mBAAmB;IACnB,eAAe;IACf,gBAAgB;IAChB,eAAe;IACf,WAAW;IACX,iBAAiB;IACjB,iBAAiB;IACjB,iBAAiB;IACjB,gBAAgB;IAChB,aAAa;IACb,gBAAgB;IAChB,eAAe;IACf,gBAAgB;IAChB,kBAAkB;IAClB,SAAS;IACT,cAAc;IACd,UAAU;IACV,kBAAkB;IAClB,uBAAuB;IACvB,kBAAkB;IAClB,WAAW;IACX,aAAa;IACb,SAAS;IACT,eAAe;IACf,WAAW;IACX,oBAAoB;IACpB,gBAAgB;IAChB,QAAQ;IACR,aAAa;IACb,cAAc;IACd,mBAAmB;IACnB,YAAY;IACZ,eAAe;IACf,eAAe;IACf,WAAW;IACX,WAAW;IACX,cAAc;CACf,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,0BAA0B,CAAC,WAA+B;IAC9E,OAAO,IAAI,CAAC,SAAS,CACnB;QACE,oBAAoB,EAAE,8BAA8B,CAAC,IAAI,EAAE;QAC3D,KAAK,EAAE,8BAA8B,CAAC,MAAM;QAC5C,KAAK,EAAE,0DAA0D;QACjE,IAAI,EAAE,oFAAoF;KAC3F,EACD,IAAI,EACJ,CAAC,CACF,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,MAAM,cAAc,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAiE7B,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
2
|
+
import type { IBularioRepository } from "../domain/repository.js";
|
|
3
|
+
export declare function registerResources(server: McpServer, repository: IBularioRepository): void;
|
|
4
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/resources/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAGlE,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,kBAAkB,GAAG,IAAI,CAiEzF"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { getClassesTerapeuticasJson, SCOPE_MARKDOWN, TARJAS_JSON } from "./handlers.js";
|
|
2
|
+
export function registerResources(server, repository) {
|
|
3
|
+
server.registerResource("bulario://tarjas", "bulario://tarjas", {
|
|
4
|
+
title: "Taxonomia de Tarjas ANVISA",
|
|
5
|
+
description: "Taxonomia regulatória de tarjas (RDC 357/2020, Portaria 344/98). " +
|
|
6
|
+
"Lista todas as categorias de controle de venda de medicamentos no Brasil.",
|
|
7
|
+
mimeType: "application/json",
|
|
8
|
+
}, async () => ({
|
|
9
|
+
contents: [
|
|
10
|
+
{
|
|
11
|
+
uri: "bulario://tarjas",
|
|
12
|
+
mimeType: "application/json",
|
|
13
|
+
text: TARJAS_JSON,
|
|
14
|
+
},
|
|
15
|
+
],
|
|
16
|
+
}));
|
|
17
|
+
server.registerResource("bulario://classes_terapeuticas", "bulario://classes_terapeuticas", {
|
|
18
|
+
title: "Classes Terapêuticas Indexadas",
|
|
19
|
+
description: "Lista das principais classes terapêuticas indexadas no Bulário Eletrônico ANVISA.",
|
|
20
|
+
mimeType: "application/json",
|
|
21
|
+
}, async () => {
|
|
22
|
+
const json = await getClassesTerapeuticasJson(repository);
|
|
23
|
+
return {
|
|
24
|
+
contents: [
|
|
25
|
+
{
|
|
26
|
+
uri: "bulario://classes_terapeuticas",
|
|
27
|
+
mimeType: "application/json",
|
|
28
|
+
text: json,
|
|
29
|
+
},
|
|
30
|
+
],
|
|
31
|
+
};
|
|
32
|
+
});
|
|
33
|
+
server.registerResource("bulario://scope", "bulario://scope", {
|
|
34
|
+
title: "Escopo do MCP (PT/EN)",
|
|
35
|
+
description: "Escopo do MCP (PT/EN): o que faz, o que não faz, disclaimer regulatório " +
|
|
36
|
+
"e atenção especial a Tarja Preta (Portaria 344/98).",
|
|
37
|
+
mimeType: "text/markdown",
|
|
38
|
+
}, async () => ({
|
|
39
|
+
contents: [
|
|
40
|
+
{
|
|
41
|
+
uri: "bulario://scope",
|
|
42
|
+
mimeType: "text/markdown",
|
|
43
|
+
text: SCOPE_MARKDOWN,
|
|
44
|
+
},
|
|
45
|
+
],
|
|
46
|
+
}));
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/resources/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,0BAA0B,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAExF,MAAM,UAAU,iBAAiB,CAAC,MAAiB,EAAE,UAA8B;IACjF,MAAM,CAAC,gBAAgB,CACrB,kBAAkB,EAClB,kBAAkB,EAClB;QACE,KAAK,EAAE,4BAA4B;QACnC,WAAW,EACT,mEAAmE;YACnE,2EAA2E;QAC7E,QAAQ,EAAE,kBAAkB;KAC7B,EACD,KAAK,IAAI,EAAE,CAAC,CAAC;QACX,QAAQ,EAAE;YACR;gBACE,GAAG,EAAE,kBAAkB;gBACvB,QAAQ,EAAE,kBAAkB;gBAC5B,IAAI,EAAE,WAAW;aAClB;SACF;KACF,CAAC,CACH,CAAC;IAEF,MAAM,CAAC,gBAAgB,CACrB,gCAAgC,EAChC,gCAAgC,EAChC;QACE,KAAK,EAAE,gCAAgC;QACvC,WAAW,EACT,mFAAmF;QACrF,QAAQ,EAAE,kBAAkB;KAC7B,EACD,KAAK,IAAI,EAAE;QACT,MAAM,IAAI,GAAG,MAAM,0BAA0B,CAAC,UAAU,CAAC,CAAC;QAC1D,OAAO;YACL,QAAQ,EAAE;gBACR;oBACE,GAAG,EAAE,gCAAgC;oBACrC,QAAQ,EAAE,kBAAkB;oBAC5B,IAAI,EAAE,IAAI;iBACX;aACF;SACF,CAAC;IACJ,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,gBAAgB,CACrB,iBAAiB,EACjB,iBAAiB,EACjB;QACE,KAAK,EAAE,uBAAuB;QAC9B,WAAW,EACT,0EAA0E;YAC1E,qDAAqD;QACvD,QAAQ,EAAE,eAAe;KAC1B,EACD,KAAK,IAAI,EAAE,CAAC,CAAC;QACX,QAAQ,EAAE;YACR;gBACE,GAAG,EAAE,iBAAiB;gBACtB,QAAQ,EAAE,eAAe;gBACzB,IAAI,EAAE,cAAc;aACrB;SACF;KACF,CAAC,CACH,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
export declare const BuscarPorNomeInputSchema: z.ZodObject<{
|
|
3
|
+
nome: z.ZodString;
|
|
4
|
+
pagina: z.ZodOptional<z.ZodNumber>;
|
|
5
|
+
count: z.ZodOptional<z.ZodNumber>;
|
|
6
|
+
}, z.core.$strip>;
|
|
7
|
+
export declare const BuscarPorPrincipioAtivoInputSchema: z.ZodObject<{
|
|
8
|
+
principioAtivo: z.ZodString;
|
|
9
|
+
pagina: z.ZodOptional<z.ZodNumber>;
|
|
10
|
+
count: z.ZodOptional<z.ZodNumber>;
|
|
11
|
+
}, z.core.$strip>;
|
|
12
|
+
export declare const BuscarPorClasseTerapeuticaInputSchema: z.ZodObject<{
|
|
13
|
+
classeTerapeutica: z.ZodString;
|
|
14
|
+
pagina: z.ZodOptional<z.ZodNumber>;
|
|
15
|
+
count: z.ZodOptional<z.ZodNumber>;
|
|
16
|
+
}, z.core.$strip>;
|
|
17
|
+
export declare const FiltrarPorTarjaInputSchema: z.ZodObject<{
|
|
18
|
+
tarja: z.ZodEnum<{
|
|
19
|
+
LIVRE: "LIVRE";
|
|
20
|
+
VERMELHA: "VERMELHA";
|
|
21
|
+
PRETA: "PRETA";
|
|
22
|
+
}>;
|
|
23
|
+
pagina: z.ZodOptional<z.ZodNumber>;
|
|
24
|
+
count: z.ZodOptional<z.ZodNumber>;
|
|
25
|
+
}, z.core.$strip>;
|
|
26
|
+
export declare const ConsultarBulaInputSchema: z.ZodObject<{
|
|
27
|
+
numProcesso: z.ZodString;
|
|
28
|
+
}, z.core.$strip>;
|
|
29
|
+
export declare const ListarApresentacoesInputSchema: z.ZodObject<{
|
|
30
|
+
numProcesso: z.ZodString;
|
|
31
|
+
}, z.core.$strip>;
|
|
32
|
+
export declare const MetaSchema: z.ZodObject<{
|
|
33
|
+
data_da_base: z.ZodString;
|
|
34
|
+
fonte: z.ZodString;
|
|
35
|
+
defasagem_dias: z.ZodNumber;
|
|
36
|
+
modo: z.ZodEnum<{
|
|
37
|
+
cache_local: "cache_local";
|
|
38
|
+
online: "online";
|
|
39
|
+
}>;
|
|
40
|
+
status: z.ZodOptional<z.ZodEnum<{
|
|
41
|
+
stale: "stale";
|
|
42
|
+
ok: "ok";
|
|
43
|
+
}>>;
|
|
44
|
+
}, z.core.$strip>;
|
|
45
|
+
export declare const MedicamentoListaOutputSchema: z.ZodObject<{
|
|
46
|
+
data: z.ZodObject<{
|
|
47
|
+
total: z.ZodNumber;
|
|
48
|
+
pagina: z.ZodNumber;
|
|
49
|
+
medicamentos: z.ZodArray<z.ZodObject<{
|
|
50
|
+
numProcesso: z.ZodString;
|
|
51
|
+
nomeProduto: z.ZodString;
|
|
52
|
+
empresa: z.ZodString;
|
|
53
|
+
idBulaPacienteProtegido: z.ZodOptional<z.ZodString>;
|
|
54
|
+
idBulaProfissionalProtegido: z.ZodOptional<z.ZodString>;
|
|
55
|
+
dataAtualizacao: z.ZodOptional<z.ZodString>;
|
|
56
|
+
}, z.core.$strip>>;
|
|
57
|
+
}, z.core.$strip>;
|
|
58
|
+
_meta: z.ZodObject<{
|
|
59
|
+
data_da_base: z.ZodString;
|
|
60
|
+
fonte: z.ZodString;
|
|
61
|
+
defasagem_dias: z.ZodNumber;
|
|
62
|
+
modo: z.ZodEnum<{
|
|
63
|
+
cache_local: "cache_local";
|
|
64
|
+
online: "online";
|
|
65
|
+
}>;
|
|
66
|
+
status: z.ZodOptional<z.ZodEnum<{
|
|
67
|
+
stale: "stale";
|
|
68
|
+
ok: "ok";
|
|
69
|
+
}>>;
|
|
70
|
+
}, z.core.$strip>;
|
|
71
|
+
}, z.core.$strip>;
|
|
72
|
+
export declare const BulaOutputSchema: z.ZodObject<{
|
|
73
|
+
data: z.ZodObject<{
|
|
74
|
+
numProcesso: z.ZodString;
|
|
75
|
+
nomeProduto: z.ZodString;
|
|
76
|
+
empresa: z.ZodString;
|
|
77
|
+
tarja: z.ZodOptional<z.ZodEnum<{
|
|
78
|
+
LIVRE: "LIVRE";
|
|
79
|
+
VERMELHA: "VERMELHA";
|
|
80
|
+
PRETA: "PRETA";
|
|
81
|
+
}>>;
|
|
82
|
+
classesTerapeuticas: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
83
|
+
principioAtivo: z.ZodOptional<z.ZodString>;
|
|
84
|
+
bulaPaciente: z.ZodOptional<z.ZodObject<{
|
|
85
|
+
id: z.ZodString;
|
|
86
|
+
urlPdf: z.ZodOptional<z.ZodString>;
|
|
87
|
+
}, z.core.$strip>>;
|
|
88
|
+
bulaProfissional: z.ZodOptional<z.ZodObject<{
|
|
89
|
+
id: z.ZodString;
|
|
90
|
+
urlPdf: z.ZodOptional<z.ZodString>;
|
|
91
|
+
}, z.core.$strip>>;
|
|
92
|
+
}, z.core.$strip>;
|
|
93
|
+
_meta: z.ZodObject<{
|
|
94
|
+
data_da_base: z.ZodString;
|
|
95
|
+
fonte: z.ZodString;
|
|
96
|
+
defasagem_dias: z.ZodNumber;
|
|
97
|
+
modo: z.ZodEnum<{
|
|
98
|
+
cache_local: "cache_local";
|
|
99
|
+
online: "online";
|
|
100
|
+
}>;
|
|
101
|
+
status: z.ZodOptional<z.ZodEnum<{
|
|
102
|
+
stale: "stale";
|
|
103
|
+
ok: "ok";
|
|
104
|
+
}>>;
|
|
105
|
+
}, z.core.$strip>;
|
|
106
|
+
}, z.core.$strip>;
|
|
107
|
+
export declare const ApresentacoesOutputSchema: z.ZodObject<{
|
|
108
|
+
data: z.ZodObject<{
|
|
109
|
+
numProcesso: z.ZodString;
|
|
110
|
+
nomeProduto: z.ZodString;
|
|
111
|
+
empresa: z.ZodString;
|
|
112
|
+
apresentacoes: z.ZodArray<z.ZodObject<{
|
|
113
|
+
descricao: z.ZodString;
|
|
114
|
+
}, z.core.$strip>>;
|
|
115
|
+
}, z.core.$strip>;
|
|
116
|
+
_meta: z.ZodObject<{
|
|
117
|
+
data_da_base: z.ZodString;
|
|
118
|
+
fonte: z.ZodString;
|
|
119
|
+
defasagem_dias: z.ZodNumber;
|
|
120
|
+
modo: z.ZodEnum<{
|
|
121
|
+
cache_local: "cache_local";
|
|
122
|
+
online: "online";
|
|
123
|
+
}>;
|
|
124
|
+
status: z.ZodOptional<z.ZodEnum<{
|
|
125
|
+
stale: "stale";
|
|
126
|
+
ok: "ok";
|
|
127
|
+
}>>;
|
|
128
|
+
}, z.core.$strip>;
|
|
129
|
+
}, z.core.$strip>;
|
|
130
|
+
export type MedicamentoListaOutput = z.infer<typeof MedicamentoListaOutputSchema>;
|
|
131
|
+
export type BulaOutput = z.infer<typeof BulaOutputSchema>;
|
|
132
|
+
export type ApresentacoesOutput = z.infer<typeof ApresentacoesOutputSchema>;
|
|
133
|
+
export type Meta = z.infer<typeof MetaSchema>;
|
|
134
|
+
//# sourceMappingURL=tools.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../src/schemas/tools.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,eAAO,MAAM,wBAAwB;;;;iBAUnC,CAAC;AAEH,eAAO,MAAM,kCAAkC;;;;iBAO7C,CAAC;AAEH,eAAO,MAAM,qCAAqC;;;;iBAOhD,CAAC;AAEH,eAAO,MAAM,0BAA0B;;;;;;;;iBAQrC,CAAC;AAEH,eAAO,MAAM,wBAAwB;;iBAKnC,CAAC;AAEH,eAAO,MAAM,8BAA8B;;iBAEzC,CAAC;AAIH,eAAO,MAAM,UAAU;;;;;;;;;;;;iBAMrB,CAAC;AAeH,eAAO,MAAM,4BAA4B;;;;;;;;;;;;;;;;;;;;;;;;;;iBAOvC,CAAC;AAEH,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAsB3B,CAAC;AAEH,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;;;;;;;;iBAYpC,CAAC;AAIH,MAAM,MAAM,sBAAsB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,4BAA4B,CAAC,CAAC;AAClF,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAC1D,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAC;AAC5E,MAAM,MAAM,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,UAAU,CAAC,CAAC"}
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
// ── Inputs ──────────────────────────────────────────────────────────────────
|
|
3
|
+
export const BuscarPorNomeInputSchema = z.object({
|
|
4
|
+
nome: z.string().min(1).describe("Nome comercial do medicamento"),
|
|
5
|
+
pagina: z.number().int().min(1).optional().describe("Número da página (padrão: 1)"),
|
|
6
|
+
count: z
|
|
7
|
+
.number()
|
|
8
|
+
.int()
|
|
9
|
+
.min(1)
|
|
10
|
+
.max(100)
|
|
11
|
+
.optional()
|
|
12
|
+
.describe("Resultados por página (padrão: 10, máx: 100)"),
|
|
13
|
+
});
|
|
14
|
+
export const BuscarPorPrincipioAtivoInputSchema = z.object({
|
|
15
|
+
principioAtivo: z
|
|
16
|
+
.string()
|
|
17
|
+
.min(1)
|
|
18
|
+
.describe("DCB ou DCI do princípio ativo (ex: dipirona, ibuprofeno)"),
|
|
19
|
+
pagina: z.number().int().min(1).optional(),
|
|
20
|
+
count: z.number().int().min(1).max(100).optional(),
|
|
21
|
+
});
|
|
22
|
+
export const BuscarPorClasseTerapeuticaInputSchema = z.object({
|
|
23
|
+
classeTerapeutica: z
|
|
24
|
+
.string()
|
|
25
|
+
.min(1)
|
|
26
|
+
.describe("Classe terapêutica do medicamento (ex: antibiótico, analgésico)"),
|
|
27
|
+
pagina: z.number().int().min(1).optional(),
|
|
28
|
+
count: z.number().int().min(1).max(100).optional(),
|
|
29
|
+
});
|
|
30
|
+
export const FiltrarPorTarjaInputSchema = z.object({
|
|
31
|
+
tarja: z
|
|
32
|
+
.enum(["LIVRE", "VERMELHA", "PRETA"])
|
|
33
|
+
.describe("Tipo de tarja: LIVRE (venda livre), VERMELHA (retenção de receita), PRETA (controle especial)"),
|
|
34
|
+
pagina: z.number().int().min(1).optional(),
|
|
35
|
+
count: z.number().int().min(1).max(100).optional(),
|
|
36
|
+
});
|
|
37
|
+
export const ConsultarBulaInputSchema = z.object({
|
|
38
|
+
numProcesso: z
|
|
39
|
+
.string()
|
|
40
|
+
.min(1)
|
|
41
|
+
.describe("Número de processo do medicamento na ANVISA (obtido via busca de medicamentos)"),
|
|
42
|
+
});
|
|
43
|
+
export const ListarApresentacoesInputSchema = z.object({
|
|
44
|
+
numProcesso: z.string().min(1).describe("Número de processo do medicamento na ANVISA"),
|
|
45
|
+
});
|
|
46
|
+
// ── Meta ─────────────────────────────────────────────────────────────────────
|
|
47
|
+
export const MetaSchema = z.object({
|
|
48
|
+
data_da_base: z.string().describe("ISO 8601 da última atualização da base consultada"),
|
|
49
|
+
fonte: z.string().describe("Identificação da fonte que respondeu (ex: anvisa_api, cache_local)"),
|
|
50
|
+
defasagem_dias: z.number().describe("Dias desde data_da_base"),
|
|
51
|
+
modo: z.enum(["cache_local", "online"]),
|
|
52
|
+
status: z.enum(["ok", "stale"]).optional().describe("'stale' quando defasagem > 30 dias"),
|
|
53
|
+
});
|
|
54
|
+
// ── Shared pieces ────────────────────────────────────────────────────────────
|
|
55
|
+
const MedicamentoResumoSchema = z.object({
|
|
56
|
+
numProcesso: z.string(),
|
|
57
|
+
nomeProduto: z.string(),
|
|
58
|
+
empresa: z.string(),
|
|
59
|
+
idBulaPacienteProtegido: z.string().optional(),
|
|
60
|
+
idBulaProfissionalProtegido: z.string().optional(),
|
|
61
|
+
dataAtualizacao: z.string().optional(),
|
|
62
|
+
});
|
|
63
|
+
// ── Outputs ──────────────────────────────────────────────────────────────────
|
|
64
|
+
export const MedicamentoListaOutputSchema = z.object({
|
|
65
|
+
data: z.object({
|
|
66
|
+
total: z.number().describe("Número de resultados retornados nesta página"),
|
|
67
|
+
pagina: z.number(),
|
|
68
|
+
medicamentos: z.array(MedicamentoResumoSchema),
|
|
69
|
+
}),
|
|
70
|
+
_meta: MetaSchema,
|
|
71
|
+
});
|
|
72
|
+
export const BulaOutputSchema = z.object({
|
|
73
|
+
data: z.object({
|
|
74
|
+
numProcesso: z.string(),
|
|
75
|
+
nomeProduto: z.string(),
|
|
76
|
+
empresa: z.string(),
|
|
77
|
+
tarja: z.enum(["LIVRE", "VERMELHA", "PRETA"]).optional(),
|
|
78
|
+
classesTerapeuticas: z.array(z.string()).optional(),
|
|
79
|
+
principioAtivo: z.string().optional(),
|
|
80
|
+
bulaPaciente: z
|
|
81
|
+
.object({
|
|
82
|
+
id: z.string(),
|
|
83
|
+
urlPdf: z.string().optional(),
|
|
84
|
+
})
|
|
85
|
+
.optional(),
|
|
86
|
+
bulaProfissional: z
|
|
87
|
+
.object({
|
|
88
|
+
id: z.string(),
|
|
89
|
+
urlPdf: z.string().optional(),
|
|
90
|
+
})
|
|
91
|
+
.optional(),
|
|
92
|
+
}),
|
|
93
|
+
_meta: MetaSchema,
|
|
94
|
+
});
|
|
95
|
+
export const ApresentacoesOutputSchema = z.object({
|
|
96
|
+
data: z.object({
|
|
97
|
+
numProcesso: z.string(),
|
|
98
|
+
nomeProduto: z.string(),
|
|
99
|
+
empresa: z.string(),
|
|
100
|
+
apresentacoes: z.array(z.object({
|
|
101
|
+
descricao: z.string(),
|
|
102
|
+
})),
|
|
103
|
+
}),
|
|
104
|
+
_meta: MetaSchema,
|
|
105
|
+
});
|
|
106
|
+
//# sourceMappingURL=tools.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tools.js","sourceRoot":"","sources":["../../src/schemas/tools.ts"],"names":[],"mappings":"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"}
|
package/dist/server.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAUjE,wBAAgB,YAAY,CAAC,UAAU,EAAE,kBAAkB,GAAG,SAAS,CAgBtE"}
|
package/dist/server.js
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
2
|
+
import { registerPrompts } from "./prompts/index.js";
|
|
3
|
+
import { registerResources } from "./resources/index.js";
|
|
4
|
+
import { registerBuscarPorClasseTerapeutica } from "./tools/buscar-por-classe-terapeutica.js";
|
|
5
|
+
import { registerBuscarPorNome } from "./tools/buscar-por-nome.js";
|
|
6
|
+
import { registerBuscarPorPrincipioAtivo } from "./tools/buscar-por-principio-ativo.js";
|
|
7
|
+
import { registerConsultarBula } from "./tools/consultar-bula.js";
|
|
8
|
+
import { registerFiltrarPorTarja } from "./tools/filtrar-por-tarja.js";
|
|
9
|
+
import { registerListarApresentacoes } from "./tools/listar-apresentacoes.js";
|
|
10
|
+
export function createServer(repository) {
|
|
11
|
+
const server = new McpServer({
|
|
12
|
+
name: "mcpassure-anvisa-bulario",
|
|
13
|
+
version: "1.0.0",
|
|
14
|
+
});
|
|
15
|
+
registerBuscarPorNome(server, repository);
|
|
16
|
+
registerBuscarPorPrincipioAtivo(server, repository);
|
|
17
|
+
registerBuscarPorClasseTerapeutica(server, repository);
|
|
18
|
+
registerFiltrarPorTarja(server, repository);
|
|
19
|
+
registerConsultarBula(server, repository);
|
|
20
|
+
registerListarApresentacoes(server, repository);
|
|
21
|
+
registerPrompts(server, repository);
|
|
22
|
+
registerResources(server, repository);
|
|
23
|
+
return server;
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=server.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEpE,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,kCAAkC,EAAE,MAAM,0CAA0C,CAAC;AAC9F,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,EAAE,+BAA+B,EAAE,MAAM,uCAAuC,CAAC;AACxF,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAClE,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AACvE,OAAO,EAAE,2BAA2B,EAAE,MAAM,iCAAiC,CAAC;AAE9E,MAAM,UAAU,YAAY,CAAC,UAA8B;IACzD,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC;QAC3B,IAAI,EAAE,0BAA0B;QAChC,OAAO,EAAE,OAAO;KACjB,CAAC,CAAC;IAEH,qBAAqB,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IAC1C,+BAA+B,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IACpD,kCAAkC,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IACvD,uBAAuB,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IAC5C,qBAAqB,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IAC1C,2BAA2B,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IAChD,eAAe,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IACpC,iBAAiB,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IAEtC,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { type HttpGet } from "../utils/http.js";
|
|
2
|
+
import type { Apresentacao, BulaLink, BularioSource, MedicamentoDetalhes, MedicamentoResumo, SearchByClasseTerapeuticaParams, SearchByNameParams, SearchByPrincipalAtivoParams, SearchByTarjaParams } from "./types.js";
|
|
3
|
+
export declare class AnvisaApiSource implements BularioSource {
|
|
4
|
+
readonly name = "anvisa_api";
|
|
5
|
+
private readonly client;
|
|
6
|
+
/**
|
|
7
|
+
* @param baseUrl URL base da API ANVISA (ex: https://consultas.anvisa.gov.br)
|
|
8
|
+
* @param maxRetries Tentativas de retry em falhas transitórias
|
|
9
|
+
* @param baseDelayMs Delay base do backoff exponencial
|
|
10
|
+
* @param timeoutMs Timeout por request em ms
|
|
11
|
+
* @param client Opcional — HttpClient pré-construído. Útil pra testes (mock)
|
|
12
|
+
* e pra compartilhar browser entre múltiplos sources.
|
|
13
|
+
*/
|
|
14
|
+
constructor(baseUrl: string, maxRetries: number, baseDelayMs: number, timeoutMs: number, client?: HttpGet);
|
|
15
|
+
close(): Promise<void>;
|
|
16
|
+
searchByName(params: SearchByNameParams): Promise<MedicamentoResumo[]>;
|
|
17
|
+
searchByPrincipalAtivo(params: SearchByPrincipalAtivoParams): Promise<MedicamentoResumo[]>;
|
|
18
|
+
searchByClasseTerapeutica(params: SearchByClasseTerapeuticaParams): Promise<MedicamentoResumo[]>;
|
|
19
|
+
searchByTarja(params: SearchByTarjaParams): Promise<MedicamentoResumo[]>;
|
|
20
|
+
getDetalhes(numProcesso: string): Promise<MedicamentoDetalhes>;
|
|
21
|
+
getApresentacoes(numProcesso: string): Promise<Apresentacao[]>;
|
|
22
|
+
getBulaLink(idBulaProtegido: string): Promise<BulaLink>;
|
|
23
|
+
private _search;
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=anvisa-api.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"anvisa-api.d.ts","sourceRoot":"","sources":["../../src/sources/anvisa-api.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,KAAK,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,KAAK,EACV,YAAY,EACZ,QAAQ,EACR,aAAa,EACb,mBAAmB,EACnB,iBAAiB,EACjB,+BAA+B,EAC/B,kBAAkB,EAClB,4BAA4B,EAC5B,mBAAmB,EAEpB,MAAM,YAAY,CAAC;AA8HpB,qBAAa,eAAgB,YAAW,aAAa;IACnD,QAAQ,CAAC,IAAI,gBAAgB;IAC7B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAU;IAEjC;;;;;;;OAOG;gBAED,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,EACjB,MAAM,CAAC,EAAE,OAAO;IAKZ,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAMtB,YAAY,CAAC,MAAM,EAAE,kBAAkB,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC;IAItE,sBAAsB,CAAC,MAAM,EAAE,4BAA4B,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC;IAI1F,yBAAyB,CAC7B,MAAM,EAAE,+BAA+B,GACtC,OAAO,CAAC,iBAAiB,EAAE,CAAC;IAIzB,aAAa,CAAC,MAAM,EAAE,mBAAmB,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC;IAOxE,WAAW,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC;IA0B9D,gBAAgB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IAa9D,WAAW,CAAC,eAAe,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;YAe/C,OAAO;CAwBtB"}
|