API RaciMED

Endpoints para agenda, pacientes, convênios, planos, confirmações, comparecimento, elegibilidade e agendamentos — uso exclusivo de clientes autorizados.

Versão 2.10 • rAPI 1.0.20

Introdução

A API RaciMED permite integrar a base clínica (agenda, profissionais, convênios, planos e pacientes) com plataformas externas, como sistemas de confirmação de consulta, ferramentas de marketing (WhatsApp / e-mail) e outras soluções de automação.

Observação: esta não é uma API pública. Cada cliente possui URL própria e só tem acesso após liberação (cliente autoriza).

Endereços de acesso

Endereços exemplo:

https://racimed.api:90001/(endpoints)
http://racimed.api:90001/(endpoints)

Lembrando: para cada cliente existe um endereço fixo de acesso. Os endereços serão habilitados após o cliente autorizar (não é API aberta).

Recomendação: utilizar sempre HTTPS.

Base URL (para copiar)

GET /medicos

GET /medicos
Somente registros ativos

Retorna lista de profissionais cadastrados e ativos no RaciMED.

Campos retornados

  • id — ID
  • nome — nome do profissional
  • crm (ou cm) — CRM/nº do conselho
  • especialidade

Exemplo de resposta

[
  {
    "id": 1,
    "nome": "Dr. Carlos Alberto da Silva",
    "crm": "99999",
    "especialidade": "OTORRINO"
  },
  {
    "id": 2,
    "nome": "Dr. João Ricardo",
    "crm": "99991",
    "especialidade": "PEDIATRA"
  },
  {
    "id": 3,
    "nome": "Maria da Silva",
    "crm": "444444",
    "especialidade": "Fisioterapeuta"
  }
]

Obs.: somente os médicos/profissionais ativos.

GET /medicoshorarios

GET /medicoshorarios
Somente profissionais ativos

Função: mostra os dias da semana e horários de atendimento (quadro de horários) dos profissionais ativos.

GET /medicoshorarios/:idprof

GET /medicoshorarios/:idprof
Filtrado por profissional

Função: a mesma informação do endpoint /medicoshorarios, mas filtrada por ID do profissional.

Exemplo: /medicoshorarios/2

Exemplo de resposta

[
  {
    "codmed": 2,
    "profissional": "DR. JOÃO DA SILVA",
    "codigo": 1,
    "tipodeservico": "CONSULTA",
    "segunda": 1,
    "segHiniam": 9,
    "segHfimam": 11.4,
    "segHinipm": 13.3,
    "segHfimpm": 17.3,
    "segDuracao": 0.2,
    "segDuracaopm": 0.2,
    "terca": null,
    "quarta": 1,
    "quinta": 1,
    "sexta": null,
    "sabado": null
  }
]

Obs.: somente médicos/profissionais ativos.

GET /convenios

GET /convenios
Somente registros ativos

Campos retornados

  • id
  • descricao

Exemplo de resposta

[
  { "id": 1, "descricao": "Convênio A" },
  { "id": 2, "descricao": "Convênio B" },
  { "id": 3, "descricao": "Convênio C" },
  { "id": 4, "descricao": "Convênio D" }
]

Obs.: somente os registros ativos.

GET /planos

GET /planos
Planos por convênio

Retorna planos vinculados aos convênios (quando houver).

Campos retornados

  • convenio (ID)
  • descricao
  • codplano (ID)
  • plano

Obs.: Nem todo convênio obrigatoriamente possui planos; mas todo plano tem um convênio.

Exemplo de resposta

[
  { "convenio": 25, "descricao": "INTERMEDICA", "codplano": 7, "plano": "CARE PLUS LASA" },
  { "convenio": 25, "descricao": "INTERMEDICA", "codplano": 8, "plano": "CARE PLUS LASA INFANTIL" },
  { "convenio": 31, "descricao": "AMIL ASSIST MED", "codplano": 1, "plano": "AMIL" }
]

GET /planos/:id

GET /planos/:id
Filtrado por convênio

A mesma informação do endpoint /planos, mas filtrada pelo número do convênio.

Exemplo: /planos/25

