פתרון בעיות

במאמר הזה מוסבר על שלבים לפתרון בעיות שיוכלו לעזור לכם אם נתקלתם בבעיות בשימוש ב-Cloud Healthcare API.

לא ניתן להפעיל את Cloud Healthcare API

כשמפעילים את Cloud Healthcare API בפעם הראשונה בפרויקט ב-Google Cloud , יכול להיות שתופיע שגיאת הרשאות שמציינת שאין לכם הרשאה להפעיל ממשקי API בפרויקט. Google Cloud

במאמר הפעלה והשבתה של ממשקי API מוסבר איך להפעיל ממשקי API, כולל Cloud Healthcare API. Google Cloud

אי אפשר לבצע אימות ל-Cloud Healthcare API

כשקוראים ל-Cloud Healthcare API, יכול להיות שתקבלו הודעת שגיאה שמציינת ש-Application Default Credentials לא זמינים.

במאמר אימות ל-API מוסבר איך להגדיר Application Default Credentials או איך להעביר פרטי כניסה לאימות באופן ידני לאפליקציה או לפקודה.

חסר חשבון השירות של Cloud Healthcare API או תפקיד Healthcare Service Agent

חשבון השירות Cloud Healthcare Service Agent נוצר באופן אוטומטי כשמפעילים את Cloud Healthcare API ויוצרים את מערך הנתונים הראשון. זהו חשבון שירות בניהול Google. אי אפשר למחוק את חשבון השירות לגמרי, אבל בנסיבות מסוימות הוא לא יופיע בדף ניהול הזהויות והרשאות הגישה, ואולי תיתקלו בבעיות ב-Cloud Healthcare API.

כדי ש-Cloud Healthcare API יפעל בצורה תקינה ויבצע משימות כמו פרסום וקבלת הודעות מ-Pub/Sub או כתיבת מדדים ל-Cloud Logging, חשבון השירות Cloud Healthcare Service Agent צריך להתקיים וצריך להיות לו תפקיד IAM‏ Healthcare Service Agent.

אם נתקלים באחת מהבעיות הבאות, אפשר ליצור מחדש את חשבון השירות Cloud Healthcare Service Agent או להקצות לו את תפקיד ה-IAM‏ Healthcare Service Agent:

  • חשבון השירות Cloud Healthcare Service Agent לא מופיע בדף ניהול הזהויות והרשאות הגישה.
  • תוכלו למצוא את חשבון השירות Cloud Healthcare Service Agent, אבל הוא לא כולל את התפקיד Healthcare Service Agent.

משתמשים ב-Google Cloud CLI כדי להוסיף את התפקיד healthcare.serviceAgent לחשבון השירות Cloud Healthcare Service Agent באמצעות המזהה של חשבון השירות, שמופיע בפורמט service-PROJECT_NUMBER@gcp-sa-healthcare.iam.gserviceaccount.com.

כדי ליצור מחדש את חשבון השירות או להקצות לו את תפקיד ה-IAM‏ Healthcare Service Agent, מריצים את הפקודה gcloud projects add-iam-policy-binding. כדי למצוא את PROJECT_ID ואת PROJECT_NUMBER, אפשר לעיין במאמר זיהוי פרויקטים.

gcloud projects add-iam-policy-binding PROJECT_ID \
    --member=serviceAccount:service-PROJECT_NUMBER@gcp-sa-healthcare.iam.gserviceaccount.com \
    --role=roles/healthcare.serviceAgent

אם הבקשה מבוצעת בהצלחה, בשורת הפקודה תוצג הודעה שדומה לדוגמה הבאה:

Updated IAM policy for project [PROJECT_ID].
bindings:
...
- members:
  - serviceAccount:service-PROJECT_NUMBER@gcp-sa-healthcare.iam.gserviceaccount.com
  role: roles/healthcare.serviceAgent
...
etag: VALUE
version: VALUE

חוזרים אל הדף 'ניהול זהויות והרשאות גישה' ומוודאים את הפרטים הבאים:

  • בעמודה Member מופיע מזהה של חשבון שירות בפורמט service-PROJECT_NUMBER@gcp-sa-healthcare.iam.gserviceaccount.
  • באותה שורה של העמודה Member, בעמודה Name מופיע Cloud Healthcare Service Agent.
  • באותה שורה של העמודה חבר, בעמודה תפקיד מופיע סוכן שירותי בריאות.

חבילת עסקאות של FHIR בוטלה בגלל עומס מצטבר כבד

כשמבצעים חבילת עסקאות של FHIR, יכול להיות שתופיע הודעת שגיאה שמציינת שהבקשה "בוטלה בגלל עומס מצטבר כבד על ביצוע חבילת עסקאות".

כשמבצעים חבילות של טרנזקציות, אין הגבלה על כמות ההתנגשויות של נעילות שאפשר ליצור. לדוגמה, אם יוצרים קבוצה של חבילות שבה כל חבילה מעדכנת משאב משותף יחיד של מטופל וגם יוצרת כמה משאבים אחרים שלא משותפים, ומבצעים את הפעולות האלה במקביל, הזמן שיידרש יגדל במהירות כי כל חבילה צריכה להחזיק את הנעילה של המשאב המשותף של המטופל למשך העסקה כולה. כתוצאה מכך, יתחיל פסק זמן (timeout) בחיבורים שלהם. כש-Cloud Healthcare API מזהה חבילות טרנזקציות שזמן ההמתנה שלהן הסתיים, הוא דוחה באופן זמני את כל חבילות הטרנזקציות עם הודעת השגיאה הזו, כדי לנסות לאפשר לבעיה להיפתר.

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

  • משתמשים בחבילות של קבוצות אם לא צריך סמנטיקה של טרנזקציות. חבילות של פעולות בקבוצה מונעות את הבעיה הזו לחלוטין כי הן לא אטומיות. עם זאת, הפעולה הזו מפחיתה את האכיפה של השלמות הרפרנציאלית.
  • אם אתם יכולים לזהות איזה משאב מתעדכן במקביל, כדאי לבדוק אם אפשר להוציא את העדכונים האלה מהמשוואה או להימנע מהם. ב-FHIR, זה קורה אם יוצרים משאב חדש כמו Observation (תצפית) וגם מעדכנים את המטופל המשויך (או הארגון, המיקום, המכשיר וכו') שכבר קיים ולא משתנה.
  • הגבלת קצב בצד הלקוח. אם חבילות העסקאות שלכם לוקחות הרבה זמן לביצוע, כדאי להקטין את קצב ההטמעה לפני שהבקשות מתחילות לפוג.