🧑‍⚕️

إدارة المرضى والتسجيل (Patients & Registration)

هذا الموديول هو قلب النظام بأكمله؛ فجدول patients هو المحور الذي ترتبط به جميع الموديولات الأخرى تقريبًا (الزيارات، الفحوصات، التاريخ المرضي، الشيتات الإكلينيكية، الفواتير) عبر العمود patientid. يتولى الموديول تسجيل بيانات المريضة الديموغرافية الكاملة (الزوجة) وبيانات الزوج في نفس السجل، مع رقم ملف تسلسلي للعيادة، وإدارة قوائم الترميز المساعدة (الوظائف، التعليم، فصائل الدم، الحالة الاجتماعية، الألقاب)، والبحث متعدد المعايير، والسجل الطبي السريع، وملفات المريضة المرفوعة، مع مزامنة فورية لبيانات المريضة كعميل في نظام ERP خارجي عبر cURL.

17جدول
5كنترولر
14علاقة رئيسية

الوظائف الرئيسية

الجداول وبنية البيانات (Data Models)

الجدولالغرضأهم الحقولالعلاقات
patientsالجدول المحوري للنظام: سجل واحد لكل مريضة يضم بيانات الزوجة والزوج معًا، مع أرصدة افتتاحية للصيغة التوليدية وأعلام الحذف والاعتمادid, statusno, wifename, wiftypeid, dateofbirth, wifeage, wifeeducation, wifejob, wifebl, wifenationalid, statuesid, mirragefrom, mirragefromdate, boyson, girlson, husdandname, husbandtypeid, husbanddateofbirth, husbandjob, husbandbl, husbandnationalid, husband_habbits, address, phone, mobile, risk, risktype, pno, ab, ectopic, vmodel, svd, cs, done, deleted, userid, doctorid, patient_password_hashwifetypes عبر wiftypeid، wifestatus عبر statuesid، education عبر wifeeducation/husbandeducation، wifejobs عبر wifejob، husbandjobs عبر husbandjob، bloodtypes عبر wifebl/husbandbl، husbandtypes عبر husbandtypeid، risktype عبر risktype، awusers عبر userid/doctorid
patients_updatesنسخة كاملة من بنية patients مضافًا إليها أعمدة تدقيق (userid_edit, date_edit, patientid_edit) — يبدو أنها سجل تاريخي لتعديلات بيانات المرضى، ولا يوجد كود فعّال يكتب فيها حاليًا (استنتاج)نفس أعمدة patients + userid_edit, date_edit, patientid_editpatients عبر patientid_edit (استنتاج)، awusers عبر userid_edit
patients_tmpجدول مؤقت مهجور (اسم فقط) لا يُستخدم في أي كنترولر — مخلفات تطويرpit_id, pit_nameلا توجد
patientfilesمُعدّ لفهرسة ملفات المريضة المرفوعة، لكن الكود الحالي يقرأ الملفات من مجلد upload/patientfiles/{patientid} مباشرة دون استخدام الجدول (جدول غير مفعّل)id, patientid, filepatients عبر patientid
registerationصفوف "حجز/تسجيل الولادة" المرتبطة بشيت متابعة الحمل: مكان الولادة، المنشأ، النوع، التكلفة — تُنشأ من شاشة ANC Sheet وتُقرأ في تقارير الولاداتid, ancsheetid, place2, origin, type, awifep, coast, rplaceancsheet عبر ancsheetid، origin عبر origin
recordsالسجل الطبي السريع: سطر تشخيص وعلاج نصي لكل تاريخ لكل مريضة (شاشة Record) مع حذف منطقيid, patientid, date, diagnosis, ttt, delpatients عبر patientid، وترتبط وظيفيًا بـ recorddrugs عبر patientid + date
originقائمة ترميز "منشأ/جهة الولادة" المستخدمة في صفوف registeration وتقارير الولاداتid, title, delتُقرأ من registeration عبر origin
educationقائمة ترميز المستوى التعليمي (تستخدم للزوجة والزوج معًا) وتُدار من شاشة المريضid, title, delpatients عبر wifeeducation وhusbandeducation
bloodtypesقائمة ترميز فصائل الدم (للزوجة والزوج)id, title, delpatients عبر wifebl وhusbandbl
wifejobsقائمة ترميز وظائف الزوجة، وتدخل في البحث المتقدمid, title, delpatients عبر wifejob
husbandjobsقائمة ترميز وظائف الزوج، وتدخل في البحث المتقدمid, title, delpatients عبر husbandjob
wifestatusقائمة الحالة الاجتماعية للزوجة — القيم المزروعة: آنسة، متزوجة، مطلقة، متزوجة للمرة الثانية، أرملةid, title, delpatients عبر statuesid
wifetypesقائمة ألقاب/تصنيفات الزوجة، وتُطبع كلقب قبل الاسم في الروشتةid, title, delpatients عبر wiftypeid
husbandtypesقائمة ألقاب/تصنيفات الزوج، وتُطبع كلقب قبل الاسم في روشتة الزوجid, title, delpatients عبر husbandtypeid
complaintقائمة الشكاوى الرئيسية المستخدمة في شيتات أمراض النساء والعقم (gyna / gynasheet / infertilitysheet / ancsheet00)id, name, conditions (علم حذف منطقي)تُقرأ من شيتات gyna وinfertility (ربط بالقيمة المختارة)
complaintantقائمة الشكاوى الخاصة بزيارات متابعة الحمل (antenatal) — نسخة موازية لجدول complaintid, name, conditionsتُقرأ من antenalvisit وcompletereport
locationsقائمة أماكن (اسم + حذف منطقي) لا يوجد لها أي استخدام في الكنترولرات الحالية — جدول مهجور (استنتاج)id, name, deletedلا توجد علاقات مستخدمة