GET /agendas

GET /agendas
Listar marcações

Função: listar marcações feitas no dia (geralmente para envio de mensagens).

Parâmetros (conforme documento)

  • Por data: /agendas/data=2021-10-30
  • Por profissional: /agendas/profissional=123
  • Por profissional e data: /agendas/data=2021-10-30/idprof=123

Exemplo de resposta

[
  {
    "id": 1112545,
    "data": "15/07/2022",
    "hora": "10:50",
    "tipodeatendimento": "Consulta",
    "paciente": "João Cleber Machado",
    "profissional": "Dr. Joao"
  }
]

Obs.: pode existir várias marcações com horários distintos para vários profissionais.

GET /agendas/:id

GET /agendas/:id
Por profissional

Função: traz as agendas por ID de profissional do dia em vigor.

Exemplo: /agendas/31

GET /agendasid/:id_agenda

GET /agendasid/:id_agenda
Por ID da marcação

Função: traz a marcação do paciente por seu ID (ID da agenda).

Exemplo: /agendasid/1112545

GET /agendas/:data/:idprof

GET /agendas/:data/:idprof
Por data e profissional

Função: traz as agendas do dia em vigor por dia e ID de profissional.

Exemplo: /agendas/2025-07-15/31

GET /agendas/livres/:data/:idprof

GET /agendas/livres/:data/:idprof
Horários livres

Função: traz os horários livres das agendas, por data e profissional.

Exemplo de resposta

[
  { "hora": "13:00:00.000", "idAgenda": null, "codmed": null, "status": "LIVRE" },
  { "hora": "13:15:00.000", "idAgenda": null, "codmed": null, "status": "OCUPADO" },
  { "hora": "13:30:00.000", "idAgenda": null, "codmed": null, "status": "LIVRE" }
]

Obs.: o ID da agenda só é preenchido após a marcação existir.

GET /pacientes/:cpf

GET /pacientes/:cpf
Registro único por consumo

Função: traz informações do paciente por CPF somente números (sem pontos/traços/espaços).

Exemplo: /pacientes/09999999999

Exemplo de resposta

[
  {
    "codigo": 9999,
    "nome": "PACIENTE TESTE API RACIMED",
    "cgccpf": "999.999.999-99",
    "idconv": 25,
    "descricao": "DESCRIÇÃO CONVÊNIO",
    "plano": 5,
    "plano1": "DESCRIÇÃO PLANO PACIENTE",
    "carteira": "123456789012345678901234567890"
  }
]

GET /pacientesID/:id

GET /pacientesID/:id
Por código do paciente

Função: traz informações do paciente por CODIGO.

Exemplo: /pacientesID/9999

GET /pacientesCEL/:cel

GET /pacientesCEL/:cel
Por celular (somente números)

Função: traz informações do paciente por celular (sem espaços/traços/parênteses).

Exemplo: /pacientesCEL/11999998888

GET /pacientesaniversariantes/:data

GET /pacientesaniversariantes/:data
Marketing / lembretes

Parâmetro: :data no formato AAAA-MM-DD (ex.: 2025-07-10).

Função: busca todos os pacientes que fazem aniversário no dia do parâmetro.

Campos retornados

  • codigo (ID)
  • nome
  • email
  • fone1
  • idade

Exemplo de resposta

[
  { "codigo": 9999, "nome": "PACIENTE TESTE API RACIMED", "email": "info@racimed.com.br", "fone1": "9999-9999", "idade": 54 },
  { "codigo": 99100, "nome": "PACIENTE TESTE API RACIMED 2", "email": "suporte@racimed.com.br", "fone1": "11 9888-8888", "idade": 28 }
]

Obs.: registro único por consumo.

GET /tiposdeatendimentos

GET /tiposdeatendimentos
Tipos de agendamento

Função: lista tipos de agendamento usados pela clínica.

Exemplo de resposta

[
  { "codigo": 4, "descricao": "Exame de endoscopia" },
  { "codigo": 5, "descricao": "Exame X" },
  { "codigo": 6, "descricao": "Holter" },
  { "codigo": 7, "descricao": "Cirurgia em hospital" }
]

