איך מיישמים פייר?
או
ליתר דיוק איך עושים פייר נכון?
זה פרויקט דאטה רגיל.
בערך.
או
שלא?
כבר שוחחנו על כך שפייר אינו רק
טכנולוגיה חדשה ליישום API. אך האם מתאים לחשוב
שזהו פרויקט דאטה?
לפרויקט דאטה יש מתודולוגיה, אבני דרך, תוצרים ומטריצת הצלחות ברורה ומסודרת.
לכל פרויקט דאטה יש גם
מחזור חיים – התחלה, אמצע וסוף. ואכן כך גם המצב בפרויקט FHIR®, פרויקט ליישום
מודל נתונים סטנדרטי ובינלאומי.
לא פעם נתקלנו במחשבה שאם זהו אינו רק API אלא פרויקט דאטה,
אז נתייחס אליו כפרויקט דאטה לכל דבר ועניין וניישם אותו באמצעות המתודולוגיה
שאנו מכירים. אך גם זו טעות.
הבדל מהותי אחד שאפשר לחשוב
עליו בשלב ההתחלתי של המאמר המתגלגל הזה הינו שלב המחקר.
בכל פרויקט דאטה יש שלב מחקר. זהו חקר השוק וחקר המצב הקיים. גם בפרויקט FHIR® יש שלב כזה, וזהו שלב קריטי
ליישום מוצלח. בפרויקט דאטה בוחנים פתרונות אפשריים בארגונים אחרים. גם
בפרויקט FHIR® זה אכן המצב. אך בניגוד לראשון, יישומים מוצלחים
אינם זמינים בשפע מכיוון שאנו עדיין בתחילת דרכנו ביישום FHIR® בארץ.
מה עושים בכל זאת, כאשר פרויקט FHIR® מוצלח תלוי בשלב
זה? בעת החקירה אנו מקווים למצוא יישום מוצלח מהארץ או מהעולם בתחום המבוקש.
היישום יכול להגיע מארגון פרטי בשוויץ, מבית חולים בניו יורק או ממשרד
הבריאות הבלגי. בזמן החיפושים, חברי הקהילה יוכלו לכוון ליישום מוצלח שהם
עצמם מצאו בחיפושים שלהם בעבר. בעוד שבפרויקטי דאטה רבים הבחינה הינה עבור
תוכנה מתאימה או מתודולוגיית עבודה נכונה, שלרוב משמשת את הארגון,
הבחינה בפרויקט FHIR® היא של הפרשנות ושל השימוש הנכון בשפה. שפת FHIR®.
השפה הזו, שכאשר יבוא יום וכולם ישתמשו בה, תהיה מובנת לכל אותם הארגונים משווייץ,
ארה”ב ובלגיה.
אך לא כדאי להקדים
את המאוחר. שלב המחקר הינו רק חלק במתודולוגיית העבודה שלנו כאן באאוטברן.
מסתבר, שגם ליישום פרויקט FHIR® מוצלח יש מתודולוגיה. היא נכתבה במאמצים
רבים, שלל ניסויים, טעויות ותהיות. הנסיון שלנו מושתת על פרויקטים רבים
בשיתוף ועבור משרד הבריאות, קופות החולים, בתי החולים וארגוני בריאות פרטיים.
היינו ועודנו שותפים בכל רמות הפעילות והמעורבות, בין אם בהובלת הפרויקט ובין
אם לצורך ייעוץ.
נוכחנו ללמוד מהנסיון שצברנו במהלך השנתיים האחרונות, אילו טעויות לא לעשות,
במה כדאי להתחיל, למה לשים לב ואיפה להתעמק ולדייק.
אילו טעויות חווינו יחד עם
לקוחותינו בתחילת הדרך, החל מטעויות סינטקס נפוצות ועד לרמת המתודולוגיה- את
כל אלו נפרוס כאן, במאמר המתגלגל. הטעויות הכי נפוצות שנתקלנו בהן,
אותן חשבנו שכדאי לשתף.
כי שיתוף זה חלק מהמוטו שלנו.
למשל, הידעת?
כאשר מבקשים להשתמש בקוד
לצורך תיאור תרופה, ציון מיקום, יחידת מידה, סיווג מפגש או כל מונח בעצם שמתואר
בקוד, ניגשים למערכת קידוד. מערכות קידוד הן חלק בלתי נפרד ממבנה יישות המידע
ב- FHIR®. לצורך שימוש בקוד יש
לציין כמובן את הקוד עצמו, אך גם URL המפנה למערכת הקידוד שאחראית על הקוד.
המערכת יכולה להיות מערכת קידוד בינלאומית כגון LOINC, או מערכת קידוד
מקומית שמתוחזקת ע”י טבלה.
איך יודעים באיזה URL להשתמש? כאן
נופלים גם הטובים ביותר.
ניקח לדוגמא קידוד בינלאומי של
סיווג מפגש בין מטופל למטפל, אובייקט בשם Encounter.class.
האובייקט מסוג Coding. רשימת הקודים נקראת ActEncounterCode והיא רשימה מסוג Extensible.
בלחיצה על רשימת הקודים מגיעים לדף בכתובת:
https://terminology.hl7.org/3.1.0/ValueSet-v3-ActEncounterCode.html
האם זהו ה- URL המבוקש? לא. זוהי רשימת ערכים בלבד ולא
מערכת הקידוד.
בשלב זה חשוב למצוא את המונח הרווח למערכת קידוד code system או CS שיפנה אותנו ל- URL המבוקש.
במקרה שלנו, ה- URL יגיע יחד עם הכותרת
הזאת:
All codes in this table are from the system
http://terminology.hl7.org/CodeSystem/v3-ActCode
כך נראה השימוש בקוד:
מה
ההבדל בין מערכת קידוד למערכת זיהוי?
איך מגדירים URI בצורה נכונה?
איך מבטאים את הקשר בין משאב אחד למשנהו באופן שישקף בצורה הטובה ביותר את
התהליך העסקי המבוקש?
מהם גבולות הפרויקט (רמז: לא מוגדר לפי תכולת מערכת)?
מיהם השותפים לפרויקט FHIR®?
בכל זאת ועוד נדון
במאמר המתגלגל כאן, בהמשך ובהרחבה.
רוצים לדעת עוד? הישארו קשובים.
לפני הכל, FHIR הוא לא רק API
ישנה קונספציה שגויה רחבה למדי בתחום, הגורסת כי פייר הוא בסופו של דבר API להעברת מידע ותו לא. זה רחוק מהאמת; פייר הוא תקן להחלפת מידע רפואי באופן אלקטרוני. הוא מספק קבוצה של ממשקי API, מודלים של נתונים ומשאבים אחרים שניתן להשתמש בהם כדי לבנות מערכות המשתפות ומחליפות רשומות בריאות אלקטרוניות (EHRs) וסוגים אחרים של נתוני בריאות.
פייר תוכנן להיות גמיש ולאמץ בקלות על ידי מגוון רחב של מערכות בריאות, כולל מערכות רשומות רפואיות אלקטרוניות, בתי חולים, מרפאות, בתי מרקחת, מעבדות וסוגים אחרים של ארגוני בריאות. הוא מבוסס על תקני אינטרנט מודרניים וניתן ליישם אותו באמצעות מגוון טכנולוגיות ושפות תכנות.
עם זאת, פייר הוא יותר מסתם API. מדובר במסגרת מקיפה להחלפת מידע רפואי הכוללת קבוצה של ממשקי API, מודלים של נתונים ומשאבים אחרים. הוא נועד לשמש כפתרון מלא לחילופי נתוני בריאות, ולא רק API פשוט לגישה לנתונים. להלן מספר מרכיבים של פייר:
- מודלים של נתונים: פייר מגדיר קבוצה של מודלים של נתונים המייצגים סוגים נפוצים של נתוני בריאות, כגון דמוגרפיה של מטופלים, הזמנות תרופות ותוצאות מעבדה. מודלים אלו מבוססים על ארכיטקטורת המסמכים הקליניים (CDA) של HL7 וניתן להשתמש בהם כדי לייצג מגוון רחב של נתוני שירותי בריאות בצורה עקבית ובעלת פעולה הדדית.
- APIs: פייר כולל קבוצה של ממשקי API בהם ניתן להשתמש לבניית מערכות לחילופי נתוני בריאות. ממשקי API אלה מבוססים על תקני אינטרנט מודרניים, כגון REST ו-JSON, וניתן להשתמש בהם כדי ליצור, לקרוא, לעדכן ולמחוק משאבי בריאות.
- משאבים נוספים: בנוסף לממשקי API ומודלים של נתונים, מסגרת פייר כוללת מספר משאבים נוספים שניתן להשתמש בהם לבניית מערכות בריאות, כגון מדריכי יישום (Implementation Guide), כלי בדיקה וחומרים חינוכיים. ועוד.
מידול
אחת הטעויות הנפוצות בהן אנחנו נתקלים בפרוייקטים מבוססי פייר היא ניסיון להתחיל לממש את הפרוייקט כמה שיותר מהר, ללא עצירה ולקיחת זמן חשוב למדל את הפרוייקט כהלכה. הדבר מוביל במקרים רבים לבזבוז משאבים גדול, שכן שעות עבודה רבות מוקדשות לפיתוח הפרוייקט על פי משאבים לא נכונים או ממקום של חוסר הבנה ברור של מידול פרוייקט על בסיס ההמבנה של פייר. עקומת הלמידה של פייר תלולה יותר ממה שאולי נדמה לנו בהתחלה.
שלב המידול הוא השלב בו מבינים את הפרוייקט לעומק, מאתרים את המשאבים (resources) הנכונים עבור כל ישות בפרוייקט (וגם את הטרמינולוגיות הנכונות!), מבינים מה הקשרים הרצויים בין אותם משאבים, מה המגבלות שלהם ואיפה יש צורך להוסיף הרחבות (extensions) ו\או הגבלות (המתקבלות בעזרת פרופילים) כך שהמשאבים יתאימו לצורך העיסקי שלשמו הפרויקט קם. ללא השלב הקריטי הזה, ההסתברות היא שהעבודה על הפרויקט תהיה שגויה. מכיוון שהשלב הזה רגיש, ויש נטיה לבצע טעויות גם בו, במיוחד כשעדיין אין בארגון ניסיון וידע מספיקים במידול ומימוש של פייר, ההמלצה שלנו היא לקחת מלווה מומחה חיצוני לפרויקט, שיידע לייעץ, לכוון וגם למנוע טעויות.
המלצות נוספות:
- עדיף להימנע מהיצמדות לתהליך עיסקי קיים אלא להגדיר מחדש את התהליך, שכן השימוש בפייר מצריך פעמים רבות דרכי פעולה שונות ואפילו ממש חשיבה שונה ממה שהיה קיים לפני.
- לפני שמתחילים למדל מומלץ מאוד להסתכל על פרויקטים אחרים מהארץ ומהעולם. מישהו ככל הנראה כבר חשב על זה לפניכם וכבר פתר לא מעט מהבעיות. אין ספק שבסופו של דבר תצטרכו להתאים את הפרויקט לצרכים הספציפיים שלכם, אבל סביר להניח שלפחות חלק מהפתרון כבר קיים שם בחוץ. זכרו תמיד – פייר היא קהילה בינלאומית של שיתוף פעולה, וזה כולל פילוסופיה של קוד פתוח – הכל מפורסם, הכל קיים, אפשר להעתיק מכולם. להמציא את הגלגל מחדש זה כל כך המאה ה-20.
דאטה פלואו (Data Flow)
כל פרוייקט פייר כולל בתוכו גם תכנון של השלבים השונים בדאטה פלואו – איך הנתונים מגיעים אלינו, איך אנחנו מנהלים אותם, באיזה שלב בתזרים הנתונים אנחנו יוצרים את משאב הפייר שלנו וכו’. שלב חשוב מאוד הוא תכנון שלבים כגון קליטת הנתונים, עריכת הנתונים, מחיקה, ולא פחות חשוב – איך נמנעים מכפילויות מידע. הדבר מצריך לא מעט פעמים ארכיטקט שילווה את התהליך והתייעצות בכל שלב ושלב עם כל הגורמים המקצועיים העסוקים בנושא הדאטה בארגון, בין אם מדובר בצוותי ארכיטקטורה, תשתית או פיתוח. אף פעם אי אפשר פשוט להניח הנחות בשלב הזה. בשלב הזה אנחנו גם נרצה לתכנן את כל נושא המזהים הלוגיים של המשאבים שלנו בתוך הארגון.
שלב הדאטה כולל גם את כל תכנון ה- storage, כיצד נשמרים הנתונים – האם אנחנו משנים את הדרך בה הארגון שמר את הנתונים עד כה, שטח אחסון נחוץ יכולת להרחיב אותו תוך כדי תנועה לפי הצורך ועוד. השלב הזה הוא פעמים רבות שלב שקובע לא מעט מהעלות של הפרוייקט וגם עלול לתקוע את הפרוייקט מכיוון ובארגונים גדולים, כל הנושא של רכש איטי מאוד פעמים רבות.
בשל הרגישות הגדולה מאוד של שלב הדאטה, טוב תעשו אם תעצרו בכל שלב בתהליך ותעשו סקירה של כל מה שקרה עד עכשיו ומה הולך לקרות. סקירות שכאלה הן פעמים רבות המקום היחיד בו אחד החלקים בתהליך מתריע על בעיה, כשכל האנשים הנחוצים נמצאים באותו החדר.
טרמינולוגיה
ברוב ארגוני הבריאות, וכמובן בסוגים רבים אחרים של ארגונים, מערכות הטרמינולוגיה הן מערכות “לגסי” וותיקות. כמו כן לרוב הארגונים יש טבלאות ערכים פנימיות שהן, בהגדרה, אינן אינטראופרביליות. כמו כן, לא תמיד המידע הזה מנוהל במרוצת השנים כמו שצריך, ערכים מתיישנים והופכים ללא רלוונטיים, ערכים מודרניים יותר לא תמיד מוצאים את דרכם לתוך מערכות אלה ואנחנו מוצאים את עצמינו עם טבלאות ערכים מיושנות שאינן מעודכנות דיין. לעיתים אין אדם אחד באירגון שיודע לומר מתי או מי ערכו את המערכות הללו, האם עודכנו מתישהו, למי הן מיועדות ומי בכלל עושה בהן שימוש. הדבר מוביל לרשימות ערכים סותרות או לפחות שונות בתוך הארגון עצמו, יצירה של רשומות עם ערכים שמתאימים לחלק אחד מהארגון אבל לא לחלק אחר (אין בכלל מה לדבר על יכולת להעביר את המידע הזה בין ארגונים) וכמובן לכפילויות.
כשאתם ניגשים לפרוייקט פייר, ראוי עוד לפני תחילת המימוש לשאול את עצמכם איפה ינוהלו כל טבלאות הערכים וההמרות שלהן, במיוחד כשלרוב הארגונים המממשים היום עדיין אין שרת פייר ייעודי, ולכן יש צורך לנהל את הכל על גבי שרתים רגילים. מכאן שיש צורך לקבוע מיקומים מדוייקים בארגון בהם יישמרו ולקבוע ערכי URI מוסכמים לזיהוי של כל הטרמינולוגיות באירגון. כמו כן למנות גורם שיהיה אחראי על שימור המצב אחרי שעשיתם את הסדר הדרוש וידאג שכל הטבלאות יהיו מנוהלות ועדכניות, ואפילו, אם יש צורך בזה, לנהל אותן ברמת שמירת זכרון בשרתים (וזכרון מטמון). אותו אדם גם יהיה אחראי לנקות את הטבלאות מערכים מיושנים ומכפילויות המצטברות בכל ארגון, והעלולים להוביל לבעיות בעת המימוש.
ללא העבודה הזו אנחנו עלולים למצוא את עצמינו עם משאבי פייר ללא ערכים או עם ערכים מוטעים וכל העבודה הקשה שהשקענו בתכנון ובמימוש תיפול על הטרמינולוגיה – וכל מי שמתעסק בטרמינולוגיות יודע שמדובר באבן דרך גדולה מאוד בתוך כל פרוייקט.
המאמר ימשיך להתעדכן בהמשך. הישארו עימנו!