Saltar al contenido

Errores de Tipos

Los errores de tipos ocurren cuando un valor no se ajusta al tipo de dato FHIR esperado. Esto incluye violaciones de formato de tipos primitivos (ej., una cadena de fecha inválida) y discrepancias de tipos complejos (ej., proporcionar una cadena donde se espera un objeto). Las reglas de validación de tipos se derivan del array ElementDefinition.type en el StructureDefinition.

Errores de Tipos Primitivos

Estos errores ocurren cuando un valor no coincide con las reglas de formato de su tipo primitivo declarado.

IDSeveridadMensaje
TYPE_INVALID_BOOLEANerrorValue ‘{value}’ is not a valid boolean
TYPE_INVALID_INTEGERerrorValue ‘{value}’ is not a valid integer
TYPE_INVALID_DECIMALerrorValue ‘{value}’ is not a valid decimal
TYPE_INVALID_STRINGerrorValue must be a string, got {type}
TYPE_INVALID_DATEerrorNot a valid date format: ‘{value}’
TYPE_INVALID_DATETIMEerrorNot a valid dateTime format: ‘{value}’
TYPE_INVALID_TIMEerrorNot a valid time format: ‘{value}’
TYPE_INVALID_INSTANTerrorNot a valid instant format: ‘{value}’
TYPE_INVALID_URIerrorNot a valid URI: ‘{value}’
TYPE_INVALID_URLerrorNot a valid URL: ‘{value}’
TYPE_INVALID_UUIDerrorNot a valid UUID: ‘{value}’
TYPE_INVALID_OIDerrorNot a valid OID: ‘{value}’
TYPE_INVALID_IDerrorNot a valid id: ‘{value}’
TYPE_INVALID_CODEerrorNot a valid code: ‘{value}’
TYPE_INVALID_BASE64errorNot valid base64 content
TYPE_INVALID_POSITIVE_INTerrorValue ‘{value}’ must be a positive integer (>0)
TYPE_INVALID_UNSIGNED_INTerrorValue ‘{value}’ must be a non-negative integer (>=0)
TYPE_STRING_TOO_LONGwarningString length {count} exceeds maximum {max}

Errores de Tipos Complejos

Estos errores ocurren cuando el tipo de un elemento no coincide con lo que permite el StructureDefinition.

IDSeveridadMensaje
TYPE_WRONG_TYPEerrorElement ‘{path}’ has wrong type. Expected {expected}, got {type}
TYPE_NOT_ALLOWEDerrorType ‘{type}’ is not allowed for element ‘{path}’
TYPE_CHOICE_INVALIDerrorCannot determine type for choice element ‘{path}’

Detalles de Tipos Primitivos

TYPE_INVALID_BOOLEAN

Los booleanos FHIR deben ser los valores literales JSON true o false. Cadenas como "true" o números como 1 no son válidos.

{
  "resourceType": "Patient",
  "active": "yes"
}

Corrección: Usa el literal booleano JSON:

{
  "resourceType": "Patient",
  "active": true
}

TYPE_INVALID_INTEGER

Los enteros FHIR deben ser números JSON sin componente fraccional. El rango válido es -2,147,483,648 a 2,147,483,647 (entero con signo de 32 bits).

{
  "resourceType": "RiskAssessment",
  "prediction": [
    {
      "relativeRisk": "three"
    }
  ]
}

TYPE_INVALID_DECIMAL

Los decimales FHIR deben ser números JSON válidos o cadenas que representan valores decimales. La notación científica no está permitida.

{
  "resourceType": "Observation",
  "valueQuantity": {
    "value": "1.5e2"
  }
}

TYPE_INVALID_DATE

Las fechas FHIR deben coincidir con el formato YYYY, YYYY-MM o YYYY-MM-DD.

{
  "resourceType": "Patient",
  "birthDate": "01/15/1990"
}

Corrección:

{
  "resourceType": "Patient",
  "birthDate": "1990-01-15"
}

TYPE_INVALID_DATETIME

Los valores dateTime de FHIR deben coincidir con uno de: YYYY, YYYY-MM, YYYY-MM-DD o YYYY-MM-DDThh:mm:ss+zz:zz. Cuando se incluye una hora, se requiere un offset de zona horaria.

