Esporta messaggi HL7v2 in Pub/Sub

Questa pagina descrive come esportare i messaggi HL7v2 in Pub/Sub utilizzando projects.locations.datasets.hl7V2Stores.export .

È possibile esportare messaggi HL7v2 in Pub/Sub per l'elaborazione downstream. Supponi di avere una pipeline Dataflow che trasforma i messaggi HL7v2 quando nuovi messaggi vengono importati in un archivio HL7v2. La pipeline legge da un sottoscrizione Pub/Sub e attende le notifiche del nuovo HL7v2 messaggi. Quando si importano messaggi HL7v2 in un archivio HL7v2 utilizzando il hl7V2Stores.import , il metodo non invia notifiche Pub/Sub. Per attivare la pipeline, importa i messaggi HL7v2 e quindi utilizza il metodo hl7v2Stores.export per esportarle in Pub/Sub.

Prima di iniziare

Abilita l'API Pub/Sub

Nella console Google Cloud, abilita l'API Pub/Sub:

Abilitare l'API

Configurare le autorizzazioni Pub/Sub

Per esportare i messaggi da un archivio HL7v2 a Pub/Sub, è necessario aggiungere il ruolo pubsub.publisher all'agente di servizio Cloud Healthcare del tuo progetto account di servizio. Vedi le autorizzazioni Pub/Sub per datastore FHIR, FHIR e HL7v2 per istruzioni su come aggiungere il ruolo richiesto.

crea un argomento Pub/Sub

Per creare un argomento, consulta Creare un argomento.

I singoli datastore possono avere il proprio argomento Pub/Sub oppure più datastore possono lo stesso argomento.

Utilizza il formato seguente quando specifichi l'argomento Pub/Sub:

projects/PROJECT_ID/topics/TOPIC_NAME

PROJECT_ID è l'ID del tuo progetto Google Cloud TOPIC_NAME è il nome dell'argomento Pub/Sub.

Esportare i messaggi HL7v2 in Pub/Sub

curl

Per esportare messaggi HL7v2 in Pub/Sub, effettua una richiesta POST e specificare le seguenti informazioni:

  • Il nome del set di dati principale
  • 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 l'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 nella filter . Per imparare a usare il filtro sulla sintassi e costruire le query, Stringhe di query.

  • message_type: dal campo MSH.9.1. Ad esempio, NOT message_type = "ADT".
  • send_date: la data YYYY-MM-DD in 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 da il segmento MSH.7 del messaggio. Questo parametro utilizza il parametro Formato ora 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 ora RFC 3339 per i confronti. Ad esempio: create_time < "2017-01-02T00:00:00-05:00".
  • send_facility: il centro 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"

Visualizza i messaggi HL7v2 esportati in Pub/Sub

Per visualizzare i messaggi HL7v2 esportati in Pub/Sub, esegui gcloud pubsub subscriptions pull . Il comando utilizza il flag --format=json per restituire l'output in formato JSON anziché come YAML predefinito.

gcloud pubsub subscriptions pull --auto-ack projects/PROJECT_ID/subscriptions/PUBSUB_SUBSCRIPTION \
    --format=json
  • PROJECT_ID è l'ID del tuo progetto Google Cloud
  • PUBSUB_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"
    }
  }
]