موديول توثيق عمليات المناظير النسائية: منظار البطن (Laparoscopy) لفحص الرحم والأنابيب والمبايض والحوض، ومنظار الرحم (Hysteroscopy) لفحص عنق الرحم وتجويف الرحم وفتحتي الأنابيب. يعمل الموديول بنمطين متوازيين: نمط حر نصّي داخل شاشة الفحوصات (Investigations) لأي مريضة، ونمط منظّم بقوائم اختيار قابلة للتوسيع داخل شيت العقم (Infertility Sheet) يسجّل النتائج لكل عضو على حدة مع التدخل الجراحي والتكلفة، وتُستخدم البيانات في تقارير العمليات والتقارير الشاملة للمريضة.
append)، وحفظ كل حقل لحظيًا عند التعديل (أكشن update العام).getselectajax دون الرجوع لشاشة إعدادات.id in (...).jncision: midline/transverse/paramedian/Pfannenstiel) والنوع الفرعي التابع له (midlinejncision: upper/lower...) كقائمتين متسلسلتين تُستخدمان في تفاصيل العمليات (Operative Details).lastvisit) عند فتح شاشة العمليات باسم الكنترولر.| الجدول | الغرض | أهم الحقول | العلاقات |
|---|---|---|---|
laparoscopy | تقرير منظار بطن نصّي حر لكل مريضة (شاشة الفحوصات) | sdate, patientid, uterus, radnexa, ladnexa, pelvis, notes, doctorid, del | patients عبر patientid، awusers عبر doctorid |
hysteroscopy | تقرير منظار رحم نصّي حر لكل مريضة (شاشة الفحوصات) | sdate, patientid, cervix, uterine, rostium, lostium, notes, doctorid, del | patients عبر patientid، awusers عبر doctorid |
laparoscopyinfertility | سجل منظار بطن منظّم داخل شيت العقم: نتائج وتدخل لكل عضو + التكلفة | infertilitysheetid, date, laparplace, laparul, laparrt, laparlt, laparro, laparlo, laparpelvis, laparmut, laparmrt, laparmlt, laparmro, laparmlo, laparmpelvis, lapintervention, coast | infertilitysheet عبر infertilitysheetid، وجداول lapar* عبر معرّفات CSV |
hysteroscopyinfertility | سجل منظار رحم منظّم داخل شيت العقم: نتائج وإدارة علاجية + التكلفة | infertilitysheetid, date, copyplace, copydil, copyintrod, copycx, copycavity, copyrostium, copylostium, copymcx, copymcavity, copymrostium, copymlostium, hysintervention, coast | infertilitysheet عبر infertilitysheetid، وجداول copy* عبر معرّفات CSV |
laparplace | قائمة أماكن إجراء منظار البطن (مستشفى/مركز) | id, title, del | تُرجَع من laparoscopyinfertility.laparplace |
laparul | قائمة نتائج الرحم (UT) في منظار البطن | id, title, del | تُرجَع من laparoscopyinfertility.laparul (CSV) |
laparrt | قائمة نتائج الأنبوب الأيمن (RT) | id, title, del | تُرجَع من laparoscopyinfertility.laparrt (CSV) |
laparlt | قائمة نتائج الأنبوب الأيسر (LT) | id, title, del | تُرجَع من laparoscopyinfertility.laparlt (CSV) |
laparro | قائمة نتائج المبيض الأيمن (RO) | id, title, del | تُرجَع من laparoscopyinfertility.laparro (CSV) |
laparlo | قائمة نتائج المبيض الأيسر (LO) | id, title, del | تُرجَع من laparoscopyinfertility.laparlo (CSV) |
laparpelvis | قائمة نتائج الحوض في منظار البطن | id, title, del | تُرجَع من laparoscopyinfertility.laparpelvis (CSV) |
laparmut | قائمة التدخلات/الإدارة العلاجية للرحم (Management UT) | id, title, del | تُرجَع من laparoscopyinfertility.laparmut (CSV) |
laparmrt | قائمة تدخلات الأنبوب الأيمن (Management RT) | id, title, del | تُرجَع من laparoscopyinfertility.laparmrt (CSV) |
laparmlt | قائمة تدخلات الأنبوب الأيسر (Management LT) | id, title, del | تُرجَع من laparoscopyinfertility.laparmlt (CSV) |
laparmro | قائمة تدخلات المبيض الأيمن (Management RO) | id, title, del | تُرجَع من laparoscopyinfertility.laparmro (CSV) |
laparmlo | قائمة تدخلات المبيض الأيسر (Management LO) | id, title, del | تُرجَع من laparoscopyinfertility.laparmlo (CSV) |
laparmpelvis | قائمة تدخلات الحوض (Management Pelvis) | id, title, del | تُرجَع من laparoscopyinfertility.laparmpelvis (CSV) |
copyplace | قائمة أماكن إجراء منظار الرحم | id, title, del | تُرجَع من hysteroscopyinfertility.copyplace |
copydil | قائمة نتائج توسيع عنق الرحم (Dilatation) | id, title, del | تُرجَع من hysteroscopyinfertility.copydil |
copyintrod | قائمة نتائج إدخال المنظار (Introduction) | id, title, del | تُرجَع من hysteroscopyinfertility.copyintrod |
copycx | قائمة نتائج عنق الرحم (Cervix) في منظار الرحم | id, title, del | تُرجَع من hysteroscopyinfertility.copycx (CSV) |
copycavity | قائمة نتائج التجويف الرحمي والقاع (Cavity-Fundus) | id, title, del | تُرجَع من hysteroscopyinfertility.copycavity (CSV) |
copyrostium | قائمة نتائج فتحة الأنبوب اليمنى (R-Ostium) | id, title, del | تُرجَع من hysteroscopyinfertility.copyrostium |
copylostium | قائمة نتائج فتحة الأنبوب اليسرى (L-Ostium) | id, title, del | تُرجَع من hysteroscopyinfertility.copylostium |
copymcx | قائمة الإدارة العلاجية لعنق الرحم (Management Cervix) | id, title, del | تُرجَع من hysteroscopyinfertility.copymcx (CSV) |
copymcavity | قائمة الإدارة العلاجية للتجويف الرحمي | id, title, del | تُرجَع من hysteroscopyinfertility.copymcavity (CSV) |
copymrostium | قائمة الإدارة العلاجية للفتحة اليمنى | id, title, del | تُرجَع من hysteroscopyinfertility.copymrostium (CSV) |
copymlostium | قائمة الإدارة العلاجية للفتحة اليسرى | id, title, del | تُرجَع من hysteroscopyinfertility.copymlostium (CSV) |
jncision | قائمة أنواع الشق الجراحي (midline / transverse / paramedian / Pfannenstiel) | id, name, del | أب لـ midlinejncision؛ تُستخدم في operativedetails عبر jncisionid |
midlinejncision | قائمة الأنواع الفرعية للشق التابعة لكل نوع رئيسي (upper / lower / joel cohen...) | id, name, jncisionid, del | jncision عبر jncisionid؛ operativedetails عبر midlineid |
investigation.php): عند فتح ملف فحوصات المريضة، إن لم يوجد سجل منظار سابق يُنشأ تلقائيًا سجل فارغ في laparoscopy وآخر في hysteroscopy بتاريخ اليوم ومعرّف الطبيب الحالي.updateElement → أكشن update)، مع إمكانية إضافة سجلات بتواريخ جديدة أو حذف سجل (حذف منطقي del=1).infertilitysheet.php): من قسم Investigations في الشيت يضغط الطبيب «Hysteroscopy» أو «Laparoscopy» فيُنشأ صف جديد عبر أكشن append مربوط بـinfertilitysheetid وبتاريخ اليوم.lapar*/copy* عبر getselect، ويمكنه إضافة مصطلح جديد للقائمة فورًا عبر getselectajax أو حذف مصطلح عبر deldataselect.lapintervention/hysintervention) والإدارة العلاجية لكل عضو (قوائم laparm*/copym*) والتكلفة (coast).operations.php) تعرض مناظير اليوم أو نتائج بحث بفترة/مريضة، بالربط بين laparoscopyinfertility/hysteroscopyinfertility وجدول infertilitysheet لجلب بيانات المريضة، وتسجّل آخر زيارة في lastvisit.sh.php وCompletesreport.php يفكّان معرّفات CSV إلى نصوصها من جداول القوائم، وcompletereport.php يضم سجلات المناظير الحرة (غير الفارغة فقط) مع اسم الطبيب من awusers، وfullreport.php يفحص وجود مناظير في الفترة المطلوبة.operativedetails.php) تُستخدم قائمتا jncision وmidlinejncision كقائمتين متسلسلتين (اختيار نوع الشق يحمّل أنواعه الفرعية عبر loadjncision)، مع إمكانية إضافة أنواع جديدة من الشاشة نفسها.laparoscopy.patientid وhysteroscopy.patientid.doctorid → awusers.user_id لعرض اسم الطبيب في التقارير.laparoscopyinfertility.infertilitysheetid وhysteroscopyinfertility.infertilitysheetid، وتُعرض البيانات أيضًا داخل شيت النساء (gynasheet) للمريضة نفسها.jncision/midlinejncision تُستخدمان في تفاصيل العمليات عبر operativedetails.jncisionid وoperativedetails.midlineid.lastvisit.patientid.laparoscopy/hysteroscopy النصّيان مقابل laparoscopyinfertility/hysteroscopyinfertility المنظّمين) دون أي ربط بينهما.varchar واحد (مثل copycx، laparrt) ويُفكّ بعبارة id in (0$csv) المبنية بدمج نصّي مباشر — مخالف للتطبيع وعرضة لحقن SQL.patientid، التواريخ) — ثغرة حقن SQL مؤكدة في operations.php.operations.php يستعلم عن laparoscopy/hysteroscopy بعمود date غير الموجود (العمود الفعلي sdate) ثم يقرأ منهما infertilitysheetid غير الموجود أيضًا — كود ميت/معطّل على الأرجح (استنتاج).del is null بينما السجلات الرئيسية بشرط del = 0، والحذف يضع del = 1 — خليط يصعب صيانته.id, title, del) وفارغة من البذور في النسخة الاحتياطية؛ المفردات السريرية تُبنى أثناء التشغيل من إدخالات الأطباء.jncision/midlinejncision مليئة بصفوف تجريبية مهملة (sss، wwwaa، 444...) معظمها بحذف منطقي، مع خطأ إملائي متعمد في الاسم (jncision بدل incision وpfnnestiel بدل Pfannenstiel).coast (خطأ إملائي لـ cost) ونوعه varchar وليس رقميًا، وحقل date في جداول العقم varchar وليس date.update العام يقبل اسم الجدول والعمود من الطلب مباشرة دون قائمة سماح — يمكّن تعديل أي جدول في قاعدة البيانات (ثغرة Mass Assignment).completereport.php.endoscopy_procedures (Model: EndoscopyProcedure) بحقول: patient_id, infertility_sheet_id (اختياري), type (laparoscopy/hysteroscopy), performed_at, place_id, intervention, cost (decimal), notes, doctor_id.endoscopy_findings (Model: EndoscopyFinding) بحقول: procedure_id, site (uterus/right_tube/left_tube/right_ovary/left_ovary/pelvis/cervix/cavity/r_ostium/l_ostium/dilatation/introduction), finding_term_id, category (finding/management) — بدلًا من 26 عمود CSV.endoscopy_terms (Model: EndoscopyTerm) بحقول scope (laparoscopy/hysteroscopy)، site، category، title، is_active، مع علاقة many-to-many عبر جدول pivot بدل CSV.jncision/midlinejncision إلى موديول العمليات كجدول incision_types ذاتي العلاقة (parent_id) مع تنقية الصفوف التجريبية المهملة وتصحيح الأسماء قبل الترحيل.deleted_at) بدل خليط del = 0/1/null، وتحويل coast إلى cost decimal(10,2) وdate النصّي إلى date حقيقي مع تنظيف الصيغ أثناء الترحيل.update العام بـ API Resources مخصصة مع Form Requests للتحقق وقوائم سماح للحقول، وإلغاء الإنشاء التلقائي للسجلات الفارغة (إنشاء السجل فقط عند الحفظ الفعلي).laparoscopy/hysteroscopy غير الفارغة فقط (بنفس منطق ترشيح التقرير الشامل)، وتفكيك حقول CSV إلى صفوف findings مع الحفاظ على المصطلحات المرجعية.endoscopy_procedures مباشرة، بما يصحح الكود المعطّل الحالي في operations.php.