מה זה פייר – סקירה פשוטה עבור טכנולוגים

To read this in English, click here

תקן HL7® FHIR® – Fast Healthcare Interoperability Resources – הוא תקן שנוצר להחלפה מוצלחת וקלה של נתוני בריאות מכל הסוגים בין ארגוני רפואה ובריאות. FHIR® הוא קוד פתוח ונהנה מקהילה בינלאומית צומחת, בחסות HL7®.

HL7® FHIR® נועד לפתור את אחת הבעיות הקשות ביותר בתחום הבריאות – אינטראופרביליות (מה שנקרא בעברית “תפעוליות בינית” אבל ניתן לקרוא לו גם פעולה הדדית: היכולת של ארגונים להחליף ביניהם מידע ולעשות בו שימוש) שכמעט איננה קיימת. כל ארגון שומר נתונים בצורה מסוימת, בהתאם להחלטות שהתקבלו על ידי מהנדסי המערכת והנתונים של כל ארגון. זו לא בעיה עד שהנתונים האלה צריכים להישלח לארגון אחר.

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

  • טרמינולוגיות (אילו קודים משמשים לייצוג מושגים – קליניים או אחרים)
  • אפסים מובילים – לשמור אותן או לבטל אותן?
  • אופן טיפול ושמירה של שמות – שם משפחה או שם פרטי? מה לגבי קידומות?
  • יחידות מדידה (בעייתי במיוחד בעת מתן תרופות)
  • פורמטים של תאריך ושעה
  • טפסי הסכמה

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

FHIR® הוא תקן די נוקשה

 הוא קובע כללים ברורים מאוד עבור כל סוג של משאב ועדיין מאפשר גמישות רבה באמצעות הרחבות שקל מאוד ליצור ולהגדיר. כך FHIR®  מאפשר ליצור כללים ברורים בנוסף לכך שהוא מספק מקום להערות והגדרות שיבהירו את כל הדרוש למשתמשים ב”קצה השני” של העברת הנתונים.

FHIR® בנוי על כמה שכבות של משאבים, או “רמות”, כל אחת מהן בנויה על קודמתה:

רמה 1: מסגרת בסיסית עליה בנוי המפרט. היא כוללת את התיעוד הבסיסי, ייצוגיי XML ו-JSON,   סוגי נתונים (DataTypes) והרחבות (Extensions).

רמה 2: תמיכה ביישום וקשירה (Binding) למפרטים חיצוניים. זה המקום בו לומדים על הסוגים הבסיסיים ביותר של מושגים ומשאבים, תמיכת מיישמים, אבטחה, התאמה, טרמינולוגיה ומודול ההחלפה.

רמה 3: קישור למושגים בעולם האמיתי במערכת הבריאות. המודול האדמיניסטרטיבי מכסה את נתוני הבסיס שמקושרים לאחר מכן למודולים האחרים עבור תוכן קליני, כספים/חיובים, זרימת עבודה וכו’. הוא בנוי על המודולים של פלטפורמת הטכנולוגיה של FHIR.

רמה 4: שמירת תיעוד והחלפת נתונים עבור תהליכים במערכת הבריאות. המודולים ברמה זו הם מה שניתן לכנות “הלחם והחמאה” של שירותי הבריאות. מקליניקה, תרופות ואבחון; לפיננסים ולזרימת עבודה.

רמה 5: חשיבה\הנמקה קלינית. מעניק יכולות לתת נימוקים לגבי תהליכים בשירותי בריאות.

מסגרת (Framewrok):

FHIR® מבוסס על “משאבים” שהם אבני הבניין הנפוצות לכל חילופי המידע. משאבים הם ייצוג ברמת המופע של ישות רפואית כלשהי. לכל המשאבים יש את המרכיבים הבאים:

  • כתובת URL המזהה את המשאב
  • מטא-נתונים (Metadata) נפוצים
  • סיכום XHTML הניתן לקריאה על ידי אדם
  • סט של רכיבי נתונים מוגדרים – שונה עבור כל סוג של משאב
  • מסגרת להרחבה לתמיכה בשונות בשירותי הבריאות

מופעי משאבים מיוצגים כ-XML, JSON או RDF וכרגע ישנם 145 סוגי משאבים שונים המוגדרים במפרט FHIR.

כל מופע של משאב מורכב מהבאים:

  • resourceType – נדרש: FHIR מגדיר סוגים רבים ושונים של משאבים.
  • id – המזהה של משאב זה. תמיד נוכח כאשר משאב מוחלף, למעט במהלך פעולת היצירה.
  • meta – קיים בדרך כלל: נתוני שימוש/הקשר נפוצים לכל המשאבים ומנוהלים על ידי התשתית. חסר אם אין מטא נתונים.
  • טקסט – מומלץ: XHTML המספק ייצוג קריא אנושי עבור המשאב.
  • הרחבה – אופציונלי: הרחבות המוגדרות על ידי מסגרת ההרחבה.
  • נתונים – אופציונלי: רכיבי נתונים – סט שונה, המוגדר עבור כל סוג של משאב.

