Redacta
Limite de privacidade para agentes de IA na saúde: pseudonimiza identificadores de pacientes (números do NHS, nomes, datas de nascimento, endereços; Reino Unido e EUA) em tokens rotulados localmente, mantém o mapa de reversão fora do contexto do agente e restaura os originais apenas na fronteira confiável.
Documentação
Redacta
Pseudonimiza documentos médicos e clínicos antes de serem processados por IA ou
compartilhados. O Redacta substitui identificadores de pacientes por tokens
rotulados — [PATIENT_NAME_1], [NHS_NUMBER_1], [DATE_OF_BIRTH_1], … — mantendo o
significado clínico intacto, e retorna um relatório de redação junto com o texto
limpo.
Começou como uma Agent Skill e agora é um único mecanismo distribuído em oito superfícies — um aplicativo iOS, skill de agente, servidor MCP, um serviço HTTP auto-hospedado com implantação Kubernetes, duas bibliotecas, uma CLI e um plugin para FigJam whiteboard.
Usando isso em produção? O Redacta oferece um pequeno número de integrações de parceiros de design com preço fixo para equipes que implantam agentes de IA em dados clínicos ou de pacientes — implantação no seu ambiente, um fluxo de trabalho real integrado e um documento de fluxo de dados escrito para seu DPO. Detalhes →
Um mecanismo, muitas superfícies
| Superfície | Pasta | Obtenha |
|---|---|---|
| Aplicativo iOS — iPhone (app, Share Extension, widget) | ios-app/ | Compile com Xcode — veja ios-app/README.md |
| Agent skill (Claude Code / apps / API) | SKILL.md, scripts/ | openclaw skills install redacta (ClawHub) |
| Servidor MCP (Claude Desktop, Cursor, …) | mcp-server/ | npx -y redacta-mcp (npm · MCP Registry · Anthropic MCP Directory) |
| Biblioteca TypeScript | npm-package/ | npm i @pharmatools/redacta (npm) |
| Biblioteca Python | python-package/ | pip install redacta (PyPI) |
| Ferramenta de linha de comando | cli-package/ | npx redacta-cli (npm) |
| Serviço HTTP auto-hospedado + Kubernetes | gateway-service/ | docker build — veja gateway-service/README.md |
| Plugin FigJam | figjam-plugin/ | Figma Community |
A lógica de detecção vive em um único lugar — o mecanismo TypeScript
(@pharmatools/redacta, em npm-package/), que o servidor MCP e o
plugin FigJam consomem, e que o aplicativo iOS executa no dispositivo via JavaScriptCore.
A biblioteca Python o espelha para usuários de pip; a skill de agente adiciona raciocínio de LLM
para nomes em texto livre sobre os padrões determinísticos.
Como funciona
Duas camadas:
- Padrões (determinísticos). Um script embutido (
scripts/redact_structured.py, apenas biblioteca padrão Python, sem rede) corresponde a identificadores de formato fixo: números NHS (validados por Modulus-11), números de National Insurance do Reino Unido, datas de nascimento, códigos postais do Reino Unido, números de telefone, e-mails e números de hospital/MRN. SSN dos EUA e códigos ZIP também são tratados. - Raciocínio (julgamento). A skill então faz o agente lidar com o que os padrões não conseguem: nomes de pacientes (diferenciados dos clínicos que os tratam), parentes e cuidadores, endereços postais e idades identificáveis.
- Autoverificação. Uma passada final relê a saída em busca de qualquer identificador que tenha escapado antes de o relatório ser escrito.
Também funciona ao contrário. Reidentificação (scripts/reinstate.py) pega o
mapa de tokens de uma redação anterior e restaura os valores originais — para que você possa
redigir um documento, processá-lo em outra ferramenta de IA e colocar os detalhes reais de volta
localmente. Redigir → processar → reidentificar é um ciclo completo, e os identificadores
só existem na sua máquina.
Modo Safe Harbor. Peça por HIPAA Safe Harbor (ou "desidentificação dos EUA") e o Redacta aplica uma passada mais rigorosa: todas as datas (não apenas a data de nascimento), todas as idades específicas e os identificadores HIPAA restantes — fax, certificado/licença, número de série de dispositivo, VIN e números de beneficiário de plano de saúde.
Auto-hospedagem em Kubernetes
Organizações que não podem deixar texto identificável sair do seu ambiente podem
executar o Redacta dentro da própria infraestrutura: um pequeno serviço HTTP
(gateway-service/) implantável em um cluster Kubernetes
existente com YAML simples — duas réplicas sem estado atrás de um
Service para redigir/restaurar, um limite de sessão opcional de réplica única
para o loop proteger → liberar, health probes, limites de recursos, padrões de segurança
restritivos e registro sem PHI. O texto é pseudonimizado antes de
chegar a qualquer serviço externo de IA, e o limite de processamento permanece sob
seu controle. Passo a passo (cluster local kind incluído):
gateway-service/k8s/README.md ·
conceitos: docs/KUBERNETES.md.
Implantando em algum lugar onde um DPO fará perguntas? Há um resumo de segurança e
proteção de dados de uma página em
pharmatools.ai/redacta-security.
Instalação
Claude Code
git clone https://github.com/nickjlamb/redacta ~/.claude/skills/redacta
Em seguida, invoque-o com /redacta, ou deixe-o disparar automaticamente quando você pedir para
redigir ou desidentificar texto clínico.
Claude apps / API
Compacte a pasta do repositório e envie-a como uma skill.
Conteúdo
| Caminho | O que é |
|---|---|
SKILL.md | A skill — instruções mais metadados |
reference.md | Especificações de padrões, o algoritmo Modulus-11, regras de prefixo NI, a regra de data de nascimento vs. data clínica, vocabulário de tokens, limitações |
scripts/redact_structured.py | A camada de padrões determinísticos |
scripts/reinstate.py | A camada de reidentificação (restaura originais a partir de um mapa de tokens) |
scripts/test_redact_structured.py | Testes para a camada de padrões |
scripts/test_reinstate.py | Testes para a camada de reidentificação |
evaluations.json | Exemplos de cenários de avaliação |
Execute os testes:
python3 scripts/test_redact_structured.py
python3 scripts/test_reinstate.py
Uma nota sobre limites
O Redacta é uma forte primeira linha de defesa, não uma garantia. Ele não capturará todos os identificadores possíveis e não substitui processos formais de proteção de dados. Sempre revise o relatório de redação antes de compartilhar texto.
Licença
MIT-0 (MIT No Attribution). Criado pela PharmaTools.AI.