سير العمل (Workflow)

  1. يفتح موظف الاستقبال شاشة التسجيل patients.php?ac=index؛ يبحث النظام عن مسودة غير معتمدة (done=0) لنفس المستخدم فيستكملها، أو ينشئ سجلًا جديدًا فورًا في قاعدة البيانات برقم ملف تلقائي statusno.
  2. عند إدخال الرقم القومي يتحقق النظام من صحته بتعبير نمطي ويستخرج منه تاريخ الميلاد ويحسب العمر تلقائيًا؛ كما تُجرى فحوص تكرار فورية (الاسم، رقم الملف، الرقم القومي، الهاتف) عبر AJAX.
  3. تُحفظ الحقول حقلًا بحقل عبر AJAX (updateajax) أثناء الإدخال، وتُملأ القوائم المنسدلة من جداول الترميز (الألقاب، التعليم، الوظائف، الحالة، فصائل الدم) مع إمكانية إضافة قيم جديدة لهذه القوائم من نفس الشاشة.
  4. عند الضغط على "إنهاء" (addfinish) يُعتمد السجل (done=1) وتُسجَّل بيانات الزوجة والزوج كاملة وتُشفَّر كلمة مرور المريضة، وإذا طُلبت زيارة تُنشأ في جدول visits (نوع الكشف، نقدي/فيزا، خصم، ترتيب الدخول) داخل معاملة واحدة، ثم يُحوَّل المستخدم لشاشة تاريخ المريضة أو شاشة الاستقبال حسب صلاحيته.
  5. تُزامَن بيانات المريضة تلقائيًا كعميل في قاعدة ERP الخارجية (إضافة أو تحديث عبر curlAddClient/curlUpdateClient) إذا كانت قاعدة ERP معرّفة في الإعدادات.
  6. البحث عن مريضة قائمة من شاشة البحث متعدد المعايير؛ النتائج محدودة بـ60 سجلًا، ويوجّه الرابط لآخر شاشة إكلينيكية زارتها المريضة من جدول lastvisit، وفي وضع المستشفى يُبحث بالقسم عبر visits.detectionid مع استبعاد من انتهت متابعتهم في endvisitreports.
  7. في كل شاشة إكلينيكية يُعرض شريط بيانات المريضة (_patientdata.php) الذي يفك ترميز القوائم ويحسب الأعمار ومدة الزواج والصيغة التوليدية (P/CS/AB/Ectopic/VM/SVD) من phobstetric + الأرصدة الافتتاحية، ويعرض ملخصات التاريخ الطبي والجراحي والنسائي والعائلي — وينشئ تلقائيًا سجل فحص examination فارغًا إن لم يوجد.
  8. من شاشة السجل الطبي (record.php) يضيف الطبيب صفوف تشخيص/علاج بالتاريخ، ويكتب روشتات للزوجة أو الزوج من كتالوج الأدوية (recorddrugs/drugs) ويطبعها بلقب واسم المريض من جداول الألقاب.
  9. تُرفع ملفات وصور المريضة إلى مجلد upload/patientfiles/{id} عبر إضافة الرفع المتعدد، وتُعرض وتُحمَّل من نظام الملفات مباشرة.
  10. أثناء متابعة الحمل تُسجَّل بيانات حجز الولادة في صفوف registeration المرتبطة بشيت ancsheet (المكان، المنشأ، النوع، التكلفة) وتُقرأ لاحقًا في تقارير الولادات.
  11. عند انتهاء فترة العلاج/المتابعة يُسجَّل تقرير إنهاء في endvisitreports، ويمكن حذف المريضة حذفًا منطقيًا (deleted=1) مع حذف العميل المقابل في ERP.

الارتباط بالموديولات الأخرى

ملاحظات فنية

توصيات النقل إلى ERP