Marcio Cunha

Inventario de riesgos de NR 1: Cómo automatizar con Python y JSON

Aprenda a procesar, validar y generar informes automatizados del inventario de riesgos ocupacionales de la NR 1 usando scripts eficientes en Python y JSON.

Marcio Cunha•5 min
También disponible en:PortuguêsEnglish
Resumen
  • La estructuración de datos en JSON garantiza un formato estandarizado y legible tanto para humanos como para sistemas automatizados.
  • La programación en Python permite validar de forma programática si se han cumplido todos los requisitos legales de la normativa.
  • La matriz de riesgo se puede calcular de forma dinámica cruzando la probabilidad de ocurrencia con la severidad del daño.
  • La integración de datos de riesgos con sistemas de gestión ocupacional elimina el trabajo manual y los errores administrativos.
  • La generación automática de informes en formatos estructurados acelera las auditorías de seguridad y reduce drásticamente los errores.

¿Por qué automatizar el inventario de riesgos de la NR 1?

Gestionar la seguridad y salud en el trabajo exige manejar un volumen enorme de datos sobre peligros y exposición de los trabajadores. En la práctica, esto significa mantener planificaciones complejas que frecuentemente se corrompen, contienen fórmulas rotas o duplican información. La automatización mediante scripts resuelve este cuello de botella transformando hojas de cálculo estáticas en flujos de datos dinámicos y auditables.

La Norma Regulamentaria número 1 (NR 1) establece que las empresas deben implementar un Programa de Gestión de Riesgos Ocupacionales conocido como PGR. Cuando tratamos con docenas de departamentos y cientos de puestos de trabajo, el control manual se vuelve inviable y propenso a fallas que generan multas laborales graves. El propósito técnico de este artículo es mostrar cómo modelar estos datos de forma estructurada y procesarlos mediante código.

Para lograr este objetivo, la elección ideal es utilizar archivos estructurados en JSON, que funcionan como cajones organizados donde cada dato tiene su lugar exacto. Adoptar este enfoque garantiza que la información fluya sin pérdida de contexto entre la ingeniería de seguridad y los sistemas de TI, tal como detallamos en nuestra guía sobre cómo digitalizar el PGR de la NR 1 e integrar datos vía API.

Modelando los datos de riesgos ocupacionales en JSON

El primer paso para construir un sistema de automatización confiable es definir el formato del contrato de datos. En programación, el formato JSON (JavaScript Object Notation) es el estándar de oro porque es ligero y puede ser interpretado fácilmente por cualquier lenguaje moderno. En lugar de depender de celdas dispersas en una planilla, estructuramos los peligros, fuentes generadoras y medidas de control en un diccionario jerárquico bien definido.

Imagine un archivo que agrupa los riesgos por sector de la empresa, detallando la probabilidad de que ocurra un evento y la severidad en caso de que se materialice. En la práctica, esta estructura permite que cualquier software lea el archivo y calcule automáticamente el nivel de riesgo residual. Esto evita que evaluaciones subjetivas pasen desapercibidas durante las auditorías internas de seguridad.

A continuación presentamos un ejemplo funcional de archivo JSON estructurado para almacenar el inventario de riesgos de forma limpia y totalmente integrada con scripts de procesamiento por lotes:

{
"empresa": "Industria Ejemplo S.A.",
"departamento": "Produccion de Envases",
"riesgos":[
{&br> "id": "R-01",
"factor": "Ruido intermitente",
"probabilidad": 3,
"severidad": 2,
"medida_control": "Uso obligatorio de protectores auditivos"
},
{&br> "id": "R-02",
"factor": "Esfuerzo fisico repetitivo",
"probabilidad": 4,
"severidad": 3,
"medida_control": "Rotacion de puestos cada 2 horas"
}
]
}

Procesando y validando el inventario con Python

Con los datos estructurados en JSON, el siguiente paso es escribir un script en Python para leer, validar y calcular los niveles de riesgo de forma automatizada. El lenguaje Python destaca en esta tarea gracias a su sólida biblioteca estándar y a la facilidad para manipular estructuras de datos anidadas sin sobrecarga burocrática.

En la práctica, el script abre el archivo de configuración, valida si todos los campos obligatorios exigidos por la legislación están completos y aplica la matriz de evaluación para determinar si el riesgo es tolerable o crítico. Si falta información esencial, el programa interrumpe la ejecución y avisa al ingeniero de seguridad antes de generar el informe oficial.

El código funcional a continuación demuestra cómo cargar el archivo JSON, iterar sobre los riesgos y calcular el nivel de criticidad multiplicando la probabilidad por la severidade:

import json

def procesar_inventario(ruta_archivo):
try:
with open(ruta_archivo, 'r', encoding='utf-8') as f:
datos = json.load(f)
except FileNotFoundError:
print("Archivo de inventario no encontrado.")
return

print(f"Procesando riesgos para: {datos['empresa']} - {datos['departamento']} ")

for riesgo in datos['riesgos']:
nivel_riesgo = riesgo['probabilidad'] * riesgo['severidade']
estado = "CRITICO" if nivel_riesgo >= 8 else "Tolerable"

print(f"Riesgo [{riesgo['id']}]: {riesgo['factor']}")
print(f" Puntuacion de Riesgo: {nivel_riesgo} ({estado})")
print(f" Accion: {riesgo['medida_control']} ")

if __name__ == '__main__':
procesar_inventario('inventario.json')

Generando informes y conectando flujos de trabajo

Tras validar y calcular las puntuaciones de riesgo, el ciclo de automatización se completa generando informes consolidados en formatos como Markdown, HTML o PDF para su distribución inmediata a la directiva. En lugar de redactar documentos manualmente cada vez que ocurre un cambio en la planta, el script actualiza el documento en fracciones de segundo.

En la práctica, este enfoque garantiza una total trazabilidad, ya que cualquier modificación en el archivo JSON original queda registrada en el control de versiones del equipo de tecnología. Esto se alinea perfectamente con el principio de mejora continua exigido por las normas técnicas modernas, reduciendo el tiempo de papeleo para que los profesionales se enfoquen en la mitigación real de los peligros.

Además, el archivo procesado puede enviarse directamente a endpoints corporativos para alimentar paneles gerenciales en tiempo real. Esta sinergia entre ingeniería y desarrollo eleva la madurez de cumplimiento normativo de la empresa.

Consideraciones Finales

La automatización del inventario de riesgos de la NR 1 mediante Python y estructuras JSON representa una evolución natural para las empresas que buscan eficiencia y precisión en la seguridad ocupacional. Al sustituir procesos manuales repetitivos por código limpio y auditable, eliminamos errores humanos y garantizamos un cumplimiento legal continuo.

Adoptar esta mentalidad de ingeniería en la gestión de riesgos protege a los trabajadores de forma más efectiva y simplifica la labor de los profesionales de seguridad. El futuro del cumplimiento normativo depende inevitablemente de la integración entre las normas técnicas y los pipelines modernos de datos.