Habilitar perfiles de FHIR

En esta página, se explica cómo importar y habilitar las guías de implementación y los perfiles de FHIR en almacenes de FHIR.

A fin de garantizar que todos los recursos de FHIR de un almacén de FHIR cumplan con un criterio específico para la estructura de recursos y la información capturada, usa los perfiles y las guías de implementación de FHIR. Si un recurso de FHIR cumple con las reglas especificadas en un perfil, el recurso de FHIR cumple con el perfil.

Descripción general

Los perfiles de FHIR son un conjunto de reglas adicionales definidas por encima de la especificación de FHIR de base que controlan la manera en que los diferentes sistemas de atención médica procesan los recursos. Puedes importar y habilitar perfiles de FHIR en un almacén de FHIR para asegurarte de que todos los recursos de un almacén de FHIR cumplan con criterios específicos para la información y la estructura de los recursos capturados.

Definiciones de estructuras y guías de implementación

Puedes importar perfiles de FHIR para tu almacén de FHIR mediante la inserción de una o más definiciones de estructura agrupadas en una o más guías de implementación. Usa una definición de estructura para hacer lo siguiente:

  • Define la restricción para un campo en un recurso de FHIR.
  • Conjuntos de valores de referencia que vinculan sistemas de código y recursos de FHIR.

Debes usar una guía de implementación con definiciones de estructura para validar los recursos a fin de que coincidan con el caso de uso de tu software de terceros.

Por ejemplo, supongamos que tu software de terceros debe cumplir con la interoperabilidad de los Centros para servicios de Medicare y Medicaid (CMS) y la regla final de acceso a pacientes en EE.UU. El software de terceros tendría que proporcionar una API de acceso a los pacientes que cumpla con los perfiles de CAIN. Puedes importar y habilitar la guía de implementación de CARIN en el almacén de FHIR para validar los recursos en función de los perfiles de CARIN. En las secciones posteriores de esta página, se describe cómo importar y habilitar las guías de implementación.

Después de importar la guía de implementación, puedes habilitarla en tu almacén de FHIR para la validación de recursos de FHIR. Cuando se actualiza un recurso de FHIR o se agrega al almacén, la API de Cloud Healthcare verifica si coincide con una definición de estructura en la guía de implementación. Si el recurso de FHIR coincide, el recurso de FHIR se agrega al almacén. Si el recurso de FHIR no cumple con las definiciones de estructura en la guía de implementación, se muestra un mensaje de error y se rechaza el recurso de FHIR.

Aplicación de validación de datos

La API de Cloud Healthcare aplica la validación de datos cuando usa los siguientes métodos:

Flujo de trabajo de la validación de perfiles

En el siguiente diagrama, se muestra el flujo de trabajo de validación para agregar o actualizar recursos de FHIR:

fhir-profiles

Define tus perfiles de FHIR

En las secciones siguientes, se describe cómo descargar las definiciones de estructura de tu software de terceros y configurar una guía de implementación.

Descarga tus definiciones de estructura

Para garantizar que tus definiciones de estructura coincidan con tu fuente de autorización, descarga las definiciones de estructura, las guías de implementación y los conjuntos de valores de tu proveedor de software de terceros.

Por ejemplo, si tu sistema usa el perfil de paciente del botón azul, puedes descargar las definiciones de estructura y la guía de implementación que usa el botón azul.

La API de Cloud Healthcare permite la validación para el siguiente tipo de reglas de definición de estructura:

  • slicing (en el tipo value o pattern)
  • min/max
  • type
  • fixed
  • pattern
  • minValue
  • maxValue
  • maxLength
  • binding

Configura tu guía de implementación

Después de descargar las definiciones de estructura, la guía de implementación y el conjunto de valores, debes agregar los perfiles que la guía de implementación usa para validar los recursos de FHIR.

Para agregar la guía de implementación a un almacén de FHIR, completa los siguientes pasos:

  1. Abre el archivo de la guía de implementación que descargaste de tu proveedor de software de terceros.

  2. Agrega la siguiente sección para incluir las definiciones de estructura que validará tu guía de implementación:

    {
        "resourceType": "ImplementationGuide",
        ...
        "global": [
            {
            "type": "RESOURCE_TYPE",
            "profile": "STRUCTURE_DEFINITION_URL"
            }
        ]
        ...
    }
    

    Reemplaza lo siguiente:

    • RESOURCE_TYPE: El tipo de recurso de FHIR
    • STRUCTURE_DEFINITION_URL: La URL de la definición de la estructura de origen del perfil
  3. Guarda el archivo de la guía de implementación.

Sube tu guía de implementación a Cloud Storage

Después de editar la guía de implementación, debes subir los siguientes archivos a Cloud Storage:

  • La guía de implementación
  • Definiciones de estructuras
  • Conjuntos de valores

Después de subir los archivos, puedes usarlos para validar recursos en tu almacén de FHIR.

Para agregar la guía de implementación, las definiciones de estructura y los conjuntos de valores a Cloud Storage, ejecuta los siguientes comandos:

gsutil cp -r \
   PATH_TO_IMPLEMENTATION_GUIDE \
   gs://BUCKET/IMPLEMENTATION_GUIDE

Reemplaza lo siguiente:

  • PATH_TO_IMPLEMENTATION_GUIDE: La ruta a la guía de implementación en tu máquina local
  • BUCKET/IMPLEMENTATION_GUIDE: El bucket y el directorio donde almacenas la guía de implementación en Cloud Storage

Cómo importar su guía de implementación

A fin de usar la guía de implementación para validar perfiles en tu almacén de FHIR, impórtalo a tu almacén de FHIR como un recurso de FHIR.

En los siguientes ejemplos, se muestra cómo importar tu guía de implementación a un almacén de FHIR:

gcloud

Para agregar tu guía de implementación como un recurso a un almacén de FHIR, ejecuta el comando gcloud healthcare fhir-stores import gcs:

gcloud healthcare fhir-stores import gcs FHIR_STORE_ID \
  --dataset=DATASET_ID \
  --gcs-uri=gs://BUCKET/DIRECTORY

Reemplaza lo siguiente:

  • FHIR_STORE_ID: El ID de almacén de FHIR
  • DATASET_ID: El ID del conjunto de datos
  • BUCKET/DIRECTORY: la ubicación de la guía de implementación en un bucket de Cloud Storage

Este es el resultado:

Request issued for: [FHIR_STORE_ID]
Waiting for operation [OPERATION_ID] to complete...done.
name: projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID

En este resultado, se ilustra lo siguiente:

  • PROJECT_ID, LOCATION y DATASET_ID: Son los valores que proporcionaste en la llamada del método.
  • OPERATION_ID: Un identificador para la operación de larga duración que proporciona la API de Cloud Healthcare

Para ver más detalles de la operación, ejecuta el comando gcloud healthcare operations describe y proporciona el OPERATION_ID de la respuesta:

gcloud healthcare operations describe OPERATION_ID \
  --dataset=DATASET_ID

Esta es la salida. Si la respuesta contiene done: true, la operación finalizó. Si no es así, la operación aún se está ejecutando. Espera unos segundos y vuelve a ejecutar el comando gcloud healthcare operations describe.

done: true
metadata:
  '@type': type.googleapis.com/google.cloud.healthcare.v1.OperationMetadata
  apiMethodName: google.cloud.healthcare.v1.fhir.FhirService.ImportResources
  createTime: 'CREATE_TIME'
  endTime: 'END_TIME'
name: projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID
response:
  '@type': type.googleapis.com/google.cloud.healthcare.v1.fhir.rest.ImportResourcesResponse
  fhirStore: projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID

API

curl

curl -X POST \
    -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
    -H "Content-Type: application/json; charset=utf-8" \
    --data '{
      "contentStructure": "RESOURCE_PRETTY",
      "gcsSource": {
        "uri": "gs://BUCKET/DIRECTORY"
      }
    }' "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID:import"

Reemplaza lo siguiente:

  • BUCKET/DIRECTORY: la ubicación de la guía de implementación en un bucket de Cloud Storage
  • PROJECT_ID: El ID del proyecto de Google Cloud
  • LOCATION: Es la ubicación del conjunto de datos.
  • DATASET_ID: El ID del conjunto de datos
  • FHIR_STORE_ID: El ID de almacén de FHIR

La respuesta es la siguiente:

{
  "name": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID"
}

En este resultado, se ilustra lo siguiente:

  • PROJECT_ID, LOCATION y DATASET_ID: Son los valores que proporcionaste en la llamada del método.
  • OPERATION_ID: Un identificador para la operación de larga duración que proporciona la API de Cloud Healthcare

Para hacer un seguimiento del estado de la operación, usa el método operations.get:

curl -X GET \
    -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
    "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID"

Reemplaza lo siguiente:

  • PROJECT_ID: El ID del proyecto de Google Cloud
  • LOCATION: Es la ubicación del conjunto de datos.
  • DATASET_ID: El ID del conjunto de datos
  • FHIR_STORE_ID: El ID de almacén de FHIR
  • OPERATION_ID: El ID que muestra la operación de larga duración

Esta es la salida. Si la respuesta contiene "done": true, la operación finalizó. Si no es así, la operación aún se está ejecutando. Espera unos segundos y vuelve a llamar al método operations.get.

{
  "name": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.healthcare.v1.OperationMetadata",
    "apiMethodName": "google.cloud.healthcare.v1.fhir.FhirService.ImportResources",
    "createTime": "CREATE_TIME",
    "endTime": "END_TIME",
    "logsUrl": "https://console.cloud.google.com/logs/viewer/CLOUD_LOGGING_URL",
    "counter": {
      "success": "SUCCESS_COUNT"
    }
  },
  "done": true,
  "response": {
    "@type": "type.googleapis.com/google.cloud.healthcare.v1.fhir.rest.ImportResourcesResponse",
  }
}

PowerShell