URL

דרך חשובה לזיהוי משאבים היא על ידי מתן כתובת URL. זה לא מוגדר חובה, אבל מועדף מאוד. כתובת האתר מזהה את המשאב ומציינת מהיכן ניתן לגשת אליו. אם הגישה למשאב מתבצעת דרך ה-API RESTful  של FHIR  כתובת האתר של המשאב היא [base]/[resourceType]/[id] כאשר ה-resourceType והמזהה מגיעים מהמשאב.

אינטראקציות

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

תהליכי יצירה/מחיקה של משאבים כוללים פעולת HTTP POST. כל השאר מבוססים על GET.

דוגמאת יצירה:  POST https://example.com/path/{resourceType}

בעת יצירה או עדכון של משאב, אם הכל ילך כשורה, תקבל קוד 201 עם כותרת מיקום המכילה פרטים על המשאב החדש/המעודכן. אחרת, השרת יחזיר דוח שגיאה מפורט. בכל המקרים, ההודעה תכלול גם משאב OperationOutcome עם מידע נוסף.

קריאת משאב מתבצעת על ידי שליחת בקשות HTTP GET לנקודת הקצה הרצויה של סוג המשאב.

דוגמאת קריאה:  GET https://example.com/path/{resourceType}/{ID}

בנוסף לקבלת משאבים ידועים בודדים, ניתן למצוא אוסף של משאבים על ידי חיפוש בנקודת הקצה (endpoint) של סוג המשאב עם קבוצת קריטריונים המתארת את קבוצת המשאבים שיש לאחזר, ואת הסדר שלהם. הדפוס הכללי הוא:

GET https://example.com/path/{resourceType}?criteria

הקריטריונים הם קבוצה של פרמטרים של HTTP שמציינים אילו משאבים להחזיר. למשל פעולת החיפוש:

GET https://example.com/base/MedicationRequest?patient=347

מחזיר את כל המרשמים שנוצרו עבור המטופל לעיל. התשובה לבקשת חיפוש היא Bundle: רשימה של משאבים תואמים עם כמות מסויימת של מטאדאטה  (ראה אתר FHIR® למידע נוסף).

בקשות עדכון דורשות בקשת HTTP PUT הכוללת את הגרסה החדשה שברצונך ליצור בשלמותה. זה גם יחזיר תשובה עם כל המידע שהייתם מצפים לקבל מבקשת יצירה.

ניהול שונות

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

לדוגמא: בישראל כל התושבים חייבים להשתייך לאחת מ-4 קופות חולים לאומיות. המשאב הבסיסי לא יודע לטפל בדרישה הזו, אף על פי שמדובר בפיסת מידע חיונית לחלוטין. לכן נוצרה הרחבה למטרה זו.

טיפים

על מנת להיות מפתח מוכשר באקוסיסטם של FHIR®, כדאי להבין עובדה חשובה על ההבדלים בין FHIR מקומי לגלובאלי. FHIR נועד להיות תקן בינלאומי עם גמישות ויכולות הרחבה המאפשרות לכל מדינה, ואפילו לכל ארגון להקים מערכת משלהם. עם זאת, אלא אם כן אתם מיישמים פתרון מיוחד למקרה/ארגון ספציפי מאוד – ככל שהיישום שלכם גנרי יותר, כך ייטב, מכיוון שניתן להשתמש בו בקנה מידה גדול יותר. זה נכון במיוחד אם ברצונכם ליצור אפליקציה מבוססת FHIR. מפתחים מקומיים בדרך כלל מבססים את עבודתם על פרופילים לאומיים שנקבעו מראש, בעוד שמפתחים גנריים משתמשים בהגדרות הבסיס, מה שמאפשר את הקהל ואת מגוון השימושים הרחבים ביותר. הבעיה היא שהווריאציות הן בעצם אינסופיות. מה ניתן לעשות בנידון?

ראשית, נסו כמיטב יכולתכם להשתמש בהגדרות הבסיס. השתמשו בהסברי טקסט ברורים לאורך כל היישום שלכם היכן שהמשאבים מאפשרים זאת (ישנן מספר אפשרויות לכך), ובכל מקום אפשרי, השתמשו בטרמינולוגיות סטנדרטיות.

דוגמאות למערכות קידוד שכאלה: SNOMED, LOINC, UCUM, OMIM, HGVS.

לבסוף, אנו ממליצים ללמוד FHIR Shorthand (FSH) (יש לנו קורס בנושא, לכל המעוניינים!), דרך עוצמתית לכתיבת משאבי FHIR בשבריר מהזמן ובהרבה פחות הקשות מקלדת.

————————–

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

More To Explore