📅

الزيارات والمواعيد (Visits & Appointments)

يُعد هذا الموديول العمود الفقري التشغيلي للعيادة؛ فهو يدير حجز الزيارات من الاستقبال ومن تطبيق الموبايل، وتنظيم طابور الانتظار اليومي للطبيب، وتقسيم اليوم إلى فترات زمنية بسعة محددة، كما يسجل في الجدول ذاته الحركة المالية للزيارة (قيمة الكشف نقدًا/فيزا، الخصم، المتبقي، سداد المتبقي، المرتجعات، الأقساط)، ويوجّه الطبيب تلقائيًا إلى آخر شيت إكلينيكي فتحه للمريضة، وينتهي بتقرير إنهاء العلاج.

9جدول
4كنترولر
10علاقة رئيسية

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

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

الجدولالغرضأهم الحقولالعلاقات
visitsالجدول المركزي: الزيارة/الموعد + الحركة المالية المرتبطة بها (كشف، سداد متبقٍ، مرتجع، قسط)patientid, visitdate, visittime, detectionid, totaldetectionvalue, discount, detectionvalue_cash, detectionvalue_visa, restdetectionvalue, visitorder, enterordered, view, visit_period, urgent, payedflag, mobileappvisit, approx_time, visitid, user_id, end, enddate, branch_idpatients عبر patientid، detections عبر detectionid، visit_periods عبر visit_period، awusers عبر user_id وenddoctorid، الزيارة الأصلية ذاتيًا عبر visitid
visits_updatesنسخة ظل من جدول الزيارات بحقول تدقيق إضافية لتتبع التعديلات (غير مستخدم في أي كود تم العثور عليه — مهجور أو محجوز) (استنتاج)نفس حقول visits + userid_edit, date_edit, patientid_edit, clinic_idpatients عبر patientid، awusers عبر userid_edit (استنتاج)
visit_periodsتعريف فترات اليوم (صباحية/مسائية...) بسعة قصوى لكل فترةname, timing, max_no, deletedvisits عبر visit_period
newvisitزيارات المتابعة الإكلينيكية داخل شيت العقم (تاريخ، آخر دورة، وزن، رحم، مبايض، علاج)infertilitysheetid, newvisitcycles, date, lmp, bw, ut, ov, tttinfertilitysheet عبر infertilitysheetid، newvisitcycles عبر newvisitcycles
newvisitcyclesقاموس أنواع الدورات/السيكلات لزيارات متابعة العقم (لا توجد بيانات مزروعة في النسخة الاحتياطية)title, delnewvisit عبر newvisitcycles، وكذلك newvisitg في شيت النساء
lastvisitمؤشر لكل مريضة يخزن اسم آخر كنترولر شيت إكلينيكي فُتح لها، لتوجيه الطبيب من الطابور مباشرة إلى الشيت الصحيحpatientid, controlpatients عبر patientid؛ قيمة control تشير إلى كنترولر (antenalvisit / ancsheet / gynasheet / iui / infertilitysheet)
old_visitsأرشيف للبنية القديمة لجدول الزيارات (قيمة كشف واحدة قبل فصل النقدي/الفيزا)، استُخدم مرة واحدة في سكربت ترحيل fixOldVisits()patientid, visitdate, detectionid, detectionvalue, visitorder, enterordered, end, enddatepatients عبر patientid، detections عبر detectionid، يطابق visits.id بنفس id (استنتاج من سكربت الترحيل)
endvisitreportsتقرير إنهاء فترة العلاج للمريضة (السبب، التاريخ، الملاحظات، الطبيب)patientid, reason, enddate, notes, doctorid, statuspatients عبر patientid، awusers عبر doctorid
vacationsأيام إجازات العيادة بتاريخ وسبب وحقول تدقيق بنمط Laravel (غير مستخدم في أي كود تم العثور عليه) (استنتاج)vacation_date, vacation_reason, created_at, updated_at, created_by, updated_byawusers عبر created_by وupdated_by (استنتاج)

سير العمل (Workflow)

  1. يبحث موظف الاستقبال عن المريضة برقم الملف (statusno) أو بالاسم (بحث تلقائي بالإكمال)، ثم يفتح شاشة إضافة زيارة (visits.php?ac=index).
  2. يختار نوع الكشف من قاموس detections (الذي يحمل السعر)، ويحدد التاريخ والفترة الزمنية والقيمة المدفوعة نقدًا/فيزا والخصم والمتبقي والملاحظات والوقت التقريبي، ثم تُحفظ الزيارة بـ payedflag=1 ويُحتسب ترتيب الدخول enterordered تلقائيًا.
  3. عند تفعيل نظام الفترات (programesetting.visit_period=1) يتحقق النظام من عدد المحجوزين في الفترة مقابل max_no قبل الحجز.
  4. بديلًا، تحجز المريضة من تطبيق الموبايل (mobileservices.php?ac=addVisit) فتُسجَّل الزيارة بـ mobileappvisit=1 وpayedflag=0، وعند الحضور والدفع يستدعي الاستقبال payvisit فيتحول العلم إلى مدفوع وتُنشأ فاتورة بيع في الـ ERP الخارجي.
  5. كل زيارة مدفوعة تُرسل فورًا عبر cURL إلى نظام ERP خارجي (sellbillController.php?do=addObgyVisit) لإنشاء فاتورة بيع مرتبطة بالزيارة، ويُحدَّث/يُحذف معها عند تعديل أو حذف الزيارة.
  6. تظهر زيارات اليوم في الشاشة الرئيسية (index.php) كطابور انتظار؛ في وضع المستشفى ينقسم الطابور إلى منتظرين وداخلين، ويضغط المستخدم "دخول" فتُعلَّم الزيارة view=1 وتنتقل لقائمة الداخلين، مع إمكانية إعادة الترتيب بالسحب.
  7. من الطابور ينتقل الطبيب إلى الشيت الإكلينيكي؛ ويستخدم النظام جدول lastvisit لمعرفة آخر شيت فُتح للمريضة (متابعة حمل/نساء/عقم/حقن مجهري) فيوجهها مباشرة، ويُحدَّث هذا السجل تلقائيًا عند فتح أي شيت.
  8. داخل شيت العقم يضيف الطبيب صفوف زيارات متابعة (newvisit) عبر حفظ خلوي فوري بالأجاكس، مع اختيار نوع السيكل من قاموس newvisitcycles.
  9. المعاملات المالية اللاحقة تُسجَّل كصفوف جديدة في visits مرتبطة بالزيارة الأصلية عبر visitid: سداد متبقٍ (detectionid=999) أو مرتجع (detectionid=9999) بعد التحقق من أن المرتجع لا يتجاوز المدفوع، أو دفع قسط (detectionid=-99) يخصم من رصيد totalbalance.
  10. عند انتهاء خطة العلاج يُنشأ تقرير إنهاء (endvisitreports) بالسبب والتاريخ واسم الطبيب من شاشة المريضة، أو إغلاق جماعي لكل مرضى قسم معين عبر emptydeptvisit.
  11. الزيارات المستقبلية العاجلة (urgent=1) تظهر في قائمة الانتظار (waitingList) ليُقرَّر ترحيلها إلى اليوم أو إلغاؤها.

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

ملاحظات فنية

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