Qué es esto
La API pública de NormaLis permite que un sistema externo (Hosvital, Greenlane, SAP Salud, o un desarrollo propio de la IPS) reporte incidentes y eventos adversos directamente en NormaLis, sin que el personal clínico tenga que abrir una segunda plataforma. También expone, sin necesidad de autenticación, el checklist de requisitos de habilitación vigentes bajo la Res. 3100/2019 (incluyendo los que en su momento propuso la ahora revocada Resolución 1732 de 2026).
Está pensada para ser consumida servidor-a-servidor desde el backend de tu HCE, no desde el navegador del usuario final.
Base URL
https://normalis.fjfc1984.workers.dev
Autenticación
Los endpoints de escritura requieren una llave API, generada desde NormaLis → Integraciones API por el administrador de la IPS. Envíala en el header Authorization con el esquema Bearer:
Authorization: Bearer nlk_live_...
La llave se muestra una única vez al crearla — NormaLis solo guarda su hash y no puede recuperar el valor original. Si se pierde, hay que revocarla y generar una nueva.
GET /api/v1/checklist-1732
Devuelve el checklist de requisitos que en su momento propuso la Resolución 1732/2026 — revocada en su totalidad por la Res. 002080/2026 antes de entrar en vigencia (ver aviso en la respuesta). Los ítems con vigente: false no son exigibles hoy; solo la Res. 3100/2019 está vigente. No requiere autenticación — es contenido normativo, no datos de paciente.
Parámetros de consulta (opcionales)
categoria— filtra por texto contenido en la categoría (ej.telemedicina)esNuevo—truepara requisitos nuevos frente a la Res. 3100/2019,falsepara los que continúan vigentes
Ejemplo
curl "https://normalis.fjfc1984.workers.dev/api/v1/checklist-1732?esNuevo=true"
Respuesta
{
"count": 12,
"items": [
{
"id": "ihce_01",
"categoria": "IHCE — Historia Clínica Electrónica Interoperable",
"titulo": "Sistema de HC con capacidad de interoperabilidad",
"descripcion": "...",
"esNuevo": true,
"urgencia": "alta",
"plazo": "Diciembre 2026 (plan de adecuación progresiva)",
"guia": "..."
}
]
}Límite: 30 solicitudes por minuto por IP.
POST /api/v1/incidentes
Registra un incidente o evento adverso en el módulo de Seguridad del Paciente de la IPS dueña de la llave. Requiere autenticación.
Cuerpo de la solicitud
{
"tipo": "Evento adverso",
"severidad": "moderado",
"desc": "Caída de paciente en habitación 204",
"accion": "Se informó al médico de turno",
"responsable": "Enfermera Jefe"
}Campos
| Campo | Tipo | Descripción |
|---|---|---|
| tipo * | string | Uno de: Evento adverso, Incidente sin daño, Casi-evento (near miss), Complicación, Accidente de trabajo, Otro |
| severidad * | string | Uno de: critico, moderado, leve |
| desc * | string | Máx. 3000 caracteres |
| accion | string | Opcional. Máx. 1000 caracteres |
| responsable | string | Opcional. Máx. 200 caracteres |
Respuesta exitosa — 201
{ "ok": true, "id": "aB3xY9..." }El incidente queda registrado con estado Abierto y visible en el dashboard de la IPS con la etiqueta "vía API", exactamente igual que uno registrado manualmente.
Límite: 60 solicitudes por minuto por llave.
POST /api/v1/ihce-eventos
Registra un evento de la bitácora de transmisiones IHCE/RDA de la IPS dueña de la llave. Requiere autenticación.
NormaLis no genera ni transmite el Bundle FHIR del RDA — eso sigue siendo responsabilidad de tu sistema de historia clínica. Este endpoint solo guarda la evidencia de que una transmisión ocurrió (folio, tipo de encuentro, estado), para la bitácora de cumplimiento de interoperabilidad de la IPS (Ley 2015/2020 · Res. 866/2021 · Res. 1888/2025).
Cuerpo de la solicitud
{
"bundleId": "RDA-2026-000123",
"encuentroTipo": "ambulatorio",
"pacienteRef": "<id interno del HCE>",
"estadoTransmision": "confirmado",
"detalle": "",
"fechaTransmision": "2026-09-06T14:30:00-05:00"
}Campos
| Campo | Tipo | Descripción |
|---|---|---|
| bundleId * | string | Folio/ID que tu HCE asignó al Bundle FHIR transmitido. Máx. 200 caracteres |
| estadoTransmision * | string | Uno de: enviado, confirmado, rechazado |
| encuentroTipo | string | Opcional. Uno de: ambulatorio, hospitalizacion, urgencias |
| pacienteRef | string | Opcional. Referencia opaca (ej. el Patient.id del Bundle) — nunca un nombre, número de documento u otro dato que identifique directamente al paciente. Máx. 200 caracteres |
| detalle | string | Opcional. Motivo de rechazo u observación. Máx. 1000 caracteres |
| fechaTransmision | string | Opcional, formato ISO 8601. Si se omite, se usa la fecha de recepción del evento |
Respuesta exitosa — 201
{ "ok": true, "id": "aB3xY9..." }El evento queda visible en la bitácora del módulo Historia Clínica de la IPS, con la etiqueta "HCE externo (API)".
Límite: 60 solicitudes por minuto por llave.
Códigos de error
| Código | Significado |
|---|---|
| 400 | Solicitud inválida — revisa el mensaje de error para el campo específico |
| 401 | Llave faltante, inválida o revocada |
| 429 | Límite de solicitudes excedido — reintenta más tarde |
| 500 / 502 / 503 | Error del servidor — reintenta; si persiste, contáctanos |
Estado de esta API
Esta es la versión 1 (v1) de la API pública de NormaLis, orientada a un primer caso de uso: reporte de incidentes desde sistemas externos. Estamos evaluando expandirla con más módulos (vencimientos, indicadores, consulta de auditorías) según la demanda de integración de cada IPS. Si tu equipo técnico necesita un endpoint adicional, escríbenos.
Contacto técnico
Para soporte de integración, escribe a info@normalis.co.