Skip to main content

Registrar audiencias adyacentes a PHI

El registro de audiencias adyacentes a PHI es la lista de su organización de listas de contacto y segmentos cuyos miembros llevan PHI — por ejemplo, pacientes optados a divulgación de tratamiento. La referencia de controles HIPAA documenta los dos endpoints; esta guía lo lleva por ejecutarlos en producción: qué designar, cómo funcionan las semánticas de escritura, qué pasa al lanzamiento de campaña y cómo leer el audit trail. El registro es propiedad del tenant. Devotel nunca designa audiencias en su nombre y nunca scopeo PHI por usted — las designaciones son su atestación, son controles bloqueados por BAA que usted opera, y solo surten efecto una vez que HIPAA está en el ámbito de su organización. Si no ha ejecutado aún el BAA y activado el modo HIPAA, ejecute primero la secuencia de Onboarding HIPAA.

1. Cuándo marcar una audiencia como adyacente a PHI

La designación sigue la proveniencia: marque las audiencias cuyos datos de origen contienen PHI, independientemente de lo que cualquier campaña individual les envíe. Una audiencia es adyacente a PHI por de dónde vinieron sus miembros — una importación de recordatorios de cita de pacientes, una lista opt-in de divulgación de tratamiento — no por el copy que escribe esta semana. Por eso la designación vive en la audiencia misma y no en una campaña: cualquier campaña que la recoja, la designación viaja con ella. Marque una audiencia como adyacente a PHI cuando:
  • Sus miembros fueron importados de un sistema que retiene PHI (una exportación EHR, una sincronización opt-in de portal de pacientes).
  • La lista o segmento está filtrado o ensamblado sobre criterios que llevan PHI (tags adyacentes a diagnóstico, cohortes de tratamiento).
  • El mapa de datos de su oficial de compliance registra la audiencia como PHI en el ámbito.
No designe una audiencia “por si acaso”. Una designación adjunta el gate de lanzamiento BAA a cada campaña que usa la audiencia — designar audiencias que no llevan PHI bloquea lanzamientos sin razón de compliance. Quién puede atestar: ambos endpoints requieren el rol owner o admin — el mismo gate que los endpoints BAA. Un developer o viewer recibe 403. Mantenga la decisión de designación con su oficial de compliance HIPAA; la plataforma registra quién cambió el registro en cada escritura (vea Audit trail).

2. Elegir ids de lista vs segmento

El registro retiene ids de audiencia — cada entrada es o un id de lista de contacto o un id de segmento, pasado como string plano. El precheck de lanzamiento de campaña solo resuelve audiencias tipo list y segment contra el registro; las audiencias ensambladas por contacto (todos los contactos, carga CSV, entrada manual) son evaluadas destinatario por destinatario al momento del envío, así que no tienen id de registro que designar. Para rederivar el id para una designación:
Copie el campo id de la lista o segmento que está designando. Los ids son 1–128 caracteres tras el trim; cualquier cosa más larga o vacía es rechazada con 422 al escribir. El registro retiene como máximo 500 ids por organización — un PUT que lleva más devuelve 422.
Designe el id de origen, no una copia downstream. Si una lista que lleva PHI alimenta un segmento derivado, decida si el segmento derivado también contiene PHI y designe explícitamente — el precheck verifica el id que la campaña realmente referencia, nada más.

3. El swap PUT atómico

El registro tiene una operación de escritura: un PUT de reemplazo total. No hay PATCH, no hay DELETE por id — cada escritura reemplaza el conjunto designado entero en una sola instrucción atómica, así que un GET concurrente nunca ve una actualización parcialmente aplicada.
La respuesta repite el conjunto almacenado:
El body es idempotente: enviar el mismo conjunto total dos veces produce el mismo registro almacenado y dos filas de auditoría distintas. Un array vacío limpia toda designación:
Porque la escritura es un swap, cada cliente debe seguir read-modify-write: GET el registro actual, agregue o quite su id en el resultado, y PUT el conjunto entero de vuelta. Nunca construya el body desde estado local solo — silenciosamente quitaría designaciones que otro operador agregó. Para levantar una designación, PUT el registro sin ese id. Para re-designar, PUT con el id agregado de vuelta. Ids individuales que sobreviven un swap quedan sin cambios; solo importa la membresía en el conjunto.

4. Cómo el precheck de lanzamiento usa el registro

