API REST
A API segue padrões REST e usa autenticação JWT.
Autenticação
Login
POST /api/auth/login/
Content-Type: application/json
{
"email": "admin@clinic.com",
"password": "admin123"
}
Resposta:
{
"access": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1...",
"refresh": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1..."
}
Refresh Token
POST /api/auth/refresh/
Content-Type: application/json
{
"refresh": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1..."
}
Usar Token
Endpoints Principais
Pacientes
| Método | Endpoint | Descrição |
|---|---|---|
GET |
/api/patients/ |
Listar pacientes |
POST |
/api/patients/ |
Criar paciente |
GET |
/api/patients/{id}/ |
Detalhes do paciente |
PUT |
/api/patients/{id}/ |
Atualizar paciente |
DELETE |
/api/patients/{id}/ |
Remover paciente |
Exemplo - Criar paciente:
POST /api/patients/
Content-Type: application/json
Authorization: Bearer {token}
X-Clinic-ID: 1
{
"name": "João Silva",
"cpf": "12345678900",
"birth_date": "1990-05-15",
"phone": "11999998888",
"email": "joao@email.com"
}
Agendamentos
| Método | Endpoint | Descrição |
|---|---|---|
GET |
/api/appointments/ |
Listar agendamentos |
POST |
/api/appointments/ |
Criar agendamento |
GET |
/api/appointments/{id}/ |
Detalhes |
POST |
/api/appointments/{id}/transition/ |
Mudar status |
GET |
/api/appointments/kanban/ |
Dados do Kanban |
POST |
/api/appointments/{id}/start-encounter/ |
Iniciar atendimento |
Status disponíveis:
scheduled- Agendadoconfirmed- Confirmadoarrived- Aguardando (check-in feito)completed- Concluídocancelled- Canceladono_show- Não compareceu
Exemplo - Transição de status:
Atendimentos (Encounters)
| Método | Endpoint | Descrição |
|---|---|---|
GET |
/api/encounters/ |
Listar atendimentos |
GET |
/api/encounters/{id}/ |
Detalhes do atendimento |
PATCH |
/api/encounters/{id}/ |
Atualizar (SOAP) |
POST |
/api/encounters/{id}/finish/ |
Finalizar atendimento |
Exemplo - Atualizar prontuário SOAP:
PATCH /api/encounters/9/
Content-Type: application/json
{
"subjective": "Paciente relata dor de cabeça há 2 dias",
"objective": "PA 120x80, FC 72bpm",
"assessment": "Cefaleia tensional",
"plan": "Dipirona 500mg 6/6h por 3 dias"
}
Diagnósticos
| Método | Endpoint | Descrição |
|---|---|---|
GET |
/api/diagnoses/ |
Listar diagnósticos |
POST |
/api/diagnoses/ |
Adicionar diagnóstico |
DELETE |
/api/diagnoses/{id}/ |
Remover diagnóstico |
Exemplo:
POST /api/diagnoses/
Content-Type: application/json
{
"encounter": 9,
"icd_code": "R51",
"description": "Cefaleia",
"is_primary": true
}
Prescrições
| Método | Endpoint | Descrição |
|---|---|---|
GET |
/api/prescriptions/ |
Listar prescrições |
POST |
/api/prescriptions/ |
Criar prescrição |
DELETE |
/api/prescriptions/{id}/ |
Remover prescrição |
Serviços
| Método | Endpoint | Descrição |
|---|---|---|
GET |
/api/services/ |
Listar serviços |
POST |
/api/services/ |
Criar serviço |
Clínicas
| Método | Endpoint | Descrição |
|---|---|---|
GET |
/api/clinics/ |
Listar clínicas |
GET |
/api/me/clinics/ |
Clínicas do usuário logado |
Filtros e Paginação
Filtros
Paginação
Resposta:
{
"count": 150,
"next": "http://localhost:8000/api/patients/?page=3",
"previous": "http://localhost:8000/api/patients/?page=1",
"results": [...]
}
Códigos de Erro
| Código | Significado |
|---|---|
400 |
Dados inválidos |
401 |
Não autenticado |
403 |
Sem permissão |
404 |
Não encontrado |
500 |
Erro interno |