Envio de receita médica e validação farmacêutica no PrestaShop: documentação
Instalar o módulo, definir os produtos regulados, configurar o fluxo e tratar receitas, mensagens e códigos QR no back office.
Funcionamento
É você quem decide que produtos são regulados. Quando um cliente adiciona um deles ao carrinho, aparece por baixo o bloco «Receita e validação farmacêutica». O cliente envia aí a sua receita e encomenda. A encomenda fica no estado A aguardar validação farmacêutica até o farmacêutico decidir no back office. Os documentos são cifrados no seu servidor e nunca são servidos diretamente pelo servidor web.
- Receita obrigatória: é preciso enviar um documento antes de encomendar.
- Verificação farmacêutica: não é exigido documento, mas a encomenda é verificada antes do envio.
- Venda livre: sem validação, aplica-se apenas a quantidade máxima por encomenda. Num produto, este modo também o exclui da regra da sua categoria.
Só farmácias e locais de venda autorizados podem vender medicamentos online, em alguns países (como França) a venda online de medicamentos sujeitos a receita é proibida, e uma receita contém dados de saúde. O módulo fornece as ferramentas técnicas; a autorização de venda e o alojamento continuam sob a sua responsabilidade.
Requisitos
- PrestaShop 8.0 a 9.x.
- Extensão PHP
openssl(verificada na instalação). - Uma tarefa cron a cada hora, recomendada para lembretes, alertas e eliminação.
- HTTPS na loja.
Instalação
- Em Módulos > Gestor de módulos, clique em Carregar um módulo e envie o ZIP.
- O módulo cria o estado de encomenda A aguardar validação farmacêutica, a pasta de armazenamento cifrado e dois menus: Encomendas > Receitas e Encomendas > Regras de receita.
- Abra a configuração do módulo: o painel Estado indica se a pasta de armazenamento está pronta e protegida contra o acesso direto.
Definir os produtos regulados
Menu Encomendas > Regras de receita, botão Adicionar uma regra:
- Aplica-se a: um produto (pesquisa por nome, referência, EAN ou ID) ou uma categoria com as suas subcategorias.
- Modo: receita obrigatória, verificação farmacêutica ou venda livre.
- Quantidade máxima por encomenda: por produto, somando todas as combinações. Acima disso, a finalização da compra fica bloqueada. 0 significa sem limite.
Uma regra de produto prevalece sempre sobre as regras de categoria. Se um produto pertencer a várias categorias reguladas, «Receita obrigatória» prevalece sobre «Verificação farmacêutica» e aplica-se a quantidade máxima mais pequena.
A regra de um produto também se define no separador Módulos da página do produto. É guardada de imediato, sem guardar o produto.
Definições do módulo
Fluxo de validação
- Depois da encomenda (predefinição): o cliente paga e a encomenda aguarda a validação. Uma recusa obriga a reembolsar o cliente na página da encomenda.
- Antes do pagamento: o cliente com sessão iniciada envia o carrinho ao farmacêutico e só pode pagar depois da validação. Se o carrinho mudar depois, tem de ser enviado de novo.
Documentos
- Tipos aceites: PDF, JPEG, PNG, WebP. O tipo real é verificado pela assinatura do ficheiro, e os PDF com JavaScript, ações de arranque ou anexos são recusados.
- Tamanho máximo (8 MB por predefinição) e número máximo de ficheiros por pedido (5 por predefinição).
- Reutilização de receitas validadas: um cliente com sessão iniciada pode anexar uma receita validada a um novo carrinho até à sua data de validade.
- Validade predefinida (90 dias): preenchida no formulário de validação.
- Texto de consentimento, por idioma: o cliente tem de marcar a caixa antes de cada envio.
Questionário de saúde
Quando ativo, pergunta pelo paciente (o próprio ou outra pessoa), idade, peso, altura, sexo, gravidez ou amamentação, alergias, tratamentos em curso e antecedentes. A finalização da compra aguarda as respostas. São cifradas e preenchidas na encomenda seguinte de um cliente com sessão iniciada.
Lembretes e prazos
- Lembrete ao cliente (2 dias): email quando o cliente não respondeu a um pedido de informações.
- Cancelamento automático (10 dias): o pedido é recusado com o motivo «Sem resposta do cliente».
- Alerta ao farmacêutico (24 horas): resumo dos pedidos e mensagens de clientes em espera para além do prazo.
0 desativa cada função.
Notificações e estados
- Emails de notificação do farmacêutico: um ou mais endereços separados por vírgulas.
- Estado das encomendas recusadas: Cancelada por predefinição, o que repõe o stock.
- Respostas guardadas: uma por linha e por idioma, inseridas com um clique numa mensagem ou decisão.
Armazenamento e conservação
- Pasta de armazenamento:
var/dfprescription/por predefinição. Recomenda-se um caminho absoluto fora da raiz web. Deixa de poder ser alterada quando há documentos guardados. - Conservação dos documentos (365 dias): os ficheiros são eliminados após este prazo, exceto nos pedidos em curso e nas receitas ainda válidas. Os metadados e o registo de auditoria são mantidos.
Percurso do cliente
- A página do produto mostra um distintivo: receita obrigatória, verificação farmacêutica ou limite por encomenda.
- No carrinho, o cliente arrasta os documentos ou tira uma fotografia com o telemóvel, marca o consentimento, preenche o questionário se for preciso e pode deixar uma nota ao farmacêutico.
- Enquanto faltar alguma coisa, as ligações para a finalização da compra ficam desativadas e o acesso direto à página da encomenda devolve o cliente ao carrinho com uma mensagem.
- Depois da encomenda, a página de confirmação, o detalhe da encomenda e a página As minhas receitas da conta mostram o estado do pedido. Os convidados acompanham o pedido através de uma ligação privada enviada por email.
Tratar um pedido
Menu Encomendas > Receitas. A lista mostra o estado, o número de documentos e as mensagens não lidas, com contadores no topo. A ficha de um pedido reúne:
- os documentos num visualizador (PDF integrado, imagens com rotação e zoom), com abertura e transferência;
- o cliente, a encomenda ou encomendas, os produtos em causa e a sua regra;
- as respostas ao questionário de saúde, com os pontos de risco destacados;
- o fio de mensagens com o cliente;
- o formulário de decisão e o registo de auditoria.
Decidir
- Validar: defina a data de validade da receita. A encomenda retoma o estado que tinha antes da espera, por exemplo Pagamento aceite.
- Pedir informações: a mensagem é obrigatória. O cliente recebe um email e responde na sua conta ou através da ligação privada.
- Recusar: escolha um motivo. A encomenda passa ao estado definido para as recusas.
O nome do farmacêutico e o seu número profissional são guardados com cada decisão e memorizados para o funcionário. Cada pedido pode receber uma nota interna, nunca visível para o cliente.
Se um módulo de pagamento alterar o estado de uma encomenda em espera (por exemplo, um webhook de pagamento), o módulo memoriza esse estado e volta a colocar a encomenda em espera. Uma alteração manual feita por um funcionário é respeitada e registada.
Mensagens cliente ↔ farmacêutico
Cada pedido tem o seu fio de mensagens, cifrado como os documentos. O farmacêutico responde na ficha do pedido, inserindo se quiser uma resposta guardada. O cliente recebe o texto por email e responde em As minhas receitas. O farmacêutico recebe um email sem o texto da mensagem, apenas com uma ligação para o pedido. O cliente pode enviar no máximo 20 mensagens por dia e por pedido.
Código QR das receitas eletrónicas
Ao abrir um pedido, o código QR de cada documento é lido no seu navegador, nas imagens e nas 3 primeiras páginas dos PDF. O bloco Código QR da receita eletrónica mostra:
- o identificador detetado e o conteúdo completo do código QR;
- um alerta se a mesma receita já tiver sido enviada noutro pedido da loja, com a indicação «outro cliente» quando for o caso;
- um campo para introduzir o número à mão se o código QR estiver ilegível, e um botão para o ler novamente.
Só um software de farmácia certificado pode consultar os serviços oficiais de receita eletrónica. O módulo prepara a verificação e deteta reutilizações; o farmacêutico verifica depois o identificador no seu software.
Tarefa agendada
A configuração do módulo mostra o URL do cron. Chame-o a cada hora:
0 * * * * curl -s "https://a-sua-loja.pt/module/dfprescription/cron?key=A_SUA_CHAVE" >/dev/null
Envia os lembretes e alertas, cancela os pedidos sem resposta e elimina os ficheiros expirados. Sem cron, estas tarefas são executadas no máximo uma vez por hora ao abrir a página Receitas.
Segurança e conformidade
- Cifragem AES-256-GCM dos documentos, respostas ao questionário, mensagens e conteúdo dos códigos QR. A chave é derivada de um segredo do módulo e do
_COOKIE_KEY_da loja. - Registo de auditoria de cada envio, consulta, transferência, mensagem e decisão, com o endereço IP.
- Exportação CSV do registo em Encomendas > Receitas (botão Exportar o registo), sem documentos nem respostas de saúde.
- Compatível com o módulo RGPD oficial: a exportação dos dados do cliente inclui os pedidos, e a eliminação de um cliente apaga os seus documentos e mensagens.
Numa migração, mantenha o _COOKIE_KEY_ da loja e o valor de configuração DFPRESCRIPTION_KEY. Sem um deles, os documentos guardados deixam de poder ser decifrados.
Resolução de problemas
O painel Estado indica que a pasta está acessível a partir da web
Os ficheiros continuam cifrados, mas o nginx ignora o ficheiro .htaccess. Adicione uma regra deny all à pasta ou escolha uma pasta fora da raiz web.
O cliente não vê o bloco da receita
Verifique se uma regra abrange o produto ou uma das suas categorias, e se o seu tema mostra o hook displayShoppingCartFooter na página do carrinho.
O código QR não é lido
O código QR tem de estar nítido e totalmente visível. Use Ler novamente depois de receber uma fotografia melhor, ou introduza o número da receita à mão.
Desinstalação
A desinstalação elimina definitivamente todos os documentos guardados e as tabelas do módulo. O estado de encomenda dedicado fica oculto mas é mantido para o histórico das encomendas. Exporte o registo antes de desinstalar se precisar de guardar um rasto.