{"openapi":"3.1.0","info":{"title":"IA OnePet","description":"\nServico de IA do OnePet. Seis operacoes, um contrato, fornecedor trocavel.\n\n### Principio que rege todas as rotas\n\nA IA **propoe**, ela nao registra. Toda resposta clinica volta como proposta em\nrascunho, com id proprio, e so vira registro depois que um profissional aprova\nem `POST /v1/propostas/{id}/aprovar`.\n\n### Regras de saida\n\n* Informacao ausente volta `null`. Nenhum schema tem valor padrao para preencher lacuna.\n* Todo campo clinico carrega o trecho literal da transcricao que o sustenta.\n* O modelo devolve dados. HTML e montado por template do sistema, nunca pelo modelo.\n* Item clinico vem de catalogo fechado da clinica, o modelo escolhe mas nao inventa.\n* Saida fora do schema e impossivel: guided decoding restringe os tokens gerados.\n\n### Cabecalhos obrigatorios\n\n| Cabecalho | Uso |\n|---|---|\n| `Authorization: Bearer <token>` | identifica o sistema chamador |\n| `X-Clinica-Id` | isolamento de dados, obrigatorio em toda rota |\n| `X-Usuario-Id` | profissional responsavel, vai para a auditoria |\n| `X-Pet-Id` | paciente, obrigatorio na carteira de vacinacao |\n| `X-Consulta-Id` | consulta de origem, quando houver |\n| `X-Consentimento-Id` | consentimento daquela captura de audio ou imagem |\n","version":"0.1.0"},"paths":{"/saude":{"get":{"tags":["saude"],"summary":"Liveness. Responde se o processo esta de pe","operationId":"saude_saude_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Saude Saude Get"}}}}}}},"/prontidao":{"get":{"tags":["saude"],"summary":"Readiness. Confere MySQL e servidor de modelo","description":"Use no health check da OCI. Falha aqui tira a instancia do balanceador.","operationId":"prontidao_prontidao_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Prontidao Prontidao Get"}}}}}}},"/v1/audio/transcrever":{"post":{"tags":["audio"],"summary":"Transcrever audio (ditado universal)","description":"Converte fala em texto. Nao interpreta e nao grava fato clinico.\n\nUsada pelo ditado em fichas, internacao e passagem de plantao. Substitui o SpeechRecognition do navegador, cujo fornecedor e destino dos dados nao sao controlados pelo sistema.","operationId":"transcrever_v1_audio_transcrever_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","description":"Bearer <token do servico>","default":"","title":"Authorization"},"description":"Bearer <token do servico>"},{"name":"x-clinica-id","in":"header","required":false,"schema":{"type":"string","description":"Clinica dona do dado","default":"","title":"X-Clinica-Id"},"description":"Clinica dona do dado"},{"name":"x-usuario-id","in":"header","required":false,"schema":{"type":"string","description":"Profissional que disparou a acao","default":"","title":"X-Usuario-Id"},"description":"Profissional que disparou a acao"},{"name":"x-pet-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Paciente, quando aplicavel","title":"X-Pet-Id"},"description":"Paciente, quando aplicavel"},{"name":"x-consulta-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Consulta, quando aplicavel","title":"X-Consulta-Id"},"description":"Consulta, quando aplicavel"},{"name":"x-consentimento-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Consentimento desta captura","title":"X-Consentimento-Id"},"description":"Consentimento desta captura"}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_transcrever_v1_audio_transcrever_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Transcrever V1 Audio Transcrever Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/audio/consulta":{"post":{"tags":["audio"],"summary":"Transcrever e extrair campos da consulta gravada","description":"Transcreve o audio da consulta e propoe campos da ficha, hipoteses e exames pedidos.\n\nTodo campo preenchido carrega o trecho literal que o sustenta e passa por validacao de evidencia, numero e catalogo. O que nao passa e removido e listado em `rejeitados`.\n\nA resposta e uma **proposta em rascunho**. Nada e gravado na ficha por esta rota.","operationId":"consulta_v1_audio_consulta_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","description":"Bearer <token do servico>","default":"","title":"Authorization"},"description":"Bearer <token do servico>"},{"name":"x-clinica-id","in":"header","required":false,"schema":{"type":"string","description":"Clinica dona do dado","default":"","title":"X-Clinica-Id"},"description":"Clinica dona do dado"},{"name":"x-usuario-id","in":"header","required":false,"schema":{"type":"string","description":"Profissional que disparou a acao","default":"","title":"X-Usuario-Id"},"description":"Profissional que disparou a acao"},{"name":"x-pet-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Paciente, quando aplicavel","title":"X-Pet-Id"},"description":"Paciente, quando aplicavel"},{"name":"x-consulta-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Consulta, quando aplicavel","title":"X-Consulta-Id"},"description":"Consulta, quando aplicavel"},{"name":"x-consentimento-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Consentimento desta captura","title":"X-Consentimento-Id"},"description":"Consentimento desta captura"}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_consulta_v1_audio_consulta_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Consulta V1 Audio Consulta Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/audio/receita":{"post":{"tags":["audio"],"summary":"Organizar prescricao ditada","description":"Extrai medicamento, dose, via, frequencia e duracao da fala.\n\nDevolve **dados estruturados**, nunca HTML. O documento e montado pelo renderizador do sistema, o que elimina insercao de markup de terceiro no editor de receita.","operationId":"receita_v1_audio_receita_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","description":"Bearer <token do servico>","default":"","title":"Authorization"},"description":"Bearer <token do servico>"},{"name":"x-clinica-id","in":"header","required":false,"schema":{"type":"string","description":"Clinica dona do dado","default":"","title":"X-Clinica-Id"},"description":"Clinica dona do dado"},{"name":"x-usuario-id","in":"header","required":false,"schema":{"type":"string","description":"Profissional que disparou a acao","default":"","title":"X-Usuario-Id"},"description":"Profissional que disparou a acao"},{"name":"x-pet-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Paciente, quando aplicavel","title":"X-Pet-Id"},"description":"Paciente, quando aplicavel"},{"name":"x-consulta-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Consulta, quando aplicavel","title":"X-Consulta-Id"},"description":"Consulta, quando aplicavel"},{"name":"x-consentimento-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Consentimento desta captura","title":"X-Consentimento-Id"},"description":"Consentimento desta captura"}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_receita_v1_audio_receita_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Receita V1 Audio Receita Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/texto/consulta":{"post":{"tags":["texto"],"summary":"Extrair campos da consulta a partir de texto transcrito","description":"Mesma extracao de `POST /v1/audio/consulta`, sem a etapa de transcricao.\n\nTodo campo preenchido carrega o trecho literal que o sustenta, e esse trecho precisa existir no `texto` enviado. Envie a transcricao como saiu, sem resumir.\n\n`definicoes_campos` diz ao modelo o que cada id significa. `catalogo_exames` e a lista fechada de exames: exame fora dela e rejeitado.\n\nA resposta e uma **proposta em rascunho**. Nada e gravado na ficha por esta rota.","operationId":"consulta_v1_texto_consulta_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","description":"Bearer <token do servico>","default":"","title":"Authorization"},"description":"Bearer <token do servico>"},{"name":"x-clinica-id","in":"header","required":false,"schema":{"type":"string","description":"Clinica dona do dado","default":"","title":"X-Clinica-Id"},"description":"Clinica dona do dado"},{"name":"x-usuario-id","in":"header","required":false,"schema":{"type":"string","description":"Profissional que disparou a acao","default":"","title":"X-Usuario-Id"},"description":"Profissional que disparou a acao"},{"name":"x-pet-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Paciente, quando aplicavel","title":"X-Pet-Id"},"description":"Paciente, quando aplicavel"},{"name":"x-consulta-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Consulta, quando aplicavel","title":"X-Consulta-Id"},"description":"Consulta, quando aplicavel"},{"name":"x-consentimento-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Consentimento desta captura","title":"X-Consentimento-Id"},"description":"Consentimento desta captura"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PedidoConsulta"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Consulta V1 Texto Consulta Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/texto/receita":{"post":{"tags":["texto"],"summary":"Organizar prescricao a partir de texto transcrito","description":"Mesma extracao de `POST /v1/audio/receita`, sem a etapa de transcricao.\n\nDevolve **dados estruturados**, nunca HTML. `via` volta `nao_dita` quando a via nao aparece na fala.\n\nA resposta e uma **proposta em rascunho**.","operationId":"receita_v1_texto_receita_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","description":"Bearer <token do servico>","default":"","title":"Authorization"},"description":"Bearer <token do servico>"},{"name":"x-clinica-id","in":"header","required":false,"schema":{"type":"string","description":"Clinica dona do dado","default":"","title":"X-Clinica-Id"},"description":"Clinica dona do dado"},{"name":"x-usuario-id","in":"header","required":false,"schema":{"type":"string","description":"Profissional que disparou a acao","default":"","title":"X-Usuario-Id"},"description":"Profissional que disparou a acao"},{"name":"x-pet-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Paciente, quando aplicavel","title":"X-Pet-Id"},"description":"Paciente, quando aplicavel"},{"name":"x-consulta-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Consulta, quando aplicavel","title":"X-Consulta-Id"},"description":"Consulta, quando aplicavel"},{"name":"x-consentimento-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Consentimento desta captura","title":"X-Consentimento-Id"},"description":"Consentimento desta captura"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PedidoReceita"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Receita V1 Texto Receita Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/vacinacao/carteira":{"post":{"tags":["vacinacao"],"summary":"Ler carteira de vacinacao por foto","description":"Le a foto e transcreve as linhas da tabela de vacinas.\n\n**Campo ilegivel volta `null`.** Data ausente nao vira a data de hoje e dose ausente nao vira primeira dose. O schema nao permite valor padrao, entao o modelo nao consegue preencher lacuna com palpite.\n\nA resposta e proposta em rascunho: a importacao para `pet_vaccines` acontece do lado do sistema clinico, depois da conferencia.","operationId":"carteira_v1_vacinacao_carteira_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","description":"Bearer <token do servico>","default":"","title":"Authorization"},"description":"Bearer <token do servico>"},{"name":"x-clinica-id","in":"header","required":false,"schema":{"type":"string","description":"Clinica dona do dado","default":"","title":"X-Clinica-Id"},"description":"Clinica dona do dado"},{"name":"x-usuario-id","in":"header","required":false,"schema":{"type":"string","description":"Profissional que disparou a acao","default":"","title":"X-Usuario-Id"},"description":"Profissional que disparou a acao"},{"name":"x-pet-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Paciente, quando aplicavel","title":"X-Pet-Id"},"description":"Paciente, quando aplicavel"},{"name":"x-consulta-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Consulta, quando aplicavel","title":"X-Consulta-Id"},"description":"Consulta, quando aplicavel"},{"name":"x-consentimento-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Consentimento desta captura","title":"X-Consentimento-Id"},"description":"Consentimento desta captura"}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_carteira_v1_vacinacao_carteira_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Carteira V1 Vacinacao Carteira Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/financeiro/tabela-taxas":{"post":{"tags":["financeiro"],"summary":"Ler taxas de cartões por imagem, para revisão humana","operationId":"tabela_taxas_v1_financeiro_tabela_taxas_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","description":"Bearer <token do servico>","default":"","title":"Authorization"},"description":"Bearer <token do servico>"},{"name":"x-clinica-id","in":"header","required":false,"schema":{"type":"string","description":"Clinica dona do dado","default":"","title":"X-Clinica-Id"},"description":"Clinica dona do dado"},{"name":"x-usuario-id","in":"header","required":false,"schema":{"type":"string","description":"Profissional que disparou a acao","default":"","title":"X-Usuario-Id"},"description":"Profissional que disparou a acao"},{"name":"x-pet-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Paciente, quando aplicavel","title":"X-Pet-Id"},"description":"Paciente, quando aplicavel"},{"name":"x-consulta-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Consulta, quando aplicavel","title":"X-Consulta-Id"},"description":"Consulta, quando aplicavel"},{"name":"x-consentimento-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Consentimento desta captura","title":"X-Consentimento-Id"},"description":"Consentimento desta captura"}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_tabela_taxas_v1_financeiro_tabela_taxas_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Tabela Taxas V1 Financeiro Tabela Taxas Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/documentos/modelo":{"post":{"tags":["documentos"],"summary":"Gerar rascunho de modelo de documento","description":"Redige o rascunho de um modelo reutilizavel (atestado, termo, orientacao).\n\nDevolve **blocos tipados**, nunca HTML. Placeholder fora da lista permitida e rejeitado, nao renomeado.\n\nO sistema atual grava a resposta direto em `form_models`. Esta rota nao grava: o retorno fica em rascunho e exige aprovacao antes de liberar para uso.","operationId":"modelo_v1_documentos_modelo_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","description":"Bearer <token do servico>","default":"","title":"Authorization"},"description":"Bearer <token do servico>"},{"name":"x-clinica-id","in":"header","required":false,"schema":{"type":"string","description":"Clinica dona do dado","default":"","title":"X-Clinica-Id"},"description":"Clinica dona do dado"},{"name":"x-usuario-id","in":"header","required":false,"schema":{"type":"string","description":"Profissional que disparou a acao","default":"","title":"X-Usuario-Id"},"description":"Profissional que disparou a acao"},{"name":"x-pet-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Paciente, quando aplicavel","title":"X-Pet-Id"},"description":"Paciente, quando aplicavel"},{"name":"x-consulta-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Consulta, quando aplicavel","title":"X-Consulta-Id"},"description":"Consulta, quando aplicavel"},{"name":"x-consentimento-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Consentimento desta captura","title":"X-Consentimento-Id"},"description":"Consentimento desta captura"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PedidoModelo"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Modelo V1 Documentos Modelo Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/relatorios/interpretar":{"post":{"tags":["relatorios"],"summary":"Traduzir pedido em parametros de relatorio","description":"Converte o pedido falado ou escrito em `{tipo, periodo, filtros, colunas}`.\n\nO modelo **nao ve o banco e nao escreve SQL**. Todo parametro e validado contra enum e contra a lista de veterinarios enviada.\n\nPedido ambiguo volta com `ambiguidade` preenchida e aviso. Confirme com o usuario antes de consultar, inclusive quando for complemento de um pedido anterior: no sistema atual esse caminho pula a confirmacao.","operationId":"interpretar_v1_relatorios_interpretar_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","description":"Bearer <token do servico>","default":"","title":"Authorization"},"description":"Bearer <token do servico>"},{"name":"x-clinica-id","in":"header","required":false,"schema":{"type":"string","description":"Clinica dona do dado","default":"","title":"X-Clinica-Id"},"description":"Clinica dona do dado"},{"name":"x-usuario-id","in":"header","required":false,"schema":{"type":"string","description":"Profissional que disparou a acao","default":"","title":"X-Usuario-Id"},"description":"Profissional que disparou a acao"},{"name":"x-pet-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Paciente, quando aplicavel","title":"X-Pet-Id"},"description":"Paciente, quando aplicavel"},{"name":"x-consulta-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Consulta, quando aplicavel","title":"X-Consulta-Id"},"description":"Consulta, quando aplicavel"},{"name":"x-consentimento-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Consentimento desta captura","title":"X-Consentimento-Id"},"description":"Consentimento desta captura"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PedidoRelatorio"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Interpretar V1 Relatorios Interpretar Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/cockpit/recomendacoes":{"post":{"tags":["cockpit"],"summary":"Analisar indicadores agregados por perfil","operationId":"recomendar_v1_cockpit_recomendacoes_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","description":"Bearer <token do servico>","default":"","title":"Authorization"},"description":"Bearer <token do servico>"},{"name":"x-clinica-id","in":"header","required":false,"schema":{"type":"string","description":"Clinica dona do dado","default":"","title":"X-Clinica-Id"},"description":"Clinica dona do dado"},{"name":"x-usuario-id","in":"header","required":false,"schema":{"type":"string","description":"Profissional que disparou a acao","default":"","title":"X-Usuario-Id"},"description":"Profissional que disparou a acao"},{"name":"x-pet-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Paciente, quando aplicavel","title":"X-Pet-Id"},"description":"Paciente, quando aplicavel"},{"name":"x-consulta-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Consulta, quando aplicavel","title":"X-Consulta-Id"},"description":"Consulta, quando aplicavel"},{"name":"x-consentimento-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Consentimento desta captura","title":"X-Consentimento-Id"},"description":"Consentimento desta captura"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PedidoCockpit"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Recomendar V1 Cockpit Recomendacoes Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/propostas/{proposta_id}/aprovar":{"post":{"tags":["propostas"],"summary":"Aprovar ou editar uma proposta","description":"Marca a proposta como `aprovada` ou `editada` e registra o revisor.\n\nSo o usuario e a clinica que criaram a proposta podem aprova-la. Proposta expirada ou de outro escopo responde 404, igual a proposta inexistente. Uma repeticao identica pelo mesmo ator e idempotente.\n\nSo depois disso o sistema clinico deve copiar o conteudo para a ficha, a receita ou o historico de vacinas. A rota grava auditoria com o estado anterior e o aprovado, respondendo a pergunta 'o que exatamente mudou'.","operationId":"aprovar_v1_propostas__proposta_id__aprovar_post","parameters":[{"name":"proposta_id","in":"path","required":true,"schema":{"type":"string","title":"Proposta Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","description":"Bearer <token do servico>","default":"","title":"Authorization"},"description":"Bearer <token do servico>"},{"name":"x-clinica-id","in":"header","required":false,"schema":{"type":"string","description":"Clinica dona do dado","default":"","title":"X-Clinica-Id"},"description":"Clinica dona do dado"},{"name":"x-usuario-id","in":"header","required":false,"schema":{"type":"string","description":"Profissional que disparou a acao","default":"","title":"X-Usuario-Id"},"description":"Profissional que disparou a acao"},{"name":"x-pet-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Paciente, quando aplicavel","title":"X-Pet-Id"},"description":"Paciente, quando aplicavel"},{"name":"x-consulta-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Consulta, quando aplicavel","title":"X-Consulta-Id"},"description":"Consulta, quando aplicavel"},{"name":"x-consentimento-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Consentimento desta captura","title":"X-Consentimento-Id"},"description":"Consentimento desta captura"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Aprovacao"}}}},"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}}},"components":{"schemas":{"Aprovacao":{"properties":{"dados_aprovados":{"additionalProperties":true,"type":"object","title":"Dados Aprovados","description":"O que o profissional de fato aceitou, ja com as edicoes dele"},"editada":{"type":"boolean","title":"Editada","description":"true quando o conteudo difere do proposto pela IA","default":false}},"type":"object","required":["dados_aprovados"],"title":"Aprovacao"},"Body_carteira_v1_vacinacao_carteira_post":{"properties":{"arquivo":{"type":"string","contentMediaType":"application/octet-stream","title":"Arquivo","description":"Foto da carteira"}},"type":"object","required":["arquivo"],"title":"Body_carteira_v1_vacinacao_carteira_post"},"Body_consulta_v1_audio_consulta_post":{"properties":{"arquivo":{"type":"string","contentMediaType":"application/octet-stream","title":"Arquivo","description":"Audio da consulta"},"campos_permitidos":{"type":"string","title":"Campos Permitidos","description":"Campos da ficha separados por virgula"}},"type":"object","required":["arquivo","campos_permitidos"],"title":"Body_consulta_v1_audio_consulta_post"},"Body_receita_v1_audio_receita_post":{"properties":{"arquivo":{"type":"string","contentMediaType":"application/octet-stream","title":"Arquivo","description":"Audio da prescricao ditada"}},"type":"object","required":["arquivo"],"title":"Body_receita_v1_audio_receita_post"},"Body_tabela_taxas_v1_financeiro_tabela_taxas_post":{"properties":{"arquivo":{"type":"string","contentMediaType":"application/octet-stream","title":"Arquivo"},"operadora":{"type":"string","maxLength":100,"title":"Operadora","default":""}},"type":"object","required":["arquivo"],"title":"Body_tabela_taxas_v1_financeiro_tabela_taxas_post"},"Body_transcrever_v1_audio_transcrever_post":{"properties":{"arquivo":{"type":"string","contentMediaType":"application/octet-stream","title":"Arquivo","description":"Arquivo de audio"},"vocabulario_extra":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Vocabulario Extra"}},"type":"object","required":["arquivo"],"title":"Body_transcrever_v1_audio_transcrever_post"},"CampoCatalogo":{"properties":{"rotulo":{"type":"string","maxLength":200,"title":"Rotulo"},"tipo":{"type":"string","enum":["text","number","date","boolean"],"title":"Tipo"}},"additionalProperties":false,"type":"object","required":["rotulo","tipo"],"title":"CampoCatalogo"},"CatalogoRelatorio":{"properties":{"versao":{"type":"string","maxLength":80,"minLength":1,"title":"Versao"},"fontes":{"additionalProperties":{"$ref":"#/components/schemas/FonteCatalogo"},"type":"object","maxProperties":30,"title":"Fontes"},"operadores":{"items":{"type":"string"},"type":"array","maxItems":20,"title":"Operadores"},"metricas":{"items":{"type":"string"},"type":"array","maxItems":10,"title":"Metricas"},"regras":{"type":"string","maxLength":4000,"title":"Regras"}},"additionalProperties":false,"type":"object","required":["versao","fontes","operadores","metricas","regras"],"title":"CatalogoRelatorio"},"DefinicaoCampoEntrada":{"properties":{"id":{"type":"string","maxLength":200,"minLength":1,"title":"Id"},"label":{"type":"string","maxLength":500,"minLength":1,"title":"Label"},"kind":{"type":"string","maxLength":100,"minLength":1,"title":"Kind"},"section":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"title":"Section"},"options":{"anyOf":[{"items":{"type":"string"},"type":"array","maxItems":200},{"type":"null"}],"title":"Options"},"unit":{"anyOf":[{"type":"string","maxLength":50},{"type":"null"}],"title":"Unit"},"hint":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Hint"}},"type":"object","required":["id","label","kind"],"title":"DefinicaoCampoEntrada","description":"Campo da ficha como o OneVet descreve (FieldSpec do fieldRegistry.ts).\n\nChaves em ingles porque e o formato que o chamador ja envia. Chave extra e\nignorada: a ficha pode ganhar atributo novo sem quebrar esta rota."},"EvidenciaCockpit":{"properties":{"id":{"type":"string","pattern":"^[a-z_]{1,50}$","title":"Id"},"titulo":{"type":"string","maxLength":160,"minLength":1,"title":"Titulo"},"detalhe":{"type":"string","maxLength":600,"minLength":1,"title":"Detalhe"},"acao_id":{"type":"string","pattern":"^[a-z_]{1,50}$","title":"Acao Id"}},"additionalProperties":false,"type":"object","required":["id","titulo","detalhe","acao_id"],"title":"EvidenciaCockpit"},"ExameEntrada":{"properties":{"codigo":{"type":"string","maxLength":200,"minLength":1,"title":"Codigo"},"nome":{"type":"string","maxLength":500,"minLength":1,"title":"Nome"}},"type":"object","required":["codigo","nome"],"title":"ExameEntrada"},"FiltroPlano":{"properties":{"campo":{"type":"string","maxLength":80,"minLength":1,"title":"Campo"},"operador":{"type":"string","enum":["eq","neq","gt","gte","lt","lte","contains","words","is_null","not_null"],"title":"Operador"},"valor":{"anyOf":[{"type":"string"},{"type":"integer"},{"type":"number"},{"type":"boolean"},{"type":"null"}],"title":"Valor"}},"additionalProperties":false,"type":"object","required":["campo","operador"],"title":"FiltroPlano"},"FonteCatalogo":{"properties":{"descricao":{"type":"string","maxLength":2000,"title":"Descricao"},"campos":{"additionalProperties":{"$ref":"#/components/schemas/CampoCatalogo"},"type":"object","maxProperties":60,"title":"Campos"}},"additionalProperties":false,"type":"object","required":["descricao","campos"],"title":"FonteCatalogo"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"MetricaPlano":{"properties":{"campo":{"type":"string","maxLength":80,"minLength":1,"title":"Campo"},"operacao":{"type":"string","enum":["count","sum","avg","min","max"],"title":"Operacao"}},"additionalProperties":false,"type":"object","required":["campo","operacao"],"title":"MetricaPlano"},"OrdemPlano":{"properties":{"campo":{"type":"string","maxLength":100,"minLength":1,"title":"Campo"},"direcao":{"type":"string","enum":["asc","desc"],"title":"Direcao"}},"additionalProperties":false,"type":"object","required":["campo","direcao"],"title":"OrdemPlano"},"PedidoCockpit":{"properties":{"perfil":{"type":"string","enum":["administrator","veterinarian","reception","assistant","laboratory"],"title":"Perfil"},"evidencias":{"items":{"$ref":"#/components/schemas/EvidenciaCockpit"},"type":"array","maxItems":12,"title":"Evidencias"}},"additionalProperties":false,"type":"object","required":["perfil","evidencias"],"title":"PedidoCockpit"},"PedidoConsulta":{"properties":{"texto":{"type":"string","maxLength":100000,"minLength":1,"title":"Texto","description":"Transcricao, como saiu"},"campos_permitidos":{"items":{"type":"string"},"type":"array","maxItems":500,"minItems":1,"title":"Campos Permitidos","description":"Ids dos campos que a IA pode preencher"},"definicoes_campos":{"items":{"$ref":"#/components/schemas/DefinicaoCampoEntrada"},"type":"array","maxItems":500,"title":"Definicoes Campos","description":"Rotulo, tipo, unidade e opcoes de cada campo. Sem isto `fc` nao diz nada"},"catalogo_exames":{"anyOf":[{"items":{"$ref":"#/components/schemas/ExameEntrada"},"type":"array","maxItems":5000},{"type":"null"}],"title":"Catalogo Exames","description":"Lista fechada de exames. Omitida, vale o catalogo guardado da clinica. Enviada vazia, nenhum exame e aceito"}},"type":"object","required":["texto","campos_permitidos"],"title":"PedidoConsulta"},"PedidoModelo":{"properties":{"nome":{"type":"string","maxLength":200,"minLength":3,"title":"Nome","examples":["Atestado de sanidade"]},"categoria":{"type":"string","enum":["atestado","prescricao","autorizacao","relatorio","tratamento","procedimento","orientacao","termo"],"title":"Categoria","examples":["atestado"]}},"type":"object","required":["nome","categoria"],"title":"PedidoModelo"},"PedidoReceita":{"properties":{"texto":{"type":"string","maxLength":100000,"minLength":1,"title":"Texto","description":"Transcricao, como saiu"}},"type":"object","required":["texto"],"title":"PedidoReceita"},"PedidoRelatorio":{"properties":{"pedido":{"type":"string","maxLength":30000,"minLength":3,"title":"Pedido","examples":["quantos atendimentos a doutora Ana fez no mes passado"]},"veterinarios":{"items":{"type":"string"},"type":"array","title":"Veterinarios","description":"Nomes existentes na clinica. O modelo so pode escolher daqui","examples":[["Ana Souza","Carlos Lima"]]},"data_referencia":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Data Referencia","description":"Base para periodo relativo. Omitido usa hoje"},"pedido_anterior":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Pedido Anterior","description":"Pedido que este complementa, quando houver"},"catalogo":{"anyOf":[{"$ref":"#/components/schemas/CatalogoRelatorio"},{"type":"null"}]},"plano_anterior":{"anyOf":[{"$ref":"#/components/schemas/PlanoRelatorio"},{"type":"null"}]},"periodo_anterior":{"anyOf":[{"$ref":"#/components/schemas/Periodo"},{"type":"null"}]}},"type":"object","required":["pedido"],"title":"PedidoRelatorio"},"Periodo":{"properties":{"inicio":{"type":"string","format":"date","title":"Inicio"},"fim":{"type":"string","format":"date","title":"Fim"}},"additionalProperties":false,"type":"object","required":["inicio","fim"],"title":"Periodo"},"PlanoRelatorio":{"properties":{"versao":{"type":"string","maxLength":80,"minLength":1,"title":"Versao"},"fonte":{"type":"string","maxLength":80,"minLength":1,"title":"Fonte"},"colunas":{"items":{"type":"string"},"type":"array","maxItems":20,"title":"Colunas"},"filtros":{"items":{"$ref":"#/components/schemas/FiltroPlano"},"type":"array","maxItems":20,"title":"Filtros"},"agrupar_por":{"items":{"type":"string"},"type":"array","maxItems":4,"title":"Agrupar Por"},"metricas":{"items":{"$ref":"#/components/schemas/MetricaPlano"},"type":"array","maxItems":8,"title":"Metricas"},"ordenar_por":{"items":{"$ref":"#/components/schemas/OrdemPlano"},"type":"array","maxItems":4,"title":"Ordenar Por"},"limite":{"anyOf":[{"type":"integer","maximum":10000.0,"minimum":1.0},{"type":"null"}],"title":"Limite"}},"additionalProperties":false,"type":"object","required":["versao","fonte"],"title":"PlanoRelatorio"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"},"input":{"title":"Input"},"ctx":{"type":"object","title":"Context"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"}}}}