Sistema completo de gerenciamento de clínica médica com agendamento de consultas, gestão de pacientes, profissionais e farmácia.
- Visão Geral
- Funcionalidades
- Tecnologias Utilizadas
- Requisitos
- Instalação Local
- Configuração do Google OAuth
- Deploy no Railway
- Estrutura do Projeto
- Banco de Dados
- Variáveis de Ambiente
- Comandos Úteis
O SIMED é uma aplicação web desenvolvida em Django para gerenciamento completo de clínicas médicas. O sistema oferece:
- Portal público com informações da clínica
- Sistema de agendamento de consultas online
- Painel administrativo para médicos, pacientes e atendentes
- Catálogo de medicamentos da farmácia
- Autenticação com Google OAuth
- Dashboard administrativo completo
- Cadastro e login (tradicional ou Google)
- Agendamento de consultas online
- Visualização de histórico de consultas
- Consulta de medicamentos disponíveis
- Painel com agenda de consultas
- Registro de relatórios de atendimento
- Visualização de informações dos pacientes
- Gestão de agendamentos
- Cadastro de pacientes
- Gerenciamento de horários
- Dashboard com estatísticas
- Gestão de usuários e cargos
- Gerenciamento de medicamentos
- Relatórios de ocupação
- Backend: Django 5.2.6
- Banco de Dados: PostgreSQL
- Autenticação: django-allauth (Google OAuth)
- Frontend: HTML5, CSS3, JavaScript
- Servidor de Produção: Gunicorn
- Arquivos Estáticos: WhiteNoise
- Imagens: Pillow
- Python 3.11+
- PostgreSQL 13+
- pip (gerenciador de pacotes Python)
```bash git clone cd simed ```
```bash pip install -r requirements.txt ```
Crie um arquivo `.env` ou exporte as variáveis:
```bash export SECRET_KEY='sua-chave-secreta-aqui' export DEBUG='True' export PGDATABASE='simed_db' export PGUSER='seu_usuario' export PGPASSWORD='sua_senha' export PGHOST='localhost' export PGPORT='5432' ```
```bash
python manage.py migrate
psql -U seu_usuario -d simed_db -f scripts/create_database.sql ```
```bash python manage.py createsuperuser ```
```bash python manage.py collectstatic --noinput ```
```bash python manage.py runserver 0.0.0.0:5000 ```
Acesse: http://localhost:5000
Para habilitar o login com Google, siga estes passos:
- Acesse https://console.cloud.google.com
- Crie um novo projeto ou selecione um existente
- Vá em "APIs e Serviços" > "Tela de consentimento OAuth"
- Configure a tela de consentimento (tipo: Externo)
- Vá em "APIs e Serviços" > "Credenciais"
- Clique em "Criar credenciais" > "ID do cliente OAuth"
- Tipo de aplicativo: "Aplicativo da Web"
- Adicione as URIs de redirecionamento autorizadas:
- Para desenvolvimento: `http://localhost:5000/accounts/google/login/callback/\`
- Para Replit: `https://seu-projeto.replit.dev/accounts/google/login/callback/\`
- Para Railway: `https://seu-app.railway.app/accounts/google/login/callback/\`
```bash export GOOGLE_CLIENT_ID='seu-client-id' export GOOGLE_CLIENT_SECRET='seu-client-secret' ```
- Acesse `/admin/` com seu superusuário
- Vá em "Sites" e edite o site existente:
- Domain: seu-dominio.com
- Display name: SIMED
O projeto já inclui os arquivos necessários:
- `Procfile` - Comandos de inicialização
- `railway.json` - Configuração do Railway
- `runtime.txt` - Versão do Python
- `requirements.txt` - Dependências
- Acesse https://railway.app
- Faça login com sua conta GitHub
- Clique em "New Project"
- Selecione "Deploy from GitHub repo"
- Escolha o repositório do SIMED
- No projeto Railway, clique em "New"
- Selecione "Database" > "PostgreSQL"
- O Railway criará automaticamente as variáveis de ambiente do banco
No painel do Railway, vá em "Variables" e adicione:
``` SECRET_KEY=sua-chave-secreta-segura DEBUG=False ALLOWED_HOSTS=seu-app.railway.app GOOGLE_CLIENT_ID=seu-client-id GOOGLE_CLIENT_SECRET=seu-client-secret ```
O Railway fará o deploy automaticamente após cada push no repositório.
``` simed/ ├── cadastro_pessoas/ # Configurações do projeto Django │ ├── settings.py # Configurações principais │ ├── urls.py # URLs principais │ └── wsgi.py # Configuração WSGI ├── pessoas/ # App principal │ ├── migrations/ # Migrações do banco de dados │ ├── static/ # Arquivos estáticos (CSS, JS, imagens) │ ├── templates/ # Templates HTML │ ├── admin.py # Configuração do admin │ ├── models.py # Modelos de dados │ ├── views.py # Views/Controllers │ ├── urls.py # URLs do app │ └── signals.py # Signals do Django ├── media/ # Uploads de usuários ├── scripts/ # Scripts úteis │ └── create_database.sql # Script de criação do banco ├── manage.py # CLI do Django ├── requirements.txt # Dependências Python ├── Procfile # Comandos para Railway/Heroku ├── railway.json # Configuração do Railway └── runtime.txt # Versão do Python ```
- Perfil - Extensão do usuário com tipo (médico/paciente/atendente)
- Especialidade - Categorias de especialidades médicas
- Profissional - Informações detalhadas dos profissionais
- Consulta - Agendamentos de consultas
- Medicamento - Catálogo da farmácia
Para criar o banco manualmente, execute:
```bash psql -U usuario -d database -f scripts/create_database.sql ```
Ou use as migrações do Django:
```bash python manage.py migrate ```
| Variável | Descrição | Obrigatória |
|---|---|---|
| `SECRET_KEY` | Chave secreta do Django | Sim |
| `DEBUG` | Modo debug (True/False) | Não (padrão: True) |
| `ALLOWED_HOSTS` | Hosts permitidos | Não (padrão: *) |
| `PGDATABASE` | Nome do banco PostgreSQL | Sim |
| `PGUSER` | Usuário do banco | Sim |
| `PGPASSWORD` | Senha do banco | Sim |
| `PGHOST` | Host do banco | Sim |
| `PGPORT` | Porta do banco | Sim |
| `GOOGLE_CLIENT_ID` | ID do cliente Google OAuth | Não |
| `GOOGLE_CLIENT_SECRET` | Secret do Google OAuth | Não |
```bash
python manage.py runserver 0.0.0.0:5000
python manage.py makemigrations
python manage.py migrate
python manage.py createsuperuser
python manage.py collectstatic
python manage.py shell
python manage.py test
gunicorn cadastro_pessoas.wsgi:application --bind 0.0.0.0:5000 ```
Para dúvidas ou problemas, abra uma issue no repositório.
Este projeto é privado e de uso exclusivo.