{
  "resourceType": "Observation",
  "effectiveDateTime": "2024-01-15 10:30:00"
}

Corrección:

{
  "resourceType": "Observation",
  "effectiveDateTime": "2024-01-15T10:30:00+00:00"
}

TYPE_INVALID_INSTANT

Los valores instant de FHIR deben incluir una fecha completa, hora con segundos y offset de zona horaria: YYYY-MM-DDThh:mm:ss.sss+zz:zz. A diferencia de dateTime, las fechas parciales no están permitidas.

{
  "resourceType": "Bundle",
  "timestamp": "2024-01-15"
}

Corrección:

{
  "resourceType": "Bundle",
  "timestamp": "2024-01-15T10:30:00.000+00:00"
}

TYPE_INVALID_URI

El valor debe ser un URI sintácticamente válido según RFC 3986.

TYPE_INVALID_URL

El valor debe ser una URL sintácticamente válida (un URI que incluye un esquema).

TYPE_INVALID_UUID

Los UUIDs de FHIR deben coincidir con el formato urn:uuid: seguido de un UUID estándar: urn:uuid:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx.

TYPE_INVALID_OID

Los OIDs de FHIR deben coincidir con el formato urn:oid: seguido de un OID válido: urn:oid:1.2.3.4.5.

TYPE_INVALID_ID

Los valores id de FHIR deben coincidir con la regex [A-Za-z0-9\-\.]{1,64}.

{
  "resourceType": "Patient",
  "id": "patient id with spaces!"
}

Corrección:

{
  "resourceType": "Patient",
  "id": "patient-123"
}

TYPE_INVALID_CODE

Los valores code de FHIR deben coincidir con la regex [^\s]+(\s[^\s]+)*. No pueden tener espacios en blanco al inicio o al final, y no pueden contener caracteres de espacio en blanco consecutivos.

TYPE_INVALID_BASE64

El valor no es contenido codificado en base64 válido. Los valores base64Binary de FHIR deben contener solo caracteres base64 válidos (A-Z, a-z, 0-9, +, /) con relleno opcional (=).

TYPE_INVALID_POSITIVE_INT

Los valores positiveInt de FHIR deben ser enteros mayores que cero (> 0).

{
  "resourceType": "Timing",
  "repeat": {
    "count": 0
  }
}

TYPE_INVALID_UNSIGNED_INT

Los valores unsignedInt de FHIR deben ser enteros mayores o iguales a cero (>= 0).

TYPE_STRING_TOO_LONG

El valor de cadena excede la longitud máxima para el tipo de dato. El tipo string de FHIR tiene una longitud máxima de 1,048,576 caracteres (1 MB). Esto es un warning en lugar de un error.


Detalles de Tipos Complejos

TYPE_WRONG_TYPE

El tipo JSON del valor no coincide con lo que declara el ElementDefinition. Por ejemplo, se encontró una cadena donde se esperaba un objeto (tipo complejo).

{
  "resourceType": "Patient",
  "name": "John Smith"
}

Patient.name espera un array de objetos HumanName, no una cadena.

Corrección:

{
  "resourceType": "Patient",
  "name": [
    {
      "text": "John Smith"
    }
  ]
}

TYPE_NOT_ALLOWED

El tipo utilizado para un elemento polimórfico (choice) no está entre los tipos permitidos por el ElementDefinition.

{
  "resourceType": "Observation",
  "valueAddress": {
    "city": "Boston"
  }
}

Si el perfil solo permite valueQuantity, valueString o valueCodeableConcept, entonces valueAddress no está permitido.

TYPE_CHOICE_INVALID

Se proporcionó un elemento choice (ej., value[x]) pero el validador no puede determinar qué tipo se pretendía. Esto puede ocurrir cuando el sufijo no coincide con ningún nombre de tipo permitido.

Los elementos choice en FHIR usan el patrón elementName[x], donde [x] se reemplaza con el nombre del tipo en PascalCase. Por ejemplo, valueString, valueQuantity, valueCodeableConcept. Los tipos permitidos se listan en ElementDefinition.type para ese elemento.
Última actualización