⚖️

القرار المعماري: مَن يبني على مَن (The Architecture Verdict)

بعد مسح كامل للأدلة (تسعة أقسام موثقة من الشيفرة الفعلية)، وثلاثة مقترحات معمارية متنافسة، ومراجعة تحكيمية عدائية من ثلاث عدسات (الواقع الهندسي، التشغيل السريري، الأعمال والمنتج) — هذا هو القرار النهائي المسبب: مَن هو نواة الـ HIS، وأين يقف OBGY، وكيف يرتبط كل طرف بالآخر. القرار يحترم حرفياً كل القرارات الملزمة المعتمدة سابقاً: Modules/HIS موديول واحد، الاعتماديات أمامية فقط نحو LIS/Accounting/HRM، الرجوع بالأحداث فقط، LIS لا يُمس، ومرضى B2B يبقون في lab_patients.

أولاً: هل يكون OBGY هو نواة الـ HIS؟ — الجواب: لا، بإجماع الأدلة

القرار: OBGY ليس نواة الـ HIS ولن يكون. النواة هي Modules/HIS جديد يُبنى على منصة Moon ERP، ويُستخدم OBGY كـ«بذرة تصميم ومحتوى وأول عميل تجريبي». الأسباب الحاسمة، كلها موثقة من التحليل نفسه:

في المقابل، قيمة OBGY الحقيقية لا تُهدر بل تُحصد في أربعة أشكال: (1) بذرة تصميم مُجرَّبة ميدانياً للنواة العامة (المواعيد/الطابور/فترات اليوم — حيث تسجل المنصة أضعف درجاتها 1/10، ونمط توحيد 18 جدولاً مستنسخاً في 4 جداول متعددة الأشكال، ومحرك الأسئلة والأجوبة، وسير العمليات الجراحية)؛ (2) حزمة محتوى تخصصية كاملة داخل Modules/Obgy؛ (3) أول عميل تجريبي مدفوع مع 10 سنوات بيانات حقيقية و~190 قائمة مصطلحات عربية منسّقة؛ (4) إثبات أن المرحلة الأولى الخارجية (العيادات) قابلة للبيع مستقلة.

ثانياً: موديول منفصل أم مدمج؟ — الجواب: موديولان منفصلان بقاعدة ذهبية

القرار: فصل تام. Modules/HIS موديول واحد (التزاماً بالقرار المعتمد D2) يحمل النواة السريرية المحايدة للتخصص، وModules/Obgy موديول تخصصي مستقل يركَّب فوقه. القاعدة الذهبية — وهي نفسها التي تُبقي LIS قابلاً للبيع مستقلاً اليوم — تطبَّق درجة أعلى: HIS لا يستورد Obgy أبداً، ولا يذكر اسم أي تخصص في شيفرته؛ Obgy يستورد HIS أمامياً فقط، ويُسجّل نفسه عبر نقاط امتداد (PermissionDependencyRegistry وEncounterContentRegistry). هذا هو ما يجعل باقة «Moon Clinic» قابلة للبيع لمستشفى عام بلا قسم نساء، ويجعل مفتاح ترخيص Obgy ذا معنى تجاري حقيقي.

ثالثاً: علاقة كل طرف بالآخر — جملة واحدة لكل علاقة