Obs.: os IDs 1, 2 e 3 são reservados internamente e representam: 1="1º Vez", 2="Consulta", 3="Retorno".

GET /agendaconfirmacao/:id

GET /agendaconfirmacao/:id
Confirma presença

Função: confirma presença do paciente antecipadamente (por ID da agenda).

Exemplo: /agendaconfirmacao/10020

GET /agendadesconfirmacao/:id

GET /agendadesconfirmacao/:id
Desconfirma presença

Função: desconfirma presença do paciente antecipadamente (por ID da agenda).

Exemplo: /agendadesconfirmacao/10020

GET /desmarcarhorario/:id

GET /desmarcarhorario/:id
Desmarca agenda

Função: desmarcar a presença de uma agenda (por ID).

Exemplo citado no documento: /desmarcaragenda/10020 (confira no seu servidor se o endpoint é /desmarcarhorario ou /desmarcaragenda).

Obs.: encaminhar uma única vez. Essas marcações aparecem no módulo de Agenda através de um ícone.

GET /elegibilidaderetorno

GET /elegibilidaderetorno/:data/:codmed/:codpac/:idcon
Elegibilidade de retorno

Função: faz a elegibilidade da data de consulta e retorna a melhor data para a próxima consulta com base na última visita do paciente.

Parâmetros

  • data — data que o paciente quer marcar (AAAA-MM-DD)
  • codmed — profissional/médico
  • codpac — paciente (código do cadastro)
  • idcon — convênio (código do convênio)

Exemplo

/elegibilidaderetorno/2026-03-18/8/9999/41

Retorno

[]  // vazio: pode agendar na data escolhida
["05/04/2026"]  // melhor data para a consulta

GET /agendascomparecimento

GET /agendascomparecimento
Comparecimento

Função: mostra as marcações que houveram comparecimento.

Exemplos

/agendascomparecimento/2025-07-15
/agendascomparecimento/2025-07-15/31

Obs.: o parâmetro data precisa ser uma data anterior, para mostrar as marcações que foram efetivamente comparecidas.

Ideal para envio de lembretes de agradecimento pelo comparecimento.

POST /agendarhorario

POST /agendarhorario
Marcar horário (ocupar)

Função: marca um horário na agenda do cliente (agendar), ocupando um horário.

Exemplo de payload

{
  "codpac": 0,
  "paciente": "NOME DO PACIENTE COMPLETO",
  "data": "2025-10-15",
  "hora": "14:40",
  "codmed": 1,
  "codexame": 1,
  "fone1": "(11) 98184-8560",
  "codtipo": 1,
  "tipo": "1º vez",
  "codconv": 1,
  "codplano": 1
}

Regras / observações

  • Todos os campos são obrigatórios.
  • codpac pode ser preenchido usando /pacientes/:cpf (CPF) ou /pacientesID/:id (Código) ou /pacientesCEL/:cel (celular) — para obter o código do paciente.
  • Paciente novo: preencher codpac com 0.
  • Tipos de atendimento com numeração maior que 3 seguem o endpoint /tiposdeatendimentos.
  • Para consulta (1/2/3 internos): 1="Primeira vez", 2="Consulta", 3="Retorno".

Possíveis mensagens de retorno (exemplos)

Erro: Informe o nome do paciente
Erro: Data inválida, precisa ser AAA-MM-DD
Erro: Hora inválida, precisa ser HH:MM
Erro: falta o número do profissional
Erro: falta o número do convênio
Paciente se encontra em período de RETORNO, melhor data: 26/04/2026

Obs.: Se o paciente já existir (via codpac) e estiver dentro do prazo de retorno, a API poderá sugerir a melhor data fora do período de retorno.

Códigos de erro & respostas HTTP

A API utiliza códigos HTTP padrão para indicar o resultado das operações.

