@mcpassure/mcp-anvisa-bulario 0.0.1 → 2.0.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/bootstrap.d.ts +11 -0
- package/dist/bootstrap.d.ts.map +1 -0
- package/dist/bootstrap.js +120 -0
- package/dist/bootstrap.js.map +1 -0
- 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 +15 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +16 -0
- package/dist/config.js.map +1 -0
- package/dist/db/dataset.d.ts +15 -0
- package/dist/db/dataset.d.ts.map +1 -0
- package/dist/db/dataset.js +168 -0
- package/dist/db/dataset.js.map +1 -0
- package/dist/db/schema.d.ts +11 -0
- package/dist/db/schema.d.ts.map +1 -0
- package/dist/db/schema.js +48 -0
- package/dist/db/schema.js.map +1 -0
- package/dist/domain/repository.d.ts +53 -0
- package/dist/domain/repository.d.ts.map +1 -0
- package/dist/domain/repository.js +68 -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 +38 -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 +14 -0
- package/dist/tools/consultar-bula.d.ts.map +1 -0
- package/dist/tools/consultar-bula.js +60 -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 +11 -0
- package/dist/tools/listar-apresentacoes.d.ts.map +1 -0
- package/dist/tools/listar-apresentacoes.js +52 -0
- package/dist/tools/listar-apresentacoes.js.map +1 -0
- package/dist/tools/shared.d.ts +106 -0
- package/dist/tools/shared.d.ts.map +1 -0
- package/dist/tools/shared.js +74 -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 +24 -0
- package/dist/utils/http.d.ts.map +1 -0
- package/dist/utils/http.js +23 -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,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
|
+
ok: "ok";
|
|
42
|
+
stale: "stale";
|
|
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
|
+
ok: "ok";
|
|
68
|
+
stale: "stale";
|
|
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
|
+
ok: "ok";
|
|
103
|
+
stale: "stale";
|
|
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
|
+
ok: "ok";
|
|
126
|
+
stale: "stale";
|
|
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: "2.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"}
|
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
import { HttpClient } from "../utils/http.js";
|
|
2
|
+
const TARJA_MAP = {
|
|
3
|
+
LIVRE: "LIVRE",
|
|
4
|
+
"SEM TARJA": "LIVRE",
|
|
5
|
+
"TARJA VERMELHA": "VERMELHA",
|
|
6
|
+
VERMELHA: "VERMELHA",
|
|
7
|
+
"TARJA PRETA": "PRETA",
|
|
8
|
+
PRETA: "PRETA",
|
|
9
|
+
};
|
|
10
|
+
function normalizeTarja(raw) {
|
|
11
|
+
if (!raw)
|
|
12
|
+
return undefined;
|
|
13
|
+
return TARJA_MAP[raw.toUpperCase().trim()];
|
|
14
|
+
}
|
|
15
|
+
function mapListaItem(item) {
|
|
16
|
+
return {
|
|
17
|
+
numProcesso: item.numProcesso ?? "",
|
|
18
|
+
nomeProduto: item.nomeProduto ?? "",
|
|
19
|
+
empresa: item.razaoSocial ?? "",
|
|
20
|
+
cnpj: item.cnpj,
|
|
21
|
+
expediente: item.expediente,
|
|
22
|
+
idBulaPacienteProtegido: item.idBulaPacienteProtegido,
|
|
23
|
+
idBulaProfissionalProtegido: item.idBulaProfissionalProtegido,
|
|
24
|
+
dataAtualizacao: item.dataAtualizacao,
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
/** Extrai razão social da empresa (string ou objeto). */
|
|
28
|
+
function extractRazaoSocial(empresa) {
|
|
29
|
+
if (!empresa)
|
|
30
|
+
return "";
|
|
31
|
+
if (typeof empresa === "string")
|
|
32
|
+
return empresa;
|
|
33
|
+
return empresa.razaoSocial ?? empresa.nomeFantasia ?? "";
|
|
34
|
+
}
|
|
35
|
+
/** Extrai CNPJ da empresa (objeto). */
|
|
36
|
+
function extractCnpj(empresa) {
|
|
37
|
+
if (!empresa || typeof empresa === "string")
|
|
38
|
+
return undefined;
|
|
39
|
+
return empresa.cnpj;
|
|
40
|
+
}
|
|
41
|
+
/** Extrai numProcesso (que pode vir como string em "processo" ou objeto {numero}). */
|
|
42
|
+
function extractNumProcesso(detalhes, fallback) {
|
|
43
|
+
if (detalhes.numProcesso)
|
|
44
|
+
return detalhes.numProcesso;
|
|
45
|
+
if (typeof detalhes.processo === "string")
|
|
46
|
+
return detalhes.processo;
|
|
47
|
+
if (detalhes.processo?.numProcesso)
|
|
48
|
+
return detalhes.processo.numProcesso;
|
|
49
|
+
if (detalhes.processo?.numero)
|
|
50
|
+
return detalhes.processo.numero;
|
|
51
|
+
return fallback;
|
|
52
|
+
}
|
|
53
|
+
/** Normaliza classesTerapeuticas — pode vir como array de strings ou objetos. */
|
|
54
|
+
function extractClassesTerapeuticas(raw) {
|
|
55
|
+
if (!raw || !Array.isArray(raw))
|
|
56
|
+
return [];
|
|
57
|
+
return raw
|
|
58
|
+
.map((c) => (typeof c === "string" ? c : (c.descricao ?? "")))
|
|
59
|
+
.filter((s) => Boolean(s));
|
|
60
|
+
}
|
|
61
|
+
export class AnvisaApiSource {
|
|
62
|
+
name = "anvisa_api";
|
|
63
|
+
client;
|
|
64
|
+
/**
|
|
65
|
+
* @param baseUrl URL base da API ANVISA (ex: https://consultas.anvisa.gov.br)
|
|
66
|
+
* @param maxRetries Tentativas de retry em falhas transitórias
|
|
67
|
+
* @param baseDelayMs Delay base do backoff exponencial
|
|
68
|
+
* @param timeoutMs Timeout por request em ms
|
|
69
|
+
* @param client Opcional — HttpClient pré-construído. Útil pra testes (mock)
|
|
70
|
+
* e pra compartilhar browser entre múltiplos sources.
|
|
71
|
+
*/
|
|
72
|
+
constructor(baseUrl, maxRetries, baseDelayMs, timeoutMs, client) {
|
|
73
|
+
this.client = client ?? new HttpClient(baseUrl, maxRetries, baseDelayMs, timeoutMs);
|
|
74
|
+
}
|
|
75
|
+
async close() {
|
|
76
|
+
if (this.client.close) {
|
|
77
|
+
await this.client.close();
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
async searchByName(params) {
|
|
81
|
+
return this._search({ "filter[nomeProduto]": params.nome }, params);
|
|
82
|
+
}
|
|
83
|
+
async searchByPrincipalAtivo(params) {
|
|
84
|
+
return this._search({ "filter[nomeProduto]": params.principioAtivo }, params);
|
|
85
|
+
}
|
|
86
|
+
async searchByClasseTerapeutica(params) {
|
|
87
|
+
return this._search({ "filter[nomeProduto]": params.classeTerapeutica }, params);
|
|
88
|
+
}
|
|
89
|
+
async searchByTarja(params) {
|
|
90
|
+
// A API de listagem ANVISA não expõe filtro direto por tarja.
|
|
91
|
+
// Retorna página genérica; consumidores devem chamar consultar_bula
|
|
92
|
+
// pra confirmar a tarja de cada resultado.
|
|
93
|
+
return this._search({}, { pagina: params.pagina, count: params.count ?? 10 });
|
|
94
|
+
}
|
|
95
|
+
async getDetalhes(numProcesso) {
|
|
96
|
+
const raw = (await this.client.get(`/api/consulta/medicamento/produtos/${encodeURIComponent(numProcesso)}`));
|
|
97
|
+
const classes = extractClassesTerapeuticas(raw.classesTerapeuticas);
|
|
98
|
+
const empresaRazaoSocial = extractRazaoSocial(raw.empresa) || raw.razaoSocial || "";
|
|
99
|
+
const empresaCnpj = extractCnpj(raw.empresa);
|
|
100
|
+
return {
|
|
101
|
+
numProcesso: extractNumProcesso(raw, numProcesso),
|
|
102
|
+
// Schema novo usa "nomeComercial"; fallback pra "nomeProduto" do schema legado
|
|
103
|
+
nomeProduto: raw.nomeComercial ?? raw.nomeProduto ?? "",
|
|
104
|
+
empresa: empresaRazaoSocial,
|
|
105
|
+
cnpj: empresaCnpj,
|
|
106
|
+
// Schema novo: codigoBulaPaciente / codigoBulaProfissional são JWTs com exp curta
|
|
107
|
+
idBulaPacienteProtegido: raw.codigoBulaPaciente ?? raw.idBulaPacienteProtegido ?? undefined,
|
|
108
|
+
idBulaProfissionalProtegido: raw.codigoBulaProfissional ?? raw.idBulaProfissionalProtegido ?? undefined,
|
|
109
|
+
tarja: normalizeTarja(raw.tarja),
|
|
110
|
+
classesTerapeuticas: classes.length > 0 ? classes : undefined,
|
|
111
|
+
principioAtivo: raw.principioAtivo ?? undefined,
|
|
112
|
+
numeroRegistro: raw.numeroRegistro ?? undefined,
|
|
113
|
+
};
|
|
114
|
+
}
|
|
115
|
+
async getApresentacoes(numProcesso) {
|
|
116
|
+
const raw = (await this.client.get(`/api/consulta/medicamento/produtos/${encodeURIComponent(numProcesso)}`));
|
|
117
|
+
if (!raw.apresentacoes || !Array.isArray(raw.apresentacoes))
|
|
118
|
+
return [];
|
|
119
|
+
return raw.apresentacoes
|
|
120
|
+
.map((a) => ({
|
|
121
|
+
descricao: a.descricao ?? a.embalagem ?? a.nomeApresentacao ?? "",
|
|
122
|
+
}))
|
|
123
|
+
.filter((a) => a.descricao);
|
|
124
|
+
}
|
|
125
|
+
async getBulaLink(idBulaProtegido) {
|
|
126
|
+
try {
|
|
127
|
+
const result = (await this.client.get(`/api/consulta/medicamentos/arquivo/bula/parecer/${encodeURIComponent(idBulaProtegido)}/`));
|
|
128
|
+
const urlPdf = typeof result === "string" ? result : (result?.link ?? result?.url);
|
|
129
|
+
return { id: idBulaProtegido, urlPdf: urlPdf ?? undefined };
|
|
130
|
+
}
|
|
131
|
+
catch {
|
|
132
|
+
// Se falhar, retorna só o ID; consumidor pode construir URL manualmente
|
|
133
|
+
return { id: idBulaProtegido };
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
async _search(filters, params) {
|
|
137
|
+
// ANVISA mudou para paginação 1-indexed em 2026.
|
|
138
|
+
// Antes: page=0 era a primeira página. Agora: page=1 é a primeira.
|
|
139
|
+
// Page=0 dispara erro `setFirstResult(-10)` no Hibernate (cálculo (0-1)*count).
|
|
140
|
+
const page = params.pagina ?? 1;
|
|
141
|
+
const count = params.count ?? 10;
|
|
142
|
+
const queryParams = {
|
|
143
|
+
page: String(page),
|
|
144
|
+
count: String(count),
|
|
145
|
+
...filters,
|
|
146
|
+
};
|
|
147
|
+
const raw = (await this.client.get("/api/consulta/bulario", queryParams));
|
|
148
|
+
if (!raw?.content || !Array.isArray(raw.content))
|
|
149
|
+
return [];
|
|
150
|
+
return raw.content.map(mapListaItem);
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
//# sourceMappingURL=anvisa-api.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"anvisa-api.js","sourceRoot":"","sources":["../../src/sources/anvisa-api.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { Apresentacao, BulaLink, BularioSource, MedicamentoDetalhes, MedicamentoResumo, SearchByClasseTerapeuticaParams, SearchByNameParams, SearchByPrincipalAtivoParams, SearchByTarjaParams } from "./types.js";
|
|
2
|
+
export declare class AnvisaDadosAbertosSource implements BularioSource {
|
|
3
|
+
readonly name = "anvisa_dados_abertos";
|
|
4
|
+
searchByName(_params: SearchByNameParams): Promise<MedicamentoResumo[]>;
|
|
5
|
+
searchByPrincipalAtivo(_params: SearchByPrincipalAtivoParams): Promise<MedicamentoResumo[]>;
|
|
6
|
+
searchByClasseTerapeutica(_params: SearchByClasseTerapeuticaParams): Promise<MedicamentoResumo[]>;
|
|
7
|
+
searchByTarja(_params: SearchByTarjaParams): Promise<MedicamentoResumo[]>;
|
|
8
|
+
getDetalhes(_numProcesso: string): Promise<MedicamentoDetalhes>;
|
|
9
|
+
getApresentacoes(_numProcesso: string): Promise<Apresentacao[]>;
|
|
10
|
+
getBulaLink(_idBulaProtegido: string): Promise<BulaLink>;
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=anvisa-dados-abertos.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"anvisa-dados-abertos.d.ts","sourceRoot":"","sources":["../../src/sources/anvisa-dados-abertos.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,YAAY,EACZ,QAAQ,EACR,aAAa,EACb,mBAAmB,EACnB,iBAAiB,EACjB,+BAA+B,EAC/B,kBAAkB,EAClB,4BAA4B,EAC5B,mBAAmB,EACpB,MAAM,YAAY,CAAC;AAIpB,qBAAa,wBAAyB,YAAW,aAAa;IAC5D,QAAQ,CAAC,IAAI,0BAA0B;IAEvC,YAAY,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC;IAMvE,sBAAsB,CAAC,OAAO,EAAE,4BAA4B,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC;IAM3F,yBAAyB,CACvB,OAAO,EAAE,+BAA+B,GACvC,OAAO,CAAC,iBAAiB,EAAE,CAAC;IAM/B,aAAa,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC;IAMzE,WAAW,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAM/D,gBAAgB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IAM/D,WAAW,CAAC,gBAAgB,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;CAKzD"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
// Stub — implementação prevista para v1.1 (sync offline via CSV da ANVISA Dados Abertos)
|
|
2
|
+
// https://dados.gov.br/dados/conjuntos-dados/medicamentos-registrados-no-brasil
|
|
3
|
+
export class AnvisaDadosAbertosSource {
|
|
4
|
+
name = "anvisa_dados_abertos";
|
|
5
|
+
searchByName(_params) {
|
|
6
|
+
return Promise.reject(new Error("NotImplemented: AnvisaDadosAbertosSource — previsto para v1.1"));
|
|
7
|
+
}
|
|
8
|
+
searchByPrincipalAtivo(_params) {
|
|
9
|
+
return Promise.reject(new Error("NotImplemented: AnvisaDadosAbertosSource — previsto para v1.1"));
|
|
10
|
+
}
|
|
11
|
+
searchByClasseTerapeutica(_params) {
|
|
12
|
+
return Promise.reject(new Error("NotImplemented: AnvisaDadosAbertosSource — previsto para v1.1"));
|
|
13
|
+
}
|
|
14
|
+
searchByTarja(_params) {
|
|
15
|
+
return Promise.reject(new Error("NotImplemented: AnvisaDadosAbertosSource — previsto para v1.1"));
|
|
16
|
+
}
|
|
17
|
+
getDetalhes(_numProcesso) {
|
|
18
|
+
return Promise.reject(new Error("NotImplemented: AnvisaDadosAbertosSource — previsto para v1.1"));
|
|
19
|
+
}
|
|
20
|
+
getApresentacoes(_numProcesso) {
|
|
21
|
+
return Promise.reject(new Error("NotImplemented: AnvisaDadosAbertosSource — previsto para v1.1"));
|
|
22
|
+
}
|
|
23
|
+
getBulaLink(_idBulaProtegido) {
|
|
24
|
+
return Promise.reject(new Error("NotImplemented: AnvisaDadosAbertosSource — previsto para v1.1"));
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=anvisa-dados-abertos.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"anvisa-dados-abertos.js","sourceRoot":"","sources":["../../src/sources/anvisa-dados-abertos.ts"],"names":[],"mappings":"AAYA,yFAAyF;AACzF,gFAAgF;AAChF,MAAM,OAAO,wBAAwB;IAC1B,IAAI,GAAG,sBAAsB,CAAC;IAEvC,YAAY,CAAC,OAA2B;QACtC,OAAO,OAAO,CAAC,MAAM,CACnB,IAAI,KAAK,CAAC,+DAA+D,CAAC,CAC3E,CAAC;IACJ,CAAC;IAED,sBAAsB,CAAC,OAAqC;QAC1D,OAAO,OAAO,CAAC,MAAM,CACnB,IAAI,KAAK,CAAC,+DAA+D,CAAC,CAC3E,CAAC;IACJ,CAAC;IAED,yBAAyB,CACvB,OAAwC;QAExC,OAAO,OAAO,CAAC,MAAM,CACnB,IAAI,KAAK,CAAC,+DAA+D,CAAC,CAC3E,CAAC;IACJ,CAAC;IAED,aAAa,CAAC,OAA4B;QACxC,OAAO,OAAO,CAAC,MAAM,CACnB,IAAI,KAAK,CAAC,+DAA+D,CAAC,CAC3E,CAAC;IACJ,CAAC;IAED,WAAW,CAAC,YAAoB;QAC9B,OAAO,OAAO,CAAC,MAAM,CACnB,IAAI,KAAK,CAAC,+DAA+D,CAAC,CAC3E,CAAC;IACJ,CAAC;IAED,gBAAgB,CAAC,YAAoB;QACnC,OAAO,OAAO,CAAC,MAAM,CACnB,IAAI,KAAK,CAAC,+DAA+D,CAAC,CAC3E,CAAC;IACJ,CAAC;IAED,WAAW,CAAC,gBAAwB;QAClC,OAAO,OAAO,CAAC,MAAM,CACnB,IAAI,KAAK,CAAC,+DAA+D,CAAC,CAC3E,CAAC;IACJ,CAAC;CACF"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { Apresentacao, BulaLink, BularioSource, MedicamentoDetalhes, MedicamentoResumo, SearchByClasseTerapeuticaParams, SearchByNameParams, SearchByPrincipalAtivoParams, SearchByTarjaParams } from "./types.js";
|
|
2
|
+
export declare class AnvisaPortalBularioSource implements BularioSource {
|
|
3
|
+
readonly name = "anvisa_portal_bulario";
|
|
4
|
+
searchByName(_params: SearchByNameParams): Promise<MedicamentoResumo[]>;
|
|
5
|
+
searchByPrincipalAtivo(_params: SearchByPrincipalAtivoParams): Promise<MedicamentoResumo[]>;
|
|
6
|
+
searchByClasseTerapeutica(_params: SearchByClasseTerapeuticaParams): Promise<MedicamentoResumo[]>;
|
|
7
|
+
searchByTarja(_params: SearchByTarjaParams): Promise<MedicamentoResumo[]>;
|
|
8
|
+
getDetalhes(_numProcesso: string): Promise<MedicamentoDetalhes>;
|
|
9
|
+
getApresentacoes(_numProcesso: string): Promise<Apresentacao[]>;
|
|
10
|
+
getBulaLink(_idBulaProtegido: string): Promise<BulaLink>;
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=anvisa-portal.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"anvisa-portal.d.ts","sourceRoot":"","sources":["../../src/sources/anvisa-portal.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,YAAY,EACZ,QAAQ,EACR,aAAa,EACb,mBAAmB,EACnB,iBAAiB,EACjB,+BAA+B,EAC/B,kBAAkB,EAClB,4BAA4B,EAC5B,mBAAmB,EACpB,MAAM,YAAY,CAAC;AAIpB,qBAAa,yBAA0B,YAAW,aAAa;IAC7D,QAAQ,CAAC,IAAI,2BAA2B;IAExC,YAAY,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC;IAMvE,sBAAsB,CAAC,OAAO,EAAE,4BAA4B,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC;IAM3F,yBAAyB,CACvB,OAAO,EAAE,+BAA+B,GACvC,OAAO,CAAC,iBAAiB,EAAE,CAAC;IAM/B,aAAa,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC;IAMzE,WAAW,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAM/D,gBAAgB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IAM/D,WAAW,CAAC,gBAAgB,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;CAKzD"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
// Stub — implementação prevista para v1.2 (fallback HTML scrape do Portal Bulário)
|
|
2
|
+
// https://consultas.anvisa.gov.br/#/bulario/
|
|
3
|
+
export class AnvisaPortalBularioSource {
|
|
4
|
+
name = "anvisa_portal_bulario";
|
|
5
|
+
searchByName(_params) {
|
|
6
|
+
return Promise.reject(new Error("NotImplemented: AnvisaPortalBularioSource — previsto para v1.2"));
|
|
7
|
+
}
|
|
8
|
+
searchByPrincipalAtivo(_params) {
|
|
9
|
+
return Promise.reject(new Error("NotImplemented: AnvisaPortalBularioSource — previsto para v1.2"));
|
|
10
|
+
}
|
|
11
|
+
searchByClasseTerapeutica(_params) {
|
|
12
|
+
return Promise.reject(new Error("NotImplemented: AnvisaPortalBularioSource — previsto para v1.2"));
|
|
13
|
+
}
|
|
14
|
+
searchByTarja(_params) {
|
|
15
|
+
return Promise.reject(new Error("NotImplemented: AnvisaPortalBularioSource — previsto para v1.2"));
|
|
16
|
+
}
|
|
17
|
+
getDetalhes(_numProcesso) {
|
|
18
|
+
return Promise.reject(new Error("NotImplemented: AnvisaPortalBularioSource — previsto para v1.2"));
|
|
19
|
+
}
|
|
20
|
+
getApresentacoes(_numProcesso) {
|
|
21
|
+
return Promise.reject(new Error("NotImplemented: AnvisaPortalBularioSource — previsto para v1.2"));
|
|
22
|
+
}
|
|
23
|
+
getBulaLink(_idBulaProtegido) {
|
|
24
|
+
return Promise.reject(new Error("NotImplemented: AnvisaPortalBularioSource — previsto para v1.2"));
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=anvisa-portal.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"anvisa-portal.js","sourceRoot":"","sources":["../../src/sources/anvisa-portal.ts"],"names":[],"mappings":"AAYA,mFAAmF;AACnF,6CAA6C;AAC7C,MAAM,OAAO,yBAAyB;IAC3B,IAAI,GAAG,uBAAuB,CAAC;IAExC,YAAY,CAAC,OAA2B;QACtC,OAAO,OAAO,CAAC,MAAM,CACnB,IAAI,KAAK,CAAC,gEAAgE,CAAC,CAC5E,CAAC;IACJ,CAAC;IAED,sBAAsB,CAAC,OAAqC;QAC1D,OAAO,OAAO,CAAC,MAAM,CACnB,IAAI,KAAK,CAAC,gEAAgE,CAAC,CAC5E,CAAC;IACJ,CAAC;IAED,yBAAyB,CACvB,OAAwC;QAExC,OAAO,OAAO,CAAC,MAAM,CACnB,IAAI,KAAK,CAAC,gEAAgE,CAAC,CAC5E,CAAC;IACJ,CAAC;IAED,aAAa,CAAC,OAA4B;QACxC,OAAO,OAAO,CAAC,MAAM,CACnB,IAAI,KAAK,CAAC,gEAAgE,CAAC,CAC5E,CAAC;IACJ,CAAC;IAED,WAAW,CAAC,YAAoB;QAC9B,OAAO,OAAO,CAAC,MAAM,CACnB,IAAI,KAAK,CAAC,gEAAgE,CAAC,CAC5E,CAAC;IACJ,CAAC;IAED,gBAAgB,CAAC,YAAoB;QACnC,OAAO,OAAO,CAAC,MAAM,CACnB,IAAI,KAAK,CAAC,gEAAgE,CAAC,CAC5E,CAAC;IACJ,CAAC;IAED,WAAW,CAAC,gBAAwB;QAClC,OAAO,OAAO,CAAC,MAAM,CACnB,IAAI,KAAK,CAAC,gEAAgE,CAAC,CAC5E,CAAC;IACJ,CAAC;CACF"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
export type Tarja = "LIVRE" | "VERMELHA" | "PRETA";
|
|
2
|
+
export type SearchParams = {
|
|
3
|
+
pagina?: number;
|
|
4
|
+
count?: number;
|
|
5
|
+
};
|
|
6
|
+
export type SearchByNameParams = SearchParams & {
|
|
7
|
+
nome: string;
|
|
8
|
+
};
|
|
9
|
+
export type SearchByPrincipalAtivoParams = SearchParams & {
|
|
10
|
+
principioAtivo: string;
|
|
11
|
+
};
|
|
12
|
+
export type SearchByClasseTerapeuticaParams = SearchParams & {
|
|
13
|
+
classeTerapeutica: string;
|
|
14
|
+
};
|
|
15
|
+
export type SearchByTarjaParams = SearchParams & {
|
|
16
|
+
tarja: Tarja;
|
|
17
|
+
};
|
|
18
|
+
export type MedicamentoResumo = {
|
|
19
|
+
numProcesso: string;
|
|
20
|
+
nomeProduto: string;
|
|
21
|
+
empresa: string;
|
|
22
|
+
cnpj?: string;
|
|
23
|
+
expediente?: string;
|
|
24
|
+
idBulaPacienteProtegido?: string;
|
|
25
|
+
idBulaProfissionalProtegido?: string;
|
|
26
|
+
dataAtualizacao?: string;
|
|
27
|
+
};
|
|
28
|
+
export type MedicamentoDetalhes = MedicamentoResumo & {
|
|
29
|
+
tarja?: Tarja;
|
|
30
|
+
classesTerapeuticas?: string[];
|
|
31
|
+
principioAtivo?: string;
|
|
32
|
+
numeroRegistro?: string;
|
|
33
|
+
};
|
|
34
|
+
export type Apresentacao = {
|
|
35
|
+
descricao: string;
|
|
36
|
+
};
|
|
37
|
+
export type BulaLink = {
|
|
38
|
+
id: string;
|
|
39
|
+
urlPdf?: string;
|
|
40
|
+
};
|
|
41
|
+
export interface BularioSource {
|
|
42
|
+
readonly name: string;
|
|
43
|
+
searchByName(params: SearchByNameParams): Promise<MedicamentoResumo[]>;
|
|
44
|
+
searchByPrincipalAtivo(params: SearchByPrincipalAtivoParams): Promise<MedicamentoResumo[]>;
|
|
45
|
+
searchByClasseTerapeutica(params: SearchByClasseTerapeuticaParams): Promise<MedicamentoResumo[]>;
|
|
46
|
+
searchByTarja(params: SearchByTarjaParams): Promise<MedicamentoResumo[]>;
|
|
47
|
+
getDetalhes(numProcesso: string): Promise<MedicamentoDetalhes>;
|
|
48
|
+
getApresentacoes(numProcesso: string): Promise<Apresentacao[]>;
|
|
49
|
+
getBulaLink(idBulaProtegido: string): Promise<BulaLink>;
|
|
50
|
+
/**
|
|
51
|
+
* Opcional — fontes que precisam liberar recursos (ex: Playwright browser)
|
|
52
|
+
* podem implementar. Chamado no SIGINT/SIGTERM do processo.
|
|
53
|
+
*/
|
|
54
|
+
close?(): Promise<void>;
|
|
55
|
+
}
|
|
56
|
+
//# sourceMappingURL=types.d.ts.map
|