$cred = gcloud auth application-default print-access-token
$headers = @{ Authorization = "Bearer $cred" }

Invoke-WebRequest `
  -Method Post `
  -Headers $headers `
  -ContentType: "application/json; charset=utf-8" `
  -Body '{
    "contentStructure": "RESOURCE_PRETTY",
    "gcsSource": {
      "uri": "gs://BUCKET/DIRECTORY"
    }
  }' `
  -Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID:import" | Select-Object -Expand Content

Reemplaza lo siguiente:

  • BUCKET/DIRECTORY: la ubicación de la guía de implementación en un bucket de Cloud Storage
  • PROJECT_ID: El ID del proyecto de Google Cloud
  • LOCATION: Es la ubicación del conjunto de datos.
  • DATASET_ID: El ID del conjunto de datos
  • FHIR_STORE_ID: El ID de almacén de FHIR

La respuesta es la siguiente:

{
  "name": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID"
}

En este resultado, se ilustra lo siguiente:

  • PROJECT_ID, LOCATION y DATASET_ID: Son los valores que proporcionaste en la llamada del método.
  • OPERATION_ID: Un identificador para la operación de larga duración que proporciona la API de Cloud Healthcare

Para hacer un seguimiento del estado de la operación, usa el método operations.get:

$cred = gcloud auth application-default print-access-token
$headers = @{ Authorization = "Bearer $cred" }

Invoke-WebRequest `
  -Method Get `
  -Headers $headers `
  -Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID" | Select-Object -Expand Content

Reemplaza lo siguiente:

  • PROJECT_ID: El ID del proyecto de Google Cloud
  • LOCATION: Es la ubicación del conjunto de datos.
  • DATASET_ID: El ID del conjunto de datos
  • FHIR_STORE_ID: El ID de almacén de FHIR
  • OPERATION_ID: El ID que muestra la operación de larga duración

Esta es la salida. Si la respuesta contiene "done": true, la operación finalizó. Si no es así, la operación aún se está ejecutando. Espera unos segundos y vuelve a llamar al método operations.get.

{
  "name": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.healthcare.v1.OperationMetadata",
    "apiMethodName": "google.cloud.healthcare.v1.fhir.FhirService.ImportResources",
    "createTime": "CREATE_TIME",
    "endTime": "END_TIME",
    "logsUrl": "https://console.cloud.google.com/logs/viewer/CLOUD_LOGGING_URL",
    "counter": {
      "success": "SUCCESS_COUNT"
    }
  },
  "done": true,
  "response": {
    "@type": "type.googleapis.com/google.cloud.healthcare.v1.fhir.rest.ImportResourcesResponse",
  }
}

Habilitar su guía de implementación

Para usar un recurso de guía de implementación a fin de validar perfiles, debes habilitar la guía de implementación. Si habilitas más de una guía de implementación, ambas guías de implementación se aplican. Un recurso de FHIR solo debe coincidir con un perfil de cualquier guía de implementación habilitada.

En los siguientes ejemplos, se muestra cómo habilitar la guía de implementación para la validación de perfiles en un almacén de FHIR existente:

curl

curl -X PATCH \
    -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
    -H "Content-Type: application/fhir+json; charset=utf-8" \
    --data '{
      "validationConfig": {
          "enabledImplementationGuides": ["IMPLEMENTATION_GUIDE_URL"]
      }
    }' "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID?updateMask=validationConfig"

Reemplaza lo siguiente:

  • IMPLEMENTATION_GUIDE_URL: La ruta de acceso al recurso de la guía de implementación
  • PROJECT_ID: El ID del proyecto de Google Cloud
  • LOCATION: Es la ubicación del conjunto de datos.
  • DATASET_ID: El ID del conjunto de datos
  • FHIR_STORE_ID: El ID de almacén de FHIR

La respuesta es la siguiente:

{
  "name": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID",
  "validationConfig": {
    "enabledImplementationGuides": ["IMPLEMENTATION_GUIDE_URL"]
  }
}

PowerShell

$cred = gcloud auth application-default print-access-token
$headers = @{ Authorization = "Bearer $cred" }

Invoke-WebRequest `
  -Method Patch `
  -Headers $headers `
  -ContentType: "application/json; charset=utf-8" `
  -Body '{
      "validationConfig": {
          "enabledImplementationGuides": ["IMPLEMENTATION_GUIDE_URL"]
      }
  }' `
  -Uri "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID?updateMask=validationConfig" | Select-Object -Expand Content

Reemplaza lo siguiente:

  • IMPLEMENTATION_GUIDE_URL: La ruta de acceso al recurso de la guía de implementación
  • PROJECT_ID: El ID del proyecto de Google Cloud
  • LOCATION: Es la ubicación del conjunto de datos.
  • DATASET_ID: El ID del conjunto de datos
  • FHIR_STORE_ID: El ID de almacén de FHIR

La respuesta es la siguiente:

{
  "name": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID",
  "validationConfig": {
    "enabledImplementationGuides": ["IMPLEMENTATION_GUIDE_URL"]
  },
}