Hapi يختنق على HL7 Z-Potsments
سؤال
أحاول استخدام هابي لتحليل الرسائل HL7 (v2.3) التي تم إنشاؤها بواسطة نظام خارجي. تتضمن هذه الرسائل شرائح Z مخصصة ، بما في ذلك الجزء الثاني من الرسالة (بين MSH و EVN).
MSH
Z
EVN
...
المشكلة هي أنه بالنسبة لأي شرائح يتم تحليلها بعد مواجهة هذا الجزء الأول Z ، ستقوم HAPI بإنشاء بنية الرسائل ولكن جميع البيانات في هذا الهيكل فارغة. لذلك ، لا يزال لدي كائن قطاع EVN ، لكن لن يحتوي على أي بيانات فيه.
لقد حاولت:
- لا شيء ، فقط تحليل الرسالة مع Hapi خارج الصندوق ، وتجاهل هذا الجزء
- تمديد HAPI عن طريق إنشاء فئات رسائل ADT الخاصة بي (تمديد الفئات الافتراضية) التي تواصل في قطاع Z مع:
- addnonstandardSegment ()
- إضافة () مع تنفيذ مخصص لـ AsstractSegress
الحل الحالي هو التخلص من الرسالة قبل أن يحصل عليها Hapi وقطع هذا الجزء ، ولكن هذا بالتأكيد هو النهج الخاطئ. هل لدى أي شخص أفكار حول ما يجب أن أفعله؟
المحلول
فهمتك. اتضح أنه بسبب القطعة Z خارج المكان (المزيد على هذا أدناه) ، كان كائن EVN يتم فهرسته داخليًا على أنه "EVN2" وتم إضافة EVN فارغًا ثانٍ. لست متأكدًا تمامًا لماذا تصرف الرمز بهذه الطريقة ، لكنني سأخذ ذلك في تقرير قضية في مشروع HAPI.
الحل هو تغيير تمديد رسالة ADT. بدلاً من توسيعه وإضافة الجزء z مع هذا. add () في مُنشئ الفئة الفرعية الخاصة بي ، اضطررت إلى نسخ فئة ADT_A* الأصلية وتعديل طريقة init () لإضافة فئة Z في الترتيب الصحيح مثل المتوقع رسالة.
راجع للشغل ، يمكن القيام الحل السابق الذي ذكرته مع أ المحلل الفرعي, ، وهو أمر صالح لإصلاح الرسائل المكسورة - وليس فقط هذه الرسائل ، لأنها ليست "مكسورة" في حد ذاتها.