Importer et exporter des messages HL7v2 à l'aide de Cloud Storage

Cette page explique comment exporter et importer des messages HL7v2 vers et depuis Cloud Storage à l'aide des méthodes projects.locations.datasets.hl7V2Stores.import et projects.locations.datasets.hl7V2Stores.export.

Vous pouvez importer des messages HL7v2 depuis Cloud Storage pour faciliter le chargement groupé de nombreux messages HL7v2 dans un store HL7v2. Vous pouvez exporter plusieurs messages HL7v2 vers Cloud Storage en même temps, au lieu de les stocker individuellement dans Cloud Storage.

Définir des autorisations Cloud Storage

Avant d'importer des messages HL7v2 depuis Cloud Storage ou de les exporter vers ce service, vous devez accorder des autorisations supplémentaires au compte de service Agent de service Cloud Healthcare. Pour en savoir plus, consultez la section Autorisations Cloud Storage pour les datastores HL7v2.

Importer des messages HL7v2

Pour importer des messages HL7v2, vous devez d'abord créer un ou plusieurs fichiers JSON (.ndjson) délimités par un retour à la ligne dans Cloud Storage, contenant un ou plusieurs messages. Chaque ligne du fichier est une ressource Message unique contenant un message HL7v2 encodé en base64. La ressource Message peut également inclure des libellés facultatifs.

Par exemple, le fichier suivant, nommé messages.ndjson, contient deux messages HL7v2. Un libellé est défini dans le second message.

{"data" :"TVNIfF5+XCZ8QXxTRU5EX0ZBQ0lMSVRZXzF8QXxBfDIwMTgwMTAxMDAwMDAwfHxUWVBFXkF8MjAxODAxMDEwMDAwMDB8VHwwLjB8fHxBQXx8MDB8QVNDSUkNRVZOfEEwMHwyMDE4MDEwMTA0MDAwMA1QSUR8fDE0ATExMV5eXl5NUk58MTExMTExMTFeXl5eTVJOfjExMTExMTExMTFeXl5eT1JHTk1CUg=="}
{"data" :"TVNIfF5+XCZ8QXxTRU5EX0ZBQ0lMSVRZXzJ8QXxBfDIwMTgwMTAxMDAwMDAwfHxUWVBFXkF8MjAxODAxMDEwMDAwMDB8VHwwLjB8fHxBQXx8MDB8QVNDSUkNRVZOfEEwMHwyMDE4MDEwMTA0MDAwMA1QSUR8fDE0ATExMV5eXl5NUk58MTExMTExMTFeXl5eTVJOfjExMTExMTExMTFeXl5eT1JHTk1CUg==","labels":{"foo":"bar"}}

Console

Pour importer des messages HL7v2 à partir d'un bucket Cloud Storage, procédez comme suit :

  1. Dans la console Google Cloud, accédez à la page Ensembles de données.

    Accéder à la page "Ensembles de données"

  2. Cliquez sur l'ensemble de données contenant le store HL7v2 dans lequel vous importez des messages HL7v2.

  3. Dans la liste des data stores, sélectionnez Importer dans la liste Actions du data store HL7v2.

    La page Importer des données dans un magasin HL7v2 s'affiche.

  4. Dans la liste Projet, sélectionnez un projet Cloud Storage.

  5. Dans la liste Emplacement, sélectionnez un bucket Cloud Storage.

  6. Pour définir un emplacement spécifique pour l'importation de fichiers, procédez comme suit :

    1. Développer les options avancées
    2. Sélectionnez Remplacer le chemin d'accès Cloud Storage.
    3. Pour définir une source spécifique pour l'importation de fichiers, définissez le chemin d'accès dans la zone de texte Emplacement. Vous pouvez utiliser des caractères génériques pour importer plusieurs fichiers à partir d'un ou de plusieurs répertoires. Pour en savoir plus sur l'attribution de noms aux objets, consultez les consignes de dénomination des objets.

      Les caractères génériques suivants sont acceptés :
      • Utilisez * pour correspondre à 0 ou plusieurs caractères non séparateurs. Par exemple, gs://BUCKET/DIRECTORY/Example*.ndjson correspond à "Example.ndjson" et "Example22.ndjson" dans DIRECTORY.
      • Utilisez ** pour correspondre à 0 caractère ou plus (séparateurs compris). Doit être utilisé à la fin d'un chemin d'accès et sans autres caractères génériques. Peut également être utilisé avec une extension de nom de fichier (.ndjson, par exemple), qui importe tous les fichiers portant l'extension dans le répertoire spécifié et ses sous-répertoires. Par exemple, gs://BUCKET/DIRECTORY/**.ndjson importe tous les fichiers portant l'extension .ndjson dans DIRECTORY et ses sous-répertoires.
      • Utilisez ? pour correspondre à 1 caractère. Par exemple, gs://BUCKET/DIRECTORY/Example?.ndjson correspond à "Example1.ndjson", mais ne correspond pas à "Example.ndjson" ou "Example01.ndjson".
  7. Cliquez sur Importer pour importer les messages HL7v2 de la source définie.

  8. 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.
    Si vous rencontrez des erreurs, cliquez sur Actions, puis sur Afficher les détails dans Cloud Logging.

