Skip to Content

Manejo de Errores

OperationOutcome

FHIR usa el recurso OperationOutcome para comunicar errores. Toda respuesta de error incluye este recurso:

{ "resourceType": "OperationOutcome", "issue": [ { "severity": "error", "code": "required", "details": { "text": "El campo ServiceRequest.reasonCode es obligatorio" }, "expression": ["ServiceRequest.reasonCode"] } ] }

Campos del OperationOutcome

CampoDescripción
severityfatal, error, warning, information
codeCódigo del tipo de error (ver tabla abajo)
details.textDescripción legible del error
expressionRuta del campo que causó el error

Códigos de error comunes

Errores de validación (HTTP 400/422)

CódigoDescripciónEjemplo
requiredCampo obligatorio faltanteServiceRequest.reasonCode no presente
valueValor inválidoCódigo CUPS inexistente
code-invalidCódigo no pertenece al ValueSetTipo de documento no reconocido
structureEstructura del recurso inválidaJSON malformado
invariantRegla de negocio violadaBundle sin Patient

Errores de autenticación (HTTP 401/403)

CódigoDescripciónSolución
loginToken inválidoObtener un nuevo token
expiredToken expiradoRenovar el token
forbiddenSin permisosVerificar scopes del token

Errores del servidor (HTTP 500)

CódigoDescripciónAcción
exceptionError internoReintentar después. Reportar si persiste
timeoutTimeoutReintentar con backoff exponencial

Mejores prácticas

Reintentos

Para errores transitorios (5xx, timeouts), implementa reintentos con backoff exponencial:

Intento 1: esperar 1 segundo Intento 2: esperar 2 segundos Intento 3: esperar 4 segundos Máximo: 3 reintentos

Logging

Registra siempre:

  • Timestamp de la petición
  • Endpoint y método HTTP
  • Código de respuesta HTTP
  • OperationOutcome completo si hay error
  • ID de correlación si existe

Validación local

Valida los recursos antes de enviarlos para evitar errores 400/422. Usa las herramientas de validación disponibles.

Last updated on