📞

ملحق: تشغيل العيادات وخدمة العملاء والرضا (MED: Clinic Ops, Customer Service & Vote)

هذا الملحق يوثّق وحدات لم تكن موجودة في النسخة المُحلَّلة (312 جدولاً) وظهرت في النسخة الأحدث المنشورة على med.greennature.com.sa والمُهيّأة كمركز/مستشفى متعدد العيادات والفروع. يغطّي: تشغيل العيادات (الغرف والجداول الأسبوعية وشاشة استقبال المرضى)، وحدة خدمة العملاء (قياس أداء الأطباء وزمن الانتظار والشكاوى)، حملات الرسائل النصية SMS والروابط المختصرة، إقرارات وموافقات المرضى، تتبّع الأرشيف بالأجهزة (دخول/خروج الملفات)، ملخّص الحالة، وتطبيق التصويت/قياس رضا العملاء عبر أكشاك بلوحة مفاتيح عربية. كل الاستنتاجات مبنية على قراءة الكود فقط (RedBeanPHP وعبارات SQL وقوالب Smarty) دون أي اتصال بقاعدة البيانات الحيّة.

نطاق الملف والتغيّر عن النسخة القديمة (Scope & delta)

النسخة الجديدة تحوي ~70 متحكّماً (controller) غير موجود في النسخة المُحلَّلة، وأُزيل منها ~20 متحكّم قديم من نوع «الشيتات» (sheet controllers). الوحدات المغطّاة هنا جديدة بالكامل وتعتمد على جداول لم ترد في الـ dump الأصلي. تظهر هذه الوحدات إضافة طبقة «تشغيل المركز» و«تجربة العميل» فوق نواة OB/GYN الأصلية.

9متحكّمات نطاق العيادات/الخدمة/SMS/الإقرارات/الأرشيف
+18جدول جديد (استنتاج) خارج الـ 312
6جداول لتطبيق التصويت vote
2مزوّدا SMS خارجيان (smsmisr + naslab)

١. تشغيل العيادات والحجز (Clinic Ops & Reservation)

المتحكّم reserve_clinic.php يبني جدولاً أسبوعياً (٧ أيام × ساعات بين programesetting.start_hour وend_hour) لربط الأطباء بالغرف. الغرف في clinic_rooms والحجوزات المتكرّرة أسبوعياً في clinic_reserves (يوم في الأسبوع reserve_day_no 1=السبت..7=الجمعة + ساعة reserve_hour + طبيب doctor_id). يدعم وضعَين أفقي/رأسي (h_version/v_version) وتعدّد الفروع branches حسب programesetting.branches/rooms. الإلغاء منطقي عبر cancel_date+deleted.

المتحكّم clinic_visits.php هو شاشة استقبال المريض داخل العيادة: لكل غرفة نشطة يعرض الأطباء المحجوزين لليوم وزياراتهم اليوم، ويسمح بتسجيل دخول المريض للعيادة (visits.clinic_entered=1) وخروجه (visits.clinic_out=1).

المتحكّم visits00.php هو نسخة موسّعة من تدفّق الزيارة: يوجّه الزيارة إلى قسم/طبيب (for_department/for_doctor) ويربطها بحجز عيادة (reserveId عند القسم 13)، ويرسلها لقوائم أقسام محدّدة (sendToDept/removeFromDept للأقسام 5 و12). هذه الحقول (clinic_entered, clinic_out, arrived_time, arrived_userid, enc_id, visit_order, visit_time, rfc, branch_id) أعمدة جديدة أُضيفت إلى جدول visits المعروف (استنتاج من الاستعلامات).

  1. الحجز الأسبوعي: تعيين طبيب لغرفة في يوم/ساعة عبر reserveClinic() ← صف في clinic_reserves.
  2. إنشاء زيارة وتوجيهها لقسم/طبيب (وربما حجز عيادة) عبر visits00.php.
  3. وصول المريض: تسجيل arrived_time (من خدمة العملاء) ثم دخول العيادة clinic_entered.
  4. الخروج: clinic_out ويُحتسب زمن الانتظار = الفرق بين arrived_time وkashf_enterance.

٢. خدمة العملاء (Customer Service)

المتحكّم customer_service.php يخدم ثلاث وظائف: (أ) عرض الأسعار (دمج detections+invests/investcats+rays/rayscats)؛ (ب) لوحة أداء الأطباء: عدّ الزيارات والمؤكَّدة (customer_add!=1) والمحضورة (view=1) لكل طبيب/قسم/فرع مع متوسّط زمن الانتظار؛ (ج) تسجيل وصول المريض arrivedHos() (arrived_time/arrived_userid). يدعم تقييد الطبيب المرتبط (related_dr للدور 19) وطباعة يومية مفصّلة.

