موديول مركزي لتوثيق التاريخ المرضي الكامل لمريضة النساء والتوليد على مستوى المريضة (وليس الزيارة): تاريخ الدورة الشهرية، وسائل منع الحمل السابقة، تاريخ الولادات والحمل السابق، الأمراض الطبية السابقة، العمليات الجراحية والنسائية السابقة، محاولات الإخصاب المساعد السابقة (IUI/IVF/ICSI) بتفاصيلها المعملية، والتاريخ العائلي للأمراض. تظهر هذه البيانات كملخص في رأس صفحة المريضة وتُستهلك في جميع الشيتات الطبية والتقارير.
menarche، مدة الدورة، طول الدورة، الانتظام، كمية الطمث، عسر الطمث، وتاريخ آخر دورة phl_mp (LMP) المستخدم في حسابات الحمل.opu، درجات البويضات GI/GII/GV، عدد الأجنة المنقولة، الأجنة المجمدة، نتيجة تحليل الحمل bhcg، ونبض الجنين fhr.update عامة تستقبل اسم الجدول والعمود من الواجهة.del.exec لتشغيل excel.php).| الجدول | الغرض | أهم الحقول | العلاقات |
|---|---|---|---|
phmenstrual | سجلات تاريخ الدورة الشهرية لكل مريضة (آخر دورة LMP، البلوغ، المدة، الانتظام...) | patientid, menarche, duration, length, phregularity, phamount, phdysmenorrhoea, phl_mp, doctorid, del | patients عبر patientid، awusers عبر doctorid، phregularity/phamount/phdysmenorrhoea عبر الأعمدة المسماة بنفس الاسم |
phregularity | قائمة اختيار: انتظام الدورة (regular, irregular, menopause...) | name, del | تُرجع من phmenstrual.phregularity |
phamount | قائمة اختيار: كمية دم الطمث (مثل excessive) — وليس مبلغاً مالياً | name, del | تُرجع من phmenstrual.phamount |
phdysmenorrhoea | قائمة اختيار: عسر الطمث | name, del | تُرجع من phmenstrual.phdysmenorrhoea |
phcontraception | سجلات وسائل منع الحمل السابقة للمريضة | patientid, contype, contduration, contstopped, contranote, doctorid, del | patients عبر patientid، phcontracttype عبر contype، awusers عبر doctorid |
phcontracttype | قائمة اختيار: أنواع وسائل منع الحمل (IUD, OC, DMPA, Mirena, Condom...) | name, del | تُرجع من phcontraception.contype |
phobstetric | سجل الولادات/حالات الحمل السابقة، صف لكل حمل مع بيانات حتى 3 أطفال (توائم) | patientid, obstrduration, obstermination, obsplace, obsdate, outcomeid, babytype/babygendernew/babyweight/babyname (+ مكررة 1 و2), doctorid, del | patients عبر patientid، phobstericterminate عبر obstermination، phobstericterplace عبر obsplace، awusers عبر doctorid |
phobstericterminate | قائمة اختيار: طريقة انتهاء الحمل (SVD, CS, Ectopic, Abortion, V.mole) | name, del | تُرجع من phobstetric.obstermination؛ تُستخدم بمعرّفات ثابتة في حساب الصيغة التوليدية |
phobstericterplace | قائمة اختيار: مكان الولادة/انتهاء الحمل | name, del, patientid (عمود شاذ غير مستخدم — استنتاج) | تُرجع من phobstetric.obsplace |
phpastmedical | الأمراض الطبية السابقة للمريضة (مع علم للزوج) | patientid, medicaldisease, medicalnote, for_husband, doctorid, del | patients عبر patientid، phpastmedicaldisease عبر medicaldisease |
phpastmedicaldisease | قائمة اختيار: أسماء الأمراض الطبية السابقة | name, del | تُرجع من phpastmedical.medicaldisease |
phpastsurgical | العمليات الجراحية العامة السابقة (مع السنة والجرّاح وعلم للزوج) | patientid, surgicaloperation, phsurgicalyear, phsurgicalsurgeon, surgicalnote, for_husband, doctorid, del | patients عبر patientid، phpastsurgicaloperation عبر surgicaloperation |
phpastsurgicaloperation | قائمة اختيار: أسماء العمليات الجراحية | name, del | تُرجع من phpastsurgical.surgicaloperation |
phpastgynecological | العمليات النسائية السابقة (مع السنة والجرّاح) | patientid, gynecologicaloperation, gynecologicalyear, gynecologicalsurgeon, gynecologicalnote, doctorid, del | patients عبر patientid، phpastgynecologicaloperation عبر gynecologicaloperation |
phpastgynecologicaloperation | قائمة اختيار: أسماء العمليات النسائية | name, del | تُرجع من phpastgynecological.gynecologicaloperation |
phpastart | محاولات الإخصاب المساعد السابقة (IUI/IVF/ICSI/Cryo) بالمركز والسنة وبيانات تجميد الأجنة | patientid, arttype, artcenter, artyear, artnote, emdate, emembryos, straw1, doctorid, del | patients عبر patientid، phpastarttype عبر arttype، phpastartcenter عبر artcenter |
phpastarttype | قائمة اختيار: نوع المحاولة (IUI, IVF, ICSI, cryo, failed) | name, del | تُرجع من phpastart.arttype (القيم 2 و3 = IVF/ICSI مُعاملة بمنطق خاص في الكود) |
phpastartcenter | قائمة اختيار: مراكز الإخصاب التي أجريت بها المحاولات السابقة | name, del | تُرجع من phpastart.artcenter |
phpasticsi | التفاصيل المعملية لمحاولة ICSI/IVF سابقة (سجل ابن لكل صف في phpastart) | partentid, patientid, opu, gi, gii, gv, et, etf, frozen, bhcg, fhr | phpastart عبر partentid، patients عبر patientid |
phfamily | التاريخ العائلي للمريضة (مرض + صلة قرابة + ملاحظة) | patientid, family_disease, family_relative, familynote, doctorid, del | patients عبر patientid، phfamilydisease عبر family_disease، phfamilyrelative عبر family_relative |
phfamilydisease | قائمة اختيار: الأمراض العائلية | name, del | تُرجع من phfamily.family_disease |
phfamilyrelative | قائمة اختيار: صلة القرابة | name, del | تُرجع من phfamily.family_relative |
medicalhistory | قائمة اختيار: أمراض طبية للزوجة تُستخدم في شيت العقم (DM, HTN, SLE...) — كتالوج موازٍ منفصل عن phpastmedicaldisease | title, del | infertilitysheet عبر العمود النصي medicalhistory (قائمة معرفات مفصولة بفواصل) |
medicalhistorydm | قائمة اختيار: أمراض طبية للزوج في شيت العقم (varicocele, smoking, STD...) — اللاحقة dm تعني الزوج/الذكر (استنتاج من القيم) | title, del | infertilitysheet عبر medicalhistorydm (قائمة مفصولة بفواصل) |
surgicalhistory | قائمة اختيار: عمليات جراحية للزوجة في شيت العقم (myomectomy, ov cystectomy...) | title, del | infertilitysheet عبر surgicalhistory (قائمة مفصولة بفواصل) |
surgicalhistorydm | قائمة اختيار: عمليات جراحية للزوج في شيت العقم (varicocelectomy, herniorrhaphy...) | title, del | infertilitysheet عبر surgicalhistorydm (قائمة مفصولة بفواصل) |
familyhistory | قائمة اختيار: التاريخ العائلي في شيت العقم (DM, HTN, cancer...) — كتالوج موازٍ منفصل عن phfamilydisease | title, del | infertilitysheet عبر familyhistory (قائمة مفصولة بفواصل) |
patienthistory.php) بعد اختيار المريضة؛ إذا لم تُحدد مريضة يُعاد التوجيه للصفحة الرئيسية.programesetting.simpleview يُعرض إما نموذج مبسّط (تشخيصات بسيطة) أو النموذج الكامل بسبعة أقسام: الدورة الشهرية، منع الحمل، الولادات، الأمراض السابقة، الجراحات، العمليات النسائية، محاولات ART، والتاريخ العائلي، مع تحميل كل قوائم الاختيار وسجلات المريضة السابقة لكل قسم.addnewmenstural, addnewobstetric, addnewpastart...) تنشئ فوراً سجلاً فارغاً في قاعدة البيانات مرتبطاً بالمريضة والطبيب الحالي بتاريخ اليوم، وتُعيد صف HTML جديداً (قالب Smarty جزئي مثل newMenstrualRow.html).update التي تستقبل اسم الجدول والعمود والقيمة وتحفظ مباشرة (حفظ خلوي لحظي بدون زر حفظ).phpasticsi مربوطة بـpartentid، كما تُعرض دورات التنشيط الداخلية المكتملة من mointoringsheet ضمن نفس القسم.phcontracttype) ويُحدَّث سجل المريضة فوراً بالمعرف الجديد؛ ويمكن أيضاً تعديل اسم عنصر قائمة عبر editselect/updateselect.del=1 عبر delRows.excelinfopatients) ويُشغَّل سكربت excel.php في الخلفية لتصدير بياناتها.phobstetric بمعرّفات ثابتة للقيصرية/الطبيعي/الإجهاض...) يُعرض في رأس بيانات المريضة (_patientdata.php/_phmain.php) في كل شاشات الكشف والشيتات.addpresenthistory.php تُدير بنك أسئلة «الشكوى الحالية» (presenthistoryquestions/presenthistoryanswers) بترتيب عرض ومفضلة، وتُستهلك إجاباتها في شيتات الكشف.patientid، وتقرير الإنهاءات يربط phobstetric.patientid بجدول patients مباشرة.doctorid الذي يُترجم لاسم الطبيب عبر awusers.user_id.medicalhistory, medicalhistorydm, surgicalhistory, surgicalhistorydm, familyhistory تُخزَّن كقوائم معرفات مفصولة بفواصل داخل أعمدة infertilitysheet وتُفك في التقارير (sh.php, Completesreport.php).status=1) عبر mointoringsheet.patientid كتاريخ ART داخلي._phmain.php و_patientdata.php (آخر LMP والصيغة التوليدية).ph* لطباعة التقرير الكامل وتقرير الإنهاءات والتصدير إلى Excel.ph* من المريضة المكررة إلى الأصلية عند الدمج.menstrual, contraception, obstetric, past, family, art...) ووضع simpleview ومسار PHP لتصدير Excel.presenthistoryquestions/presenthistoryanswers عبر presenthistorycatid (يُدار من addpresenthistory.php ويُستهلك في شيتات الكشف).varchar بدلاً من int (مثل phmenstrual.patientid وphobstetric.obstermination).phpastmedicaldisease مقابل medicalhistory) وللجراحات وللتاريخ العائلي — أحدهما لشاشة التاريخ والآخر لشيت العقم — بنفس المعنى السريري تقريباً.id IN (0$list) عبر حقن نص مباشر في SQL — مخاطرة أمنية وتصميم غير معياري.update وdelRows تستقبل اسم الجدول والعمود من المتصفح مباشرة وتمررها إلى ORM دون قائمة سماح (whitelist) — ثغرة تتيح تعديل أي جدول؛ ودالة delRowsommedel بلا أي تحقق من الجلسة._patientdata.php يعتمد على معرّفات ثابتة مكتوبة في الكود (1=SVD، 2=CS، 3=Ectopic، 4=Abortion، 5=V.mole) رغم أن القائمة قابلة للتعديل من المستخدم.phobstetric غير معياري: بيانات حتى 3 أطفال في أعمدة مكررة (babytype, babytype1, babytype2...) بدل جدول أطفال مستقل، وعمود outcomeid يقلب babygendernew بمنطق خاص.phpastart.ovdate, freezdate, phpasticsi.notes) — تُنشأ ديناميكياً بواسطة RedBeanPHP في وضع fluid (استنتاج)، ما يدل على انجراف مخطط غير موثق.patientid داخل جدول القائمة phobstericterplace شاذ ولا يُستخدم في الكود المقروء.varchar في معظم الجداول (sysdate, obsdate) ما يضعف الفرز والاستعلام، وسنوات العمليات نصوص حرة.familyhistory).exec() لتشغيل تصدير Excel عند كل فتح للصفحة — عبء أداء ونمط غير آمن.MenstrualHistory, ContraceptionHistory, ObstetricHistory (+ جدول ابن ObstetricBaby يلغي الأعمدة المكررة الثلاثية), PastMedicalHistory, PastSurgicalHistory, PastGynecologicalHistory, PastArtCycle (+ PastArtIcsiDetail أو دمجها كأعمدة في نفس الجدول), FamilyHistory — جميعها بمفتاح أجنبي حقيقي patient_id وdoctor_id.lookup_values (type + name + is_active) أو جداول Eloquent صغيرة، مع دمج الكتالوجات المزدوجة: medicalhistory مع phpastmedicaldisease، وsurgicalhistory مع phpastsurgicaloperation، وfamilyhistory مع phfamilydisease.infertility_sheet_medical_histories مع تمييز الزوج/الزوجة بعمود for_husband بدلاً من جداول *dm منفصلة.date/timestamp حقيقية، وتحويل أعمدة الربط النصية إلى unsignedBigInteger مع قيود مفاتيح أجنبية، واستخدام softDeletes القياسية بدل العلم del.phobstericterminate القابل للتعديل بـEnum ثابت (SVD/CS/Ectopic/Abortion/V.mole) لأن منطق الصيغة التوليدية يعتمد على هذه القيم؛ وحساب G/P في خدمة Domain Service مختبَرة بدل الاستعلامات المتناثرة.exec() لصالح Laravel Queue/Export (مكتبة Laravel Excel).present_history_questions/present_history_answers بعلاقة hasMany مع ترتيب عرض ومفضلة.