Un paciente ejerce su derecho de cancelación de datos personales (ARCO), el personal administrativo marca la solicitud como atendida, y el sistema borra de forma permanente los archivos clínicos de ese paciente -estudios, resultados, documentos-. Verificamos en el código que eso ocurre sin preguntar una sola cosa: si ya pasaron los 5 años que la norma sanitaria exige conservar ese expediente. Si el último acto médico fue hace un mes, el borrado es exactamente igual al de un expediente de hace 10 años.
La ley exige conservar el expediente 5 años, y exime de cancelarlo mientras tanto
La NOM-004-SSA3-2012, numeral 5.4, es explícita sobre el plazo de conservación del expediente clínico:
"[Los expedientes clínicos] deberán ser conservados por un periodo mínimo de 5 años, contados a partir de la fecha del último acto médico."
Y la Ley Federal de Protección de Datos Personales en Posesión de los Particulares (LFPDPPP), artículo 25, exime expresamente al responsable de cancelar datos personales cuando exista esa obligación de conservarlos:
"El responsable no estará obligado a cancelar los datos personales cuando: […] II. Deban ser tratados por disposición legal[…]"
Las dos normas encajan: mientras no se cumplan los 5 años desde el último acto médico, la NOM-004 obliga a conservar el expediente, y esa obligación legal es justo la excepción que el artículo 25 de la LFPDPPP prevé para NO cancelar. El sistema tendría que verificar esa fecha antes de borrar nada -y no lo hace.
La sanción: hasta $18,769,600.00 MXN por solicitud mal atendida
Cancelar datos que debieron conservarse por disposición legal es "dar tratamiento a los datos personales en contravención a los principios establecidos" en la LFPDPPP -infracción prevista en el artículo 58, fracción IV-. La sanción está en el artículo 59:
"Multa de 100 a 160,000 veces la Unidad de Medida y Actualización, en los casos previstos en las fracciones II a VII del artículo anterior."
Con la UMA diaria 2026 ($117.31, INEGI/DOF), el rango va de $11,731.00 a $18,769,600.00 MXN por infracción -no un cobro automático, sino un rango que el INAI califica caso por caso. Aparte de esta vía (protección de datos, ante el INAI), el mismo hecho -destruir un documento del expediente clínico antes de que la NOM-004 lo permita- es también una infracción sanitaria distinta, ante la autoridad de salud, con su propia multa (Ley General de Salud, artículo 422, el mismo catch-all ya usado en la pieza de FarmaWare): hasta 16,000 veces el salario mínimo general diario. Son dos autoridades distintas que podrían actuar sobre el mismo hecho, no una sola multa que se reparte entre ellas.
| Elemento | Qué dice la norma |
|---|---|
| Plazo de conservación del expediente | NOM-004-SSA3-2012, numeral 5.4 (5 años desde el último acto médico) |
| Excepción al derecho de cancelación mientras dure ese plazo | LFPDPPP, art. 25, fracción II |
| Infracción por cancelar de todos modos | LFPDPPP, art. 58, fracción IV |
| Multa (vía protección de datos, ante el INAI) | LFPDPPP, art. 59, fracción II: 100-160,000 UMA = $11,731.00-$18,769,600.00 MXN |
| Vía sanitaria paralela (ante la autoridad de salud) | LGS, art. 422 (residual): hasta $5,040,640.00 MXN (16,000 × SMGD zona general 2026) |
Verificado en el código: el borrado no pregunta la fecha
Confirmamos el hallazgo directamente en el código de Medware Consulta (repo medware-consulta, rama main). Cuando el personal marca una solicitud ARCO de tipo cancellation como fulfilled, updateArco() (services/clinical/src/compliance/compliance.service.ts:298-354) ejecuta, dentro de la misma transacción, una cadena de borrados sin ninguna condición sobre el tiempo transcurrido:
if (dto.status === 'fulfilled' && req.type === 'cancellation') {
…
await client.query(`UPDATE patients SET ${ANONYMIZE_PATIENT_SET} WHERE id = $1 AND anonymized_at IS NULL`, [req.patientId]);
await borrarRastroDelPacienteEnElOutbox(client, req.patientId);
await anonimizarLaAgenda(client, req.patientId);
await this.deletePatientObjects(client, req.patientId);}
Los primeros pasos anonimizan datos de identificación (nombre, CURP, teléfono, correo) sin tocar el contenido clínico -una anonimización defendible por sí sola-. El último paso es distinto: deletePatientObjects() (compliance.service.ts:539-558) borra, de forma permanente y sin posibilidad de recuperación, cada archivo del paciente en el almacenamiento de objetos -estudios, resultados, documentos adjuntos al expediente-:
const { rows } = await client.query<{ object_key: string }>(
'SELECT object_key FROM clinical_attachments WHERE patient_id = $1 AND object_key IS NOT NULL',
[patientId],
);
for (const { object_key } of rows) {
await this.storage.deleteObject(object_key);
}
No hay ninguna consulta a la fecha de la última nota, cita o estudio del paciente antes de este borrado. No hay ninguna bandera que distinga "ya pasaron 5 años, procede" de "el paciente fue atendido la semana pasada, no procede". La función corre igual en los dos casos.
Qué significa en la práctica, y qué falta en el producto
Medware Consulta sí tiene un flujo ARCO completo y cuidado -de-identificación transaccional, limpieza del buzón del portal, de la cola de webhooks y de la agenda, todo dentro de la misma transacción para que nunca quede una solicitud "atendida" a medias-. Eso funciona. Lo que falta es un solo control antes del último paso: comparar la fecha del último acto médico del paciente contra el plazo de 5 años de la NOM-004, y bloquear (o al menos advertir) el borrado de adjuntos si ese plazo no se ha cumplido. Hoy la decisión de cuándo cancelar queda enteramente en manos del personal administrativo que resuelve la solicitud, sin que el sistema lo respalde ni lo detenga. Puedes ver ese recorrido completo, de la solicitud a la anonimización, en este flujo de producto, o estimar la exposición con tus propios números en la calculadora de exposición por cancelación ARCO sin verificar el plazo NOM-004.
Preguntas frecuentes
¿Medware Consulta no tiene un flujo para atender solicitudes ARCO?
Sí lo tiene, y es completo: anonimiza al paciente, limpia el buzón del portal, la cola de webhooks y la agenda, todo en una sola transacción. Lo que no hace es verificar el plazo de conservación de la NOM-004 antes de borrar los archivos del expediente.
¿Se borra todo el expediente, o sólo el nombre del paciente?
Son dos cosas distintas. Los datos de identificación (nombre, CURP, teléfono, correo) se anonimizan, sin tocar el contenido clínico. Los archivos adjuntos -estudios, resultados, documentos- se borran de forma permanente e irrecuperable, sin importar cuándo fue la última atención.
¿Cuál es la multa exacta?
La LFPDPPP no fija un monto único: de $11,731.00 a $18,769,600.00 MXN por infracción (100 a 160,000 UMA, valor 2026), calificado caso por caso por el INAI. Aparte, la misma destrucción prematura del expediente puede sancionarse por separado ante la autoridad de salud (LGS, art. 422), hasta $5,040,640.00 MXN.
¿Significa que ya se borró un expediente indebidamente?
No necesariamente: el hallazgo es que el sistema no verifica el plazo antes de borrar, no que ya haya ocurrido con certeza en un caso real. Si tu consultorio siempre espera más de 5 años antes de atender una cancelación, hoy eso depende enteramente de que el personal lo recuerde -el sistema no lo exige.
Fuentes consultadas: NOM-004-SSA3-2012, numeral 5.4, texto vigente (Secretaría de Gobernación, sidof.segob.gob.mx). Ley Federal de Protección de Datos Personales en Posesión de los Particulares, texto vigente publicado por la Cámara de Diputados del H. Congreso de la Unión (última reforma DOF 14-11-2025), artículos 25, 58 y 59. Ley General de Salud, artículo 422. Unidad de Medida y Actualización (UMA) diaria 2026 publicada por el INEGI/DOF. Este artículo es orientativo y no sustituye una revisión de tu caso por tu responsable de protección de datos o asesor legal.
Ve cómo Medware Consulta atiende hoy una cancelación ARCO, y dónde falta el control de fecha
Te mostramos en vivo el flujo de una solicitud ARCO de cancelación, y el punto exacto donde el plazo de la NOM-004 se queda sin verificar.
Agenda una demo gratis