ייבוא הודעות HL7v2 מ-Cloud Storage

בדף הזה מוסבר איך לייבא הודעות HL7v2 מ-Cloud Storage למאגר HL7v2. ייבוא בכמות גדולה של הודעות HL7v2 מהיר ופשוט יותר מאשר אחסון שלהן בנפרד באמצעות API בארכיטקטורת REST.

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

במאמר ייבוא הודעות HL7v2 מ-Cloud Storage מפורטים התפקידים שצריך להקצות לחשבון השירות Cloud Healthcare Service Agent.

הדרישות לגבי פורמט קובץ הקלט

כדי לייבא הודעות HL7v2, צריך קודם ליצור ב-Cloud Storage קובץ אחד או יותר של JSON (.ndjson) שמופרד בתו שורה חדשה, שמכיל הודעה אחת או יותר. כל שורה בקובץ היא משאב Message יחיד שמכיל הודעת HL7v2 עם קידוד base64. Message המשאב יכול לכלול גם תוויות אופציונליות.

לדוגמה, הקובץ הבא, שנקרא messages.ndjson, מכיל שני מסרים של HL7v2. תווית מוגדרת בהודעה השנייה.

{"data" :"TVNIfF5+XCZ8QXxTRU5EX0ZBQ0lMSVRZXzF8QXxBfDIwMTgwMTAxMDAwMDAwfHxUWVBFXkF8MjAxODAxMDEwMDAwMDB8VHwwLjB8fHxBQXx8MDB8QVNDSUkNRVZOfEEwMHwyMDE4MDEwMTA0MDAwMA1QSUR8fDE0ATExMV5eXl5NUk58MTExMTExMTFeXl5eTVJOfjExMTExMTExMTFeXl5eT1JHTk1CUg=="}
{"data" :"TVNIfF5+XCZ8QXxTRU5EX0ZBQ0lMSVRZXzJ8QXxBfDIwMTgwMTAxMDAwMDAwfHxUWVBFXkF8MjAxODAxMDEwMDAwMDB8VHwwLjB8fHxBQXx8MDB8QVNDSUkNRVZOfEEwMHwyMDE4MDEwMTA0MDAwMA1QSUR8fDE0ATExMV5eXl5NUk58MTExMTExMTFeXl5eTVJOfjExMTExMTExMTFeXl5eT1JHTk1CUg==","labels":{"foo":"bar"}}

ייבוא הודעות של HL7v2

המסוף

כדי לייבא הודעות HL7v2 מקטגוריית Cloud Storage, מבצעים את השלבים הבאים:

  1. נכנסים לדף Datasets במסוף Google Cloud .

    למעבר אל Datasets

  2. לוחצים על מערך הנתונים שמכיל את החנות ב-HL7v2 שאליה מייבאים הודעות ב-HL7v2.

  3. ברשימת מאגרי הנתונים, בוחרים באפשרות ייבוא מתוך רשימת הפעולות של מאגר HL7v2.

    יופיע הדף Import to HL7v2 store (ייבוא לחנות HL7v2).

  4. ברשימה Project, בוחרים פרויקט של Cloud Storage.

  5. ברשימה מיקום, בוחרים קטגוריה של Cloud Storage.

  6. כדי להגדיר מיקום ספציפי לייבוא קבצים:

    1. מרחיבים את אפשרויות מתקדמות.
    2. בוחרים באפשרות Override Cloud Storage Path (שינוי הנתיב של Cloud Storage).
    3. כדי להגדיר מקור ספציפי לייבוא קבצים, מגדירים את הנתיב בתיבת הטקסט מיקום. אפשר להשתמש בתווים כלליים כדי לייבא כמה קבצים מספרייה אחת או מכמה ספריות. מידע נוסף על מתן שמות לאובייקטים זמין במאמר הנחיות למתן שמות לאובייקטים.

      יש תמיכה בתווים הכלליים לחיפוש הבאים:
      • משתמשים ב-* כדי להתאים 0 או יותר תווים שאינם מפרידים. לדוגמה, gs://BUCKET/DIRECTORY/Example*.ndjson תואם לקבצים Example.ndjson ו-Example22.ndjson ב-DIRECTORY.
      • משתמשים ב-** כדי להתאים 0 תווים או יותר (כולל מפרידים). חובה להשתמש בו בסוף הנתיב, בלי תווים כלליים אחרים בנתיב. אפשר להשתמש גם בסיומת של שם קובץ (כמו ‎ .ndjson), כדי לייבא את כל הקבצים עם הסיומת של שם הקובץ בספרייה שצוינה ובספריות המשנה שלה. לדוגמה, הפקודה gs://BUCKET/DIRECTORY/**.ndjson מייבאת את כל הקבצים עם סיומת שם הקובץ ‎ .ndjson בתיקייה DIRECTORY ובתיקיות המשנה שלה.
      • כדי להתאים תו אחד, משתמשים ב-?. לדוגמה, ‫gs://BUCKET/DIRECTORY/Example?.ndjson תואם ל- Example1.ndjson אבל לא תואם ל-Example.ndjson או ל-Example01.ndjson.
  7. לוחצים על ייבוא כדי לייבא הודעות HL7v2 מהמקור שהוגדר.

  8. כדי לעקוב אחרי סטטוס הפעולה, לוחצים על הכרטיסייה פעולות. אחרי שהפעולה מסתיימת, מופיעים הסימנים הבאים:
    • בקטע Long-running operation status (סטטוס של פעולה ממושכת) מופיע סימן וי ירוק מתחת לכותרת OK.
    • בקטע סקירה כללית מופיעים סימן וי ירוק והאינדיקטור OK באותה שורה של מזהה הפעולה.
    אם נתקלתם בשגיאות, לוחצים על פעולות ואז על הצגת הפרטים ב-Cloud Logging.

