هذا الملحق يوثّق وحدات لم تكن موجودة في النسخة المُحلَّلة (312 جدولاً) وظهرت في النسخة الأحدث المنشورة على med.greennature.com.sa والمُهيّأة كمركز/مستشفى متعدد العيادات والفروع. يغطّي: تشغيل العيادات (الغرف والجداول الأسبوعية وشاشة استقبال المرضى)، وحدة خدمة العملاء (قياس أداء الأطباء وزمن الانتظار والشكاوى)، حملات الرسائل النصية SMS والروابط المختصرة، إقرارات وموافقات المرضى، تتبّع الأرشيف بالأجهزة (دخول/خروج الملفات)، ملخّص الحالة، وتطبيق التصويت/قياس رضا العملاء عبر أكشاك بلوحة مفاتيح عربية. كل الاستنتاجات مبنية على قراءة الكود فقط (RedBeanPHP وعبارات SQL وقوالب Smarty) دون أي اتصال بقاعدة البيانات الحيّة.
النسخة الجديدة تحوي ~70 متحكّماً (controller) غير موجود في النسخة المُحلَّلة، وأُزيل منها ~20 متحكّم قديم من نوع «الشيتات» (sheet controllers). الوحدات المغطّاة هنا جديدة بالكامل وتعتمد على جداول لم ترد في الـ dump الأصلي. تظهر هذه الوحدات إضافة طبقة «تشغيل المركز» و«تجربة العميل» فوق نواة OB/GYN الأصلية.
المتحكّم 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 المعروف (استنتاج من الاستعلامات).
reserveClinic() ← صف في clinic_reserves.visits00.php.arrived_time (من خدمة العملاء) ثم دخول العيادة clinic_entered.clinic_out ويُحتسب زمن الانتظار = الفرق بين arrived_time وkashf_enterance.المتحكّم 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).
view=1)، ومتوسّط زمن الانتظار بالساعات/الدقائق.awrole.doctor_visit_show=1 (الأقسام الطبية الظاهرة في تقارير خدمة العملاء).detectionid not in (999, 9999, -88).المتحكّم 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:
sendSms($sourceId, $messagePlace) يُستدعى من visits.php/patients.php/operations_reports.php عند أحداث (تسجيل مريض/حجز زيارة).patients.phone/mobile/hus_mobile) والقوالب المفعّلة لمكان الإرسال، ويتحقق من القسم المسموح به (allowedDept).enc_id فريداً للزيارة وshort_urls).sms.naslab.gt4it.com (دالة sendItSmsApi) أو القديم smsmisr.com (دالة sendItSms).server_type=1 يدفع تفاصيل الزيارة إلى موقع خارجي عبر prepareToSite/sendToSite (royal-fc.net/appv/visit_details).تنبيه أمني الملف sms_sample.php يحوي بيانات اعتماد SMS مكتوبة بشكل ثابت (username/password/sender لـ smsmisr)، كما يوجد توكن Bearer ثابت لمزوّد naslab داخل visits_common.php. يجب نقلها إلى أسرار بيئية وتدويرها.
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.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.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 (معروف). يوفّر بحثاً بالمريض أو بالتاريخ، وقائمة «خرج ولم يعد».
تطبيق مستقل تحت /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.
vote_devices) ثم بناء استبيان (votes) بأسئلة (vote_questions) وإجابات (vote_answers تحمل وجهاً تعبيرياً face وعلَم send_mail).?ac=vote&device=ID فيُتحقَّق من وجود الجهاز وتسجيل دخول الموظّف.votes.voter_required) ويختار الوجوه/الإجابات.clients_votes (الجهاز، الاستبيان، الموظّف، اسم/هاتف المُصوِّت، IP المحلي/البعيد، user_agent) وتفاصيل كل إجابة في clients_votes_answers (question_id, answer_id, answer_face, answer_text).thank_you.report/reportDetails/empReport): عدد الأسئلة/الإجابات وتوزيع نصوص الإجابات بين تاريخين.clients_votes.is_contact وclients_votes.reply (هل تم التواصل + رد إداري).vote_answers.send_mail + votes.email) ربطاً بدور votes.role_id.| الجدول | جديد/معروف | الغرض | أهم الحقول المستنتجة | العلاقات |
|---|---|---|---|---|
clinic_rooms | جديد | غرف/عيادات المركز | name, clinic_no, today_list, branch_id, dept_id, is_active, deleted | ← branches |
clinic_reserves | جديد | جدول حجز الأطباء أسبوعياً للغرف | room_id, doctor_id, reserve_day_no, reserve_hour, start_date, cancel_date, is_active, deleted | ← clinic_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_doctor | ← patients, awrole, awusers |
patients_complaints | جديد | شكاوى/ردود خدمة العملاء | patientid, complaiv, reply, call_date_time, user_id, deleted | ← patients, awusers |
sms_control | جديد | قوالب رسائل SMS وحملاتها | name, message, message_type, message_place, sender_name, fixed_link, en_link, for_depts, status, deleted | ← awrole (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, date | ← awusers |
patientdecleration | جديد | إقرار موقَّع لمريض | decleration_id, patientid, uploadfile, user_id, date | ← decleration, 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, deleted | ← patients, devices→floors |
vote_devices | جديد | أجهزة أكشاك التصويت | name, local_ip, created_at, updated_at | ← login_tacking.login_ip |
votes | جديد | استبيان رضا لكل جهاز | vote_device_id, voter_required, email, role_id, created_at, updated_at | ← vote_devices, awrole |
vote_questions | جديد | أسئلة الاستبيان | vote_id, question, created_at, updated_at | ← votes |
vote_answers | جديد | خيارات الإجابة بوجوه تعبيرية | vote_question_id, answer, face, send_mail, created_at, updated_at | ← vote_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_at | ← votes, vote_devices, awusers |
clients_votes_answers | جديد | إجابات تصويت العميل | client_vote_id, question_id, answer_id, answer_face, answer_text, user_id, created_at | ← clients_votes, vote_questions/vote_answers |
login_tacking | جديد | تتبّع جلسات الدخول بالـ IP (لنسبة التصويت للموظّف) | login_ip, user_id, status, id | ← awusers |
clinic_rooms/clinic_reserves) إلى مخطط الترحيل — لم تكن ضمن الـ 312 جدولاً ويجب نمذجتها كـ Scheduling/Roster مع دعم الفروع.patients_complaints) — تُربط بلوحات KPI في الـ HIS.royal-fc.net) = تكامل بوّابة مرضى خارجية؛ يلزم توثيقه كواجهة Integration في الـ ERP.decleration/patientdecleration مع ملفات مرفوعة) تُدرَج ضمن Document/Consent Management في الـ HIS.archive_tracking + devices.location + floors) = نظام Medical Records Tracking مادي يجب تضمينه في وحدة MRD.login_tacking؛ تتطلّب نمذجة Surveys + Employee Performance + متابعة الشكاوى (is_contact/reply).visits الموسّعة (enc_id, arrived_*, clinic_*, rfc, branch_id) تؤكّد أن جدول الزيارات في النسخة الجديدة أوسع من المخطط الأصلي ويجب تحديث blueprint وحدة الزيارات.