👥

مجلس الأطباء والجلسات (Medical Board & Sessions)

موديول مستقل (تطبيق فرعي board) لإدارة مجلس الأطباء داخل العيادة: يتيح للأطباء رفع طلبات استشارة/مناقشة حالات سريرية إلى المجلس، ثم تنظيم جلسات دورية يحضرها أعضاء المجلس لمناقشة الطلبات المعلّقة، وتسجيل رأي كل عضو (قبول/رفض) على كل طلب، وتدوين القرار النهائي للمجلس، مع إمكانية تأجيل الطلبات لجلسة لاحقة وأرشفة الجلسات والطلبات المنتهية، إضافة إلى نظام تعليقات متداخل (تعليق ورد على تعليق) على كل طلب، وشاشة لتشكيل هيئة المجلس (رئيس، أمين، أعضاء).

6جدول
3كنترولر
8علاقة رئيسية

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

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

الجدولالغرضأهم الحقولالعلاقات
brequestsطلبات عرض الحالات على المجلس؛ دورة الحياة: مسودة (0) ← مُرسل (1) ← مناقَش ومؤرشف (2)، مع علامة تأجيل وقرار نهائي نصيid, memberid, title, details, status, date, delay, decision, sessionidawusers عبر memberid، bsession عبر sessionid
bsessionجلسات المجلس؛ الحالة: مفتوحة (0) أو مغلقة/مؤرشفة (1)، مع تاريخ الإغلاق ومنشئ الجلسةid, date, status, memberidawusers عبر memberid (منشئ الجلسة)
bsessionmembersسجل حضور أعضاء المجلس في كل جلسة (جدول ربط جلسة × عضو)؛ وجود السجل يعني الحضور وحذفه يعني الغيابid, sessionid, memberidbsession عبر sessionid، awusers عبر memberid
bmemberopenionرأي كل عضو حاضر على كل طلب داخل الجلسة: قبول (1) أو رفض (2)؛ سجل واحد لكل (طلب × عضو جلسة) يُحدَّث عند تغيير الرأيid, requestid, sessionmemberid, openionbrequests عبر requestid، bsessionmembers عبر sessionmemberid
bcommentsتعليقات متداخلة على الطلبات: التعليق الرئيسي له relatedcommentid=0 والردود تشير إلى التعليق الأبid, memberid, requestid, comment, relatedcommentidawusers عبر memberid، brequests عبر requestid، bcomments (ذاتية) عبر relatedcommentid
councilstaffتشكيل هيئة المجلس: رئيس (0)، أمين (1)، عضو (2) — كل سجل يربط مستخدمًا بدوره في المجلسid, userid, statusawusers عبر userid

سير العمل (Workflow)

  1. يفتح الطبيب شاشة «إضافة طلب» (requests.php)؛ إن وُجدت مسودة طلب سابقة غير مرسلة تُحمَّل، وإلا يُنشأ سجل طلب جديد فارغ باسمه تلقائيًا.
  2. يكتب الطبيب عنوان الحالة وتفاصيلها، وتُحفظ القيم تلقائيًا أولًا بأول عبر دالة update() (AJAX).
  3. عند الضغط على «إرسال» (sendrequest) يتحول الطلب إلى status=1 ويُختم بتاريخ اليوم ويظهر في قائمة الطلبات المعلّقة.
  4. يتبادل الأطباء النقاش كتابيًا على الطلب عبر التعليقات والردود (addcomment / deletecomment).
  5. يفتح أمين المجلس شاشة الجلسات (sessions.php)؛ إن لم توجد جلسة مفتوحة تُنشأ جلسة جديدة ويُسجَّل تلقائيًا كل أعضاء المجلس (مستخدمو positionid 1–3) في bsessionmembers.
  6. يُحدَّث الحضور الفعلي بإزالة الغائبين وإعادة إضافة الحاضرين (addsessionmember / removesessionmember).
  7. تُعرض الطلبات المعلّقة واحدًا تلو الآخر (requestDetails)؛ يسجل كل عضو حاضر رأيه قبول/رفض (saveopinion)، ويُدوَّن قرار المجلس النهائي نصيًا (savedecision)، أو يُؤجَّل الطلب لجلسة قادمة (delay).
  8. عند إنهاء الجلسة (savesession): تُغلق الجلسة بتاريخ اليوم، وتُؤرشف الطلبات المناقشة (status=2) مع ربطها بالجلسة، وتُعاد الطلبات المؤجلة إلى قائمة الانتظار (داخل معاملة واحدة).
  9. يمكن لاحقًا استعراض أرشيف الجلسات وتفاصيل كل جلسة: الحضور، الطلبات المناقشة، آراء الأعضاء، والقرارات (archiveshowall / sessiondetails / requestDetailsArchive).
  10. بشكل مستقل، تُدار عضوية المجلس من شاشة stuff.php: تعيين الرئيس والأمين والأعضاء في جدول councilstaff.

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

ملاحظات فنية

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