Cette page explique comment exporter des ressources FHIR vers BigQuery à des fins d'exploration et d'analyse.
Définir des autorisations BigQuery
Avant d'exporter des ressources FHIR vers BigQuery, vous devez accorder des autorisations supplémentaires au compte de service Agent de service Cloud Healthcare. Pour en savoir plus, consultez la section Autorisations BigQuery pour les datastores FHIR.
Exporter des ressources FHIR
Les exemples suivants montrent comment exporter des ressources FHIR vers une table BigQuery.
Lorsque vous définissez la destination BigQuery, utilisez l'URI complet, comme suit :
bq://PROJECT_ID.BIGQUERY_DATASET_ID.BIGQUERY_TABLE_ID
Le comportement de l'opération d'exportation peut varier en fonction des éléments suivants :
- Si la table de destination existe déjà
- Si vous avez défini le champ
force
. - Si vous avez défini une valeur pour l'énumération
writeDisposition
. Si vous utilisez l'énumérationwriteDisposition
, ne définissez pas le champforce
.
Le comportement associé à chacun de ces cas est le suivant :
- Si la table de destination existe déjà et que le champ
force
est défini surtrue
, l'opération d'exportation écrase la table existante. - Si la table de destination existe déjà et que le champ
force
est défini surfalse
, une erreur se produit. - Si la table de destination n'existe pas déjà, l'opération d'exportation crée une table, que vous définissiez ou non le champ
force
. - Lorsque vous utilisez
writeDisposition
, si la table de destination existe déjà et qu'elle est vide, l'opération d'exportation se termine avec succès au lieu de renvoyer une erreur.
Console
Pour exporter des ressources FHIR vers BigQuery, procédez comme suit :
- Dans Cloud Console, accédez à la page Ensembles de données.
Accéder à la page Ensembles de données - Cliquez sur l'ensemble de données contenant le datastore FHIR à partir duquel vous exportez des ressources FHIR.
- Dans la liste des datastores, sélectionnez Exporter dans la liste Actions du datastore FHIR.
- Sur la page Exporter des ressources FHIR qui s'affiche, sélectionnez Table BigQuery.
- Dans les options de sortie BigQuery, choisissez la manière dont les données sont exportées vers BigQuery.
- Dans Options de sortie BigQuery, cliquez sur Parcourir pour choisir le projet et l'ensemble de données BigQuery.
- Dans Sélectionner un ensemble de données, recherchez le projet et l'ensemble de données BigQuery vers lesquels vous souhaitez exporter les ressources FHIR.
- Pour définir la profondeur de toutes les structures récursives dans le schéma de sortie, cliquez sur le niveau de profondeur approprié dans le curseur Profondeur de la structure récursive. Par défaut, la valeur récursive est 2.
Pour en savoir plus, consultez la sectionprojects.locations.datasets.fhirStores.SchemaConfig
. - Cliquez sur Exporter pour exporter des ressources FHIR vers BigQuery.
- Pour suivre l'état de l'opération, cliquez sur l'onglet Opérations. Une fois l'opération terminée, les indications suivantes s'affichent :
- La section État de l'opération de longue durée est représentée par une coche verte sous l'en-tête OK.
- La section Présentation comporte une coche verte et un indicateur OK sur la même ligne que l'ID de l'opération.
gcloud
Pour exporter des ressources FHIR vers BigQuery, utilisez la commande gcloud healthcare fhir-stores export bq
. Spécifiez les informations suivantes :
- Nom de l'ensemble de données parent
- Le nom du magasin FHIR
- Le nom d'un ensemble de données BigQuery existant
- Nom du projet auquel appartient l'ensemble de données BigQuery
- Valeur
schema-type
définie suranalytics
- Cette option peut prendre l'une des valeurs suivantes pour l'option
--writeDisposition
:write-empty
: n'exporte les données que si les tables de destination sont vides. Il s'agit de la valeur par défaut.write-truncate
: efface toutes les données existantes dans les tables avant d'écrire les instances.write-append
: ajoute des données aux tables existantes.
L'exemple suivant montre la commande gcloud healthcare fhir-stores export bq
.
gcloud healthcare fhir-stores export bq FHIR_STORE_ID \ --dataset=DATASET_ID \ --location=LOCATION \ --bq-dataset=bq://PROJECT_ID.BIGQUERY_DATASET_ID \ --schema-type=analytics \ --write-disposition={write-empty|write-truncate|write-append}
La ligne de commande affiche l'ID de l'opération et, une fois l'opération terminée, done
:
Request issued for: [FHIR_STORE_ID] Waiting for operation [projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/OPERATION_ID] to complete...done. name: projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID
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
La réponse inclut done: true
.
done: true metadata: '@type': type.googleapis.com/google.cloud.healthcare.v1.OperationMetadata apiMethodName: google.cloud.healthcare.v1.fhir.FhirService.ExportResources 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.ExportResourcesResponse fhirStore: projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID
API
Pour en savoir plus, consultez les sections sur projects.locations.datasets.fhirStores.export
curl
Pour exporter des ressources FHIR, envoyez une requête POST
et spécifiez les informations suivantes :
- Nom de l'ensemble de données parent
- Le nom du magasin FHIR
- Le nom d'un ensemble de données BigQuery existant
- Nom du projet auquel appartient l'ensemble de données BigQuery
- Le champ
schemaType
défini sur la valeurANALYTICS
- Un jeton d'accès
- Une des valeurs suivantes pour l'énumération
writeDisposition
:write-empty
: n'exporte les données que si les tables de destination sont vides. Il s'agit de la valeur par défaut.write-truncate
: efface toutes les données existantes dans les tables avant d'écrire les instances.write-append
: ajoute des données aux tables existantes.
- (Disponible uniquement dans la version v1beta1) : champ facultatif,
_type
, qui n'exporte qu'un ou plusieurs types de ressources FHIR - (Disponible uniquement dans la version v1beta1) : champ facultatif,
_since
, qui n'exporte que les ressources mises à jour après un délai spécifique, défini parYYYY-MM-DDThh:mm:ss.sss+zz:zz
.
L'opération génère une table BigQuery pour chaque type de ressource dans le datastore FHIR.
L'exemple suivant montre une requête POST
utilisant curl
.
curl -X POST \ -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \ -H "Content-Type: application/json; charset=utf-8" \ --data "{ 'bigqueryDestination': { 'datasetUri': 'bq://PROJECT_ID.BIGQUERY_DATASET_ID', 'schemaConfig': { 'schemaType': 'ANALYTICS' } 'writeDisposition': '{write-empty|write-truncate|write-append}' } }" "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID:export"
Si la requête aboutit, le serveur renvoie la réponse au format JSON :
{ "name": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID" }
La réponse contient un nom d'opération. Pour suivre l'état de l'opération, vous pouvez utiliser la méthode 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"
Si la requête aboutit, le serveur renvoie une réponse avec l'état de l'opération au format JSON :
{ "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.ExportResources", "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.ExportResourcesResponse", } }
PowerShell
Pour exporter des ressources FHIR, envoyez une requête POST
et spécifiez les informations suivantes :
- Nom de l'ensemble de données parent
- Le nom du magasin FHIR
- Le nom d'un ensemble de données BigQuery existant
- Nom du projet auquel appartient l'ensemble de données BigQuery
- Le champ
schemaType
défini sur la valeurANALYTICS
- Un jeton d'accès
- Une des valeurs suivantes pour l'énumération
writeDisposition
:write-empty
: n'exporte les données que si les tables de destination sont vides. Il s'agit de la valeur par défaut.write-truncate
: efface toutes les données existantes dans les tables avant d'écrire les instances.write-append
: ajoute des données aux tables existantes.
- (Disponible uniquement dans la version v1beta1) : champ facultatif,
_type
, qui n'exporte qu'un ou plusieurs types de ressources FHIR - (Disponible uniquement dans la version v1beta1) : champ facultatif,
_since
, qui n'exporte que les ressources mises à jour après un délai spécifique, défini parYYYY-MM-DDThh:mm:ss.sss+zz:zz
.
L'opération génère une table BigQuery pour chaque type de ressource dans le datastore FHIR.
L'exemple suivant montre une requête POST
utilisant Windows 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 "{ 'bigqueryDestination': { 'datasetUri': 'bq://PROJECT_ID.BIGQUERY_DATASET_ID', 'schemaConfig': { 'schemaType': 'ANALYTICS' }, 'writeDisposition': '{write-empty|write-truncate|write-append}' } }" ` -Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID:export" | Select-Object -Expand Content
Si la requête aboutit, le serveur renvoie la réponse au format JSON :
{ "name": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID" }
La réponse contient un nom d'opération. Pour suivre l'état de l'opération, vous pouvez utiliser la méthode 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
Si la requête aboutit, le serveur renvoie une réponse avec l'état de l'opération au format JSON :
{ "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.ExportResources", "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.ExportResourcesResponse", } }
Interroger et analyser des données FHIR dans BigQuery
Après avoir exporté les ressources FHIR vers BigQuery, consultez la solution Analyser des données FHIR dans BigQuery pour en savoir plus sur l'interrogation et l'analyse des données exportées. La solution utilise l'ensemble de données public de données synthétiques générées Synthea™ dans FHIR, qui héberge plus d'un million d'enregistrements patient synthétiques générés aux formats Synthea™ et FHIR.
Résoudre les problèmes liés aux requêtes d'exportation FHIR
Si des erreurs se produisent lors d'une requête d'exportation FHIR, elles sont consignées dans Cloud Logging. Pour en savoir plus, consultez la section Afficher les journaux d'erreurs dans Cloud Logging.
Si l'ensemble de l'opération renvoie une erreur, consultez la section Résoudre les problèmes d'opérations de longue durée.
Étape suivante
- Si vous êtes un chercheur, un data scientist ou une équipe informatique, consultez la solution Stocker des données médicales dans BigQuery pour plus d'informations sur l'analyse et le stockage des données dans BigQuery.
- La solution Gérer l'accès aux données de santé dans BigQuery explique les stratégies de sécurisation des données de santé cliniques et opérationnelles dans BigQuery.