العلاقةالجملة الحاكمة
ERP ↔ LISLIS موديول تخصصي يركب على قضبان المنصة (BaseModel للتينانسي والتدقيق، DataScope للفروع، SequenceService للترقيم) ويرحّل مالياً حصراً عبر CreateJournalEntry — والمنصة لا تعرف شيئاً عن دواخله.
ERP ↔ HISHIS يستهلك خدمات المنصة أمامياً (Core وAccounting وHRM وInventory وNPHIES) عبر Actions وServices معلنة، والمنصة لا تتغير إلا بالترقيات المعتمدة في سجل التعميم (أبرزها استخراج ChargePostingService من PostLabInvoice).
HIS ↔ LISHIS يطلب التحاليل أمامياً عبر Modules\LIS\Actions\CreateLabRequest ممرراً encounter_id، وLIS لا يستورد HIS أبداً — المعلومات تعود خلفياً فقط عبر أحداثه القائمة LabResultReleased / LabRequestCompleted / CriticalResultDetected بصفر تعديل على LIS.
HIS ↔ OBGYObgy يستورد HIS أمامياً (يفتح his_encounters، يرحّل بنوده إلى his_folio_charges، يبني شيتاته على محرك النماذج والقواميس) ويسجّل صلاحياته وتبويباته عبر السجلات — وHIS لا يستورد Obgy ولا يسميه أبداً.
OBGY ↔ LISشيتات Obgy تطلب التحاليل عبر مسار HIS نفسه (CreateLabRequest + جدول الربط obgy_lis_test_map لـ276 فحصاً قديماً)، وتحاليل الذكورة والهرمونات تصبح فحوصات في كتالوج LIS نفسه بمدياتها المرجعية (WHO) — والنتائج تعود بالأحداث.
OBGY ↔ ERPمريضة OBGY تصبح صفاً داخلياً في lab_patients مربوطاً مالياً عبر partner_id → AccBpExt (ما يلغي مزامنة cURL القديمة نهائياً)، ودواؤها في صنف Core Product ومخزون Inventory، ونقودها لا تمر إلا عبر his_folio_charges → ChargePostingService → CreateJournalEntry.

رابعاً: مقارنة المقترحات الثلاثة ودرجات المحكمين

المقترحالفكرةالواقع الهندسيالتشغيل السريريالأعمال والمنتجالنتيجة
P-PLATFORM-FIRST
الفائز — عدستان من ثلاث
نواة HIS رفيعة محايدة للتخصص + Obgy أول موديول تخصصي مركّب78 (فائز)8 (فائز)يُعتمد — بعد امتصاص ضوابط التسلسل من المقترح الثاني
OBGY-AS-SEED
وصيف قوي
توليد Modules/HIS مباشرة من مخطط OBGY §95 وإطلاق صحة المرأة أولاً8 (فائز)77تُمتص ضوابطه: العميل التجريبي من المرحلة صفر، قاعدة «كل جدول له مستهلك إنتاجي»، بوابة التخصص الثاني
Thin-HIS / ERP-Maximalist~17 جدولاً + محرك نماذج EAV/JSON يحمل التوثيق السريري كله4.54.56يُرفض كمعمارية (السجل السريري كـJSON غير مقبول طبياً-قانونياً) — وتُنهب أفضل أفكاره

منطق الحسم: العدسة الهندسية فضّلت OBGY-AS-SEED لأن تصميمه مدفوع الثمن مسبقاً (مخطط §95)، لكن عدستي التشغيل السريري والأعمال رجّحتا P-PLATFORM-FIRST لأنه الوحيد الذي يصل لمستشفى عام بمسار غير مشروط، ويُطلق التعميم التأميني/NPHIES مع أول باقة جديدة لا في آخر المراحل، ويحافظ على مصفوفة الترخيص الرباعية نظيفة، وبصفر قرارات معاد فتحها. القرار النهائي: P-PLATFORM-FIRST معدَّلاً بتسلسل OBGY-AS-SEED — أي «المنصة أولاً، ببذرة OBGY وعميله».

خامساً: الأفكار الممتصة من المقترحين الخاسرين (ملزمة في التنفيذ)

2/3عدسات تحكيم لصالح المعمارية المعتمدة
0قرارات معتمدة سابقاً يُعاد فتحها
16+فكرة ممتصة من المقترحين الخاسرين
22–34أسبوع-شخص حتى باقة صحة المرأة الكاملة

سادساً: خريطة الموديولات المعتمدة واتجاهات الاعتماد

