Visão Geral da Memed
Integração com a Memed para prescrição médica digital. O módulo cuida de três coisas: cadastro do prescritor (o médico na Memed), configuração dos receituários/templates (cabeçalho e rodapé em PDF) e o registro das prescrições emitidas para o paciente.
Todas as rotas exigem o header Authorization: Bearer {accessToken}. Nenhuma rota do módulo é pública. Veja Autenticação.
Várias rotas fazem chamadas HTTP à API da Memed em tempo real (buscar prescritor, criar/atualizar, templates, download do PDF da prescrição). Falhas de conexão retornam 500 com mensagem genérica; erros de validação da própria Memed são repassados como 400 com o detail retornado por ela.
Base
https://api-dev.imagemais.com.br/api/integrations/memed
Conceitos
| Conceito | O que é |
|---|---|
| Prescritor | O médico cadastrado na Memed. Vinculado a um usuário do sistema (userId) e identificado por um memedExternalId. Guarda CPF, conselho (CRM/CRO/…), especialidade e data de nascimento. |
| Token do prescritor | Token que a Memed devolve para o prescritor; usado pelo frontend para abrir o módulo de prescrição da Memed. |
| Receituário / Template | Cada prescritor tem 4 receituários (indice 1 a 4). Em cada um é possível enviar um PDF de cabeçalho/rodapé que a Memed usa como fundo da receita. |
| Prescrição | O documento emitido (identificado por memedId), vinculado a um paciente e opcionalmente a uma consulta. O PDF é baixado da Memed e arquivado no storage próprio. |
Rotas
Prescritores
| Método | Rota | Permissão | Descrição |
|---|---|---|---|
GET | /prescribers | — (só autenticado) | Busca o prescritor do usuário logado e retorna o token |
POST | /prescribers/create | create_prescriptions_memed | Cria um prescritor na Memed |
PATCH | /prescribers/{userId} | update_prescribers_memed | Atualiza um prescritor |
DELETE | /prescribers/{userId} | delete_prescribers_memed | Exclui (soft delete) um prescritor |
GET | /prescribers/all | read_prescribers_memed | Lista todos os prescritores da conta |
GET | /prescribers/available-users | read_prescribers_memed | Lista usuários ainda sem cadastro Memed |
GET | /prescribers/{userId} | read_prescribers_memed | Dados locais de um prescritor |
Receituários (templates)
| Método | Rota | Permissão | Descrição |
|---|---|---|---|
GET | /template | — (só autenticado) | Status dos 4 receituários |
POST | /template | add_template_memed | Upload de PDF de cabeçalho/rodapé |
DELETE | /template/{indice} | — (só autenticado) | Remove o template de um receituário |
Prescrições
| Método | Rota | Permissão | Descrição |
|---|---|---|---|
POST | /prescriptions | — (só autenticado) | Salva uma prescrição emitida |
GET | /prescriptions/{patientId} | — (só autenticado) | Lista as prescrições do paciente (cursor) |
GET | /prescriptions/{patientId}/count | — (só autenticado) | Conta as prescrições do paciente |
DELETE | /prescriptions/{memedId} | — (só autenticado) | Exclui (soft delete) uma prescrição |
Note que salvar e excluir prescrição não exigem permissão específica (basta estar autenticado), enquanto gerenciar prescritores exige. E criar prescritor usa a permissão create_prescriptions_memed (nome remete a "prescrições", não a "prescritores"). Isso reflete o código atual.
Isolamento por conta (multi-tenant)
As rotas de prescrição (/prescriptions/*) são escopadas pela accountId do token. Já as rotas de prescritor e template que recebem um userId na URL/query operam diretamente sobre aquele userId, sem cruzar com a accountId do token.
As operações que recebem userId (buscar/atualizar/excluir prescritor, listar/enviar/remover template com ?userId=) não verificam se aquele usuário pertence à mesma conta do token — a proteção é apenas por permissão. Um usuário com a permissão em uma conta poderia, em tese, operar sobre um prescritor de outra conta informando o userId dela. Ver as pendências de código do projeto.