إدارة الشكاوى عبر جدول جديد patients_complaints: نص الشكوى complaiv والرد reply ووقت الاتصال call_date_time والموظّف user_id والمريض patientid، مع حذف منطقي deleted وصلاحيات أزرار (awrolebtn btn 5/6).

٣. حملات الرسائل النصية والروابط المختصرة (SMS Campaigns & Short URLs)

المتحكّم sms_control.php يُعرّف قوالب الرسائل في جدول جديد sms_control (الاسم، نوع الرسالة message_type 1..5، مكان الإرسال message_place، اسم المرسِل sender_name، الرابط الثابت/الإنجليزي fixed_link/en_link، الأقسام المستهدَفة for_depts بقيمة -1 = الكل). الإعدادات العامة في sms_control_setting (server_type). المنطق الفعلي في visits_common.php:

  1. sendSms($sourceId, $messagePlace) يُستدعى من visits.php/patients.php/operations_reports.php عند أحداث (تسجيل مريض/حجز زيارة).
  2. يجلب هاتف المريض (patients.phone/mobile/hus_mobile) والقوالب المفعّلة لمكان الإرسال، ويتحقق من القسم المسموح به (allowedDept).
  3. يبني النص حسب النوع: رسالة فقط / + رابط / + اسم المريض / + رابط مختصر للزيارة (يولّد enc_id فريداً للزيارة وshort_urls).
  4. الإرسال عبر مزوّد sms.naslab.gt4it.com (دالة sendItSmsApi) أو القديم smsmisr.com (دالة sendItSms).
  5. عند server_type=1 يدفع تفاصيل الزيارة إلى موقع خارجي عبر prepareToSite/sendToSite (royal-fc.net/appv/visit_details).

تنبيه أمني الملف sms_sample.php يحوي بيانات اعتماد SMS مكتوبة بشكل ثابت (username/password/sender لـ smsmisr)، كما يوجد توكن Bearer ثابت لمزوّد naslab داخل visits_common.php. يجب نقلها إلى أسرار بيئية وتدويرها.

٤. الإقرارات وموافقات المرضى (Declarations & Consents)

decleration.php يدير قوالب الإقرارات/الموافقات (جدول جديد decleration: title, content, doctor_id/doctor_name, husband/wife/reception). وpatientdecleration.php يربط إقراراً موقَّعاً بمريض (جدول جديد patientdecleration: decleration_id, patientid, uploadfile = ملف ممسوح ضوئياً في upload/decleration_files, user_id, date) مع طباعة منسّقة لبيانات المريض والطبيب وإعدادات المركز.

٥. ملخّص الحالة (Case Summary)

المتحكّم case_summary.php هو مجمِّع للقراءة فقط: يدمج عشرات الجداول السريرية (سجلّ النساء/الولادة والتاريخ المرضي ph*) في تقرير حالة واحد. معظم مصادره جداول معروفة، لكنه يستدعي جداول جديدة في النسخة الموسّعة مثل obstetric_case/obstetric_case_ex, summary_obstetric/summary_obstetric_abortion, previous_pregnancies, previous_puerperium, pre_anaesthetic, blood_transfusion, complaint_analysis, recommend, symptoms (استنتاج — تنتمي لشيتات سريرية موسّعة خارج هذا النطاق).

٦. تتبّع الأرشيف بالأجهزة (Archive Tracking by Devices)

المتحكّم archive.php يستخدم دوال visits_common.php لتتبّع حركة ملفات/مرضى المركز عبر أجهزة قراءة موزّعة. عند مسح رقم المريض على جهاز (devices.location: 4=دخول، 5=خروج) يُسجَّل صف في جدول جديد archive_tracking (patient_id, in_date/in_time/in_device_id, out_date/out_time/out_device_id, receiver, notes, control) مع موقع الطابق من floors عبر devices.floor_no. يوازيه تتبّع عام في device_tracking (معروف). يوفّر بحثاً بالمريض أو بالتاريخ، وقائمة «خرج ولم يعد».

٧. تطبيق التصويت / رضا العملاء (Vote / Satisfaction Kiosk)

