Saltar al contenido

Errores de Referencias

Los errores de referencias ocurren cuando las referencias a recursos FHIR están malformadas, apuntan a tipos de destino inválidos o no pueden resolverse. Las referencias FHIR conectan recursos entre sí y están restringidas por las entradas ElementDefinition.type que declaran qué tipos de recursos destino están permitidos. El validador verifica el formato de referencia, la compatibilidad del tipo de destino y opcionalmente si el recurso referenciado existe.

Códigos de Error

IDSeveridadMensaje
REFERENCE_INVALID_FORMATerrorReference ‘{value}’ has invalid format
REFERENCE_INVALID_TARGETerrorReference at ‘{path}’ to ‘{value}’ is not a valid target (expected {expected})
REFERENCE_NOT_FOUNDwarningReferenced resource ‘{value}’ not found
REFERENCE_TYPE_MISMATCHerrorReference targets {type} but only {expected} allowed

REFERENCE_INVALID_FORMAT

El valor de la referencia no se ajusta a ningún formato de referencia FHIR válido. Las referencias FHIR pueden tomar varias formas:

  • Referencia relativa: ResourceType/id (ej., Patient/123)
  • Referencia absoluta: http://example.org/fhir/Patient/123
  • Referencia de fragmento interno: #resource-id
  • Referencia lógica (via identifier): Usa el elemento identifier en lugar de reference
  • Referencia UUID: urn:uuid:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx

Ejemplo – recurso inválido:

{
  "resourceType": "Observation",
  "status": "final",
  "code": {
    "coding": [{ "system": "http://loinc.org", "code": "85354-9" }]
  },
  "subject": {
    "reference": "just-an-id"
  }
}

El valor just-an-id no coincide con ningún formato de referencia válido.

Corrección: Usa un formato de referencia válido:

{
  "resourceType": "Observation",
  "status": "final",
  "code": {
    "coding": [{ "system": "http://loinc.org", "code": "85354-9" }]
  },
  "subject": {
    "reference": "Patient/123"
  }
}

REFERENCE_INVALID_TARGET

La referencia apunta a un tipo de recurso que no está permitido por el ElementDefinition. Cada elemento de referencia en un StructureDefinition lista los tipos de destino permitidos a través de ElementDefinition.type.targetProfile.

Ejemplo – recurso inválido:

{
  "resourceType": "Observation",
  "status": "final",
  "code": {
    "coding": [{ "system": "http://loinc.org", "code": "85354-9" }]
  },
  "subject": {
    "reference": "Organization/456"
  }
}

Si el perfil restringe Observation.subject a referenciar solo Patient o Group, una referencia a Organization no es un destino válido.

Corrección: Referencia uno de los tipos de destino permitidos:

{
  "resourceType": "Observation",
  "status": "final",
  "code": {
    "coding": [{ "system": "http://loinc.org", "code": "85354-9" }]
  },
  "subject": {
    "reference": "Patient/123"
  }
}

REFERENCE_NOT_FOUND

El recurso referenciado no se pudo resolver dentro del contexto de validación. Esto es un warning porque el recurso puede existir en un servidor externo al que el validador no tiene acceso. Este error es más relevante al validar Bundles, donde se espera que las referencias contenidas y las referencias internas del Bundle sean resolubles.

Ejemplo:

{
  "resourceType": "Bundle",
  "type": "transaction",
  "entry": [
    {
      "resource": {
        "resourceType": "Observation",
        "status": "final",
        "code": {
          "coding": [{ "system": "http://loinc.org", "code": "85354-9" }]
        },
        "subject": {
          "reference": "Patient/999"
        }
      }
    }
  ]
}

Si Patient/999 no está incluido en las entradas del Bundle, el validador produce este warning.

Corrección: Incluye el recurso referenciado en el Bundle o usa un recurso contenido:

{
  "resourceType": "Bundle",
  "type": "transaction",
  "entry": [
    {
      "resource": {
        "resourceType": "Patient",
        "id": "999",
        "name": [{ "family": "Smith" }]
      }
    },
    {
      "resource": {
        "resourceType": "Observation",
        "status": "final",
        "code": {
          "coding": [{ "system": "http://loinc.org", "code": "85354-9" }]
        },
        "subject": {
          "reference": "Patient/999"
        }
      }
    }
  ]
}

REFERENCE_TYPE_MISMATCH

El recurso referenciado se resolvió y su resourceType no coincide con los tipos de destino permitidos para este elemento de referencia. Esto difiere de REFERENCE_INVALID_TARGET en que el formato de referencia en sí es válido, pero el recurso resuelto real tiene el tipo incorrecto.

Ejemplo:

Un Bundle donde Observation.subject referencia una entrada que resulta ser un Device en lugar del Patient esperado:

{
  "resourceType": "Bundle",
  "type": "collection",
  "entry": [
    {
      "resource": {
        "resourceType": "Device",
        "id": "123"
      }
    },
    {
      "resource": {
        "resourceType": "Observation",
        "status": "final",
        "code": {
          "coding": [{ "system": "http://loinc.org", "code": "85354-9" }]
        },
        "subject": {
          "reference": "Device/123"
        }
      }
    }
  ]
}

Si el ElementDefinition para Observation.subject solo permite Patient y Group, esta referencia a Device produce un error.

Los tipos de destino permitidos se leen de las entradas ElementDefinition.type donde code es Reference. Los valores targetProfile dentro de esas entradas de tipo especifican a qué tipos de recurso puede apuntar la referencia. El validador deriva estas restricciones completamente del StructureDefinition.
Última actualización