Pular para o conteúdo
FarmanipulaçãoFarmanipulação
Blog

Ciência & tecnologia

Hash-chain de pesagem — rastreabilidade estilo blockchain (sem o hype)

·Equipe Farmanipulação·tecnologia · rastreabilidade · sha-256

A palavra blockchain virou meme. Aplicada a "rastrear ovo de galinha" ou "votação online", virou marketing oco. Mas a ideia técnica subjacente — uma corrente de assinaturas matemáticas onde cada elo depende do anterior — é antiga, sólida e útil em contextos onde falsificação histórica precisa ser impossível.

Pesagem em farmácia magistral é exatamente um desses contextos.

Bloco #1000IFA: Minoxidil5,00 ghash: a3f2…prev: Bloco #1001IFA: Tretinoína0,025 ghash: c9b1…prev: a3f2…Bloco #1002IFA: Vit D30,5 ghash: 7d4e…prev: c9b1…Bloco #1003IFA: CoQ102,00 ghash: f8a2…prev: 7d4e…Modificar bloco #1001 → hashes #1002, #1003 ficam inconsistentes (detecção imediata)
Hash-chain de pesagem — alteração retroativa quebra a cadeia

O problema sem hash-chain

Tradicionalmente, pesagens são registradas em planilha. O técnico pesa, anota o valor. No fim do dia, o sistema consolida.

O problema é que planilha aceita edição. Se 2 meses depois alguém precisar mudar um valor para "ajustar" um lote, nada impede tecnicamente. Trilha de papel pode ser substituída. Versão de planilha pode ser sobrescrita.

Em medicamento manipulado, isso é particularmente sério porque:

  • Erro de pesagem é causa direta de eventos adversos.
  • Fiscalização Anvisa quer ver registros confiáveis em auditoria.
  • Paciente que sofreu evento adverso quer auditar o lote retroativamente.

A solução é gravar de forma que alteração posterior se torne detectável.

A ideia do hash

Um hash criptográfico (como SHA-256) é uma função matemática que transforma qualquer entrada num número de tamanho fixo (256 bits). Propriedades:

  1. Determinístico: a mesma entrada sempre produz o mesmo hash.
  2. Resistente a colisão: virtualmente impossível encontrar duas entradas que produzam o mesmo hash.
  3. Avalanche: alterar 1 bit da entrada muda completamente o hash de saída.
  4. Irreversível: a partir do hash, não dá para reconstruir a entrada.

Se você grava (peso, lote, timestamp, operador) → hash A. Mais tarde, se alguém alterar o peso, o hash recalculado será diferente. A alteração fica matematicamente visível.

A corrente

Hashear cada pesagem isoladamente já ajuda — mas não é suficiente. Alguém poderia trocar um registro inteiro (entrada + hash) por outro. A corrente resolve.

Cada registro inclui: peso + lote + timestamp + operador + hash da pesagem anterior.

Registro 1: { peso: 0.108, lote: A23, ts: ..., op: J, prevHash: 0 }     → hash H1
Registro 2: { peso: 0.412, lote: B45, ts: ..., op: J, prevHash: H1 }    → hash H2
Registro 3: { peso: 0.072, lote: A23, ts: ..., op: K, prevHash: H2 }    → hash H3
...

Se alguém quiser alterar o registro 1, o prevHash do registro 2 não baterá mais. Precisa alterar o registro 2 também — mas aí o prevHash do registro 3 não bate. E assim em cadeia até o último registro.

Para falsificar 1 pesagem retroativamente, é preciso reconstruir toda a cadeia desde aquele ponto. Em laboratório com 10.000 pesagens/ano, isso é matematicamente proibitivo.

Onde o "blockchain" tradicional não se aplica

Crypto-blockchains (Bitcoin, Ethereum) adicionam:

  • Distribuição (cadeia replicada em milhares de nós).
  • Consenso descentralizado (proof-of-work, proof-of-stake).
  • Imutabilidade pública.

Em farmácia magistral, isso é overkill. O modelo correto é mais próximo de certificação por hash em servidor único auditável + publicação periódica do hash final em local imutável (ex.: tweet semanal do hash do último registro, timestamp em serviço notarial).

A Farmanipulação implementa o modelo simples: hash-chain XState v5 audit log gravado em PostgreSQL com replicação. Hash final do dia publicado periodicamente. Auditoria via download de log + recomputação independente.

Como o paciente verifica

Pós-AFE, cada produto dispensado terá QR-code apontando para /selo/lote/[id]. A página mostra:

Lote A2026-04-30-14:32
Manipulado em: 2026-04-30 14:32:15 BRT
Responsável: Dr(a). [Nome RT] · CRF [...]
IFA: Minoxidil 5% · Lote IFA: M-2026-Q1-457
Hash do lote: 7a8f9b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0c1d2e3f4a5b6c7d8e9f0a
Hash anterior na cadeia: 6b9d8a7c5e4f3a2b1c0d9e8f7a6b5c4d3e2f1a0b9c8d7e6f5a4b3c2d1e0f
[Baixar audit log JSON]

Você baixa o JSON, roda SHA-256 nas entradas, confere se o hash bate. Se bater, ninguém alterou nada depois.

É a única redundância?

Não. Hash-chain é uma camada entre várias:

  • Interlock balança: software bloqueia avanço sem confirmação física da pesagem.
  • NIR + NFC dual: identificação cruzada da matéria-prima antes da pesagem.
  • Sensores ambientais 24/7: temperatura, umidade, pressão diferencial.
  • Validação 4 camadas: RDC 67 + interações + dose máx + estabilidade.
  • Hash-chain: auditoria immutable do que foi pesado.

Cada uma sozinha não basta. Juntas, formam um modelo onde erro humano único não causa erro de saída. É o que se espera de infraestrutura crítica — e é o que estamos construindo na Farmanipulação antes de abrir as portas.

Fontes

  1. NIST FIPS 180-4 — Secure Hash Standard· 2015
  2. ANVISA RDC 67/2007 — auditoria magistral· 2007