Objetivo
Validar que um pedido de manipulação dermocosmética está consistente em todas as etapas do ciclo de vida — cruzando 4 fontes de dados campo a campo — antes que divergências virem retrabalho na produção ou reclamação do cliente.
Quando acontece
A cada pedido que entra no fluxo de produção. A conferência é automatizada e deve rodar antes da liberação para manipulação.
As 4 fontes de dados
Cada fonte tem propósito e momento diferentes no ciclo do pedido:
1. Receita OCR — documento fundacional. Prescrição digitalizada com dados do prescritor, paciente, fórmulas (ativos, concentrações, posologia, base, volume). Dados de entidades (prescritor, paciente, comprador) são globais (valem para todas as fórmulas da receita). É a referência principal para: nome dos produtos, posologia, embalagem, base/veículo (QSP), uso-destinação e dados cadastrais.
2. Pedido de Compra (ERP de vendas) — registro comercial. Itens comprados, quantidades, preços, envio, endereço, observações. User pode ser prescritor (se tiver conselho) ou paciente. Entidades são globais. Referência principal para: itens efetivamente comprados, preço, envio, endereço de entrega, observações comerciais.
3. Requisição de Produção (ERP de produção) — registro técnico. Cada produto gera uma req com composição detalhada (ativos, concentrações, excipientes, base, volume, forma farmacêutica, charge, datas). Diferente das outras fontes: paciente e prescritor vêm POR PRODUTO, não globais.
4. Chat / Histórico de Conversa (Botmaker/Postgres) — registro informal. Preferências de entrega, ajustes, endereço diferente do cadastro. Fonte complementar para verificação cruzada.
As 4 entidades de pessoa
Um pedido envolve até 4 papéis (que podem ser a mesma pessoa física):
- Prescritor(a) — quem prescreveu (tem número de conselho). OCR:
dados_emitente; Pedido: user principal ou adjunct; Req:prescriber(por produto); Chat: menção por nome. - Paciente — quem vai usar os produtos. OCR:
dados_paciente; Pedido: user ou campo paciente; Req:patient(por produto). - Comprador(a) — quem paga. OCR:
dados_comprador; Pedido: dados do cliente; Chat: quem conversa. - Destinatário(a) — quem recebe a entrega (pode diferir do comprador). Pedido: endereço de entrega; Chat: endereço mencionado.
Caso mais comum: prescritor = paciente = comprador = destinatário. Em clínicas: secretária compra, médico prescreve, paciente é terceiro. A conferência deve identificar quem é quem e sinalizar divergências entre fontes.
Anatomia de uma fórmula manipulada
Fórmula = ativos (ingredientes terapêuticos + concentrações) + base/veículo (meio que carrega os ativos, completando o volume).
Exemplo no OCR: Inaclear 1%; Dermaspheres C 4%; VCIP 2%; Alfa Bisabolol 0,5%; Base Second Skin qsp 15g
- Tudo antes de “qsp” = composição (ativos + nome da base)
- “Base Second Skin” = veículo
- “15g” = volume por unidade
Na Req, a mesma informação aparece fragmentada: composition (string), items[] (array detalhado), volume.volume (por unidade), volume.contain (total produzido), ff (forma farmacêutica).
Passo a passo da conferência
Nível 1 — Bloco do Pedido (dados globais)
Compara Pedido × OCR × Chat:
- Entidades de pessoa — conferir prescritor, paciente, comprador, destinatário entre as 3 fontes.
- Endereço de entrega — Pedido vs Chat (cliente pode ter mencionado endereço diferente).
- Tipo de envio — Pedido vs Chat (cliente pediu “expressa” mas pedido está como PAC?).
- Preço total — somatório dos charges das Reqs vs preço total do Pedido.
- Contagem de itens — total de itens no Pedido vs total de séries na Req vs total de fórmulas no OCR.
- Observações — campos de observação do Pedido vs contexto do Chat.
Nível 2 — Bloco do Produto (por item)
Para cada produto individualmente:
- Identificação — nome e quantidade entre OCR, Pedido e Req.
- Apresentação — grupo coerente: forma farmacêutica (ff) + base/veículo (qsp) + volume + conteúdo + embalagem + uso-aplicação + uso-destinação. Conferência tripla:
- (a) OCR vs Req para cada campo
- (b) Coerência interna da Req (ff compatível com base? uso compatível com ff?)
- (c) OCR vs Pedido para uso-destinação
- Preço — preço do item no Pedido vs charge na Req.
- Posologia — OCR (posologia + instruções ao paciente) vs posology da Req. Truncamento na Req é esperado; divergência real = conteúdo presente na Req contradiz o OCR.
- Pessoas — paciente e prescritor da Req (por produto) vs valores globais do OCR e Pedido.
- Composição — comparação ativo a ativo entre OCR e Req:
- Ativo do OCR ausente na Req → ⚠️ (possível erro)
- Ativo da Req ausente no OCR → ℹ️ (esperado: excipientes, conservantes)
- Mesma concentração e código → ✅
- Nomes diferentes, código idêntico → ✅ sinônimo
- “qs” no OCR vs qualquer valor na Req → ✅
- Concentrações diferentes → ⚠️
Casamento entre itens
- Pedido ↔ Req: determinístico (reqNumber + reqSerie)
- OCR ↔ (Pedido + Req): heurístico (nome, volume, composição, código de ingrediente, posologia como critérios de similaridade)
Regras de coerência interna
Forma farmacêutica (ff) ↔ base ↔ uso-aplicação
| ff | Tipo | Bases compatíveis | Uso compatível |
|---|---|---|---|
| 1 | Cápsula | cápsula | ORAL |
| 2 | Creme | Creme Lanette, Creme Polawax, Base Neutracolor, Base Second Skin | TOPIC |
| 3 | Loção/sabonete líquido | Sabonete Syndet Liquido, outros fluidos | TOPIC |
| 5 | Não definido | avaliar caso a caso | avaliar |
Atenção: “Base Neutracolor” e “Base Second Skin” são cremes (compatíveis com ff=2), mesmo sem a palavra “creme” no nome.
Volume ↔ conteúdo ↔ quantidade
- Volume (
volume.volume): tamanho de UMA unidade (ex: 30g para um pote) - Conteúdo (
volume.contain): total produzido naquela req (ex: 30g para 1 pote; 60g para 2 potes de 30g) - Quantidade (
qty): número de unidades/frascos (no OCR:qtd_frascosou texto) - ml e g são tratados como compatíveis (densidade ~1 para dermocosméticos)
Sinônimos comuns
Ativos com nomes diferentes que são equivalentes:
- Vitamina C = Ácido Ascórbico = VCIP = Ascorbyl Tetraisopalmitate
- Retinal = Retinaldeído
- Vitamina E = Tocoferol = Acetato de Tocoferol
- BHA = Ácido Salicílico
- Niacinamida = Vitamina B3 = Nicotinamida
- TXA = Ácido Tranexâmico
Bases genéricas (OCR) ↔ nomes técnicos (Req):
- “gel” ↔ Gel Carbopol, Gel Natrosol
- “creme” ↔ Creme Lanette, Creme Polawax, Base Neutracolor
- “sérum” ↔ Sérum Base, Sérum Silicone
- “sabonete” ↔ Sabonete Syndet Liquido
- “shampoo” ↔ Shampoo Base
Regra: se o tipo de veículo é o mesmo, nomes são compatíveis. Divergência real = tipo muda (OCR diz “creme”, Req tem “Gel Carbopol”).
Indicadores de conferência
| Indicador | Significado |
|---|---|
| ✅ | Confere entre as fontes |
| ⚠️ | Divergência que merece atenção (pode ser legítima ou erro) |
| ❌ | Inconsistência clara que exige ação (erro provável) |
| ℹ️ | Informação adicional de uma fonte só, sem correspondência nas outras (esperado) |
Cada produto recebe veredito final: conforme, com pontos de atenção, ou com inconsistência. Resumo final indica quantos conferem e quantos precisam de revisão.
Exceções e decisões
- OCR ilegível ou incompleto: conferência parcial, sinalizar campos sem dado do OCR como ℹ️.
- Pedido sem receita: conferência limitada a Pedido × Req × Chat. Registrar ausência.
- Req com dados de paciente/prescritor divergentes do global: escalar para Setor de Pedidos conferir se houve troca ou erro de cadastro na produção.
Relação com outros processos
- Automatizado por: Conferência Automática na Entrada de Ag. Impressão — este documento define as regras; a conferência automática as executa via webhook quando o pedido entra em Ag. Impressão
- Etapa dentro de: Ciclo do Pedido — Fluxo Executivo (ponto de verificação entre fase 2 e 3)
- JSON consolidado: Quando a conferência automática aceita o pedido, o output é um JSON consolidado que alimenta a impressão de rótulos e as conferências de produção
- Mapa de responsabilidades: Mapa de Responsabilidades por Etapa
Histórico de evolução
| Data | Mudança | Motivação |
|---|---|---|
| 2026-03-27 | Criação do documento — reestruturação do arquivo original “A OCR X PEDIDO” com frontmatter e formato padrão | Organização da base de conhecimento |
| 2026-03-31 | Frontmatter atualizado: tags cadeia/ajuste, papel/, maturidade provisório (conteúdo já detalhado). Ocorrência de origem adicionada. | 2026-03-31-processos-sem-raci |
| 2026-04-02 | Adicionada seção Relação com outros processos: link para conferência automática (que implementa estas regras) e mapa de responsabilidades | Criação do processo de conferência automática |