Importer des messages HL7v2 à partir de Cloud Storage

Cette page explique comment importer des messages HL7v2 de Cloud Storage dans un magasin HL7v2. Il est plus rapide et plus simple d'importer des messages HL7v2 de manière groupée que de les stocker individuellement à l'aide de l'API REST.

Avant de commencer

Consultez la section Importer des messages HL7v2 à partir de Cloud Storage pour connaître les rôles que vous devez attribuer au compte de service Agent de service Cloud Healthcare.

Exigences concernant le format des fichiers d'entrée

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

Importer des messages HL7v2

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

Résoudre les problèmes liés aux requêtes d'importation HL7v2

Si des erreurs se produisent lors de l'importation des messages 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 de longue durée renvoie une erreur, consultez la section Dépanner les opérations de longue durée.