Código Descrição Quando pode ocorrer
200 OK Requisição processada com sucesso. GET bem-sucedido ou operação concluída.
400 Bad Request Parâmetros inválidos ou payload em formato incorreto. Data fora do padrão, JSON malformado etc.
401 Unauthorized Credenciais ausentes ou inválidas. Token expirado, usuário/senha incorretos.
404 Not Found Recurso não encontrado. ID inexistente ou endpoint incorreto.
409 Conflict Conflito de negócio. Ex.: horário já ocupado, validações etc.
500 Internal Server Error Erro interno inesperado. Falha de banco ou exceção não tratada.

Mensagens de erro comuns (exemplos)

Erro: Informe o nome do paciente
Erro: Data inválida, precisa ser AAA-MM-DD
Erro: Hora inválida, precisa ser HH:MM
Erro: falta o número do profissional
Erro: falta o número do convênio
Paciente se encontra em período de RETORNO, melhor data: 26/04/2026

Exemplos em cURL

Listar médicos

curl -X GET "https://racimed.api:90001/medicos" \
  -H "Accept: application/json"

Buscar aniversariantes do dia

curl -X GET "https://racimed.api:90001/pacientesaniversariantes/2025-07-10" \
  -H "Accept: application/json"

Elegibilidade de retorno

curl -X GET "https://racimed.api:90001/elegibilidaderetorno/2026-03-18/8/9999/41" \
  -H "Accept: application/json"

Marcar horário (POST)

curl -X POST "https://racimed.api:90001/agendarhorario" \
  -H "Content-Type: application/json" \
  -d '{
    "codpac": 0,
    "paciente": "NOME DO PACIENTE COMPLETO",
    "data": "2025-10-15",
    "hora": "14:40",
    "codmed": 1,
    "codexame": 1,
    "fone1": "(11) 98184-8560",
    "codtipo": 1,
    "tipo": "1º vez",
    "codconv": 1,
    "codplano": 1
  }'

Exemplos em Delphi (Chilkat)

Exemplo simples usando Chilkat REST para consumir a API.

GET /medicos

var
  rest: HCkRest;
  success: Boolean;
  json: PWideChar;
begin
  rest := CkRest_Create;
  try
    success := CkRest_Connect(rest,'racimed.api',90001,True,True);
    if not success then Exit;

    CkRest_AddHeader(rest,'Accept','application/json');
    // Ex.: autenticação básica
    CkRest_SetAuthBasic(rest,'usuario','senha');

    json := CkRest__fullRequestNoBody(rest,'GET','/medicos');
    Memo1.Lines.Text := json;
  finally
    CkRest_Dispose(rest);
  end;
end;

POST /agendarhorario

var
  rest: HCkRest;
  sbReq: HCkStringBuilder;
  jsonResp: PWideChar;
begin
  rest := CkRest_Create;
  sbReq := CkStringBuilder_Create;
  try
    CkRest_Connect(rest,'racimed.api',90001,True,True);
    CkRest_SetAuthBasic(rest,'usuario','senha');
    CkRest_AddHeader(rest,'Content-Type','application/json');

    CkStringBuilder_Append(sbReq,
      '{"codpac":0,"paciente":"NOME DO PACIENTE COMPLETO","data":"2025-10-15","hora":"14:40",' +
      '"codmed":1,"codexame":1,"fone1":"(11) 98184-8560","codtipo":1,"tipo":"1º vez","codconv":1,"codplano":1}');

    jsonResp := CkRest__fullRequestSb(rest,'POST','/agendarhorario',sbReq);
    Memo1.Lines.Text := jsonResp;
  finally
    CkStringBuilder_Dispose(sbReq);
    CkRest_Dispose(rest);
  end;
end;

Exemplo em JavaScript (fetch)

fetch('https://racimed.api:90001/pacientesaniversariantes/2025-07-10', {
  method: 'GET',
  headers: {
    'Accept': 'application/json',
    // 'Authorization': 'Basic ...' ou 'Bearer ...'
  }
})
  .then(r => r.json())
  .then(data => console.log(data))
  .catch(err => console.error(err));

Exemplo em Python (requests)

import requests

url = 'https://racimed.api:90001/medicos'
resp = requests.get(url, auth=('usuario', 'senha'))

if resp.status_code == 200:
    print(resp.json())
else:
    print('Erro:', resp.status_code, resp.text)