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

CI DOI engine npm downloads redacta-mcp PyPI App Store Anthropic MCP Directory Glama MCP server self-hosted

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

One detection engine feeds eight surfaces: the iOS app, Share Extension and widget run it on-device via JavaScriptCore; the MCP server, CLI, TypeScript library and FigJam plugin consume it directly; a Python package mirrors it; and the agent skill adds LLM reasoning.

SuperfíciePastaObtenha
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 TypeScriptnpm-package/npm i @pharmatools/redacta (npm)
Biblioteca Pythonpython-package/pip install redacta (PyPI)
Ferramenta de linha de comandocli-package/npx redacta-cli (npm)
Serviço HTTP auto-hospedado + Kubernetesgateway-service/docker build — veja gateway-service/README.md
Plugin FigJamfigjam-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

The Redacta privacy boundary: a clinical document is redacted inside your boundary — deterministic patterns plus reasoning plus a self-check — producing tokenised text and a token map. Only the tokenised text crosses to the AI tool; the token map never leaves. The processed output comes back and reinstate restores the original identifiers locally. Raw identifiers never cross the boundary.

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

CaminhoO que é
SKILL.mdA skill — instruções mais metadados
reference.mdEspecificaçõ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.pyA camada de padrões determinísticos
scripts/reinstate.pyA camada de reidentificação (restaura originais a partir de um mapa de tokens)
scripts/test_redact_structured.pyTestes para a camada de padrões
scripts/test_reinstate.pyTestes para a camada de reidentificação
evaluations.jsonExemplos 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.