API

Les exemples suivants montrent comment importer des messages HL7v2 depuis Cloud Storage à l'aide de la méthode projects.locations.datasets.hl7V2Stores.import.

Veuillez noter les points suivants lors de l'appel de l'opération d'importation :

  • L'emplacement du fichier dans le bucket est arbitraire et ne doit pas nécessairement respecter exactement au format spécifié dans les exemples suivants.
  • Lorsque vous spécifiez l'emplacement des messages HL7v2 dans Cloud Storage, vous pouvez utiliser des caractères génériques pour importer plusieurs fichiers d'un ou de plusieurs répertoires. Les caractères génériques suivants sont acceptés :
    • Utilisez * pour correspondre à 0 ou plusieurs caractères non séparateurs. Par exemple, gs://BUCKET/DIRECTORY/Example*.ndjson correspond à "Example.ndjson" et "Example22.ndjson" dans DIRECTORY.
    • Utilisez ** pour correspondre à 0 caractère ou plus (séparateurs compris). Doit être utilisé à la fin d'un chemin d'accès et sans autres caractères génériques. Peut également être utilisé avec une extension de nom de fichier (.ndjson, par exemple), qui importe tous les fichiers portant l'extension dans le répertoire spécifié et ses sous-répertoires. Par exemple, gs://BUCKET/DIRECTORY/**.ndjson importe tous les fichiers portant l'extension .ndjson dans DIRECTORY et ses sous-répertoires.
    • Utilisez ? pour correspondre à 1 caractère. Par exemple, gs://BUCKET/DIRECTORY/Example?.ndjson correspond à "Example1.ndjson", mais ne correspond pas à "Example.ndjson" ou "Example01.ndjson".

curl

Pour importer des messages HL7v2 dans un datastore HL7v2, envoyez une requête POST et spécifiez les informations suivantes :

  • Nom de l'ensemble de données parent
  • Le nom du magasin HL7v2
  • L'emplacement de l'objet dans un bucket Cloud Storage
  • Un jeton d'accès

L'exemple suivant montre comment importer un seul fichier à l'aide d'une requête POST à l'aide de curl.

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

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.hl7v2.Hl7V2Service.ImportMessages",
    "createTime": "CREATE_TIME",
    "endTime": "END_TIME"
  },
  "done": true,
  "response": {
    "@type": "type.googleapis.com/google.cloud.healthcare.v1.hl7v2.ImportMessagesResponse"
  }
}

PowerShell

Pour importer des messages HL7v2 dans un datastore HL7v2, envoyez une requête POST et spécifiez les informations suivantes :

  • Nom de l'ensemble de données parent
  • Le nom du magasin HL7v2
  • L'emplacement de l'objet dans un bucket Cloud Storage
  • Un jeton d'accès

L'exemple suivant montre comment importer un seul fichier à l'aide d'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 "{
    'gcsSource': {
      'uri': 'gs://BUCKET/DIRECTORY/HL7V2_MESSAGE_FILE'
    }
  }" `
  -Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/hl7V2Stores/HL7V2_STORE_ID:import" | 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.hl7v2.Hl7V2Service.ImportMessages",
    "createTime": "CREATE_TIME",
    "endTime": "END_TIME"
  },
  "done": true,
  "response": {
    "@type": "type.googleapis.com/google.cloud.healthcare.v1.hl7v2.ImportMessagesResponse"
  }
}

Exporter des messages HL7v2