API

בדוגמאות הבאות מוצגות דרכים לייבא הודעות HL7v2 מ-Cloud Storage באמצעות השיטה projects.locations.datasets.hl7V2Stores.import.

כשמפעילים את פעולת הייבוא, חשוב לשים לב לנקודות הבאות:

  • המיקום של הקובץ בתוך הדלי הוא שרירותי ולא צריך להיות זהה לפורמט שמופיע בדוגמאות הבאות.
  • כשמציינים את המיקום של הודעות HL7v2 ב-Cloud Storage, אפשר להשתמש בתווים כלליים כדי לייבא כמה קבצים מספרייה אחת או מכמה ספריות. יש תמיכה בתווים הכלליים לחיפוש הבאים:
    • משתמשים ב-* כדי להתאים 0 או יותר תווים שאינם מפרידים. לדוגמה, gs://BUCKET/DIRECTORY/Example*.ndjson תואם לקבצים Example.ndjson ו-Example22.ndjson ב-DIRECTORY.
    • משתמשים ב-** כדי להתאים 0 תווים או יותר (כולל מפרידים). חובה להשתמש בו בסוף הנתיב, בלי תווים כלליים אחרים בנתיב. אפשר להשתמש גם בסיומת של שם קובץ (כמו ‎ .ndjson), כדי לייבא את כל הקבצים עם הסיומת של שם הקובץ בספרייה שצוינה ובספריות המשנה שלה. לדוגמה, הפקודה gs://BUCKET/DIRECTORY/**.ndjson מייבאת את כל הקבצים עם סיומת שם הקובץ ‎ .ndjson בתיקייה DIRECTORY ובתיקיות המשנה שלה.
    • כדי להתאים תו אחד, משתמשים ב-?. לדוגמה, ‫gs://BUCKET/DIRECTORY/Example?.ndjson תואם ל- Example1.ndjson אבל לא תואם ל-Example.ndjson או ל-Example01.ndjson.

curl

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

  • השם של קבוצת הנתונים הראשית
  • השם של מאגר HL7v2
  • המיקום של האובייקט בקטגוריה של Cloud Storage
  • טוקן גישה

בדוגמה הבאה אפשר לראות איך מייבאים קובץ יחיד באמצעות בקשת POST באמצעות curl.

curl -X POST \
    -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
    -H "Content-Type: application/json; charset=utf-8" \
    --data "{
      'gcsSource': {
        'uri': 'gs://BUCKET/DIRECTORY/HL7V2_MESSAGE_FILE'
      }
    }" "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/hl7V2Stores/HL7V2_STORE_ID:import"

אם הבקשה מצליחה, השרת מחזיר את התגובה בפורמט 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.ImportMessages",
    "createTime": "CREATE_TIME",
    "endTime": "END_TIME"
  },
  "done": true,
  "response": {
    "@type": "type.googleapis.com/google.cloud.healthcare.v1.hl7v2.ImportMessagesResponse"
  }
}

PowerShell

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

  • השם של קבוצת הנתונים הראשית
  • השם של מאגר HL7v2
  • המיקום של האובייקט בקטגוריה של Cloud Storage
  • טוקן גישה

בדוגמה הבאה מוצג ייבוא של קובץ יחיד באמצעות POST בקשה באמצעות Windows PowerShell.

$cred = gcloud auth application-default print-access-token
$headers = @{ Authorization = "Bearer $cred" }

Invoke-WebRequest `
  -Method Post `
  -Headers $headers `
  -ContentType: "application/json; charset=utf-8" `
  -Body "{
    'gcsSource': {
      'uri': 'gs://BUCKET/DIRECTORY/HL7V2_MESSAGE_FILE'
    }
  }" `
  -Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/hl7V2Stores/HL7V2_STORE_ID:import" | Select-Object -Expand Content

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

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

התשובה מכילה שם פעולה. כדי לעקוב אחרי סטטוס הפעולה, אפשר להשתמש ב-method‏ Operation get:

$cred = gcloud auth application-default print-access-token
$headers = @{ Authorization = "Bearer $cred" }

Invoke-WebRequest `
  -Method Get `
  -Headers $headers `
  -Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID" | Select-Object -Expand Content

אם הבקשה מצליחה, השרת מחזיר תגובה עם סטטוס הפעולה בפורמט 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.ImportMessages",
    "createTime": "CREATE_TIME",
    "endTime": "END_TIME"
  },
  "done": true,
  "response": {
    "@type": "type.googleapis.com/google.cloud.healthcare.v1.hl7v2.ImportMessagesResponse"
  }
}

פתרון בעיות בבקשות ייבוא של HL7v2

אם מתרחשות שגיאות במהלך ייבוא הודעות HL7v2, השגיאות נרשמות ביומן ב-Cloud Logging. מידע נוסף זמין במאמר צפייה ביומני שגיאות ב-Cloud Logging.

אם פעולה ממושכת מחזירה שגיאה, אפשר לעיין במאמר בנושא פתרון בעיות בפעולות ממושכות.