Activer des profils FHIR

Cette page explique comment importer et activer les guides de mise en œuvre FHIR et les profils dans les magasins FHIR.

Pour vous assurer que toutes les ressources FHIR d'un magasin FHIR répondent à des critères spécifiques pour la structure des ressources et les informations capturées, utilisez les guides de mise en œuvre et les profils FHIR. Si une ressource FHIR répond aux règles spécifiées dans un profil, la ressource FHIR est conforme au profil.

Présentation

Les profils FHIR sont un ensemble de règles supplémentaires définies en plus de la spécification FHIR de base qui gèrent le traitement des ressources par les différents systèmes de santé. Vous pouvez importer et activer des profils FHIR dans un magasin FHIR pour vous assurer que toutes les ressources d'un magasin FHIR répondent à des critères spécifiques pour la structure des ressources et les informations capturées.

Définitions de structure et guides de mise en œuvre

Vous pouvez importer des profils FHIR pour votre magasin FHIR en insérant une ou plusieurs définitions de structure regroupées dans un ou plusieurs guides de mise en œuvre. Utilisez une définition de structure pour effectuer les opérations suivantes:

  • Définir la contrainte pour un champ dans une ressource FHIR
  • Ensembles de valeurs de référence qui associent des systèmes de code et des ressources FHIR.

Vous utilisez un guide de mise en œuvre avec des définitions de structure pour valider les ressources afin qu'elles correspondent au cas d'utilisation de votre logiciel tiers.

Par exemple, supposons que votre logiciel tiers doit se conformerl'interopérabilité et l'accès final des patients aux CMS (Medicare & Medicaid Services) ; aux États-Unis. Votre logiciel tiers doit fournir une API Patient Access qui soit conforme aux profils CARIN. Vous pouvez importer et activer le guide de mise en œuvre CARIN dans votre magasin FHIR pour valider les ressources par rapport aux profils CARIN. Les sections suivantes de cette page décrivent les procédures d'importation et d'activation des guides de mise en œuvre.

Après avoir importé votre guide de mise en œuvre, vous pouvez l'activer dans votre magasin FHIR pour la validation des ressources FHIR. Lorsqu'une ressource FHIR est mise à jour ou ajoutée au magasin, l'API Cloud Healthcare vérifie si elle correspond à une définition de structure dans le guide de mise en œuvre. Si la ressource FHIR correspond, la ressource FHIR est ajoutée au magasin. Si la ressource FHIR ne respecte pas les définitions de structure décrites dans le guide de mise en œuvre, un message d'erreur est renvoyé et la ressource FHIR est rejetée.

Application de la validation des données

L'API Cloud Healthcare applique la validation des données lorsque vous utilisez les méthodes suivantes:

Workflow de validation du profil

Le diagramme suivant montre le workflow de validation pour l'ajout ou la mise à jour de ressources FHIR :

fhir-profiles

Définir vos profils FHIR

Les sections suivantes vous expliquent comment télécharger des définitions de structure à partir de votre logiciel tiers et comment configurer un guide de mise en œuvre.

Télécharger vos définitions de structure

Pour vous assurer que vos définitions de structure correspondent à votre source faisant autorité, téléchargez les définitions de structure, les guides de mise en œuvre et les ensembles de valeurs à partir de votre fournisseur de logiciels tiers.

Par exemple, si votre système utilise le profil de patient Bouton bleu, vous pouvez télécharger les définitions de structure et le guide de mise en œuvre utilisés par le bouton bleu.

L'API Cloud Healthcare permet de valider le type de règles de définition de structure suivant :

  • slicing (sur le type value ou pattern)
  • min/max
  • type
  • fixed
  • pattern
  • minValue
  • maxValue
  • maxLength
  • binding

Configurer votre guide de mise en œuvre

Une fois que vous avez téléchargé les définitions de structure, le guide de mise en œuvre et l'ensemble de valeurs, vous devez ajouter les profils utilisés par le guide de mise en œuvre pour valider les ressources FHIR.

Pour ajouter le guide de mise en œuvre à un magasin FHIR, procédez comme suit:

  1. Ouvrez le fichier du guide de mise en œuvre que vous avez téléchargé à partir de votre fournisseur de logiciels tiers.

  2. Ajoutez la section suivante pour inclure les définitions de structure qui doivent être validées par votre guide de mise en œuvre :

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

    Remplacez les éléments suivants :

    • RESOURCE_TYPE: type de ressource FHIR
    • STRUCTURE_DEFINITION_URL: URL de la définition de la structure source du profil
  3. Enregistrez le fichier du guide de mise en œuvre.

Importer votre guide de mise en œuvre dans Cloud Storage

Après avoir modifié votre guide de mise en œuvre, vous devez importer les fichiers suivants dans Cloud Storage:

  • Guide de mise en œuvre
  • Définitions de structure
  • Ensembles de valeurs

Après l'importation, vous pouvez utiliser ces fichiers pour valider les ressources de votre magasin FHIR.

Pour ajouter le guide de mise en œuvre, les définitions de structure et les ensembles de valeurs à Cloud Storage, exécutez les commandes suivantes :

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

Remplacez les éléments suivants

  • PATH_TO_IMPLEMENTATION_GUIDE: chemin d'accès au guide de mise en œuvre sur votre ordinateur local
  • BUCKET/IMPLEMENTATION_GUIDE: bucket et répertoire dans lesquels vous stockez le guide de mise en œuvre dans Cloud Storage

