# م9 (التأمين) — خريطة السكاوت (2026-07-09، read-only)

BE = `Modules/Clinic` (+ LIS + NPHIES). FE = `features/clinic/insurance`. anchors file:line. المرجع: `topics/clinic-tightening-plan.md` ملحق أ (عنقود التأمين).

## 🔴 المعطوب المؤكّد (شغل م9)
- **H1 double-recognition — BROKEN:** `ApplyAdjudicationToLedger.php:57-66` بيكرّد `revenueAccountId` بـ**الإجمالي** (insurer+patient) + بيدين patient AR (:68-77)، بينما إيصال الكوباي عرّف إيراد المريض أصلًا (`PostReceiptJournalEntry.php:80,105,134`) → إيراد حصة المريض **مرتين**. الحل: كرّد **حصة المؤمِّن فقط** هنا.
- **H2 submitted vs adjudicated — BROKEN:** `:38-39` بيقرا `total_insurer_share`/`total_patient_share` (المُقدَّمة، مجمّدة `ClaimAssembler.php:55-56`)؛ المعتمدة في `total_covered`/`total_copay` (`ClinicNphiesClaimService.php:505-510`). الجزئي over-recognize. الحل: القيد من المعتمدة.
- **partial/rejected — BROKEN:** gate `:22` بيسمح Accepted+PartiallyPaid بس (PartiallyPaid لسه بيقيّد المُقدَّم)؛ Rejected → return بلا write-off/rebill.
- **M6 swallowed — BROKEN:** `:83-94` try/catch→Log فقط.
- **H3 Egypt manual — MISSING:** مفيش adjudicate endpoint (routes `:391-395` = assemble/index/show/submit-nphies بس). `ClaimAdjudicated` بيتبعت من مكان واحد (`ClinicNphiesClaimService.php:513` NPHIES parser). `ManualClaimAdapter.php:15-26` بيقلب Submitted بس. → payers يدوي/مصر **مايعرفوش يعترفوا بحصة المؤمِّن أبدًا**. الحل: action/endpoint اعتماد يدوي يبعت `ClaimAdjudicated`.
- **M5 caps — BROKEN على المسار الأساسي:** `AddServiceOrderLine.php:121-136` بينادي `resolveContractPrice` per-line بس؛ مفيش applyVisitCap/annual. `splitForOrder` (`CoverageService.php:330-377` + applyVisitCap:194 + annual:357-362) ليه callerين: `CoverageController::compute` (on-demand) + `RecomputeCoverageOnLine.php:26` (على `ServiceRendered`). **`ServiceRendered` مابيتبعتش أبدًا** (grep=0) → RecomputeCoverageOnLine ميت → السقوف تُفرض بس لو ضربت الكونترولر يدوي. (`redistributeExcess` سليم، بس مش موصّل.)
- **H4 party accrual — DEAD:** `AccrueLineParties` بيركب نفس `ServiceRendered` الميت (العمولات/التوزيع).
- **write-off/rebill — MISSING:** grep=0 (لا bad-debt account، لا write-off، لا rebill).
- **FE claim-detail — MISSING:** `claims-list.component` موجود (route `insurance/claims`، perm `clinic.claim.view`، action الوحيد submitNphies). `getClaimById` موجود بلا مستهلك. مفيش detail/record-adjudication/write-off/rebill UI. payer-contracts screen موجود.

## ✅ EXISTS+CORRECT (مايتبنيش)
- **contract pricing clinic-side:** `ContractServicePrice` (table `clinic_contract_service_prices`، migration `2026_06_22_020003`) per service+doctor: approved_price/patient_share/insurance_share. `CoverageService::resolveContractPrice:26-83` (doctor→service-default→natural). **القرار المرحّل (per-test integrated) منفّذ فعليًا على مستوى الـresolver؛ الفجوة = السقوف مش التخزين.**
- **claim model:** `Models/Claim.php` (`clinic_claims`)؛ statuses `Enums/ClaimStatus.php` (draft/eligible/preauth_approved/submitted/accepted/rejected/partially_paid). Event `Events/ClaimAdjudicated.php`؛ listener `EventServiceProvider.php:196-198`. adapter binding `ClinicServiceProvider.php:54-67` (Manual افتراضي، Nphies لو enabled).
- **GL:** insurer AR = `payer_contracts.insurance_receivable_account_id` (per-contract، `PayerContract.php:34`)؛ adjudication revenue = `payer_contracts.revenue_account_id` (per-contract)؛ patient AR = setting `clinic.ar_account_id`؛ receipt revenue = setting `clinic.revenue_account_id`. ⚠️ **الاعتراف ممكن يضرب حسابين إيراد مختلفين لنفس المطالبة** (per-contract مقابل setting) — مهم لإصلاح H1.

## migrations
أحدث Clinic = `2026_07_08_000020`. م9 الجديد ≥ `2026_07_08_000030` أو `2026_07_09_*`.

## أسئلة العقد (لـFable)
1. الاعتراف: Clinic فقط ولا shared recognizer؟ 2. H1: كرّد insurer-only (سيب المريض للإيصال) ولا انقل كل الاعتراف للـadjudication؟ أي حساب إيراد يكسب؟ 3. H2: repoint للـcovered/copay ولا overwrite؟ 4. Egypt-manual: `POST claims/{claim}/adjudicate` + payload؟ 5. caps: عند line-add/finalize/assemble؟ وإحياء `ServiceRendered` (يشمل H4 party accrual ولا coverage بس)؟ 6. write-off (bad-debt setting + action على Rejected) + rebill (clone→Draft)؟ 7. FE: detail + record-adjudication + reject/write-off/rebill + صلاحيات جديدة.