Dos gates protegen PHI en puntos diferentes, y el registro alimenta el primero:
  1. Precheck de lanzamiento (nivel campaña, gate duro). Antes de que una campaña salga de borrador/programada, el precheck resuelve su id de audiencia contra el registro. Un id designado más un BAA que no está executed y en período rechaza el lanzamiento con 422 HIPAA_BAA_REQUIRED — antes de que un solo destinatario se inscriba. Si el estado de compliance no puede leerse, el precheck falla cerrado con 500 HIPAA_BAA_GATE_DB_FAIL en lugar de admitir silenciosamente la audiencia.
  2. Gate de envío por destinatario (tiempo de mensaje, sin cambios). El gate de envío existente sigue aplicando a cada envío individual y no consulta el registro — los envíos legacy de uno a uno son gobernados solo por él.
Un lanzamiento bloqueado aflora con la negación de abajo. El details.reason le dice exactamente qué estado de BAA lo desbloquea:
Hay dos formas de desbloquear, y son decisiones de compliance, no de plataforma:
  • Resolver el BAA — ejecutarlo o re-ejecutarlo para que el gate pase. Este es el camino correcto cuando la audiencia genuinamente lleva PHI.
  • Quitar la designación — PUT el registro sin el id de audiencia. Este es el camino correcto solo cuando la audiencia se designó por error. Levantar una designación para rodear el gate es visible en su propio log de auditoría.
En el asistente de campaña del dashboard, elegir una audiencia designada muestra una advertencia asesora en el paso de audiencia. La advertencia no bloquea el botón Siguiente — la designación puede levantarse o el BAA ejecutarse antes del lanzamiento — pero el gate duro al lanzamiento siempre aplica.

5. Audit trail

Dos clases de registros aterrizan en el log de auditoría de su organización:
  • hipaa.phi_audiences.set — una fila por PUT, que registra el usuario actuante, la organización y el conjunto de ids post-escritura completo. Es su historia de versionamiento: el registro no tiene un recurso de revisión separado — la secuencia de filas de auditoría es el historial de versiones. Para reconstruir qué se designó en un punto en el tiempo, recorra las filas set hacia atrás; para revertir, PUT el conjunto de ids de una fila anterior.
  • Negaciones de lanzamiento HIPAA_BAA_REQUIRED — cada lanzamiento bloqueado se loggea con la razón que lo negó y la audiencia en evaluación. Estas filas hacen doble partida como su cola de incidentes: una negación significa que o hay trabajo de compliance pendiente (BAA no ejecutado) o una designación y una campaña están en desacuerdo.
Revise ambas clases a un ritmo que coincida con su programa de compliance — semanal es un default trabajable para un workspace healthcare activo. Exporte el log de auditoría junto con su log de acceso PHI al ensamblar evidencia para una auditoría externa; el pack HIPAA del binder de evidencia enrolla la postura BAA y el registro de acceso PHI en una descargar firmado. Runbook de incidentes para una negación inesperada:
  1. Lea el details.reason y details.audience.id de la negación.
  2. Verifique GET /api/v1/compliance/baa/ — si el BAA es pending/expired/no ejecutado, resuélvalo a través del flujo BAA.
  3. Si el BAA está sano, verifique si la audiencia debería estar designada en absoluto: GET /api/v1/compliance/hipaa/phi-audiences y compare contra su mapa de datos. Levante una designación errónea con un swap (PUT sin el id).
  4. Registre el resultado en su propio registro de incidentes — las filas de auditoría arriba son la evidencia que cita.

6. Troubleshooting de conflictos de sobreescritura concurrente

El PUT del registro nunca devuelve 409 — el swap atómico de una sola instrucción significa que una escritura siempre commitea, y el último escritor gana. El riesgo de conflicto son actualizaciones perdidas entre operadores, no escrituras rechazadas:
  • Operador A y operador B ambos GET el registro.
  • A agrega list_aaa y PUT. B — trabajando desde el snapshot pre-A — agrega list_bbb y PUT.
  • El swap de B silenciosamente quita list_aaa.
Mitigaciones:
  • Leer inmediatamente antes de escribir. Mantenga la ventana read-modify-write corta; no lleve un registro fetechado a través de una sesión de edición — re-GET cuando esté listo para PUT.
  • Verificar después de escribir. GET una vez más y confirme que su id está presente y que ninguna designación no relacionada se perdió. Si algo desapareció, las filas hipaa.phi_audiences.set del log de auditoría muestran cuya escritura lo sobreescribió y qué conjunto restaurar.
  • Serializar ediciones del registro organizacionalmente. Porque la designación es una atestación de compliance, enrute las ediciones a través de un rol (el oficial de compliance) en lugar de esparcirlas entre operadores — un fix procedimental que elimina la carrera por completo.
Si ve 422 en lugar de éxito, la causa es validación, no conflicto: más de 500 ids, un id vacío tras el trim, o un id de más de 128 caracteres. Trime y reintente con el conjunto completo.

Ver también