Almacenamiento de perfiles en Azure API for FHIR

HL7 Fast Healthcare Interoperability Resources (FHIR®) define una manera estándar e interoperable de almacenar e intercambiar datos sanitarios. Incluso dentro de la especificación de FHIR base, puede resultar útil definir otras reglas o extensiones en función del contexto que se usa FHIR. Para estos usos específicos del contexto de FHIR, se emplean perfiles de FHIR para la capa adicional de especificaciones. El perfil de FHIR permite restringir y personalizar las definiciones de recursos mediante restricciones y extensiones.

Azure API for FHIR permite validar recursos con perfiles para ver si los recursos se ajustan a los perfiles. Este artículo le guía por los conceptos básicos de los perfiles de FHIR y cómo almacenarlos. Para obtener más información sobre los perfiles de FHIR fuera de este artículo, visite HL7.org.

Perfil de FHIR: aspectos básicos

Un perfil establece contexto adicional en el recurso representado como un StructureDefinition recurso. StructureDefinition Un define un conjunto de reglas sobre el contenido de un recurso o un tipo de datos, como qué elementos tiene un recurso y qué valores pueden tomar estos elementos.

A continuación se muestran algunos ejemplos de cómo los perfiles pueden modificar el recurso base:

  • Restringir cardinalidad: por ejemplo, puede establecer la cardinalidad máxima en un elemento en 0, lo que significa que el elemento se descarta en el contexto específico.
  • Restrinja el contenido de un elemento a un único valor fijo.
  • Defina las extensiones necesarias para el recurso.

Se StructureDefinition identifica mediante su dirección URL canónica: http://hl7.org/fhir/StructureDefinition/{profile}

Por ejemplo:

  • http://hl7.org/fhir/StructureDefinition/patient-birthPlace es un perfil base que requiere información sobre la dirección registrada del nacimiento del paciente.
  • http://hl7.org/fhir/StructureDefinition/bmi es otro perfil base que define cómo representar observaciones del índice de masa corporal (IMC).
  • http://hl7.org/fhir/us/core/StructureDefinition/us-core-allergyintolerance es un perfil de US Core que establece las expectativas mínimas para AllergyIntolerance el recurso asociado a un paciente e identifica campos obligatorios, como extensiones y conjuntos de valores.

Cuando un recurso se ajusta a un perfil, el perfil se especifica dentro del profile elemento del recurso. A continuación puede ver un ejemplo del principio de un recurso "Paciente", que tiene http://hl7.org/fhir/us/carin-bb/StructureDefinition/C4BB-Patient un perfil.

