Skip to main content

Eu, como Beep, o que devo fazer para mandar resultados de exame para novos parceiros?

Digamos que amanhã uma empresa XPTO queira receber os resultados dos exames de pacientes. Nesse caso, como configurar o envio de webhook para essa empresa?

  1. Será necessário definir os payloads a serem enviados tanto para se autenticar na API dessa nova empresa quanto para enviar o resultado do exame.
  2. Com os payloads definidos, será necessário criar as classes que farão a autenticação e o envio do exame. Essas classes são as seguintes:
    1. application/supplementary_health/health_insurances/data_exchange/integrations/EMPRESA/client.rb
    2. application/supplementary_health/health_insurances/data_exchange/integrations/EMPRESA/token_provider.rb
    3. application/supplementary_health/health_insurances/data_exchange/integrations/EMPRESA/exam_request_result_translator.rb
  3. Será necessário criar um registro da entidade SupplementaryHealth::DataExchangeConfiguration. Esse registro deverá ter os seguintes atributos:
    1. configuration_type: slug da empresa
    2. name: nome da empresa
    3. pre_analytic_paying_source_type: "SalesChannel"
    4. pre_analytic_paying_source_id: ID do sales channel da empresa
    5. settings: configurar de acordo com os endpoints utilizados para autenticação e envio do exame
  4. Adaptar as factories para que possam usar o client correto. Essas factories sao:
    1. application/src/supplementary_health/health_insurances/data_exchange/factories/client_factory.rb
    2. application/src/supplementary_health/health_insurances/data_exchange/factories/exam_request_result_translator_factory.rb

Eu, como empresa parceira, o que devo fazer para receber resultados de exame de pacientes da Beep?

  1. Sempre que um exame for agendado pela minha integração, devo informar o meu sales_channel_id, para que a beep saiba que determinado agendamento veio da minha integração
  2. Devo implementar um endpoint de autenticação na minha API. Segue abaixo um exemplo de request e response:
Request body:
{"grant_type":"client_credentials"}

Request response:
{
"access_token": "ACCESS TOKEN",
"expires_in": "1000"
}
  1. Devo implementar um endpoint para o recebimento dos dados do exame. Segue abaixo um exemplo de recebimento de exame:
Header: {
"accept": "application/json",
"access_token": "ACCESS TOKEN",
"authorization": "Basic YmVlcDoxMjM0NTY=",
"client_id": "beep",
"content-type": "application/json"
}

Body: {
"codigo-ficha": "5",
"laboratorio": "BEEP",
"marca": "Beep",
"data-visita": "2025-03-14T08:00:00",
"paciente": {
"numero-carteirinha": "123456789",
"cpf": "12345678900",
"nome": "Fulaninho Silva Sauro",
"data-nascimento": "1996-10-25",
"sexo": "M",
"endereco-formatado": "R. XPTO, Rio de Janeiro",
"telefone": "5521912345678"
},
"exame": {
"codigo-exame": "40306992",
"nome-laudo": "Anti HBS",
"data-coleta": "2025-03-14T08:00:00",
"local-coleta": "Beep",
"medicos-solicitantes": [
{
"nome": "fulano medico",
"tipo-conselho": "CRM",
"uf-conselho": "RJ",
"numero-conselho": "123456"
}
],
"responsavel-tecnico": {
"nome": "Fulano tecnico",
"complemento": "CRMSP 123456"
},
"amostra": {
"codigo": "987654",
"descricao": "Soro",
"data-coleta": "2025-03-14T08:00:00",
"material": {
"nome": "Soro"
}
},
"resultados": [
{
"nome-laudo": "Anti HBS",
"sub-resultados": [],
"referencias-estruturadas": [
{
"valor": "Nao se aplica"
}
]
}
],
"url-pdf": null
},
"responsavel-tecnico": "Fulano técnico CRMSP 123456",
"quantidade-exames": 1,
"codigo-agendamento": "7"
}