--- description: Lab Cases tab — prosthesis filter, auto-select, list cards, Case Sheet PDF globs: frontend/src/components/ui/lab/CasesPage.tsx,frontend/src/components/ui/lab/CaseDetailPanel.tsx,frontend/src/components/ui/lab/LabCaseProsthesisGroupsList.tsx,frontend/src/components/ui/lab/LabCaseShareQr*.tsx,frontend/src/components/ui/lab/CaseSheet*.tsx,frontend/src/components/lab/caseSheetPdf.ts,frontend/src/components/lab/caseDetailUtils.ts,backend/src/modules/cases/** alwaysApply: false --- # Lab Cases - **Filter by prosthesis**, not treatment type — `prosthesisTypeCode`; matches cases with **any task** of that type. - **Auto-select** newest case on tab open; right panel never empty when list has items; `?caseId=` deep link overrides. - **List cards:** `LabCaseProsthesisGroupsList` (catalog color + teeth); same component as Treatment shipments rail; no patient mobile on card. - **Assignment** in detail only (`TAB_CASES_EDIT`); task status changes on Tasks tab. - **Share link:** QR + URL when case is sent; token API + focus page — see `.cursor/skills/lab-case-share-link/SKILL.md`. - **Case Sheet PDF:** client A4 via `jspdf` + `html2canvas`; print layout must stay **hex-only** (Tailwind `lab()`/`oklch` breaks capture). Optional `externalCode` replaces PDF order number when set. - **Detail chrome:** Important Case checkbox (`labelPosition="start"`) then external-code input (no field title; placeholder only). Skill: `.cursor/skills/lab-cases/SKILL.md`