API para o sistema SafeClinic de agendamento de consultas médicas.
O SafeClinic é uma aplicação web para otimizar o agendamento de consultas médicas, com funcionalidades para pacientes, médicos e administradores. Oferece:
- Interface intuitiva para agendamento e acompanhamento de consultas
- Painel administrativo para gestão de horários, cadastro de pacientes e registros clínicos
- Mecanismos de segurança robustos (HTTPS, criptografia, autenticação multifator)
- Node.js
- TypeScript
- Express
- PostgreSQL
- TypeORM
- JWT para autenticação
- Swagger para documentação da API
- Joi para validação de dados
- Winston para logs
Estes usuários já estão cadastrados no banco de dados para facilitar testes:
| Papel | Senha | |
|---|---|---|
| ana.costa@safeclinic.com | Doutor | 123456 |
| pedro.oliveira@safeclinic.com | Doutor | 123456 |
| joao.santos@safeclinic.com | Doutor | 123456 |
| fernanda.lima@email.com | Paciente | 123456 |
| roberto.souza@email.com | Paciente | 123456 |
| carlos.ferreira@email.com | Paciente | 123456 |
| recepcionista@safeclinic.com | Recepcionista (adm) | 123456 |
- Autenticação e autorização com JWT
- Gerenciamento de pacientes, médicos e recepcionistas
- Agendamento de consultas
- Gerenciamento de horários de atendimento
- Sistema de notificações
- Controle de acesso baseado em papéis (RBAC)
- Logs de auditoria
- Documentação interativa da API
- Node.js 14+
- PostgreSQL 12+
- Yarn ou NPM
- Clone o repositório:
git clone https://github.com/seu-usuario/safeclinic-api.git
cd safeclinic-api
- Instale as dependências:
npm install
- Configure as variáveis de ambiente:
cp .env.example .env
Edite o arquivo .env com as configurações do seu ambiente.
- Configure o banco de dados:
psql -U postgres -c "CREATE DATABASE safeclinic"
- Execute as migrações do banco de dados:
npm run migration:run
- Inicie o servidor de desenvolvimento:
npm run dev
safeclinic-api/
├── src/
│ ├── config/ # Configurações da aplicação
│ ├── controllers/ # Controladores da API
│ ├── database/ # Configurações e migrações do banco de dados
│ ├── middlewares/ # Middlewares do Express
│ ├── models/ # Modelos de dados (entidades TypeORM)
│ ├── routes/ # Rotas da API
│ ├── services/ # Serviços de negócio
│ ├── utils/ # Utilitários e helpers
│ ├── server.ts # Ponto de entrada da aplicação
├── database/ # Scripts SQL
├── logs/ # Logs da aplicação
├── .env.example # Exemplo de variáveis de ambiente
├── package.json # Dependências e scripts
├── tsconfig.json # Configuração do TypeScript
└── README.md # Documentação
O acesso completo à documentação da API está disponível em /api-docs quando o servidor está em execução.
Principais endpoints:
-
Autenticação
POST /api/v1/auth/login: Login de usuárioPOST /api/v1/auth/refresh-token: Renovar token JWT
-
Pacientes
GET /api/v1/patients: Listar pacientesGET /api/v1/patients/:id: Obter detalhes de pacientePOST /api/v1/patients: Criar pacientePUT /api/v1/patients/:id: Atualizar pacienteDELETE /api/v1/patients/:id: Desativar paciente
-
Médicos
GET /api/v1/doctors: Listar médicosGET /api/v1/doctors/speciality/:speciality: Listar médicos por especialidadeGET /api/v1/doctors/:id: Obter detalhes de médicoPOST /api/v1/doctors: Criar médicoPUT /api/v1/doctors/:id: Atualizar médicoDELETE /api/v1/doctors/:id: Desativar médico
- Todas as senhas são armazenadas com hash usando bcrypt
- Autenticação baseada em JWT
- Controle de acesso baseado em papéis
- Rate limiting para prevenção de ataques de força bruta
- Logs de auditoria para ações críticas
- HTTPS para comunicação segura
- Proteção contra ataques comuns (XSS, CSRF, Injection)
Este projeto está licenciado sob a licença MIT - veja o arquivo LICENSE para detalhes.
Luiz Lopes - luizgalopes01@gmail.com Sandra Remédios - Srocha2290@gmail.com