{
  "resourceType" : "Patient",
  "id" : "ExamplePatient1",
  "meta" : {
    "lastUpdated" : "2020-10-30T09:48:01.8512764-04:00",
    "source" : "Organization/PayerOrganizationExample1",
    "profile" : [
      "http://hl7.org/fhir/us/carin-bb/StructureDefinition/C4BB-Patient"
    ]
  },

Nota

Los perfiles deben basarse en el recurso base y no pueden entrar en conflicto con el recurso base. Por ejemplo, si un elemento tiene una cardinalidad de 1..1, el perfil no puede hacerlo opcional.

Los perfiles también se especifican mediante varias guías de implementación (IG). A continuación se enumeran algunas IG comunes. Para obtener más información, visite el sitio de IG específico para obtener más información sobre la IG y los perfiles definidos en él:

Nota

Azure API for FHIR no almacena ningún perfil de las guías de implementación de forma predeterminada. Tendrá que cargarlos en Azure API for FHIR.

Acceso a perfiles y almacenamiento de perfiles

Almacenamiento de perfiles

Para almacenar perfiles en Azure API for FHIR, puede PUT usar StructureDefinition con el contenido del perfil en el cuerpo de la solicitud. Una actualización o una actualización condicional son métodos adecuados para almacenar perfiles en el servicio FHIR. Use la actualización condicional si no está seguro de qué usar.

Estándar PUT: PUT http://<your Azure API for FHIR base URL>/StructureDefinition/profile-id

or

Actualización condicional: PUT http://<your Azure API for FHIR base URL>/StructureDefinition?url=http://sample-profile-url

{ 
"resourceType" : "StructureDefinition",
"id" : "profile-id",
"url": "http://sample-profile-url"
	…
}

Por ejemplo, si desea almacenar el us-core-allergyintolerance perfil, usaría el siguiente comando rest con el perfil de intolerancia a alergias de US Core en el cuerpo. Hemos incluido un fragmento de código de este perfil para el ejemplo.

PUT https://myAzureAPIforFHIR.azurehealthcareapis.com/StructureDefinition?url=http://hl7.org/fhir/us/core/StructureDefinition/us-core-allergyintolerance
{
    "resourceType" : "StructureDefinition",
    "id" : "us-core-allergyintolerance",
    "text" : {
        "status" : "extensions"
    },
    "url" : "http://hl7.org/fhir/us/core/StructureDefinition/us-core-allergyintolerance",
    "version" : "3.1.1",
    "name" : "USCoreAllergyIntolerance",
    "title" : "US  Core AllergyIntolerance Profile",
    "status" : "active",
    "experimental" : false,
    "date" : "2020-06-29",
        "publisher" : "HL7 US Realm Steering Committee",
    "contact" : [
    {
      "telecom" : [
        {
          "system" : "url",
          "value" : "http://www.healthit.gov"
        }
      ]
    }
  ],
    "description" : "Defines constraints and extensions on the AllergyIntolerance resource for the minimal set of data to query and retrieve allergy information.",

Para obtener más ejemplos, consulte el archivo REST de ejemplo de US Core en el sitio de código abierto que le guía por el almacenamiento de perfiles de US Core. Para obtener los perfiles más actualizados, debe obtener los perfiles directamente desde HL7 y la guía de implementación que las define.

Visualización de perfiles

Puede acceder a los perfiles personalizados existentes mediante una GET solicitud, GET http://<your Azure API for FHIR base URL>/StructureDefinition?url={canonicalUrl}, donde {canonicalUrl} es la dirección URL canónica del perfil.

Por ejemplo, si desea ver el perfil de recursos de US Core Goal:

GET https://myworkspace-myfhirserver.fhir.azurehealthcareapis.com/StructureDefinition?url=http://hl7.org/fhir/us/core/StructureDefinition/us-core-goal

Esto devolverá el recurso StructureDefinition para el perfil de US Core Goal, que comenzará de la siguiente forma:

{
  "resourceType" : "StructureDefinition",
  "id" : "us-core-goal",
  "url" : "http://hl7.org/fhir/us/core/StructureDefinition/us-core-goal",
  "version" : "3.1.1",
  "name" : "USCoreGoalProfile",
  "title" : "US Core Goal Profile",
  "status" : "active",
  "experimental" : false,
  "date" : "2020-07-21",
  "publisher" : "HL7 US Realm Steering Committee",
  "contact" : [
    {
      "telecom" : [
        {
          "system" : "url",
          "value" : "http://www.healthit.gov"
        }
      ]
    }
  ],
  "description" : "Defines constraints and extensions on the Goal resource for the minimal set of data to query and retrieve a patient's goal(s).",

}

Nota

Solo verá los perfiles que ha cargado en Azure API for FHIR.

Azure API for FHIR no devuelve StructureDefinition instancias de los perfiles base, pero se pueden encontrar en el sitio web de HL7, como:

  • http://hl7.org/fhir/Observation.profile.json.html
  • http://hl7.org/fhir/Patient.profile.json.html

Perfiles en la instrucción de funcionalidad

Enumera Capability Statement todos los posibles comportamientos de Azure API for FHIR. Azure API for FHIR actualiza la instrucción de funcionalidad con detalles de los perfiles almacenados en forma de:

  • CapabilityStatement.rest.resource.profile
  • CapabilityStatement.rest.resource.supportedProfile

Por ejemplo, si guarda un perfil de US Core Patient, que se inicia de la siguiente manera:

{
  "resourceType": "StructureDefinition",
  "id": "us-core-patient",
  "url": "http://hl7.org/fhir/us/core/StructureDefinition/us-core-patient",
  "version": "3.1.1",
  "name": "USCorePatientProfile",
  "title": "US Core Patient Profile",
  "status": "active",
  "experimental": false,
  "date": "2020-06-27",
  "publisher": "HL7 US Realm Steering Committee",

Y envía una solicitud GET para su metadata:

GET http://<your Azure API for FHIR base URL>/metadata

Se le devolverá con un CapabilityStatement que incluye la siguiente información sobre el perfil de paciente principal de EE. UU. que cargó en Azure API for FHIR:

...
{
    "type": "Patient",
    "profile": "http://hl7.org/fhir/StructureDefinition/Patient",
    "supportedProfile":[
        "http://hl7.org/fhir/us/core/StructureDefinition/us-core-patient"
    ],

Enlaces en perfiles

Un servicio de terminología es un conjunto de funciones que pueden realizar operaciones en "terminología médica", como validar códigos, traducir códigos, expandir conjuntos de valores, etc. El servicio Azure API for FHIR no admite el servicio de terminología. La información de las operaciones admitidas ($), los tipos de recursos y las interacciones se pueden encontrar en La propiedad CapabilityStatement del servicio. Los tipos de recursos ValueSet, StructureDefinition y CodeSystem son compatibles con las operaciones CRUD básicas y la búsqueda (como se define en CapabilityStatement), así como con la utilización del sistema en $validate.

ValueSets puede contener un conjunto complejo de reglas y referencias externas. En la actualidad, el servicio solo tendrá en cuenta los códigos insertados previamente expandidos. Los clientes deben cargar valueSets admitidos en el servidor FHIR antes de usar la operación de $validate. Los recursos ValueSet deben cargarse en el servidor FHIR, mediante put o actualización condicional, como se mencionó en la sección Almacenamiento de perfiles anterior.

Pasos siguientes

En este artículo, ha obtenido información sobre los perfiles de FHIR. A continuación, aprenderá a usar $validate para asegurarse de que los recursos se ajustan a estos perfiles.

FHIR® es una marca registrada de HL7 y se usa con su permiso.