HAKEEM: السجل الصحي الإلكتروني الوطني الأردني
السجل الصحي الوطني للأردن على VistA/GT.M، طُرح في أربعة مستشفيات. كتب محمد خير روتينات MUMPS وواجهات C# وتطبيقات جوالة كمطوّر ومحلل نظم.
في 2010، أُطلق Node.js v0.4 وقضى الإنترنت العام يتجادل حول ما إذا كان JavaScript على السيرفر إفيه ولا مشروع جاد. في نفس الوقت، وأنا في الثانية والعشرين من عمري، كان فريق Electronic Health Solutions (EHS) - شراكة بين القطاعَين العام والخاص بين الحكومة الأردنية وتكتّل مزودي رعاية صحية - يكتب روتينات MUMPS لوحدة صرف الأدوية في سجل صحي إلكتروني وطني كان سيخدم في نهاية المطاف أربعة مستشفيات في الأردن.
كان ذلك HAKEEM. دور الفريق: مطوّر ومحلل نظم، 2010 إلى 2013. ثلاث سنوات. أربعة مستشفيات. نظام على نطاق وطني مبني على منظومة تقنية تجعل المهندسين الحديثين يعملوا وش “هو ده لسه شغّال؟” - وهو ما تبيّن أنه التحضير المثالي للعقد التالي.
ما بُني عليه HAKEEM
بُني HAKEEM على VistA - Veterans Information Systems and Technology Architecture التي طوّرتها وزارة شؤون المحاربين القدامى الأمريكية. VistA من أطول أنظمة السجلات الصحية الإلكترونية عمراً على كوكب الأرض، مُنشرة في مستشفيات المحاربين القدامى الأمريكيين منذ الثمانينيات. تعمل على MUMPS (لاحقاً M)، وهي مزيج قاعدة بيانات هرمية ولغة لا يشبه شيئاً آخر كتبته.
كان القرار سليماً. VistA مُختبَرة ميدانياً بطريقة تكافح السجلات الصحية التجارية في مجاراتها: وحدات صيدلانية ودعم قرار سريري وجدولة وفوترة، كلها تحت نموذج بيانات متماسك واحد. المصدر المفتوح يعني أن الأردن لم يكن بحاجة لترخيص برمجيات احتكارية لنشر وطني. حقيقة أنها تعمل على GT.M، قاعدة بيانات NoSQL هرمية، تعني أنك تحتاج مهندسين يستطيعون قراءة MUMPS وغير خائفين من منظومة عمرها أربعون عاماً.
كيف بدا العمل فعلاً
اللقب كان مطوّر/محلل نظم. عملياً، كانت ثلاثة مسارات عمل مستقلة تسير بالتوازي.
روتينات MUMPS. كتب الفريق روتينات M في ثلاث حزم: الصيدلية والفواتير ورسائل HL7. منطق صرف الأدوية في MUMPS أحد تلك الأشياء التي تُهين حساسيتك الجمالية ثم تعمل بشكل صحيح لأربعين عاماً. المتغيرات عامة افتراضياً. قاعدة البيانات هي اللغة - globals (مصطلح MUMPS للمتغيرات الدائمة) تُعيَّن مباشرة إلى هيكل قاعدة البيانات الهرمي. الروتين ملف. لا توجد دوال بالمفهوم الحديث؛ ثمة تسميات ومكافئات GOTO تُزعج مؤيدي البرمجة الهيكلية. ومع ذلك: منطق الصرف المكتوب لوحدة صيدلانية HAKEEM يعمل على الأرجح بشكل ما في مستشفيات أردنية حتى اليوم. ومش كتير من أطر JavaScript تقدر تقول عليها كده.
تطبيقات واجهة رسومية C#. الاثنتان الرئيسيتان كانتا واجهة إدارة معلومات المريض وواجهة الجدولة، كلاهما يتواصلان مع backend VistA عبر بروتوكول RPC Broker الخاص به. تبدو مملّة. لم تكن كذلك. إدارة معلومات المريض في سجل صحي وطني تعني أن واجهة ممرضة التسجيل هي نقطة دخول البيانات التي تتدفق إلى كل نظام مصبّ - صيدلية ومختبرات وفواتير وتقارير. ابنِ الواجهة بطريقة تسمح بإدخال بيانات رديئة، وستُصحّح عدم تطابق معرّفات المرضى في مستشفى الأمير حمزة ستة أشهر بعد الإطلاق. لواجهة الجدولة ثقل مشابه: جدولة عيادة خارجية في عيادة عمّان الشاملة تعني مواعيد عبر أقسام متعددة ومعالجة إلغاء وتقارير توظيف. برمجيات مملّة مهمة جداً حين تنكسر.
واجهات رسومية جوالة. في 2012. لسجل صحي إلكتروني. Java لـAndroid وObjective-C لـiOS. الرعاية الصحية الجوالة في 2012 لم تكن مجالاً ناضجاً - كان Android على الإصدار 4.0، وiOS 6 على بُعد أشهر، وأعراف تجربة المستخدم للأطباء الذين يصلون إلى سجلات المرضى عبر جهاز جوال لم تكن موجودة بعد. كان الفريق يكتشفها تحت قيد أن قراءة خاطئة لسجل مريض على جهاز جوال لها آثار على سلامة المريض لا تملكها قراءة تغريدة بشكل خاطئ.
نصوص Bash للنسخ الاحتياطي. هذا أيضاً جزء من العمل. قاعدة بيانات GT.M عملت على خوادم Linux وكانت تحتاج نسخاً احتياطياً موثوقاً وإدارة مهام. مش لامع. بس شايل الشغل التقيل. المستشفيات التي تفقد بياناتها تملأ الأخبار لأسباب خاطئة.
أربعة مستشفيات، أربع قصص نشر
طُرح HAKEEM في أربعة مرافق، وكل منها كان مشروعه الخاص.
مستشفى الأمير حمزة كان المستشفى العام الكبير - حجم عالٍ وتخصصات متعددة والبعد الكامل من قدرات السجل الصحي. حيث تكتشف ما إذا كانت تسجيل المرضى والجدولة يتوسعان حين لديك مئات الزيارات الخارجية يومياً.
عيادة عمّان الشاملة كانت النموذج الخارجي. أخف على الرعاية الداخلية، أثقل على إدارة المواعيد ومتابعة الأمراض المزمنة. واجهة الجدولة أثبتت جدارتها هنا.
مستشفى الأمير حسين كانت له متطلبات سير عمل سريرية لم تتطابق بشكل نظيف مع تكوين VistA الافتراضي. تخصيص على طبقة MUMPS. نوع العمل الذي تقرأ فيه روتيناً من 1993 وتقرر أي السطور ستُغيّر دون كسر كل شيء في المصبّ.
مركز الحسين للسرطان كان مشروع التكامل - المركز كان لديه سجله الصحي الخاص ومريضوه الخاصون وسير عمله الخاص، وكان يحتاج الاتصال بـHAKEEM عبر HL7 v2. ذلك التكامل أنجزه الفريق وموثَّق بشكل منفصل؛ الملخص القصير هو: تحليل هوية المريض عبر مساحتَي MRN، وترتيب الأحداث، وتحليل وتحويل الرسائل المفصولة بأنبوب.
ما تعلّمك إياه البنية التحتية الوطنية
ثلاث سنوات على HAKEEM علّمت شيئاً يحمله كل مشروع تالٍ: الفجوة بين “برمجيات تعمل” و”بنية تحتية تعتمد عليها دولة” هي مشكلة تنظيمية، لا تقنية.
الكود كان صعباً. MUMPS صعبة بطرق مشروعة، ليست جمالية فقط. HL7 صعبة. كتابة واجهة EHR جوالة في 2012 قبل أن يكون لدى أي أحد دليل لذلك كان صعباً.
لكن المشاكل الأصعب لم يكن لها مُصحِّح. أي مستشفى يحصل على sprint التخصيص التالية؟ من يملك القرار حين يحتاج مستشفيان تعديلات متعارضة على نفس روتين MUMPS؟ ماذا يعني التراجع حين أنت في منتصف النشر في مرفق يرى مرضى في الصباح التالي؟
المهارات التقنية من تلك السنوات الثلاث كانت ذات قيمة. الفهم لكيفية فشل الأنظمة المعقدة على المستوى التنظيمي كان أكثر قيمة. كتابة منطق صيدلانية في MUMPS تبيّن أنها طريقة جيدة جداً للتعلّم بكليهما في آنٍ واحد.