Exporter des messages HL7v2 vers Pub/Sub

Cette page explique comment exporter des messages HL7v2 vers Pub/Sub à l'aide de la méthode projects.locations.datasets.hl7V2Stores.export.

Vous pouvez exporter des messages HL7v2 vers Pub/Sub pour le traitement en aval. Supposons que vous disposiez d'un pipeline Dataflow qui transforme les messages HL7v2 lorsque de nouveaux messages sont ingérés dans un magasin HL7v2. Le pipeline lit les données Abonnement Pub/Sub et attend les notifications du nouveau HL7v2 messages. Lorsque vous importez des messages HL7v2 dans un magasin HL7v2 à l'aide de la méthode hl7V2Stores.import, elle n'envoie pas de notifications Pub/Sub. Pour déclencher le pipeline, importez les messages HL7v2, puis utilisez la hl7v2Stores.export pour les exporter vers Pub/Sub.

Avant de commencer

Activer l'API Pub/Sub

Dans la console Google Cloud, activez l'API Pub/Sub :

Activer l'API

Configurer des autorisations Pub/Sub

Pour exporter des messages d'un magasin HL7v2 vers Pub/Sub, vous devez ajouter le rôle pubsub.publisher au compte de service Agent de service Cloud Healthcare de votre projet. Consultez la section Autorisations Pub/Sub pour les magasins DICOM, FHIR et HL7v2 pour savoir comment ajouter le rôle requis.

Créer un sujet Pub/Sub

Pour créer un thème, consultez Créer un thème.

Un datastore individuel peut avoir son propre sujet Pub/Sub ou plusieurs datastores peuvent partager le même sujet.

Utilisez le format suivant lorsque vous spécifiez le sujet Pub/Sub:

projects/PROJECT_ID/topics/TOPIC_NAME

PROJECT_ID est l'ID de votre projet Google Cloud. TOPIC_NAME est le nom du sujet Pub/Sub.

Exporter des messages HL7v2 vers Pub/Sub

curl

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

  • Nom de l'ensemble de données parent
  • Le nom du magasin HL7v2
  • Le sujet Pub/Sub de destination

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 "{
      'pubsubDestination': {
        'pubsubTopic': 'projects/PROJECT_ID/topics/PUBSUB_TOPIC'
      }
    }" "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"
  }
}

Exporter un sous-ensemble de messages HL7v2 à l'aide d'un filtre

Vous pouvez utiliser les champs suivants dans vos critères de filtrage :

Vous pouvez spécifier les paramètres de filtre suivants comme critères de filtrage dans le champ filter. Pour apprendre le filtre la syntaxe et créer des requêtes, consultez Chaînes de requête.

  • message_type : à partir du champ MSH.9.1. Exemple :NOT message_type = "ADT"
  • send_date : date YYYY-MM-DD à laquelle le message a été envoyé à partir du segment MSH.7, spécifiée dans le fuseau horaire de l'ensemble de données. Par exemple, send_date < "2017-01-02".
  • send_time: code temporel d'envoi du message Ce paramètre provient de le segment MSH.7 du message. Ce paramètre utilise le format temporel RFC 3339 pour les comparaisons. Par exemple, send_time < "2017-01-02T00:00:00-05:00".
  • create_time : horodatage de la création du message dans l'API Cloud Healthcare, en utilisant le format d'heure RFC 3339 à des fins de comparaison. Exemple : create_time < "2017-01-02T00:00:00-05:00".
  • send_facility: centre de soins d'où provient le message, du segment MSH.4. Exemple :send_facility = "ABC"

Les exemples suivants montrent comment spécifier un filtre pour n'exporter que les messages HL7v2 de type ADT.

curl

curl -X POST \
    -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
    -H "Content-Type: application/json; charset=utf-8" \
    --data "{
      'pubsubDestination': {
        'pubsubTopic': 'projects/PROJECT_ID/topics/PUBSUB_TOPIC'
      },
      'filter': 'message_type = \"ADT\"'
    }" "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/hl7V2Stores/HL7V2_STORE_ID:export"

Afficher les messages HL7v2 exportés dans Pub/Sub

Pour afficher les messages HL7v2 exportés dans Pub/Sub, procédez comme suit : exécutez la commande gcloud pubsub subscriptions pull . La commande utilise l'option --format=json pour renvoyer la sortie au format JSON au lieu du format YAML par défaut.

gcloud pubsub subscriptions pull --auto-ack projects/PROJECT_ID/subscriptions/PUBSUB_SUBSCRIPTION \
    --format=json
  • PROJECT_ID est l'ID du projet Google Cloud.
  • PUBSUB_SUBSCRIPTION correspond à l'abonnement associé au sujet Pub/Sub dans lequel vous avez exporté des messages HL7v2.

Le résultat est le suivant :

[
  {
    "ackId": "ACK_ID",
    "message": {
      "attributes": {
        "msgType": "TYPE"
      },
      "data": "DATA",
      "messageId": "8076570784126536",
      "publishTime": "YYYY-MM-DDTHH:MM:SS+ZZ:ZZ"
    }
  }
]