Questa pagina descrive come esportare i messaggi HL7v2 in Pub/Sub utilizzando il metodo
projects.locations.datasets.hl7V2Stores.export
.
Puoi esportare i messaggi HL7v2 in Pub/Sub per l'elaborazione downstream.
Supponiamo di avere una pipeline Dataflow che trasforma i messaggi HL7v2
quando i nuovi messaggi vengono importati in un archivio HL7v2. La pipeline legge da un abbonamento Pub/Sub e attende le notifiche dei nuovi messaggi HL7v2. Quando importi i messaggi HL7v2 in un archivio HL7v2 utilizzando il metodo
hl7V2Stores.import
, il metodo non invia notifiche Pub/Sub.
Per attivare la pipeline, importa i messaggi HL7v2 e poi utilizza il metodo hl7v2Stores.export
per esportarli in Pub/Sub.
Prima di iniziare
Abilita l'API Pub/Sub
Nella console Google Cloud, abilita l'API Pub/Sub:
Configurare le autorizzazioni Pub/Sub
Per esportare i messaggi da un archivio HL7v2 in Pub/Sub, devi aggiungere il ruolo pubsub.publisher
all'account di servizio dell'agente di servizio Cloud Healthcare del progetto.
Per informazioni su come aggiungere il ruolo richiesto, consulta Autorizzazioni Pub/Sub per archivi DICOM, FHIR e HL7v2.
crea un argomento Pub/Sub
Per creare un argomento, consulta Creare un argomento.
I singoli datastore possono avere i propri argomenti Pub/Sub oppure più datastore possono condividere lo stesso argomento.
Utilizza il seguente formato per specificare l'argomento Pub/Sub:
projects/PROJECT_ID/topics/TOPIC_NAME
PROJECT_ID
è il tuo Google Cloud ID progetto e
TOPIC_NAME
è il nome dell'argomento Pub/Sub.
Esportare i messaggi HL7v2 in Pub/Sub
curl
Per esportare i messaggi HL7v2 in Pub/Sub, effettua una richiesta POST
e
specifica le seguenti informazioni:
- Il nome del set di dati principale
- Il nome dell'archivio HL7v2
- L'argomento Pub/Sub di destinazione
L'esempio seguente mostra una richiesta POST
che utilizza 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"
Se la richiesta riesce, il server restituisce la risposta in formato JSON:
{ "name": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID" }
La risposta contiene il nome di un'operazione. Per monitorare lo stato dell'operazione,
puoi utilizzare il
metodo Operation 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"
Se la richiesta riesce, il server restituisce una risposta con lo stato dell'operazione in formato 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" } }
Esportare un sottoinsieme di messaggi HL7v2 utilizzando un filtro
Nei criteri di filtro puoi utilizzare i seguenti campi:
Puoi specificare i seguenti parametri di filtro come criteri di filtro nel campo filter
. Per conoscere la sintassi dei filtri e creare query, consulta Stringhe di query.
message_type
: dal campo MSH.9.1. Ad esempio,NOT message_type = "ADT"
.send_date
: la dataYYYY-MM-DD
di invio del messaggio dal segmento MSH.7, specificata nel fuso orario del set di dati. Ad esempio:send_date < "2017-01-02"
.send_time
: il timestamp di invio del messaggio. Questo parametro proviene dal segmento MSH.7 del messaggio. Questo parametro utilizza il formato di data e ora RFC 3339 per i confronti. Ad esempio:send_time < "2017-01-02T00:00:00-05:00"
.create_time
: il timestamp della creazione del messaggio nell'API Cloud Healthcare, utilizzando il formato orario RFC 3339 per i confronti. Ad esempio:create_time < "2017-01-02T00:00:00-05:00"
.send_facility
: il centro di assistenza da cui proviene il messaggio, dal segmento MSH.4. Ad esempio,send_facility = "ABC"
.
Gli esempi riportati di seguito mostrano come specificare un filtro per esportare solo i messaggi HL7v2
di tipo 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"
Visualizzare i messaggi HL7v2 esportati in Pub/Sub
Per visualizzare i messaggi HL7v2 esportati in Pub/Sub,
esegui il comando gcloud pubsub subscriptions pull
. Il comando utilizza il flag --format=json
per restituire l'output in formato JSON anziché YAML predefinito.
gcloud pubsub subscriptions pull --auto-ack projects/PROJECT_ID/subscriptions/PUBSUB_SUBSCRIPTION \ --format=json
PROJECT_ID
è l'ID del tuo Google Cloud progettoPUBSUB_SUBSCRIPTION
è la sottoscrizione associata all'argomento Pub/Sub in cui hai esportato i messaggi HL7v2
L'output è il seguente:
[ { "ackId": "ACK_ID", "message": { "attributes": { "msgType": "TYPE" }, "data": "DATA", "messageId": "8076570784126536", "publishTime": "YYYY-MM-DDTHH:MM:SS+ZZ:ZZ" } } ]