Pacientes
Endpoints para consultar pacientes. A API é read-only — pacientes são criados e atualizados automaticamente pelo worker Python durante a ingestão DICOM, a partir das tags do estudo recebido.
Isolamento: aplicado via scope BelongsToTenant. Usuários regulares veem apenas pacientes que possuem ao menos um estudo na sua unidade; tenant admins veem todos os pacientes do tenant; super admins veem tudo.
GET /api/patients
Lista paginada de pacientes.
Auth: auth:api
Query params
Busca case-insensitive em patient_name e patient_id. Máximo 255 caracteres.
Response 200
Paginação Laravel padrão (20 itens por página, não customizável):
{
"data": [
{
"id": "uuid",
"tenant_id": "uuid",
"patient_id": "string",
"patient_name": "string",
"patient_birth_date": "YYYY-MM-DD | null",
"patient_sex": "M | F | null",
"created_at": "iso8601",
"updated_at": "iso8601"
}
],
"current_page": 1,
"per_page": 20,
"total": 456,
"last_page": 23
}
Ordenação: patient_name ASC, created_at DESC.
Erros
| Status | Situação |
|---|
| 401 | Token inválido ou ausente |
| 422 | search com mais de 255 caracteres |
GET /api/patients/
Detalhe de um paciente.
Auth: auth:api
Path params
| Param | Tipo | Descrição |
|---|
id | uuid | ID do paciente |
Response 200
{
"id": "uuid",
"tenant_id": "uuid",
"patient_id": "string",
"patient_name": "string",
"patient_birth_date": "YYYY-MM-DD | null",
"patient_sex": "M | F | null",
"created_at": "iso8601",
"updated_at": "iso8601"
}
Erros
| Status | Situação |
|---|
| 401 | Token inválido |
| 404 | Paciente não encontrado, ou usuário regular sem estudos desse paciente na sua unidade |
GET /api/patients//studies
Lista paginada de estudos de um paciente.
Auth: auth:api
Response 200
Mesmo shape de GET /api/studies, mas filtrado pelo paciente (15 itens por página):
{
"data": [
{
"id": "uuid",
"patient_uuid": "uuid",
"study_date": "YYYY-MM-DD",
"study_description": "string | null",
"modalities": ["CT"],
"report_status": "pending | draft | final | null",
"...": "demais campos do estudo"
}
],
"current_page": 1,
"per_page": 15,
"total": 12,
"last_page": 1
}
Ordenação: study_date DESC, created_at DESC.
Erros
| Status | Situação |
|---|
| 401 | Token inválido |
| 404 | Paciente não encontrado ou fora do tenant |