تطبيق مستقل تحت /med/vote يعمل كأكشاك رضا بلوحة مفاتيح عربية (kioskboard 2.2 + jQKeyboard). كل جهاز vote_devices (name, local_ip) مرتبط باستبيان votes، ويُنسَب التصويت إلى الموظّف المسجَّل دخوله من نفس الـ IP عبر login_tacking (جلب آخر user_id بـ login_ip وstatus=1). الإدارة في النواة عبر vote.php وvote_devices.php.

  1. تهيئة جهاز (vote_devices) ثم بناء استبيان (votes) بأسئلة (vote_questions) وإجابات (vote_answers تحمل وجهاً تعبيرياً face وعلَم send_mail).
  2. المريض/العميل على الكشك يفتح ?ac=vote&device=ID فيُتحقَّق من وجود الجهاز وتسجيل دخول الموظّف.
  3. يُدخِل اسمه/هاتفه (إن كان votes.voter_required) ويختار الوجوه/الإجابات.
  4. الحفظ في clients_votes (الجهاز، الاستبيان، الموظّف، اسم/هاتف المُصوِّت، IP المحلي/البعيد، user_agent) وتفاصيل كل إجابة في clients_votes_answers (question_id, answer_id, answer_face, answer_text).
  5. إعادة التوجيه إلى صفحة شكر thank_you.

جدول الكيانات المستنتجة (Entities)

الجدولجديد/معروفالغرضأهم الحقول المستنتجةالعلاقات
clinic_roomsجديدغرف/عيادات المركزname, clinic_no, today_list, branch_id, dept_id, is_active, deletedbranches
clinic_reservesجديدجدول حجز الأطباء أسبوعياً للغرفroom_id, doctor_id, reserve_day_no, reserve_hour, start_date, cancel_date, is_active, deletedclinic_rooms, awusers
visits (أعمدة جديدة)معروف+أعمدة تشغيل العيادة على جدول الزياراتclinic_entered, clinic_out, arrived_time, arrived_userid, kashf_enterance, enc_id, visit_order, visit_time, rfc, branch_id, customer_add, view, for_department, for_doctorpatients, awrole, awusers
patients_complaintsجديدشكاوى/ردود خدمة العملاءpatientid, complaiv, reply, call_date_time, user_id, deletedpatients, awusers
sms_controlجديدقوالب رسائل SMS وحملاتهاname, message, message_type, message_place, sender_name, fixed_link, en_link, for_depts, status, deletedawrole (for_depts)
sms_control_settingجديدإعدادات بوابة SMS العامةserver_type
short_urlsجديدروابط مختصرة لروابط الرسائلorigin_url, short_url, create_date← يُستخدم في رسائل الزيارة
visits_siteجديد (استنتاج)دفع تفاصيل الزيارة لموقع خارجيعبر API royal-fc.net (لا يُخزَّن محلياً غالباً)visits
declerationجديدقوالب الإقرارات/الموافقاتtitle, content, doctor_id, doctor_name, husband, wife, reception, dateawusers
patientdeclerationجديدإقرار موقَّع لمريضdecleration_id, patientid, uploadfile, user_id, datedecleration, patients
fastoptionsجديدروابط سريعة في الواجهةlabel, link
archive_trackingجديدتتبّع دخول/خروج ملف المريض بالأجهزةpatient_id, in_date/in_time/in_device_id, out_date/out_time/out_device_id, target_id, target_table, receiver, notes, control, user_id, deletedpatients, devicesfloors
vote_devicesجديدأجهزة أكشاك التصويتname, local_ip, created_at, updated_atlogin_tacking.login_ip
votesجديداستبيان رضا لكل جهازvote_device_id, voter_required, email, role_id, created_at, updated_atvote_devices, awrole
vote_questionsجديدأسئلة الاستبيانvote_id, question, created_at, updated_atvotes
vote_answersجديدخيارات الإجابة بوجوه تعبيريةvote_question_id, answer, face, send_mail, created_at, updated_atvote_questions
clients_votesجديدتصويت العميل المُسجَّلvote_device_id, vote_id, user_id, voter_name, voter_phone, ip/local_ip/remote_ip, user_agent, is_contact, reply, created_atvotes, vote_devices, awusers
clients_votes_answersجديدإجابات تصويت العميلclient_vote_id, question_id, answer_id, answer_face, answer_text, user_id, created_atclients_votes, vote_questions/vote_answers
login_tackingجديدتتبّع جلسات الدخول بالـ IP (لنسبة التصويت للموظّف)login_ip, user_id, status, idawusers

التأثير على خطة الـ ERP/HIS (ERP/HIS impact)