# م7 — الطلبات والروشتة والنتايج — RESUME (مكتملة، ⏳ نشر WP9) 2026-07-08

> نقطة الرجوع الشاملة لـم7. العقد + التعديلات في `LEDGER.md`، الخريطة `SCOUT.md`. ⚠️ Fable (أداة advisor) معطّلة الجلسة → عوّضتها بوكيل **architect** لمراجعة العقد (حكم APPROVE-WITH-CHANGES، تعديلات A-F مُدمجة) + **Codex** كل WP.

## الحالة: ✅ 9/9 مكتملة، منشورة /app `main-BNO4S2FU.js` + hazemdev (BE `d998e5285`/FE `47978bf`)، بانتظار تست المالك

**السويت الكامل: 656 نجاح / 1 فشل = ClinicRoomTest HRM معطوب مسبقًا (صفر regression من م7؛ ملفات م7 = 21 نجاح).** ⛔ المالك: merge→main + ship + تست.

الفكرة الحاكمة (المالك): **الدكتور مايكتبش — يختار**، بالنموذجين (متكامل LIS / مستقل).

## الأعمال + الـSHAs
| WP | المحتوى | SHA |
|----|---------|-----|
| WP1 | **Favorites BE:** `clinic_favorites` polymorphic (company+user+type+id، unique، createOrFirst race-safe) + `idSetFor` helper. 5 Pest. migration `..._000010`. | BE `90e451bb1` |
| WP2 | **Standalone orders BE (F2/F3/F4):** `clinic_service` في intent CATALOG (kind مشتقّ من service_type) + `ClinicCatalogMode` يقرا lab_mode/rad_mode + `executeHere` فرع clinic_service عبر **`AddServiceOrderLine`** (لقطات الفوترة تشتعل، مايعملش سطرين لـ409-guard) + حارس `SubmitExternalResult` يقبل Here **لـclinic_service فقط** (LIS-Here يفضل مرفوض). 7 Pest + 102 regression. | BE `c5646b68e` |
| WP3 | **Rx presets BE:** `clinic_drug_presets` (product_id?/drug_name، form، ready_sentence، is_default، sort؛ lockForUpdate-serialized) + repeat-last endpoint + most-used (per-doctor من تاريخ الروشتات عبر LabDoctor→Employee→user، بلا جدول). 9 Pest. migration `..._000020`. | BE `a1a603da0` |
| WP4 | **Catalog-grid-picker FE:** مكوّن max-visibility مشترك (أعمدة فئات + checkboxes + حدد-الفئة tri-state + حارة favorites + dim-filter + inline-add + N+2). source-agnostic. | FE `6487101` |
| WP5 | **Wire grid → lab/rad orders FE:** الشبكة بدل typeahead + مبدّل المصدر بالوضع (integrated=LIS / standalone=clinic_services) + favorites (WP1) + ids سالبة collision-proof + listAll page-walk + tab-switch draft عبر `OrderDraftStore` (بلا لمس consultation.ts). EncounterResource يعرض lab_mode/rad_mode. | BE `e1f009eb9` · FE `0c68cdc` |
| WP6 | **Fast prescription FE:** cascade دواء→شكل→جملة (presets WP3، stale-race guarded) + auto-advance + «كرر آخر روشتة» (يحافظ على المسودّة الجارية) + favorites/most-used + inline-add-persist. `@Input patientId` مربوط في consultation.html. | FE `c7ecf50` (مع WP7) |
| WP7 | **Standalone results FE:** زر «إدخال النتيجة» على intents `here`+`clinic_service` **فقط** (مش LIS-here)، يعيد استخدام ExternalResultDialog؛ badge «نتيجة» محايد؛ مش gated على locked؛ نفس external_result ClinicalDocument (يظهر في timeline م6). | FE `c7ecf50` |
| WP8 | **Print + rad FE:** `ClinicOrderPrintService` (يعيد استخدام plumbing الروشتة، HTML-escaped) slips lab/rad (أسماء فقط) + polish طباعة الروشتة (يشيل «—»، يبرز ready_sentence) + rad flow نظيف. الاستقبال-grid مؤجّل (موثّق). | FE `47978bf` |
| WP9 | **Ship:** CHANGELOG ✅ + KB ✅ + نشر /app ⏳ + push ⏳ + السويت الكامل ⏳. | — |

migrations على moonui_dev_be: `clinic_favorites` + `clinic_drug_presets`.

## التعديلات المُلزِمة (architect، بديل Fable) — كلها مُطبَّقة
A: حارس النتيجة Here-لـclinic_service-فقط · B: فرع AddServiceOrderLine (فوترة) + kind مشتقّ · C: tab-switch في سيرفس (بلا لمس consultation.ts؛ WP5/6/7 ماتصادموش) · D: `is_default` + inline-add-persist كـday-1 · E: `ClinicCatalogMode` (مش ClinicMode) · F: تست عزل WP3.

## مراجعات Codex (bugs مُصلَحة)
- WP1: firstOrCreate→**createOrFirst** (race). · WP3: preset dedupe+is_default→**lockForUpdate** (gap-lock). · WP5: offset 10M→**ids سالبة** collision-proof + **listAll page-walk** للمستقل + إصلاح `.data`. · WP6: **stale-preset race** (guard selectedDrug) + **repeat-last يحافظ على المسودّة** (append بدل replace). · WP2/WP7/WP8: صفر (approve).

## المؤجّلات (م7)
- **الاستقبال يستخدم الشبكة القصوى** — نموذج AddLineRow مختلف (line-type + doctor + qty) مش drop-in؛ follow-up مستقل.
- كتالوج أدوية مستقل كامل (2000 صف + drug_categories/dosage_forms) → مرحلة لاحقة (MVP=Products+presets).
- toggle «للزوج/forhusband» في الروشتة → مؤجّل.
- طباعة BE-PDF حقيقية (نستخدم FE-HTML) → م8/م10.
- favorites للتشخيص/الشكوى (الجدول polymorphic جاهز) → عند لمس اللوحات.
- استبيان الشكوى المنظم بالشبكة → م9.
- **ملاحظة day-1:** presets فاضية → الدكتور يكتب أول مرة لكل دواء ثم inline-add-persist (مقبول بالتصميم).

## التالي
م8 (الكاشير والفلوس). 4 مراحل متبقية (م8–م11). النقطة الشاملة: `plans/CLINIC-MODULE-FREEZE-RESUME.md`.
