Pular para conteúdo

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

GET /api/patients/
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1...
X-Clinic-ID: 1

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 - Agendado
  • confirmed - Confirmado
  • arrived - Aguardando (check-in feito)
  • completed - Concluído
  • cancelled - Cancelado
  • no_show - Não compareceu

Exemplo - Transição de status:

POST /api/appointments/5/transition/
Content-Type: application/json

{
  "action": "confirm"
}

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

GET /api/appointments/?date=2026-01-17&professional=1
GET /api/patients/?search=joao

Paginação

GET /api/patients/?page=2&page_size=20

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