Integrações
Integração via webhook
Na integração via webhook, o sistema V2Saúde realiza o envio de notificações para um endereço especificado, utilizando uma estrutura de dados específica de acordo com o tipo de notificação.
Ativação de webhooks
Os webhooks podem ser ativados na página Cadastros > Empresa e preferências, na aba "Integrações".
É necessária a contratação do mõdulo de webhooks para utilizar esta função.
Ao clicar em "Gerenciar webhooks", a página de gerenciamento de webhooks será exibida. Nesta página é possível gerir as notificações configuradas para a empresa:
Clique em "Novo webhook" para cadastrar um novo webhook:
Escolha o tipo, a API Key e a URL do webhook.
Linhas gerais sobre o envio de webhooks
As seguintes informações se aplicam a todas as chamadas de webhook:
- O V2Saúde realiza chamadas POST para a URL especificada
- A API Key informada será enviada no cabeçalho (header) "Authorization" da requisição
Tipos de webhook
Os seguintes tipos de webhook são atualmente suportados.
Cadastro e alterações em cirurgias
Uma notificação é enviada sempre que uma cirurgia for inserida ou modificada no sistema.
Exemplo de payload da requisição:
[
{
"id": 583581,
"cliente": {
"id": 63387,
"nome": "BRADESCO SAUDE - OPERADORA DE PLANOS S/A",
"razaoSocial": "BRADESCO SAUDE - OPERADORA DE PLANOS S/A",
"cnpj": "15.011.651/0001-54",
"cpf": null
},
"responsavel": "MACHADO DE ASSIS",
"paciente": "JOSE DE ALENCAR",
"matriculaPaciente": "",
"medico": "GRACILIANO RAMOS",
"medicoCRM": "1234",
"procedimento": "CIRURGIA DE QUADRIL",
"data": "2025-01-01",
"dataDeCadastro": "2025-01-01",
"finalizada": false,
"dataDeFinalizacao": null,
"dataOrcamentoPos": null,
"dataLiberacaoMaterial": null,
"dataLimiteRetirada": null,
"finalizadaPor": null,
"observacao": "",
"observacaoVale": "",
"observacaoPos": null,
"horaCirurgia": "14:30",
"cancelada": false,
"vendedor": {
"id": null,
"nome": null,
"razaoSocial": null,
"cnpj": null,
"cpf": null
},
"hospital": {
"id": 62707,
"nome": "ALBERT EINSTEIN",
"razaoSocial": "",
"cnpj": "",
"cpf": null
},
"convenio": {
"id": 63387,
"nome": "BRADESCO SAUDE - OPERADORA DE PLANOS S/A",
"razaoSocial": "BRADESCO SAUDE - OPERADORA DE PLANOS S/A",
"cnpj": "15.011.651/0001-54",
"cpf": null
},
"codigoSus": "",
"cirurgiaBaixada": false,
"observacaoBaixa": null,
"nota": null,
"statusCotacao": "APROVADA",
"procedimentoCirurgico": null,
"numeroEmpenho": ""
}
]
Os seguintes atributos fazem parte do payload da requisição
Atributo |
Registro Pai |
Tipo |
Descrição |
id |
Número |
Código da cirurgia |
|
cliente |
Pessoa (ver Registros Auxiliares) |
Dados do cliente |
|
responsavel | String | Responsável pela cirurgia | |
paciente | String | Nome do paciente | |
matriculaPaciente | String | Matrícula do paciente | |
medico | String | Nome do médico | |
medicoCRM | String |
CRM do médico |
|
procedimento | String |
Descrição do procedimento |
|
data | Date |
Data da cirurgia |
|
dataDeCadastro | DateTime |
Data de cadastro |
|
cadastradoPor | Pessoa (ver Registros Auxiliares) | Usuário responsável pelo cadastro |
|
finalizada | Boolean |
Cirurgia finalizada? |
|
dataDeFinalizacao | DateTime |
Data da finalização |
|
dataOrcamentoPos | DateTIme |
Data do orçamento pś |
|
dataLiberacaoMaterial | DateTime |
Data da liberação do material |
|
dataLimiteRetirada | DateTime |
Data limite da retirada do material consignado |
|
finalizadaPor | Pessoa (ver Registros Auxiliares) | Usuário responsável pela finalização |
|
observacao | String |
Observações da cirurgia |
|
observacaoVale | String |
Observações do vale/consignação |
|
observacaoPos | String |
Observações do orçamento pós |
|
horaCirurgia | Time |
Hora da cirurgia |
|
cancelada | Boolean |
Cirurgia cancelada? |
|
vendedor | Pessoa (ver Registros Auxiliares) | Vendedor |
|
hospital | Pessoa (ver Registros Auxiliares) | Hospital |
|
convenio | Pessoa (ver Registros Auxiliares) | Convênio |
|
codigoSus | String |
Código SUS do procedimento |
|
cirurgiaBaixada | Boolean |
Cirurgia com pagamento cancelado/baixado? |
|
observacaoBaixa | String |
Observações da baixa |
|
nota | Número |
Número da nota fiscal de venda |
|
statusCotacao | String |
Status da cotação. Os seguintes valores são suportados:
|
|
procedimentoCirurgico | String |
Descrição do procedimento |
|
numeroEmpenho | String |
Número do empenho da licitação |
Cadastro e alterações em orçamentos pré
Uma notificação é enviada quando o orçamento pré de uma cirurgia é alterado.
Exemplo de payload da requisição:
[
{
"id": 48391,
"cirurgia": {
"id": 142913,
"cliente": {
"id": 1234,
"nome": "AMIL",
"razaoSocial": null,
"cnpj": "11.111.111/0001-11",
"cpf": null
},
"responsavel": "AUGUSTO DOS ANJOS",
"paciente": "CARLOS DRUMMOND DE ANDRADE",
"matriculaPaciente": null,
"medico": "VINICIUS DE MORAIS",
"medicoCRM": "9196",
"instrumentadoresAvulsos": null,
"procedimento": "RESSECÇAO ENDOSCOPICA DA PROSTATA",
"data": "2025-01-01",
"dataDeCadastro": "2025-01-01",
"finalizada": false,
"dataDeFinalizacao": null,
"dataOrcamentoPos": null,
"dataLiberacaoMaterial": null,
"dataLimiteRetirada": null,
"finalizadaPor": null,
"observacao": "",
"observacaoVale": null,
"observacaoPos": null,
"horaCirurgia": "16:00",
"cancelada": false,
"vendedor": {
"id": 1829,
"nome": "NOME DO VENDEDOR",
"razaoSocial": null,
"cnpj": null,
"cpf": null
},
"hospital": {
"id": null,
"nome": null,
"razaoSocial": null,
"cnpj": null,
"cpf": null
},
"convenio": {
"id": null,
"nome": null,
"razaoSocial": null,
"cnpj": null,
"cpf": null
},
"codigoSus": null,
"cirurgiaBaixada": false,
"observacaoBaixa": null,
"nota": null,
"statusCotacao": "APROVADA",
"procedimentoCirurgico": null,
"numeroEmpenho": null,
"action": null
},
"cadastradoPor": {
"id": 1747,
"nome": "OPERADOR DO SISTEMA",
"razaoSocial": null,
"cnpj": null,
"cpf": null
},
"aprovado": false,
"data": "2025-01-01",
"dataAprovacao": null,
"observacoes": "",
"desconto": 0,
"itens": [
{
"id": 170011,
"produto": {
"id": 235167,
"descricao": "CARGA ARTICULADA ROXA P3H 45 MM",
"referenciaFabricante": "CADD45ENTS",
"registroAnvisa": "80940400003",
"codigoDeBarras": "1000001048024",
"fabricante": {
"id": 101565,
"nome": "PANTHER HEALTHCARE",
"razaoSocial": null,
"cnpj": null,
"cpf": null
}
},
"valor": 500,
"desconto": 0,
"quantidade": 1,
"quantidadeAutorizada": 0,
"quantidadeDoacao": 0
}
]
}
]
Os seguintes atributos fazem parte do payload da requisição:
Atributo |
Registro Pai |
Tipo |
Descrição |
id |
Número |
Código do orçamento |
|
cirurgia |
Cirurgia (ver Cadastro e alterações em cirurgias) |
Dados da cirurgia |
|
cadastradoPor |
Pessoa |
Usuário responsável pelo cadastro do orçamento |
|
aprovado |
Boolean |
Aprovado? |
|
data |
Date |
Data do orçamento |
|
dataAprovacao | Date |
Data de aprovação do orçamento |
|
observacoes | String |
Observações do orçamento |
|
desconto | Número |
Valor do desconto |
|
itens | Objeto |
Itens do orçamento |
|
id |
itens |
Número |
Código do orçamento |
produto |
itens |
Produto |
Dados do produto |
valor |
itens |
Número |
Valor unitário |
desconto |
itens |
Desconto |
Valor do desconto |
quantidade |
itens |
Número |
Quantidade |
quantidadeAutorizada |
itens |
Número |
Quantidade autorizada |
quantidadeDoacao | itens |
Número |
Quantidade que não deve ser faturada (doada) |
Registros auxiliares
Pessoa
Atributo |
Registro Pai |
Tipo |
Descrição |
id |
Número |
Código |
|
nome |
String |
Nome |
|
razaoSocial |
String |
Razão social |
|
cnpj |
String |
CNPJ |
|
cpf |
String |
CPF |
Produto
Atributo |
Registro Pai |
Tipo |
Descrição |
id |
Número |
Código |
|
descricao | String |
Descrição |
|
referenciaFabricante | String |
Referência do fabricante |
|
registroAnvisa | String |
Número do registro na Anvisa |
|
codigoDeBarras | String |
Código de barras |
|
fabricante |
Pessoa |
Dados do fabricante |
Agendor
A integração do V2Saúde com o Agendor, realiza a integração dos deals ganhos do Agendor como cirurgias aprovadas no estágio de orçamento pré.
Durante a integração do deal do Agendor com a cirurgia no V2Saúde, o sistema irá criar a cirurgia com os dados do Agendor, registrar os itens do orçamento e, se necessário, cadastrar o cliente caso não seja encontrado no sistema.
Pré requisitos
Para realizar a integração com o Agendor, é preciso:
- Um token de integração no Agendor
O token de integração deve ser obtido na interface do Agendor:
- Uma assinatura paga do Agendor, para poder utilizar os campos customizados
- A contratação do módulo no sistema V2Saúde
Configurações
Após a geração do token no Agendor e contratação do mõdulo no sistema, basta configurar a integração.
As configurações da integração são definidas no cadastro da empresa, aba Integrações.
Fluxo de integração
Para a integração de orçamentos, é importante mencionar que os produtos informados no Agendor precisam ter exatamente a mesma referência que o V2Saúde. A integração não cadastra novos produtos no V2.
- A API do Agendor é executada no endpoint: /deals/stream?dealStatus=2&since=[DATA]T00:00:00Z&withCustomFields=true
- Este endpoint retorna os negócios ganhos recentemente desde a data especificada.
- Por padrão, a aplicação irá fornecer a data do dia anterior para filtrar os negócios
- Para cada negócio retornado pela, API, a aplicação irá executar as seguintes ações:
- Verifica se o deal do Agendor já foi cadastrado como cirurgia através de seu código legado. O código legado é composto pelo prefixo “agendor-” e o id do negócio no Agendor. Se uma cirurgia com o código legado já existir, ela não é integrada novamente e o processo segue para o próximo negócio da lista.
- Integração do cliente
O negócio do Agendor pode ter uma Organization ou uma Person, para pessoas jurídicas e físicas respectivamente.
Se o cliente não for encontrado, ele é cadastrado no V2. - Integração dos produtos
Para cada produto informado no deal, a aplicação verifica se o produto existe no V2 com a referência do fabricante informada no campo “code” do produto no Agendor.
Se o produto não for encontrado, uma observação é gravada no orçamento informando que o produto não foi localizado. Importante: Não são cadastrados produtos no V2 - Integração da cirurgia
O negócio do Agendor é integrado no V2 como cirurgia.
Alguns campos customizados do Agendor são utilizados no V2 para preencher as informações da cirurgia.
Os seguintes campos são integrados:
- Cliente
- Hospital
Campo customizado hospital - Convênio
Campo customizado convenio - Paciente
Campo customizado paciente - Data da cirurgia
Campo wonAt do negócio - Médico
Campo customizado medico - Observação
Observações da integração do deal.
Este campo é formado pelo campo description do negócio e pelo sufixo “Criada a partir do Agendor: [url do deal no agendor]” - Data de cadastro
Data atual - Código legado
Formado pelo prefixo “agendor-” + id do negócio no Agendor - Observações do agendamento
Campo personalizado “grade_da_cirurgia” - Procedimento
Campo personalizado “procedimento_cirurgico”
Caso o procedimento não exista no V2, é automaticamente criado. - Vendedor
Campo personalizado “vendedor”
Integração dos clientes
Durante o processo de integração das cirurgias, a aplicação irá verificar se o cliente existe pelo CNPJ ou CPF.
Caso o cliente não exista, ele é cadastrado no V2 utilizando os campos do Agendor.
No Agendor, o cadastro do cliente deve conter os campos obrigatórios no V2 para que o cadastrado possa ser completado. Do contrário a cirurgia não será integrada.
Campos obrigatórios no cadastro do cliente:
- Nome
- CPF (Para clientes PF)
- CNPJ (Para clientes PJ)
- Inscrição Estadual (Para clientes PJ)
Neste caso, o campo customizado de inscrição estadual é utilizado. Caso não seja informado no Agendor, o sistema irá preencher automaticamente “ISENTO”.
- Telefone
- Endereço completo
- Cidade / Estado
A cidade e estado no Agendor são campos texto. A cidade precisa ser informada exatamente como registrada no V2. Não serão aceitas cidades abreviadas, ex: S. Paulo, ou estados com UF inválida.
Caso a cidade não exista no V2, haverá erro de integração da cirurgia.
Integrações da API V2Saúde
O V2Saúde possui uma API que permite a integração de sistemas externos.
Esta página descreve as funções disponíveis da API.
Convenções deste documento
URL Base
Sempre que os termos URL Base ou URL_BASE forem utilizados, estamos nos referindo ao endereço de acesso do V2Saúde utilizado pela empresa. Por exemplo: https://minhaempresa.v2saude.com.br
Autenticação
A autenticação de nossa API é realizada através de Token JWT, que deve ser gerado antes da chamadas subsequentes.
Chamada de autenticação
Método HTTP: POST
URL: URL_BASE/auth/login
Exemplo de requisição:
{
"username": "machado.de.assis@minhaempresa.v2saude.com.br",
"password": "capitu"
}
Exemplo de resposta:
{
"accessToken": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ...",
"refreshToken": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c3VhcmlvSWQiO...",
"usuario": { ... }
}
O campo accessToken deve ser utilizado como token de autenticação nas chamadas da API.
O valor de accessToken deve ser enviado no Header "Authorization" junto à palavra Bearer.
Exemplo:Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ
Clientes e fornecedores
Consultar pelo CPF
Método HTTP: GET
URL: URL_BASE/v2-api/clientefornecedor/cpf/{cpf}
Descrição: Retorna os dados do cliente ou fornecedor pelo CPF informado. O documento deve ser enviado sem formatação.
Consultar pelo CNPJ
Método HTTP: GET
URL: URL_BASE/v2-api/clientefornecedor/cnpj/{cnpj}
Descrição: Retorna os dados do cliente ou fornecedor pelo CNPJ informado.O documento deve ser enviado sem formatação.
Cirurgias
Cadastro
Método HTTP: POST
URL: URL_BASE/v2-api/cirurgia/
Exemplo de requisição:
{
"cliente": 80733,
"responsavel": null,
"paciente": "TESTE 1",
"matriculaPaciente": null,
"medico": null,
"medicoCRM": null,
"instrumentadoresAvulsos": null,
"cirurgia": "TESTE",
"data": "2022-04-15",
"hospital": "TESTE HOSPITAL",
"observacao": null,
"horaCirurgia": "18:00",
"convenio": "AMIL"
}