Importer votre guide d'intégration

Pour utiliser le guide de mise en œuvre pour valider les profils dans votre magasin FHIR, importez-le dans votre magasin FHIR en tant que ressource FHIR.

Les exemples suivants montrent comment importer votre guide de mise en œuvre dans un magasin FHIR:

gcloud

Pour ajouter votre guide de mise en œuvre en tant que ressource à un magasin FHIR, exécutez la commande gcloud healthcare fhir-stores import gcs:

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

Remplacez les éléments suivants :

  • FHIR_STORE_ID: ID du magasin FHIR
  • DATASET_ID: ID de l'ensemble de données
  • BUCKET/DIRECTORY: emplacement du guide de mise en œuvre dans un bucket Cloud Storage

Le résultat est le suivant :

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

Dans ce résultat :

  • PROJECT_ID, LOCATION, DATASET_ID: valeurs que vous avez fournies dans l'appel de méthode
  • OPERATION_ID: identifiant de l'opération de longue durée fournie par l'API Cloud Healthcare

Pour afficher plus de détails sur l'opération, exécutez la commande gcloud healthcare operations describe en fournissant le OPERATION_ID spécifié dans la réponse :

gcloud healthcare operations describe OPERATION_ID \
  --dataset=DATASET_ID

Le résultat est le suivant. Si la réponse contient done: true, l'opération est terminée. Si ce n'est pas le cas, l'opération est toujours en cours d'exécution. Patientez quelques secondes, puis exécutez à nouveau la commande 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"

Remplacez les éléments suivants :

  • BUCKET/DIRECTORY: emplacement du guide de mise en œuvre dans un bucket Cloud Storage
  • PROJECT_ID: ID de votre projet Google Cloud
  • LOCATION: emplacement de l'ensemble de données
  • DATASET_ID: ID de l'ensemble de données
  • FHIR_STORE_ID: ID du magasin FHIR

La réponse est la suivante:

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

Dans ce résultat :

  • PROJECT_ID, LOCATION, DATASET_ID: valeurs que vous avez fournies dans l'appel de méthode
  • OPERATION_ID: identifiant de l'opération de longue durée fournie par l'API Cloud Healthcare

Pour suivre l'état de l'opération, utilisez la méthode 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"

Remplacez les éléments suivants :

  • PROJECT_ID: ID de votre projet Google Cloud
  • LOCATION: emplacement de l'ensemble de données
  • DATASET_ID: ID de l'ensemble de données
  • FHIR_STORE_ID: ID du magasin FHIR
  • OPERATION_ID: ID renvoyé par l'opération de longue durée

Le résultat est le suivant. Si la réponse contient "done": true, l'opération est terminée. Si ce n'est pas le cas, l'opération est toujours en cours d'exécution. Patientez quelques secondes, puis appelez à nouveau la méthode 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

Remplacez les éléments suivants :

  • BUCKET/DIRECTORY: emplacement du guide de mise en œuvre dans un bucket Cloud Storage
  • PROJECT_ID: ID de votre projet Google Cloud
  • LOCATION: emplacement de l'ensemble de données
  • DATASET_ID: ID de l'ensemble de données
  • FHIR_STORE_ID: ID du magasin FHIR

La réponse est la suivante:

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

Dans ce résultat :

  • PROJECT_ID, LOCATION, DATASET_ID: valeurs que vous avez fournies dans l'appel de méthode
  • OPERATION_ID: identifiant de l'opération de longue durée fournie par l'API Cloud Healthcare

Pour suivre l'état de l'opération, utilisez la méthode 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

Remplacez les éléments suivants :

  • PROJECT_ID: ID de votre projet Google Cloud
  • LOCATION: emplacement de l'ensemble de données
  • DATASET_ID: ID de l'ensemble de données
  • FHIR_STORE_ID: ID du magasin FHIR
  • OPERATION_ID: ID renvoyé par l'opération de longue durée

Le résultat est le suivant. Si la réponse contient "done": true, l'opération est terminée. Si ce n'est pas le cas, l'opération est toujours en cours d'exécution. Patientez quelques secondes, puis appelez à nouveau la méthode 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",
  }
}

Activer le guide de mise en œuvre

Pour utiliser une ressource du guide de mise en œuvre afin de valider les profils, vous devez activer ce guide. Si vous activez plusieurs guides de mise en œuvre, les deux seront pris en compte. Une ressource FHIR ne doit correspondre qu'à un seul profil de tout guide de mise en œuvre activé.

Les exemples suivants montrent comment activer votre guide de mise en œuvre pour la validation du profil sur un magasin FHIR existant:

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"

Remplacez les éléments suivants :

  • IMPLEMENTATION_GUIDE_URL: chemin d'accès à la ressource du guide de mise en œuvre
  • PROJECT_ID: ID de votre projet Google Cloud
  • LOCATION: emplacement de l'ensemble de données
  • DATASET_ID: ID de l'ensemble de données
  • FHIR_STORE_ID: ID du magasin FHIR

La réponse est la suivante:

{
  "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

Remplacez les éléments suivants :

  • IMPLEMENTATION_GUIDE_URL: chemin d'accès à la ressource du guide de mise en œuvre
  • PROJECT_ID: ID de votre projet Google Cloud
  • LOCATION: emplacement de l'ensemble de données
  • DATASET_ID: ID de l'ensemble de données
  • FHIR_STORE_ID: ID du magasin FHIR

La réponse est la suivante:

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