ייצוא הודעות HL7v2 ל-Pub/Sub

בדף הזה מוסבר איך לייצא הודעות HL7v2 אל Pub/Sub באמצעות השיטה projects.locations.datasets.hl7V2Stores.export.

אפשר לייצא הודעות HL7v2 ל-Pub/Sub לעיבוד בהמשך. נניח שיש לכם פייפליין Dataflow שמבצע טרנספורמציה של הודעות HL7v2 כשמבצעים הטמעה של הודעות חדשות במאגר HL7v2. הצינור קורא ממינוי Pub/Sub וממתין להתראות על הודעות חדשות של HL7v2. כשמייבאים הודעות HL7v2 למאגר HL7v2 באמצעות השיטה hl7V2Stores.import, השיטה לא שולחת התראות Pub/Sub. כדי להפעיל את צינור עיבוד הנתונים, מייבאים את ההודעות של HL7v2 ואז משתמשים בשיטה hl7v2Stores.export כדי לייצא אותן ל-Pub/Sub.

לפני שמתחילים

הפעלת Pub/Sub API

במסוף Google Cloud , מפעילים את Pub/Sub API:

להפעלת ה-API

הגדרת הרשאות Pub/Sub

כדי לייצא הודעות ממאגר HL7v2 ל-Pub/Sub, צריך להוסיף את התפקיד pubsub.publisher לסוכן שירות Cloud Healthcare של הפרויקט, חשבון השירות. במאמר הרשאות Pub/Sub למאגרי DICOM,‏ FHIR ו-HL7v2 מוסבר איך להוסיף את התפקיד הנדרש.

יוצרים נושא Pub/Sub

כדי ליצור נושא, אפשר לעיין במאמר בנושא יצירת נושא.

לכל מאגר נתונים יכול להיות נושא Pub/Sub משלו, או שכמה מאגרי נתונים יכולים לשתף את אותו נושא.

כשמציינים את נושא ה-Pub/Sub, צריך להשתמש בפורמט הבא:

projects/PROJECT_ID/topics/TOPIC_NAME

PROJECT_ID הוא מזהה הפרויקט שלכם ב- Google Cloud ו-TOPIC_NAME הוא השם של נושא ה-Pub/Sub.

ייצוא הודעות HL7v2 ל-Pub/Sub

curl

כדי לייצא הודעות HL7v2 ל-Pub/Sub, שולחים בקשת POST ומציינים את הפרטים הבאים:

  • השם של קבוצת הנתונים הראשית
  • השם של מאגר HL7v2
  • נושא היעד ב-Pub/Sub

בדוגמה הבאה מוצגת בקשת POST באמצעות 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"

אם הבקשה מצליחה, השרת מחזיר את התגובה בפורמט JSON:

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

התשובה מכילה שם פעולה. כדי לעקוב אחרי סטטוס הפעולה, אפשר להשתמש ב-method‏ 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"

אם הבקשה מצליחה, השרת מחזיר תגובה עם סטטוס הפעולה בפורמט 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"
  }
}

ייצוא קבוצת משנה של הודעות HL7v2 באמצעות מסנן

אפשר להשתמש בשדות הבאים בקריטריוני הסינון:

אפשר לציין את פרמטרי הסינון הבאים כקריטריוני הסינון בשדה filter. מידע על תחביר המסננים ועל יצירת שאילתות מופיע במאמר מחרוזות שאילתה.

  • message_type: מהשדה MSH.9.1. לדוגמה, NOT message_type = "ADT".
  • send_date: התאריך YYYY-MM-DD שבו ההודעה נשלחה מהקטע MSH.7, שצוין באזור הזמן של מערך הנתונים. לדוגמה, send_date < "2017-01-02".
  • send_time: חותמת הזמן שבה ההודעה נשלחה. הפרמטר הזה מגיע מהפלח MSH.7 של ההודעה. הפרמטר הזה משתמש בפורמט הזמן RFC 3339 להשוואות. לדוגמה, send_time < "2017-01-02T00:00:00-05:00".
  • create_time: חותמת הזמן שבה ההודעה נוצרה ב-Cloud Healthcare API, בפורמט הזמן RFC 3339 לצורך השוואות. לדוגמה: create_time < "2017-01-02T00:00:00-05:00".
  • send_facility: מרכז הטיפול שממנו נשלחה ההודעה, מהקטע MSH.4. לדוגמה, send_facility = "ABC".

בדוגמאות הבאות אפשר לראות איך לציין מסנן לייצוא רק של הודעות HL7v2 מהסוג 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"

הצגת הודעות HL7v2 שיוצאו ב-Pub/Sub

כדי לראות את ההודעות שיוצאו בפורמט HL7v2 ב-Pub/Sub, מריצים את הפקודה gcloud pubsub subscriptions pull. הפקודה משתמשת בדגל --format=json כדי להחזיר את הפלט כ-JSON במקום כ-YAML, שהוא ברירת המחדל.

gcloud pubsub subscriptions pull --auto-ack projects/PROJECT_ID/subscriptions/PUBSUB_SUBSCRIPTION \
    --format=json
  • PROJECT_ID הוא מזהה הפרויקט שלכם. Google Cloud
  • PUBSUB_SUBSCRIPTION הוא המינוי שמצורף לנושא Pub/Sub שאליו ייצאתם הודעות HL7v2

הפלט שיתקבל:

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