gerador-etiqueta
v1.0.5
Published
Biblioteca para gerar etiquetas do sistema Cardea
Maintainers
Readme
Gerador de Etiquetas Cardea
Biblioteca em TypeScript/Node.js para gerar etiquetas em PDF utilizadas pelo sistema Cardea. As etiquetas são otimizadas para impressão em formato paisagem (130 x 90 mm) e incluem informações essenciais do agendamento do paciente.
Visão geral
- Renderização de etiquetas em PDF a partir de objetos de agendamento.
- Layout pronto para impressão com hierarquia tipográfica ajustada.
- Destaque automático para pacientes com risco de queda.
- Exportações em TypeScript prontas para uso em aplicações Node.js ou servidores serverless.
Pré-requisitos
- Node.js >= 18
- npm ou outro gerenciador de pacotes compatível
Instalação
npm install gerador-etiquetaDesenvolvimento local
Clone o repositório e instale as dependências:
git clone <repo-url>
cd gerador-etiqueta
npm installUso rápido
import fs from "node:fs";
import { gerar, TAgendamento } from "gerador-etiqueta";
const agendamento: TAgendamento = {
paciente: {
nome: "Maria Oliveira",
nome_social: "Maria O.",
cpf: "123.456.789-00",
data_nascimento: new Date("1984-03-12"),
riscoDeQueda: false,
},
data: new Date("2025-02-25"),
hora: "10:00",
};
const pdf = gerar(agendamento);
pdf.pipe(fs.createWriteStream("etiqueta.pdf"));Observação: o
PDFDocumentretornado porgerarjá está pronto para ser encadeado em qualquer stream de escrita.
API
gerar(agendamento: TAgendamento): PDFKit.PDFDocument
| Campo | Tipo | Obrigatório | Descrição |
| --- | --- | --- | --- |
| paciente.nome | string | Sim | Nome civil do paciente. Utilizado como fallback caso nome_social esteja vazio. |
| paciente.nome_social | string | Sim | Nome exibido com maior destaque na etiqueta. |
| paciente.cpf | string | Sim | Campo formatado conforme informado. |
| paciente.data_nascimento | Date | Sim | Formatado automaticamente em pt-BR. |
| paciente.riscoDeQueda | boolean | Sim | Se true, imprime selo de alerta em vermelho. |
| data | Date | Sim | Data do agendamento (não exibida por padrão no layout atual). |
| hora | string | Sim | Horário do agendamento (não exibido no layout atual, mas disponível para ajustes futuros). |
Saída do PDF
- Formato paisagem (
layout: "landscape"). - Dimensões: 130 x 90 mm.
- Margem zero para aproveitar toda a área da etiqueta.
- Fonte padrão Helvetica com variações Helvetica-Bold quando necessário.
- Informação de autoria preenchida nos metadados (
Author,Creator,Producer).
Estrutura do projeto
src/
├─ gerador/
│ ├─ etiquetas/
│ │ └─ agendamento/ # Implementação da etiqueta de agendamento
│ │ ├─ index.ts
│ │ ├─ pdf.ts
│ │ └─ types.ts
│ └─ utils/ # Funções de apoio
│ └─ index.ts
├─ index.ts # Ponto de entrada do pacote
└─ test.ts # Exemplo de geração localScripts disponíveis
npm run build: compila o código TypeScript paradist/.npm run test: gera uma etiqueta de exemplo emdist/src/etiqueta.pdfapós compilação.npm run dev: recompila automaticamente em mudanças e executa o teste.
Fluxo de desenvolvimento sugerido
- Execute
npm run buildpara garantir que o TypeScript esteja consistente. - Rode
npm run teste abra o arquivo gerado para validar a etiqueta. - Ajuste o layout em
src/gerador/etiquetas/agendamento/pdf.ts, se necessário.
Personalização
- Estilização: adapte tamanhos de fonte, cores e posições dentro de
pdf.ts. - Novos campos: adicione propriedades à interface
TAgendamentoemtypes.tse ajuste o layout conforme necessário. - Suporte a múltiplas etiquetas: utilize o
PDFDocumentretornado para criar novas páginas ou combinar com outros geradores.
Licença
Este projeto é distribuído sob a licença MIT. Consulte o arquivo LICENSE para mais detalhes.
Contribuições
Sinta-se à vontade para abrir issues ou enviar pull requests com melhorias, correções ou novas etiquetas.
