Redacta

Límite de privacidad para agentes de IA en salud: seudonimiza identificadores de pacientes (números NHS, nombres, fechas de nacimiento, direcciones; Reino Unido y EE. UU.) en tokens etiquetados localmente, mantiene el mapa de reversión fuera del contexto del agente, y restaura los originales solo en el límite de confianza.

Documentación

Redacta

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

Seudonimiza documentos médicos y clínicos antes de que sean procesados por IA o compartidos. Redacta reemplaza los identificadores de pacientes con tokens etiquetados — [PATIENT_NAME_1], [NHS_NUMBER_1], [DATE_OF_BIRTH_1], … — mientras preserva el significado clínico intacto, y devuelve un informe de redacción junto con el texto limpio.

Comenzó como una Agent Skill y ahora es un único motor distribuido en ocho superficies: una app para iOS, una skill de agente, un servidor MCP, un servicio HTTP autoalojado con despliegue en Kubernetes, dos bibliotecas, una CLI y un plugin para FigJam.

¿Ejecutando esto en producción? Redacta ofrece un pequeño número de integraciones de socio de diseño a precio fijo para equipos que despliegan agentes de IA con datos clínicos o de pacientes: despliegue en tu entorno, un flujo de trabajo real integrado y un documento de flujo de datos redactado para tu DPO. Detalles →

Un motor, muchas superficies

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.

SuperficieCarpetaObtenerlo
App iOS — iPhone (app, Share Extension, widget)ios-app/Compilar con Xcode — ver ios-app/README.md
Skill de agente (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)
Herramienta de línea de comandoscli-package/npx redacta-cli (npm)
Servicio HTTP autoalojado + Kubernetesgateway-service/docker build — ver gateway-service/README.md
Plugin FigJamfigjam-plugin/Figma Community

La lógica de detección vive en un solo lugar: el motor TypeScript (@pharmatools/redacta, en npm-package/), que consumen el servidor MCP y el plugin de FigJam, y que la app iOS ejecuta en el dispositivo mediante JavaScriptCore. El paquete Python lo refleja para usuarios de pip; la skill de agente añade razonamiento LLM para nombres en texto libre sobre los patrones deterministas.

Cómo 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.

Dos capas:

  • Patrones (deterministas). Un script incluido (scripts/redact_structured.py, solo biblioteca estándar de Python, sin red) coincide con identificadores de formato fijo: números NHS (validados con Modulus-11), números de seguro nacional del Reino Unido, fechas de nacimiento, códigos postales del Reino Unido, números de teléfono, correos electrónicos y números de hospital/MRN. También se manejan SSN y códigos ZIP de EE. UU.
  • Razonamiento (juicio). La skill luego hace que el agente maneje lo que los patrones no pueden: nombres de pacientes (distinguidos de los clínicos que los tratan), familiares y cuidadores, direcciones postales y edades identificativas.
  • Autoverificación. Una pasada final relee la salida en busca de cualquier identificador que se haya escapado antes de escribir el informe.

También funciona a la inversa. Reidentificación (scripts/reinstate.py) toma el mapa de tokens de una redacción anterior y restaura los valores originales, de modo que puedes redactar un documento, pasarlo por otra herramienta de IA y volver a poner los detalles reales localmente. Redactar → procesar → reidentificar es un ciclo completo, y los identificadores solo existen en tu máquina.

Modo Safe Harbor. Solicita HIPAA Safe Harbor (o "desidentificación de EE. UU.") y Redacta aplica una pasada más estricta: todas las fechas (no solo la fecha de nacimiento), todas las edades específicas y los identificadores HIPAA restantes: fax, certificado/licencia, número de serie de dispositivo, VIN y números de beneficiario del plan de salud.

Autoalojamiento en Kubernetes

Las organizaciones que no pueden permitir que texto identificable salga de su entorno pueden ejecutar Redacta dentro de su propia infraestructura: un pequeño servicio HTTP (gateway-service/) desplegable en un clúster Kubernetes existente con YAML simple: dos réplicas sin estado detrás de un Service para redactar/restablecer, un límite de sesión opcional de réplica única para el bucle proteger → liberar, sondas de salud, límites de recursos, valores de seguridad restrictivos por defecto y registro sin PHI. El texto se seudonimiza antes de llegar a cualquier servicio de IA externo, y el límite de procesamiento permanece bajo tu control. Tutorial (incluye clúster local kind): gateway-service/k8s/README.md · conceptos: docs/KUBERNETES.md. ¿Desplegando en un lugar donde un DPO hará preguntas? Hay un resumen de seguridad y protección de datos de una página en pharmatools.ai/redacta-security.

Instalación

Claude Code

git clone https://github.com/nickjlamb/redacta ~/.claude/skills/redacta

Luego invócalo con /redacta, o deja que se active automáticamente cuando pidas redactar o desidentificar texto clínico.

Apps / API de Claude

Comprime la carpeta del repositorio y súbela como skill.

Contenido

RutaQué es
SKILL.mdLa skill: instrucciones más metadatos
reference.mdEspecificaciones de patrones, algoritmo Modulus-11, reglas de prefijos NI, regla de fecha de nacimiento vs. fecha clínica, vocabulario de tokens, limitaciones
scripts/redact_structured.pyLa capa de patrones deterministas
scripts/reinstate.pyLa capa de reidentificación (restaurar originales desde un mapa de tokens)
scripts/test_redact_structured.pyPruebas para la capa de patrones
scripts/test_reinstate.pyPruebas para la capa de reidentificación
evaluations.jsonEscenarios de evaluación de ejemplo

Ejecuta las pruebas:

python3 scripts/test_redact_structured.py
python3 scripts/test_reinstate.py

Una nota sobre los límites

Redacta es una sólida primera línea de defensa, no una garantía. No detectará todos los identificadores posibles y no sustituye los procesos formales de protección de datos. Revisa siempre el informe de redacción antes de compartir texto.

Licencia

MIT-0 (MIT sin atribución). Creado por PharmaTools.AI.