HL7v2-Nachrichten nach Pub/Sub exportieren

Auf dieser Seite wird beschrieben, wie Sie HL7v2-Nachrichten mit der projects.locations.datasets.hl7V2Stores.export-Methode nach Pub/Sub exportieren.

Sie können HL7v2-Nachrichten für die nachgelagerte Verarbeitung nach Pub/Sub exportieren. Angenommen, Sie haben eine Dataflow-Pipeline, die HL7v2-Nachrichten umwandelt, wenn neue Nachrichten in einen HL7v2-Speicher aufgenommen werden. Die Pipeline liest aus einem Pub/Sub-Abo und wartet auf Benachrichtigungen über neue HL7v2-Nachrichten. Wenn Sie HL7v2-Nachrichten mit der Methode hl7V2Stores.import in einen HL7v2-Speicher importieren, sendet die Methode keine Pub/Sub-Benachrichtigungen. Importieren Sie zum Auslösen der Pipeline die HL7v2-Nachrichten und exportieren Sie sie mit der Methode hl7v2Stores.export nach Pub/Sub.

Hinweise

Pub/Sub API aktivieren

Aktivieren Sie in der Google Cloud Console die Pub/Sub API:

API aktivieren

Pub/Sub-Berechtigungen konfigurieren

Wenn Sie Nachrichten aus einem HL7v2-Speicher nach Pub/Sub exportieren möchten, müssen Sie dem Dienstkonto Cloud Healthcare Service Agent Ihres Projekts die Rolle pubsub.publisher hinzufügen. Weitere Informationen zum Hinzufügen der erforderlichen Rolle finden Sie unter Pub/Sub-Berechtigungen für DICOM-, FHIR- und HL7v2-Speicher.

Pub/Sub-Thema erstellen

Informationen zum Erstellen eines Themas finden Sie unter Thema erstellen.

Einzelne Datenspeicher können ein eigenes Pub/Sub-Thema haben oder mehrere Datenspeicher können dasselbe Thema gemeinsam nutzen.

Verwenden Sie das folgende Format, wenn Sie das Pub/Sub-Thema angeben:

projects/PROJECT_ID/topics/TOPIC_NAME

PROJECT_ID ist Ihre Google Cloud-Projekt-ID und TOPIC_NAME der Name des Pub/Sub-Themas.

HL7v2-Nachrichten nach Pub/Sub exportieren

curl

Um HL7v2-Nachrichten nach Pub/Sub zu exportieren, senden Sie eine POST-Anfrage und geben folgende Informationen an:

  • Der Name des übergeordneten Datasets
  • Der Name des HL7v2-Speichers
  • Das Pub/Sub-Zielthema

Das folgende Beispiel zeigt eine POST-Anfrage mit 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"

Wenn die Anfrage erfolgreich ist, gibt der Server die Antwort im JSON-Format zurück:

{
  "name": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID"
}

Die Antwort enthält einen Vorgangsnamen. Sie können den Status des Vorgangs mit der Methode Operation get verfolgen:

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"

Wenn die Anfrage erfolgreich ist, gibt der Server eine Antwort mit dem Status des Vorgangs im JSON-Format zurück:

{
  "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"
  }
}

Teilmenge von HL7v2-Nachrichten mithilfe eines Filters exportieren

Sie können die folgenden Felder in Ihren Filterkriterien verwenden:

Sie können die folgenden Filterparameter als Filterkriterium im Feld filter angeben. Informationen zur Filtersyntax und zum Erstellen von Abfragen finden Sie unter Abfragestrings.

  • message_type: aus dem Feld MSH.9.1. Beispiel: NOT message_type = "ADT".
  • send_date: das YYYY-MM-DD-Datum, an dem die Nachricht aus dem MSH.7-Segment gesendet wurde, angegeben in der Zeitzone des Datasets. Beispiel: send_date < "2017-01-02"
  • send_time: Zeitstempel für den Versand der Nachricht. Dieser Parameter stammt aus dem MSH.7-Segment der Nachricht. Für diesen Parameter wird für Vergleiche das RFC 3339-Zeitformat verwendet. Beispiel: send_time < "2017-01-02T00:00:00-05:00"
  • create_time ist der Zeitstempel, zu dem die Nachricht in der Cloud Healthcare API erstellt wurde, unter Verwendung des RFC 3339-Zeitformats für Vergleiche. Beispiel: create_time < "2017-01-02T00:00:00-05:00"
  • send_facility: das Pflegezentrum, von dem die Nachricht stammt, aus dem MSH.4-Segment. Beispiel: send_facility = "ABC".

Die folgenden Beispiele zeigen, wie Sie einen Filter angeben, um nur HL7v2-Nachrichten vom Typ ADT zu exportieren.

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"

Exportierte HL7v2-Nachrichten in Pub/Sub ansehen

Führen Sie den Befehl gcloud pubsub subscriptions pull aus, um die exportierten HL7v2-Nachrichten in Pub/Sub anzusehen. Für den Befehl wird das Flag --format=json verwendet, um die Ausgabe im JSON-Format anstelle der standardmäßigen YAML-Datei zurückzugeben.

gcloud pubsub subscriptions pull --auto-ack projects/PROJECT_ID/subscriptions/PUBSUB_SUBSCRIPTION \
    --format=json
  • PROJECT_ID ist die ID des Google Cloud-Projekts.
  • PUBSUB_SUBSCRIPTION ist das Abo, das an das Pub/Sub-Thema angehängt ist, in das Sie HL7v2-Nachrichten exportiert haben

Die Ausgabe sieht so aus:

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