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 :
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
: dateYYYY-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" } } ]