Documentation Index Fetch the complete documentation index at: https://docs.connectvets.com.br/llms.txt
Use this file to discover all available pages before exploring further.
Visão Geral
Esta página documenta todos os tipos de dados (schemas) utilizados pela API ConnectVets Notes. Estes schemas seguem as convenções JSON e são consistentes em toda a API.
Schemas Principais
Note
Representa uma nota veterinária completa com áudio, transcrição e seções.
interface Note {
id : string ; // UUID da nota
name : string ; // Nome do paciente
gender : "male" | "female" | "unidentified" ; // Sexo do paciente
transcription_status : "pending" | "processing" | "completed" | "failed" ; // Status da transcrição
external_id ?: string ; // ID do sistema externo (opcional)
metadata : MetadataItem []; // Metadados adicionais
note_sections : NoteSection []; // Seções estruturadas (apenas no GET /notes/{id})
created_at : string ; // Data de criação (ISO 8601)
updated_at : string ; // Data da última atualização (ISO 8601)
}
Exemplo
{
"id" : "6a4fe1de-52c4-4b2b-a30f-4b3fa9d7d8b3" ,
"name" : "Rex" ,
"gender" : "male" ,
"audio_name" : "rex_visit_20240214.wav" ,
"transcription_status" : "completed" ,
"external_id" : "CLIENTE_123" ,
"metadata" : [
{ "key" : "procedimento" , "value" : "vacina" },
{ "key" : "veterinario" , "value" : "Dr. João Silva" }
],
"note_sections" : [
{
"id" : "9b7d8b6a-12e3-45fa-9c1c-7e12f5c4a1b2" ,
"title" : "Anamnese" ,
"label" : "anamnesis" ,
"content" : "Paciente apresenta diminuição do apetite nos últimos 3 dias..." ,
"order" : "1"
}
],
"created_at" : "2024-02-14T18:25:43Z" ,
"updated_at" : "2024-02-14T18:30:23Z"
}
NoteSection
Representa uma seção estruturada de uma nota (anamnese, exame físico, etc.).
interface NoteSection {
id : string ; // UUID da seção
title : string ; // Título exibido da seção
label : string ; // Identificador interno (para programação)
content : string ; // Conteúdo transcrito da seção
order : string ; // Ordem de exibição ("1", "2", "3"...)
}
Labels Comuns
Label Título Descrição anamnesisAnamnese Histórico e relato do proprietário physical_examExame Físico Avaliação física e sinais vitais diagnosisDiagnóstico Conclusões e diagnósticos treatmentTratamento Prescrições e recomendações observationsObservações Notas adicionais follow_upSeguimento Instruções de retorno
Exemplo
{
"id" : "9b7d8b6a-12e3-45fa-9c1c-7e12f5c4a1b2" ,
"title" : "Exame Físico" ,
"label" : "physical_exam" ,
"content" : "Peso: 28kg. Temperatura: 38.8°C. FC: 90 bpm. FR: 24 mpm. Mucosas rosadas e úmidas." ,
"order" : "2"
}
Par chave-valor para armazenar informações adicionais sobre a nota.
interface MetadataItem {
key : string ; // Chave do metadado
value : string ; // Valor do metadado
}
Exemplos Comuns
[
{ "key" : "procedimento" , "value" : "consulta de rotina" },
{ "key" : "veterinario" , "value" : "Dr. João Silva" },
{ "key" : "peso" , "value" : "12.5kg" },
{ "key" : "temperatura" , "value" : "38.5°C" },
{ "key" : "observacoes" , "value" : "animal cooperativo" }
]
Informações de paginação para endpoints que retornam listas.
interface Pagination {
current_page : number ; // Página atual
total_pages : number ; // Total de páginas
total_items : number ; // Total de itens
}
Exemplo
{
"current_page" : 1 ,
"total_pages" : 10 ,
"total_items" : 200
}
NoteListResponse
Resposta para o endpoint GET /notes (listagem).
interface NoteListResponse {
pagination : Pagination ; // Informações de paginação
notes : Note []; // Array de notas (sem note_sections)
}
Importante : Na listagem, as notas não incluem o campo note_sections. Para obter as seções, use GET /notes/{id}.
Exemplo
{
"pagination" : {
"current_page" : 1 ,
"total_pages" : 5 ,
"total_items" : 100
},
"notes" : [
{
"id" : "6a4fe1de-52c4-4b2b-a30f-4b3fa9d7d8b3" ,
"name" : "Rex" ,
"gender" : "male" ,
"transcription_status" : "completed" ,
"external_id" : "CLIENTE_123" ,
"metadata" : [
{ "key" : "procedimento" , "value" : "vacina" }
],
"created_at" : "2024-02-14T18:25:43Z" ,
"updated_at" : "2024-02-14T18:30:23Z"
}
]
}
Enums
TranscriptionStatus
Status do processamento da transcrição:
type TranscriptionStatus = "pending" | "processing" | "completed" | "failed" ;
Valor Descrição Comportamento pendingAguardando processamento Nota criada, mas ainda não iniciou o processamento processingIA processando o áudio Transcrição em andamento completedTranscrição finalizada Seções disponíveis, arquivo de transcrição pronto failedErro no processamento Problema durante a transcrição
Gender
Sexo do paciente:
type Gender = "male" | "female" | "unidentified" ;
Valor Descrição maleMacho femaleFêmea unidentifiedNão identificado (padrão)
Todas as datas utilizam o formato ISO 8601 em UTC :
Exemplos
{
"created_at" : "2024-02-14T18:25:43Z" ,
"updated_at" : "2024-02-14T18:30:23Z"
}
Parsing em Diferentes Linguagens
JavaScript
const createdAt = new Date ( "2024-02-14T18:25:43Z" );
console . log ( createdAt . toLocaleDateString ( 'pt-BR' ));
// Output: 14/02/2024
Python
from datetime import datetime
created_at = datetime.fromisoformat( "2024-02-14T18:25:43Z" .replace( 'Z' , '+00:00' ))
print (created_at.strftime( " %d /%m/%Y %H:%M" ))
# Output: 14/02/2024 18:25
package main
import (
" fmt "
" time "
)
func main () {
t , _ := time . Parse ( time . RFC3339 , "2024-02-14T18:25:43Z" )
fmt . Println ( t . Format ( "02/01/2006 15:04" ))
// Output: 14/02/2024 18:25
}
Identificadores UUID
Todos os IDs utilizam o formato UUID v4 (RFC 4122):
6a4fe1de-52c4-4b2b-a30f-4b3fa9d7d8b3
Características
Comprimento : 36 caracteres
Formato : 8-4-4-4-12 (hexadecimal com hífens)
Geração : Aleatório/pseudo-aleatório
Unicidade : Globalmente único
Validação
JavaScript
function isValidUUID ( uuid ) {
const uuidRegex = / ^ [ 0-9a-f ] {8} - [ 0-9a-f ] {4} -4 [ 0-9a-f ] {3} - [ 89ab ][ 0-9a-f ] {3} - [ 0-9a-f ] {12} $ / i ;
return uuidRegex . test ( uuid );
}
Python
import uuid
def is_valid_uuid ( uuid_string ):
try :
uuid.UUID(uuid_string, version = 4 )
return True
except ValueError :
return False
Tratamento de Nulos
Campos Opcionais
Campos que podem ser null ou ausentes:
transcription_url - Disponível apenas quando transcription_status = "completed"
external_id - Sempre opcional
note_sections - Vazio para status pending/processing/failed
{
"id" : "7b5fe2ef-63d5-5c3c-b41f-5c4fa8e8d9c4" ,
"name" : "Luna" ,
"transcription_status" : "processing" ,
"transcription_url" : null ,
"external_id" : null ,
"note_sections" : []
}
Validação de Dados
Regras de Validação
Note (criação)
name: Obrigatório, 1-100 caracteres
gender: Opcional, enum válido
external_id: Opcional, máx 100 caracteres
metadata: Opcional, array de objetos válidos
key: Obrigatório, 1-50 caracteres
value: Obrigatório, 1-500 caracteres
Exemplo de Validação JavaScript
function validateNote ( note ) {
const errors = [];
if ( ! note . name || note . name . length === 0 ) {
errors . push ( "Nome do paciente é obrigatório" );
}
if ( note . name && note . name . length > 100 ) {
errors . push ( "Nome do paciente deve ter no máximo 100 caracteres" );
}
if ( note . gender && ! [ "male" , "female" , "unidentified" ]. includes ( note . gender )) {
errors . push ( "Sexo deve ser male, female ou unidentified" );
}
if ( note . metadata ) {
note . metadata . forEach (( item , index ) => {
if ( ! item . key ) {
errors . push ( `Metadata[ ${ index } ]: chave é obrigatória` );
}
if ( ! item . value ) {
errors . push ( `Metadata[ ${ index } ]: valor é obrigatório` );
}
});
}
return errors ;
}
Próximos Passos
Criar Nota Como criar uma nova nota com áudio
Listar Notas Como buscar e filtrar notas
Obter Nota Como acessar detalhes de uma nota
Conceitos - Notas Entenda os conceitos das notas