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 vengono importati nuovi messaggi in un archivio HL7v2. La pipeline legge da una sottoscrizione Pub/Sub e attende le notifiche di nuovi messaggi HL7v2. Quando importi 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 a Pub/Sub, devi aggiungere
il ruolo pubsub.publisher all'account di servizio dell'agente di servizio Cloud Healthcare
del progetto.
Per i passaggi per aggiungere il ruolo richiesto, consulta Autorizzazioni Pub/Sub per archivi DICOM, FHIR e HL7v2.
crea un argomento Pub/Sub
Per creare un argomento, vedi Creare un argomento.
I singoli datastore possono avere i propri argomenti Pub/Sub oppure più datastore possono condividere lo stesso argomento.
Utilizza il formato seguente quando specifichi l'argomento Pub/Sub:
projects/PROJECT_ID/topics/TOPIC_NAME
PROJECT_ID è l'ID progetto Google Cloud e
TOPIC_NAME è il nome dell'argomento Pub/Sub.
Esportare messaggi HL7v2 in Pub/Sub
curl
Per esportare i messaggi HL7v2 in Pub/Sub, esegui una richiesta POST e specifica le seguenti informazioni:
- Il nome del set di dati padre
- Il nome dell'archivio HL7v2
- L'argomento Pub/Sub di destinazione
L'esempio seguente mostra una richiesta POST mediante 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
Puoi utilizzare i seguenti campi nei criteri di filtro:
Puoi specificare i seguenti parametri di filtro come criteri di filtro nel campo filter. Per scoprire 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-DDin cui il messaggio è stato inviato 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 RFC 3339 per i confronti. Ad esempio:send_time < "2017-01-02T00:00:00-05:00".create_time: il timestamp di creazione del messaggio nell'API Cloud Healthcare, utilizzando il formato dell'ora 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 progetto Google CloudPUBSUB_SUBSCRIPTIONè la sottoscrizione collegata 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"
}
}
]