Configurações Gerais
Comportamento do editor
Formatação e aparência do laudo
Estrutura do laudo
Clínicas
Modelos de Consulta
Documentos personalizados
Documentos automáticos
Documentos cadastrados
Modelos de Laudos
Banco de Frases
Convênios
Exames e Consultas
Recepcionistas
Login próprio para a recepção, dentro desta mesma conta. Entra direto na Agenda.
Acessa: agenda (agendar, remarcar, cancelar, confirmar), cadastro de pacientes, worklist e a cobrança do exame pelo próprio agendamento — forma de pagamento, bandeira do cartão e desconto. Em Configurações, edita Convênios e Solicitantes.
Não acessa: laudos e editor, favoritos, dashboard, o módulo Financeiro e os Relatórios, BabyStudio, personalizar frases, auditoria e as demais abas de Configurações.
Médicos
Login próprio para cada médico da clínica, dentro desta mesma conta. Entra direto em Laudos. O nome, CRM, RQE e CPF cadastrados aqui são os que assinam o laudo dele e o que a Memed usa como prescritor.
Acessa: laudos e editor, favoritos, dashboard, pacientes, agenda e worklist com os exames dele (mais os que ainda não têm médico definido), Financeiro da produção dele — faturamento, recebido e a receber dos exames que executou, somente leitura — e personalizar frases. Em Configurações, edita o que é dele: Banco de Frases, Modelos de Laudo, Modelos de Consulta e Documentos Personalizados, todos privados por médico e não compartilhados com a clínica.
Não acessa: cadastro de clínicas, aparelhos, médicos e recepcionistas; convênios, solicitantes e agendas; WhatsApp, PACS/DICOM, API, impressão e cabeçalho; auditoria; e o financeiro da clínica (despesas, caixa, contas, impostos, relatórios gerenciais).
Agendas
Solicitantes
PACS / DICOM
Prontuário
{{PACIENTE}} nome do paciente ·
{{EXAME}} nome do exame ·
{{HORA}} hora do atendimento ·
{{DATA_HORA}} data e hora completas (ex: 07/06/2026 às 14:35).O modelo selecionado depende de haver ou não médico solicitante preenchido no exame.
API Laudário
| Nome | Prefixo | Status | Último uso | Ações |
|---|---|---|---|---|
| Carregando... | ||||
Authorization: Bearer SEU_TOKEN
GET
/status
Verifica se a API v1 está ativa.
curl -X GET "API_URL/status" \ -H "Authorization: Bearer SEU_TOKEN"
{
"success": true,
"message": "API Laudário v1 ativa.",
"data": {"version": "v1"}
}
GET
/pacientes
Lista pacientes cadastrados no banco do cliente.
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| search | string | não | Busca por nome, CPF, telefone, WhatsApp ou e-mail |
| cpf | string | não | Filtra pelo CPF, com ou sem máscara |
| updated_after | datetime | não | Retorna pacientes alterados após a data informada |
| page | integer | não | Página da paginação |
| limit | integer | não | Itens por página |
curl -X GET "API_URL/pacientes?search=Maria&limit=20" \ -H "Authorization: Bearer SEU_TOKEN"
{
"success": true,
"data": [
{
"id": 10,
"nome": "Maria Teste",
"cpf": "00000000000",
"data_nascimento": "1990-01-01",
"sexo": "F",
"telefone": "17999999999",
"whatsapp": "17999999999",
"email": "maria@email.com",
"convenio": "Particular"
}
],
"pagination": {"page": 1, "limit": 20, "total": 1}
}
GET
/pacientes/{cpf}
Consulta um paciente pelo CPF, com ou sem máscara.
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| cpf | string | sim | CPF do paciente, com ou sem máscara |
curl -X GET "API_URL/pacientes/00000000000" \ -H "Authorization: Bearer SEU_TOKEN"
{
"success": true,
"data": {
"id": 10,
"nome": "Paciente Teste",
"cpf": "00000000000",
"telefone": "17999999999",
"email": "paciente@email.com"
}
}
POST
/pacientes
Cria um paciente. Campos obrigatórios: nome e CPF.
{
"nome": "Paciente Teste",
"cpf": "00000000000",
"data_nascimento": "1990-01-01",
"sexo": "F",
"telefone": "17999999999",
"whatsapp": "17999999999",
"email": "paciente@email.com",
"nome_mae": "Nome da mãe",
"convenio": "Particular",
"numero_carteirinha": "",
"observacoes": ""
}
curl -X POST "API_URL/pacientes" \
-H "Authorization: Bearer SEU_TOKEN" \
-H "Content-Type: application/json" \
-d '{"nome":"Paciente Teste","cpf":"00000000000","data_nascimento":"1990-01-01","sexo":"F"}'
{
"success": true,
"message": "Paciente cadastrado com sucesso.",
"data": {
"id": 10,
"nome": "Paciente Teste",
"cpf": "00000000000"
}
}
PUT
/pacientes/{cpf}
Atualiza um paciente existente pelo CPF. Envie apenas os campos que deseja alterar.
{
"telefone": "17988888888",
"whatsapp": "17988888888",
"email": "novo@email.com",
"convenio": "Convênio X",
"observacoes": "Atualizado via API"
}
curl -X PUT "API_URL/pacientes/00000000000" \
-H "Authorization: Bearer SEU_TOKEN" \
-H "Content-Type: application/json" \
-d '{"telefone":"17988888888","email":"novo@email.com"}'
{
"success": true,
"message": "Paciente atualizado com sucesso.",
"data": {
"id": 10,
"nome": "Paciente Teste",
"cpf": "00000000000"
}
}
GET
/laudos
Lista laudos do cliente com filtros por paciente, agendamento, período e identificadores DICOM.
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| paciente_id | integer | não | Filtra por paciente |
| agendamento_id | integer | não | Filtra por agendamento |
| registro_id | integer | não | Filtra pelo ID do registro |
| accession_number | string | não | Filtra por accession number |
| study_instance_uid | string | não | Filtra por Study Instance UID |
| data_inicio | date | não | Início do período, formato YYYY-MM-DD |
| data_fim | date | não | Fim do período, formato YYYY-MM-DD |
| search | string | não | Busca textual |
| include_html | boolean | não | Use 1 para incluir o HTML do laudo |
| include_estado_json | boolean | não | Use 1 para incluir o estado JSON salvo |
| page | integer | não | Página da paginação |
| limit | integer | não | Itens por página |
curl -X GET "API_URL/laudos?data_inicio=2026-06-01&data_fim=2026-06-30&include_html=0&limit=20" \ -H "Authorization: Bearer SEU_TOKEN"
{
"success": true,
"data": [
{
"id": 123,
"agendamento_id": 456,
"laudo_id": 20,
"laudo_nome": "Ultrassonografia",
"paciente_id": 10,
"paciente_nome": "Paciente Teste",
"accession_number": "ACC123",
"status": "finalizado",
"agendamento": {
"data_inicio": "2026-06-01 08:00:00",
"procedimento": "Ultrassonografia"
}
}
],
"pagination": {"page": 1, "limit": 20, "total": 1}
}
GET
/laudos/{id}
Consulta um laudo específico pelo ID do registro.
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| id | integer | sim | ID do registro de laudo |
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| include_html | boolean | não | Use 1 para retornar o HTML do laudo |
| include_estado_json | boolean | não | Use 1 para retornar o estado JSON salvo |
curl -X GET "API_URL/laudos/123?include_html=1" \ -H "Authorization: Bearer SEU_TOKEN"
{
"success": true,
"data": {
"id": 123,
"agendamento_id": 456,
"laudo_nome": "Ultrassonografia",
"paciente_nome": "Paciente Teste",
"laudo_html": "Texto do laudo...
",
"laudo_editado_em": "2026-06-01 08:20:00"
}
}
GET
/prontuarios
Lista prontuários com filtros e opção de retornar HTML/estado JSON.
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| include_prontuario | boolean | não | Use 1 para incluir HTML do prontuário |
| include_estado_json | boolean | não | Use 1 para incluir o estado salvo do formulário |
| paciente_id | integer | não | Filtra por paciente |
| agendamento_id | integer | não | Filtra por agendamento |
| data_inicio | date | não | Início do período, formato YYYY-MM-DD |
| data_fim | date | não | Fim do período, formato YYYY-MM-DD |
| search | string | não | Busca textual |
| page | integer | não | Página da paginação |
| limit | integer | não | Itens por página |
curl -X GET "API_URL/prontuarios?include_prontuario=1&include_estado_json=1&limit=20" \ -H "Authorization: Bearer SEU_TOKEN"
{
"success": true,
"data": [
{
"id": 123,
"paciente_nome": "Paciente Teste",
"prontuario_html": "... quando include_prontuario=1 ...",
"laudo_estado_json": {
"aba": "figado",
"campos": {}
},
"updated_at": "2026-06-01 08:20:00"
}
],
"pagination": {"page": 1, "limit": 20, "total": 1}
}
GET
/prontuarios/{id}
Consulta um prontuário específico pelo ID do registro.
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| id | integer | sim | ID do registro de prontuário/laudo |
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| include_prontuario | boolean | não | Use 1 para retornar o HTML do prontuário |
| include_estado_json | boolean | não | Use 1 para retornar o estado salvo do formulário |
curl -X GET "API_URL/prontuarios/123?include_prontuario=1&include_estado_json=1" \ -H "Authorization: Bearer SEU_TOKEN"
{
"success": true,
"data": {
"id": 123,
"paciente_nome": "Paciente Teste",
"prontuario_html": "Evolução/prontuário...
",
"laudo_estado_json": {
"aba": "figado",
"campos": {}
},
"updated_at": "2026-06-01 08:20:00"
}
}
GET
/agenda/disponibilidade
Lista os horários livres de uma data (escopo agenda:read).
| data | string | sim | Data no formato YYYY-MM-DD. |
| duracao | integer | não | Duração do bloco em minutos (padrão: intervalo da agenda). |
curl -X GET "API_URL/agenda/disponibilidade?data=2026-07-10&duracao=30" \ -H "Authorization: Bearer SEU_TOKEN"
{
"data": "2026-07-10",
"duracao_minutos": 30,
"intervalo_minutos": 30,
"horarios_livres": ["08:00", "08:30", "09:00"],
"total_livres": 3
}
GET
/agenda
Lista agendamentos por dia ou período (escopo agenda:read).
| data | string | não | Dia único (YYYY-MM-DD). Atalho para data_inicio = data_fim. |
| data_inicio | string | não | Início do período (YYYY-MM-DD). |
| data_fim | string | não | Fim do período (YYYY-MM-DD). |
curl -X GET "API_URL/agenda?data=2026-07-10" \ -H "Authorization: Bearer SEU_TOKEN"
{
"data_inicio": "2026-07-10",
"data_fim": "2026-07-10",
"total": 1,
"agendamentos": [
{
"id": 123,
"data_inicio": "2026-07-10 09:00:00",
"data_fim": "2026-07-10 09:30:00",
"procedimento": "Consulta clínica",
"status": 1,
"paciente_nome": "Paciente Teste",
"paciente_cpf": "00000000000",
"paciente_telefone": "1733000000",
"paciente_celular": "17999990000",
"paciente_whatsapp": "17999990000"
}
]
}
POST
/agenda
Cria um agendamento (escopo agenda:write).
| data_inicio | string | sim | YYYY-MM-DD HH:MM. |
| procedimento | string | sim | Nome do exame/consulta. |
| duracao | integer | não | Minutos (padrão 30). |
| cpf | string | não | CPF do paciente (vincula/cria pelo CPF). |
| nome_paciente | string | não | Usado para cadastrar quando o CPF não existir. |
| convenio | string | não | Convênio do agendamento. |
curl -X POST "API_URL/agenda" \
-H "Authorization: Bearer SEU_TOKEN" \
-H "Content-Type: application/json" \
-d '{"cpf":"00000000000","nome_paciente":"Paciente Teste","data_inicio":"2026-07-10 09:00","duracao":30,"procedimento":"Consulta clínica"}'
{ "success": true, "id": 123, "data_inicio": "2026-07-10 09:00:00", "data_fim": "2026-07-10 09:30:00" }
PUT
/agenda/{id}
Remarca ou altera o status de um agendamento (escopo agenda:write).
| data_inicio | string | não | Novo início (YYYY-MM-DD HH:MM). |
| data_fim | string | não | Novo fim (YYYY-MM-DD HH:MM). |
| status | integer | não | Novo status (1 agendado … 7 cancelado). |
curl -X PUT "API_URL/agenda/123" \
-H "Authorization: Bearer SEU_TOKEN" \
-H "Content-Type: application/json" \
-d '{"data_inicio":"2026-07-10 10:00","status":2}'
{ "success": true, "id": 123 }
DELETE
/agenda/{id}
Cancela (exclui) um agendamento (escopo agenda:write).
curl -X DELETE "API_URL/agenda/123" \ -H "Authorization: Bearer SEU_TOKEN"
{ "success": true, "id": 123, "cancelado": true }
GET/conveniosLista os registros (escopo convenios:read).
| search | string | não | Filtra pelo nome. |
curl -X GET "API_URL/convenios" \ -H "Authorization: Bearer SEU_TOKEN"
{ "total": 1, "convenios": [ { "id": 1, "nome": "Unimed", "codigo": "001", "telefone": "", "email": "", "ativo": 1 } ] }GET/convenios/{id}Consulta um registro pelo id (escopo convenios:read).
curl -X GET "API_URL/convenios/1" \ -H "Authorization: Bearer SEU_TOKEN"
{ "convenios": { "id": 1, "nome": "Unimed", "codigo": "001", "telefone": "", "email": "", "ativo": 1 } }POST/conveniosCria um registro (escopo convenios:write).
| nome | string | sim | Nome do convênio. |
| codigo | string | não | Código. |
| telefone | string | não | Telefone. |
| string | não | E-mail. | |
| ativo | integer | não | 1 ou 0. |
curl -X POST "API_URL/convenios" \
-H "Authorization: Bearer SEU_TOKEN" \
-H "Content-Type: application/json" \
-d '{"nome":"Unimed","codigo":"001","telefone":"1733000000"}'{ "success": true, "id": 1 }PUT/convenios/{id}Atualiza um registro (escopo convenios:write).
curl -X PUT "API_URL/convenios/1" \
-H "Authorization: Bearer SEU_TOKEN" \
-H "Content-Type: application/json" \
-d '{"telefone":"1733000000","ativo":1}'{ "success": true, "id": 1 }DELETE/convenios/{id}Exclui um registro (escopo convenios:write).
curl -X DELETE "API_URL/convenios/1" \ -H "Authorization: Bearer SEU_TOKEN"
{ "success": true, "id": 1, "excluido": true }GET/recepcionistasLista os registros (escopo recepcionistas:read).
| search | string | não | Filtra pelo nome. |
curl -X GET "API_URL/recepcionistas" \ -H "Authorization: Bearer SEU_TOKEN"
{ "total": 1, "recepcionistas": [ { "id": 1, "nome": "Maria", "email": "maria@clinica.com", "telefone": "", "cpf": "", "ativo": 1 } ] }GET/recepcionistas/{id}Consulta um registro pelo id (escopo recepcionistas:read).
curl -X GET "API_URL/recepcionistas/1" \ -H "Authorization: Bearer SEU_TOKEN"
{ "recepcionistas": { "id": 1, "nome": "Maria", "email": "maria@clinica.com", "telefone": "", "cpf": "", "ativo": 1 } }POST/recepcionistasCria um registro (escopo recepcionistas:write).
| nome | string | sim | Nome. |
| string | sim | E-mail (login). | |
| senha | string | não | Senha de acesso (gerada se omitida). |
| telefone | string | não | Telefone. |
| cpf | string | não | CPF. |
| ativo | integer | não | 1 ou 0. |
curl -X POST "API_URL/recepcionistas" \
-H "Authorization: Bearer SEU_TOKEN" \
-H "Content-Type: application/json" \
-d '{"nome":"Maria","email":"maria@clinica.com","senha":"SenhaForte1"}'{ "success": true, "id": 1 }PUT/recepcionistas/{id}Atualiza um registro (escopo recepcionistas:write).
curl -X PUT "API_URL/recepcionistas/1" \
-H "Authorization: Bearer SEU_TOKEN" \
-H "Content-Type: application/json" \
-d '{"telefone":"1733000000","ativo":1}'{ "success": true, "id": 1 }DELETE/recepcionistas/{id}Exclui um registro (escopo recepcionistas:write).
curl -X DELETE "API_URL/recepcionistas/1" \ -H "Authorization: Bearer SEU_TOKEN"
{ "success": true, "id": 1, "excluido": true }GET/medicosLista os registros (escopo medicos:read).
| search | string | não | Filtra pelo nome. |
curl -X GET "API_URL/medicos" \ -H "Authorization: Bearer SEU_TOKEN"
{ "total": 1, "medicos": [ { "id": 1, "nome": "Dr. João", "crm": "12345", "rqe": "", "telefone": "", "email": "", "ativo": 1 } ] }GET/medicos/{id}Consulta um registro pelo id (escopo medicos:read).
curl -X GET "API_URL/medicos/1" \ -H "Authorization: Bearer SEU_TOKEN"
{ "medicos": { "id": 1, "nome": "Dr. João", "crm": "12345", "rqe": "", "telefone": "", "email": "", "ativo": 1 } }POST/medicosCria um registro (escopo medicos:write).
| nome | string | sim | Nome. |
| crm | string | não | CRM. |
| rqe | string | não | RQE. |
| string | não | E-mail. | |
| senha | string | não | Senha de acesso (gerada se omitida). |
| ativo | integer | não | 1 ou 0. |
curl -X POST "API_URL/medicos" \
-H "Authorization: Bearer SEU_TOKEN" \
-H "Content-Type: application/json" \
-d '{"nome":"Dr. João","crm":"12345","rqe":"1234"}'{ "success": true, "id": 1 }PUT/medicos/{id}Atualiza um registro (escopo medicos:write).
curl -X PUT "API_URL/medicos/1" \
-H "Authorization: Bearer SEU_TOKEN" \
-H "Content-Type: application/json" \
-d '{"telefone":"1733000000","ativo":1}'{ "success": true, "id": 1 }DELETE/medicos/{id}Exclui um registro (escopo medicos:write).
curl -X DELETE "API_URL/medicos/1" \ -H "Authorization: Bearer SEU_TOKEN"
{ "success": true, "id": 1, "excluido": true }GET/solicitantesLista os registros (escopo solicitantes:read).
| search | string | não | Filtra pelo nome. |
curl -X GET "API_URL/solicitantes" \ -H "Authorization: Bearer SEU_TOKEN"
{ "total": 1, "solicitantes": [ { "id": 1, "nome": "Dr. Ana", "crm": "54321", "rqe": "", "telefone": "", "email": "", "ativo": 1 } ] }GET/solicitantes/{id}Consulta um registro pelo id (escopo solicitantes:read).
curl -X GET "API_URL/solicitantes/1" \ -H "Authorization: Bearer SEU_TOKEN"
{ "solicitantes": { "id": 1, "nome": "Dr. Ana", "crm": "54321", "rqe": "", "telefone": "", "email": "", "ativo": 1 } }POST/solicitantesCria um registro (escopo solicitantes:write).
| nome | string | sim | Nome. |
| crm | string | não | CRM. |
| rqe | string | não | RQE. |
| telefone | string | não | Telefone. |
| string | não | E-mail. | |
| ativo | integer | não | 1 ou 0. |
curl -X POST "API_URL/solicitantes" \
-H "Authorization: Bearer SEU_TOKEN" \
-H "Content-Type: application/json" \
-d '{"nome":"Dr. Ana","crm":"54321"}'{ "success": true, "id": 1 }PUT/solicitantes/{id}Atualiza um registro (escopo solicitantes:write).
curl -X PUT "API_URL/solicitantes/1" \
-H "Authorization: Bearer SEU_TOKEN" \
-H "Content-Type: application/json" \
-d '{"telefone":"1733000000","ativo":1}'{ "success": true, "id": 1 }DELETE/solicitantes/{id}Exclui um registro (escopo solicitantes:write).
curl -X DELETE "API_URL/solicitantes/1" \ -H "Authorization: Bearer SEU_TOKEN"
{ "success": true, "id": 1, "excluido": true }
GET
/dicom/{id}
Retorna as URLs das imagens DICOM do exame pelo id do laudo (escopo dicom:read).
| id | integer | sim | ID do laudo/exame (agendamento). |
curl -X GET "API_URL/dicom/123" \ -H "Authorization: Bearer SEU_TOKEN"
{
"laudo_id": 123,
"total": 2,
"urls": [
"https://sv1.laudario.com.br/preview.php?...img1",
"https://sv1.laudario.com.br/preview.php?...img2"
],
"imagens": [
{ "url": "https://.../img1", "instance_id": "abc" },
{ "url": "https://.../img2", "instance_id": "def" }
]
}