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
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
| Superficie | Carpeta | Obtenerlo |
|---|---|---|
| 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 TypeScript | npm-package/ | npm i @pharmatools/redacta (npm) |
| Biblioteca Python | python-package/ | pip install redacta (PyPI) |
| Herramienta de línea de comandos | cli-package/ | npx redacta-cli (npm) |
| Servicio HTTP autoalojado + Kubernetes | gateway-service/ | docker build — ver gateway-service/README.md |
| Plugin FigJam | figjam-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
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
| Ruta | Qué es |
|---|---|
SKILL.md | La skill: instrucciones más metadatos |
reference.md | Especificaciones 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.py | La capa de patrones deterministas |
scripts/reinstate.py | La capa de reidentificación (restaurar originales desde un mapa de tokens) |
scripts/test_redact_structured.py | Pruebas para la capa de patrones |
scripts/test_reinstate.py | Pruebas para la capa de reidentificación |
evaluations.json | Escenarios 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.