Skip to main content

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.

Autenticação necessária

Todas as rotas exigem o header Authorization: Bearer {accessToken}. Nenhuma rota do módulo é pública. Veja Autenticação.

Chamadas externas à Memed

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

ConceitoO que é
PrescritorO 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 prescritorToken que a Memed devolve para o prescritor; usado pelo frontend para abrir o módulo de prescrição da Memed.
Receituário / TemplateCada 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çãoO 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étodoRotaPermissãoDescrição
GET/prescribers— (só autenticado)Busca o prescritor do usuário logado e retorna o token
POST/prescribers/createcreate_prescriptions_memedCria um prescritor na Memed
PATCH/prescribers/{userId}update_prescribers_memedAtualiza um prescritor
DELETE/prescribers/{userId}delete_prescribers_memedExclui (soft delete) um prescritor
GET/prescribers/allread_prescribers_memedLista todos os prescritores da conta
GET/prescribers/available-usersread_prescribers_memedLista usuários ainda sem cadastro Memed
GET/prescribers/{userId}read_prescribers_memedDados locais de um prescritor

Receituários (templates)

MétodoRotaPermissãoDescrição
GET/template— (só autenticado)Status dos 4 receituários
POST/templateadd_template_memedUpload de PDF de cabeçalho/rodapé
DELETE/template/{indice}— (só autenticado)Remove o template de um receituário

Prescrições

MétodoRotaPermissãoDescriçã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
Permissões inconsistentes entre rotas parecidas

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.

Rotas por userId não validam a conta

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.