Lorsque vous exportez des messages HL7v2 à partir d'un magasin HL7v2, tous les messages qu'il contient sont exportés. Pour n'exporter qu'un sous-ensemble de ces messages, vous pouvez définir les paramètres startTime et endTime pour n'inclure que les messages envoyés au cours de la période définie. Pour n'exporter que certaines parties de la ressource Message, définissez le paramètre MessageView.

Lors de l'exportation des messages, l'API Cloud Healthcare crée un objet pour chaque message HL7v2. Chaque objet se compose d'un fichier .ndjson contenant une ressource Message sur chaque ligne. Les messages sont exportés par ordre croissant en fonction du sendTime (MSH.7).

Console

Pour exporter des messages HL7v2 vers Cloud Storage, procédez comme suit :

  1. Dans la console Google Cloud, accédez à la page Ensembles de données.

    Accéder à la page "Ensembles de données"

  2. Cliquez sur l'ensemble de données contenant le store HL7v2 à partir duquel vous exportez des messages HL7v2.

  3. Dans la liste des data stores, sélectionnez Exporter dans la liste Actions du store HL7v2.

    La page Exporter des messages HL7v2 s'affiche.

  4. Dans la liste Projet, sélectionnez un projet Cloud Storage.

  5. Dans la liste Emplacement, sélectionnez un bucket Cloud Storage.

  6. Cliquez sur Exporter pour exporter des instances HL7v2 vers l'emplacement défini dans Cloud Storage.

  7. 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.
    Si vous rencontrez des erreurs, cliquez sur Actions, puis sur Afficher les détails dans Cloud Logging.

API

Les exemples suivants montrent comment exporter des messages HL7v2 vers Cloud Storage à l'aide de la méthode projects.locations.datasets.hl7V2Stores.messages.export.

Veuillez noter les points suivants lors de l'appel de l'opération d'exportation :

  • Écrivez dans un bucket ou un répertoire Cloud Storage plutôt qu'un objet, car l'API Cloud Healthcare peut créer plusieurs fichiers JSON délimités par un retour à la ligne lorsqu'il y a de nombreux messages. Dans chaque fichier JSON, chaque ligne est un message HL7v2.
  • Si la commande spécifie un répertoire qui n'existe pas, celui-ci est créé.

curl

Pour exporter des messages HL7v2, envoyez une requête POST et spécifiez les informations suivantes :

  • Le nom de l'ensemble de données parent
  • Le nom du magasin HL7v2
  • Le bucket ou le répertoire Cloud Storage de destination
  • Un jeton d'accès

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 "{
      'gcsDestination': {
        'uriPrefix': 'gs://BUCKET/DIRECTORY'
      }
    }" "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/hl7V2Stores/HL7V2_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.hl7v2.Hl7V2Service.ExportMessages",
    "createTime": "CREATE_TIME",
    "endTime": "END_TIME",
    "counter": {
      "success": "RESOURCE_COUNT"
    }
  },
  "done": true,
  "response": {
    "@type": "type.googleapis.com/google.cloud.healthcare.v1.hl7v2.ExportMessagesResponse"
  }
}

PowerShell

Pour exporter des messages HL7v2, envoyez une requête POST et spécifiez les informations suivantes :

  • Le nom de l'ensemble de données parent
  • Le nom du magasin HL7v2
  • Le bucket ou le répertoire Cloud Storage de destination
  • Un jeton d'accès

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 "{
    'gcsDestination': {
      'uriPrefix': 'gs://BUCKET/DIRECTORY'
    }
  }" `
  -Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/hl7V2Stores/HL7V2_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.hl7v2.Hl7V2Service.ExportMessages",
    "createTime": "CREATE_TIME",
    "endTime": "END_TIME",
    "counter": {
      "success": "RESOURCE_COUNT"
    }
  },
  "done": true,
  "response": {
    "@type": "type.googleapis.com/google.cloud.healthcare.v1.hl7v2.ExportMessagesResponse"
  }
}

Dépanner des requêtes d'importation et d'exportation HL7v2

Si des erreurs se produisent lors d'une requête d'importation ou d'exportation HL7v2, elles sont consignées dans Cloud Logging. Pour en savoir plus, consultez la section Afficher les journaux d'erreurs dans Cloud Logging.

Si une opération renvoie une erreur, consultez la section Résoudre les problèmes liés aux opérations de longue durée.