KPI strip
| KPI | Meaning |
|---|
| Total ingredients | All rows visible to your role (global + tenant for tenants; all rows for L1) |
| Global library | is_global = true — shared across tenants |
| Tenant-specific | Non-global rows scoped to a tenant |
| Controlled | is_controlled_substance = true — Rx priority routing |
| Schedule G | is_schedule_g = true — pharmacist sign-off required |
KPI counts are server-side aggregates; table filters do not change KPI values.
| Control | Values | Effect |
|---|
| Search | Free text | name or description ILIKE match |
| Scope tabs | All · Global · Tenant | Filters is_global / tenant_id visibility |
| Status | All status · Active · Inactive | Filters is_active |
Table columns
| Column | Content |
|---|
| Ingredient | Icon, name, description |
| Scope | Global pill or Tenant pill + tenant id prefix |
| Regulatory | Controlled pill, Schedule G pill, or — |
| Status | Active (green dot) or Inactive (grey dot) |
| Updated | Last modified date (en-GB format) |
| Actions | Edit · Delete (disabled when not permitted) |
- Page size: 20 rows.
- Footer:
Showing X–Y of N + first/prev/next/last controls.
- Search and filter changes reset to page 1.
Route & permission
| Item | Value |
|---|
| Path | /pims/ingredients |
| Permission | product.ingredients |