الموديولالدورأهم الجداول/المكوناتيستورد (أمامياً) ←يُمنع عليه
Modules/HIS جديد — موديول واحدالنواة السريرية المحايدة: المواجهة، الحساب المالي، المواعيد، الأوامر، النماذج، الملاحظات، الجراحة، ثم ADT لاحقاًhis_encounters، his_encounter_diagnoses، his_episodes، his_appointments، his_visit_periods، his_folios، his_folio_charges، his_folio_payments، his_deposits، his_prescriptions(+items)، his_service_orders(+items)، his_form_templates/versions/responses، his_observations، his_lookups، his_clinical_exams، his_patient_spouses، his_surgical_bookings، his_operative_notes؛ لاحقاً: his_wards/rooms/beds، his_bed_assignmentsCore، LIS، Accounting، HRM، Inventory، NPHIESاستيراد Obgy أو تسمية أي تخصص
Modules/Obgy جديد — تخصصيعمق صحة المرأة: الشيتات المعقدة كجداول، البسيطة كمحتوى نماذج مُبذَّرobgy_pregnancies، obgy_antenatal_visits، obgy_ivf_cycles + جداول المراحل (سحب بويضات، إرجاع أجنة، تجميد)، obgy_imaging_studies + موجودات الموجات، obgy_endoscopy_*، obgy_infertility_files، التواريخ التوليدية، obgy_lis_test_map؛ القياسات في his_observations والذكورة/الهرمونات في كتالوج LISHIS، Core، LISجداول مرضى/أطباء/أدوية/أسعار/خزائن خاصة، أو ترحيل GL مباشر
Modules/LIS لا يُمسالمختبر كما هو — القيد الحاكم D5: صفر تأثير أداءً وسلوكاًتغيير وحيد مؤجل: تفعيل FK على عموده الخامل lab_requests.encounter_id عند الانطلاق(كما هو اليوم)استيراد HIS نهائياً
Core / Accounting / HRM / Inventory / NPHIESالعمود الفقري القائمترقيات معتمدة فقط: ChargePostingService في Core (تعميم PostLabInvoice ببادئة إعدادات his.*)، توسيع type-hints في NPHIES (FhirPatientBuilder) للمريض المشتركأي اعتماد على موديول سريري

سابعاً: عقود الأحداث (Event Contracts)

الحدثالمُصدِرالمستهلكونالحمولة الأساسية
LabResultReleased قائمLISHIS (إلحاق النتيجة بالمواجهة)، Obgy (عرضها في الشيت)LabResult
LabRequestCompleted / CriticalResultDetected قائمLISHIS (إغلاق الأمر / صندوق إنذار الطبيب والتمريض)LabRequest / النتيجة الحرجة
BusinessPartnerCreated قائمCoreAccounting (CreatePartnerAccounts — حسابات ذمم المريض آلياً)الشريك التجاري
EncounterOpened / EncounterClosed جديدHISObgy، التقارير، الإشعاراتencounter_id, patient_id, type
AppointmentBooked / AppointmentCheckedIn جديدHISشاشة الانتظار، البوابة، الإشعاراتappointment_id, period_id
FolioChargePosted جديد — الخطاف المالي الموحدHISأي موديول سريري حالي أو مستقبلي (أشعة/عمليات) — مع قيد UNIQUE(source_type, source_id)folio_id, source_type, source_id, total
FolioClosed جديدHISتوليد فواتير مقسومة حسب الدافع → ChargePostingServiceCreateJournalEntry(source_type='his_invoice') → مطالبة NphiesClaimService::submit()folio_id
PatientAdmitted/Transferred/Discharged جديد — مرحلة التنويمHISوظيفة يوم-السرير الليلية على الـ Folio، لوحة الأسرّةencounter_id, bed_id
PrescriptionDispensed جديدHISInventory (StockService::decreaseStock بمرجع الروشتة) + بند Folioprescription_id, encounter_id
FormResponseSubmitted جديد — ممتصHISمستمعو التخصصات (مثال: Obgy يُقدّم مرحلة دورة الحقن المجهري عند توقيع نموذج السحب)form_response_id, form_code, encounter_id
PregnancyOpened/Closed، IvfCycleStageCompleted جديدObgyداخل Obgy والتقارير فقط — HIS لا يستمع لأي تخصصpregnancy_id / cycle_id, stage

ثامناً: العمود الفقري للبيانات — قرار MPI / Encounter / Folio