Skip to main content

Templates API

CRUD completo para templates de laudos radiologicos. Templates permitem padronizar laudos, incluir comandos de voz para ditado, e organizar por categorias e tipos de exame.

Endpoints

MetodoEndpointDescricao
GET/templatesLista todos os templates
GET/templates/{id}Obtem um template especifico
POST/templatesCria um novo template
PUT/templates/{id}Atualiza um template
DELETE/templates/{id}Exclui um template

Objeto Template

{
  "id": "tpl_abc123",
  "name": "TC Torax Normal",
  "content": "<h1>LAUDO RADIOLOGICO</h1><h2>TC DE TORAX</h2>...",
  "content_text": "LAUDO RADIOLOGICO\nTC DE TORAX\n...",
  "exam_type": "CT",
  "modality": "CT",
  "category": "torax",
  "subcategory": "normal",
  "tags": ["normal", "rotina", "padrao"],
  "voice_command": "TC TORAX NORMAL",
  "voice_aliases": ["TORAX NORMAL", "CT NORMAL TORAX"],
  "is_favorite": true,
  "is_public": false,
  "usage_count": 284,
  "last_used_at": "2026-01-26T10:30:00Z",
  "created_by": "usr_xyz789",
  "created_at": "2025-06-15T08:00:00Z",
  "updated_at": "2026-01-20T14:22:00Z"
}

Campos

CampoTipoDescricao
idstringID unico do template
namestringNome do template
contentstringConteudo em HTML
content_textstringConteudo em texto plano (gerado automaticamente)
exam_typestringTipo de exame (CT, MR, US, XR, etc.)
modalitystringModalidade DICOM
categorystringCategoria (torax, abdome, cranio, etc.)
subcategorystringSubcategoria
tagsstring[]Tags para busca
voice_commandstringComando de voz principal
voice_aliasesstring[]Aliases adicionais para voz
is_favoritebooleanMarcado como favorito
is_publicbooleanVisivel para outros usuarios
usage_countnumberNumero de vezes usado
last_used_atstringUltima utilizacao (ISO 8601)

Listar Templates

Lista todos os templates do usuario autenticado com suporte a filtragem e busca.
GET /templates

Query Parameters

ParametroTipoPadraoDescricao
limitnumber50Maximo de resultados (1-100)
offsetnumber0Offset para paginacao
exam_typestring-Filtrar por tipo de exame
modalitystring-Filtrar por modalidade DICOM
categorystring-Filtrar por categoria
tagsstring-Filtrar por tags (separadas por virgula)
searchstring-Busca por nome ou conteudo
favorites_onlybooleanfalseApenas favoritos
sortstringusage_countOrdenar: usage_count, name, created_at, updated_at
orderstringdescOrdem: asc ou desc

Exemplos

curl -X GET "https://copilot.laudos.ai/api/v1/templates?exam_type=CT&category=torax&limit=20" \
  -H "Authorization: Bearer sk_live_xxx"

Resposta

{
  "data": [
    {
      "id": "tpl_abc123",
      "name": "TC Torax Normal",
      "content": "<h1>LAUDO RADIOLOGICO</h1>...",
      "exam_type": "CT",
      "category": "torax",
      "voice_command": "TC TORAX NORMAL",
      "usage_count": 284,
      "is_favorite": true,
      "created_at": "2025-06-15T08:00:00Z"
    },
    {
      "id": "tpl_def456",
      "name": "TC Torax com Nodulo",
      "content": "<h1>LAUDO RADIOLOGICO</h1>...",
      "exam_type": "CT",
      "category": "torax",
      "voice_command": "TC TORAX NODULO",
      "usage_count": 156,
      "is_favorite": false,
      "created_at": "2025-07-20T10:30:00Z"
    }
  ],
  "meta": {
    "total": 45,
    "limit": 20,
    "offset": 0,
    "has_more": true
  }
}

Obter Template

Retorna um template especifico pelo ID.
GET /templates/{id}

Exemplos

curl -X GET "https://copilot.laudos.ai/api/v1/templates/tpl_abc123" \
  -H "Authorization: Bearer sk_live_xxx"

Criar Template

Cria um novo template de laudo.
POST /templates

Body Parameters

CampoTipoObrigatorioDescricao
namestringSimNome do template (max 100 caracteres)
contentstringSimConteudo HTML do template
exam_typestringNaoTipo de exame
modalitystringNaoModalidade DICOM
categorystringNaoCategoria
subcategorystringNaoSubcategoria
tagsstring[]NaoTags para busca
voice_commandstringNaoComando de voz principal
voice_aliasesstring[]NaoComandos de voz alternativos
is_favoritebooleanNaoMarcar como favorito
is_publicbooleanNaoTornar publico

Exemplos

curl -X POST "https://copilot.laudos.ai/api/v1/templates" \
  -H "Authorization: Bearer sk_live_xxx" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "TC Torax com Enfisema",
    "content": "<h1>LAUDO RADIOLOGICO</h1><h2>TC DE TORAX</h2><p><strong>Tecnica:</strong> TC de torax com protocolo de alta resolucao.</p><h3>ANALISE</h3><p>Areas de atenuacao reduzida compativel com enfisema centrolobular, predominando nos lobos superiores bilateralmente.</p><h3>IMPRESSAO</h3><p>Enfisema pulmonar centrolobular bilateral, de predomínio superior.</p>",
    "exam_type": "CT",
    "modality": "CT",
    "category": "torax",
    "subcategory": "doenca_pulmonar",
    "tags": ["enfisema", "dpoc", "tabagismo"],
    "voice_command": "TC TORAX ENFISEMA",
    "voice_aliases": ["ENFISEMA TORAX", "CT ENFISEMA"]
  }'

Resposta

{
  "data": {
    "id": "tpl_ghi789",
    "name": "TC Torax com Enfisema",
    "content": "<h1>LAUDO RADIOLOGICO</h1>...",
    "exam_type": "CT",
    "category": "torax",
    "voice_command": "TC TORAX ENFISEMA",
    "usage_count": 0,
    "created_at": "2026-01-26T15:00:00Z"
  }
}

Atualizar Template

Atualiza um template existente. Apenas os campos fornecidos serao atualizados.
PUT /templates/{id}

Exemplos

curl -X PUT "https://copilot.laudos.ai/api/v1/templates/tpl_abc123" \
  -H "Authorization: Bearer sk_live_xxx" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "TC Torax Normal - Atualizado",
    "is_favorite": true,
    "tags": ["normal", "rotina", "padrao", "baseline"]
  }'

Excluir Template

Exclui um template permanentemente. Esta acao nao pode ser desfeita.
DELETE /templates/{id}

Exemplos

curl -X DELETE "https://copilot.laudos.ai/api/v1/templates/tpl_abc123" \
  -H "Authorization: Bearer sk_live_xxx"

Resposta

HTTP/1.1 204 No Content

Codigos de Erro

Codigo HTTPTipoDescricao
400bad_requestRequisicao malformada
401unauthorizedAPI Key invalida ou ausente
403forbiddenSem permissao (template de outro usuario)
404not_foundTemplate nao encontrado
409conflictComando de voz ja existe
422validation_errorErro de validacao
429rate_limitedLimite de requisicoes excedido

Exemplo de Erro

{
  "error": {
    "code": "conflict",
    "message": "O comando de voz 'TC TORAX NORMAL' ja esta em uso",
    "details": {
      "field": "voice_command",
      "existing_template_id": "tpl_abc123"
    }
  }
}