# Database — Blazma LIMS

## 1. Overview

| Attribute | Value |
|-----------|-------|
| **Engine** | MySQL |
| **Total Tables** | 320 |
| **Naming Convention** | UPPERCASE for app tables, lowercase for Laravel system tables |
| **Primary Keys** | `ID` (uppercase) for app tables, `id` (lowercase) for Laravel tables |
| **Timestamps** | `created_at`, `updated_at` (mixed case) |
| **Tenant Key** | `PROFILE_ID` — present in almost every business table |
| **Language** | Bilingual fields: `NAME_EN` / `NAME_AR`, `TITLE_EN` / `TITLE_AR` |

---

## 2. Table Groups

### 2.1 — Identity & Authentication

| Table | Purpose | Key Columns |
|-------|---------|-------------|
| `END_USER` | Patients / end-users | ID, MOBILE_NUMBER, EMAIL, FULL_NAME, PROFILE_ID, WALLET_AMOUNT, CREDIT_LIMIT, INSURANCE_COMPANY_ID |
| `SYSTEM_USER` | Lab staff, technicians, admins | ID, USERNAME, PASSWORD, PROFILE_ID, ROLE_ID, HOSPITAL_ID |
| `BM_ADMINS` | Platform super-admins | id, name, email, username, password |
| `BM_ROLES` | RBAC roles (Spatie) | id, name, guard_name |
| `BM_PERMISSIONS` | RBAC permissions | id, name, guard_name, group_id |
| `BM_MODEL_HAS_ROLE` | Role assignments | role_id, model_type, model_id |
| `BM_MODEL_HAS_PERMISSIONS` | Permission assignments | permission_id, model_type, model_id |
| `BM_ROLE_HAS_PERMISSIONS` | Role-permission pivot | permission_id, role_id |
| `BM_GROUP_PERMISSIONS` | Permission grouping | id, name_en, name_ar |
| `ROLE` | System user roles | ID, NAME_EN, NAME_AR |
| `ROLE_HAS_PERMISSION` | Role permissions pivot | ROLE_ID, PERMISSION_ID |
| `PERMISSION` | System user permissions | ID, NAME |
| `MOBILE_NO_VERIFICATION` | OTP verification | ID, MOBILE_NUMBER, CODE, PROFILE_ID |
| `END_USER_EMAIL_VERIFICATION` | Email verification tokens | ID, END_USER_ID, TOKEN |
| `DEVICE_TOKENS` | FCM push tokens (patients) | ID, END_USER_ID, TOKEN, PLATFORM |
| `SYSTEM_USER_DEVICE_TOKEN` | FCM push tokens (staff) | ID, SYSTEM_USER_ID, TOKEN |
| `personal_access_tokens` | Laravel Sanctum tokens | id, tokenable_id, tokenable_type, token |
| `password_resets` | Password reset tokens | email, token, created_at |
| `sessions` | Laravel sessions | id, user_id, payload, last_activity |
| `users` | Generic Laravel users (unused in main flow) | id, name, email, password |

---

### 2.2 — Multi-Tenancy & Configuration

| Table | Purpose | Key Columns |
|-------|---------|-------------|
| `PROFILE` | Lab organization/tenant **[CRITICAL]** | ID, NAME_EN, NAME_AR, VAT_NO, + 150+ config columns |
| `HOSPITAL` | Lab branches/locations | ID, PROFILE_ID, NAME_EN, NAME_AR, CITY_ID, LAT, LONG |
| `HOSPITAL_LOCATION` | Location details | ID, HOSPITAL_ID, ADDRESS |
| `HOSPITAL_BANK` | Hospital bank details | ID, HOSPITAL_ID, BANK_NAME, IBAN |
| `HOSPITAL_POS` | POS configurations | ID, HOSPITAL_ID, POS_TYPE |
| `HOSPITAL_INV_LOCATION` | Inventory locations | ID, HOSPITAL_ID |
| `HOSPITAL_GENDER` | Gender restrictions per hospital | ID, HOSPITAL_ID, GENDER_ID |
| `HOSPITAL_STORAGE_UNIT` | Storage unit assignment | ID, HOSPITAL_ID, STORAGE_UNIT_ID |
| `LAB_SETTING` | Lab configuration | ID, PROFILE_ID, SETTING_KEY, SETTING_VALUE |
| `PROFILE_ENABLE_OPTION` | Feature toggles | ID, PROFILE_ID, OPTION_KEY, IS_ENABLED |
| `PROFILE_ENABLE_RESULT` | Result enable config | ID, PROFILE_ID |
| `VAT_PROFILE` | VAT rate configuration | ID, PROFILE_ID, VAT_RATE, EFFECTIVE_DATE |
| `WHITE_LABEL_*` | White-label content tables | PROFILE_ID, various content fields |
| `BM_GENERAL_SETTING` | Platform-wide settings | id, IS_SEND_SMS, PHONE_NUMBER |

---

### 2.3 — Test Catalog

| Table | Purpose | Key Columns |
|-------|---------|-------------|
| `LAB_CATEGORY` | Test categories (e.g., Hematology, Biochemistry) | ID, PROFILE_ID, NAME_EN, NAME_AR, PARENT_ID |
| `LAB_CATEGORY_TYPE` | Category types | ID, NAME_EN, NAME_AR |
| `LAB_CATEGORY_PACKAGE` | Tests and packages **[CRITICAL]** | ID, PROFILE_ID, NAME_EN, NAME_AR, CODE, PRICE, SPECIMEN_TYPE_ID, TAT |
| `LAB_CATEGORY_PACKAGE_RESULT` | Result parameters per test | ID, LAB_CATEGORY_PACKAGE_ID, NAME_EN, UNIT, REF_RANGE |
| `LAB_CATEGORY_PACKAGE_RESULT_OPTIONS` | Result option values | ID, RESULT_ID, VALUE_EN, VALUE_AR |
| `LAB_CATEGORY_PACKAGE_HOSPITAL` | Test availability per hospital | ID, LAB_CATEGORY_PACKAGE_ID, HOSPITAL_ID |
| `LAB_CATEGORY_PACKAGE_END_USER` | Test access per patient type | ID, LAB_CATEGORY_PACKAGE_ID, END_USER_ID |
| `LAB_CATEGORY_PACKAGE_QUESTIONNAIRE` | Questionnaires per test | ID, LAB_CATEGORY_PACKAGE_ID, QUESTIONNAIRE_ID |
| `LAB_CATEGORY_PACKAGE_QUESTIONNAIRE_OPTIONS` | Questionnaire option values | ID, QUESTIONNAIRE_ID, OPTION |
| `LAB_CATEGORY_PACKAGE_INSTRUCTION` | Pre-test instructions | ID, LAB_CATEGORY_PACKAGE_ID, INSTRUCTION_EN, INSTRUCTION_AR |
| `LAB_CATEGORY_PACKAGE_GROUP_OPTION` | Group test options | ID, LAB_CATEGORY_PACKAGE_ID |
| `PROFILE_LAB_CATEGORY_PACKAGE` | Profile-specific test config | ID, PROFILE_ID, LAB_CATEGORY_PACKAGE_ID, PRICE |
| `PROFILE_PRICE_LIST` | Price list definitions | ID, PROFILE_ID, NAME |
| `PROFILE_PRICE_LIST_PACKAGE` | Price list test prices | ID, PRICE_LIST_ID, LAB_CATEGORY_PACKAGE_ID, PRICE |
| `PROFILE_PACKAGE_CODE` | Custom test codes per profile | ID, PROFILE_ID, LAB_CATEGORY_PACKAGE_ID, CODE |
| `PROFILE_PACKAGE_TIME` | Test scheduling times | ID, PROFILE_ID, LAB_CATEGORY_PACKAGE_ID |
| `PROFILE_DISCOUNT_LIST_PACKAGE` | Discount lists | ID, PROFILE_ID, LAB_CATEGORY_PACKAGE_ID, DISCOUNT |
| `SPECIMEN_TYPE` | Specimen types (blood, urine, etc.) | ID, NAME_EN, NAME_AR |
| `SAMPLE_CONDITIONS` | Sample condition requirements | ID, NAME_EN, NAME_AR |
| `PROFILE_REFERENCE_RANGE` | Reference ranges per test | ID, PROFILE_ID, LAB_CATEGORY_PACKAGE_RESULT_ID, MIN, MAX |
| `PROFILE_UNIT` | Measurement units | ID, PROFILE_ID, UNIT_NAME |
| `PROFILE_UNIT_CATEGORY` | Unit categories | ID, PROFILE_ID, NAME |
| `PROFILE_UNIT_TEST` | Unit-test assignments | ID, PROFILE_ID, UNIT_ID, TEST_ID |
| `REFERENCE_RANGE_RULE` | Dynamic reference range rules | ID, PROFILE_ID, RULE_CONDITIONS |
| `REF_RANGE_TYPE` | Reference range types | ID, NAME |
| `REF_RANGE_UNIT` | Reference range units | ID, NAME |
| `REFERENCE_SYMBOL` | Result symbols (H, L, *) | ID, SYMBOL, DESCRIPTION |
| `CATEGORY_ADVICE` | Post-test advice | ID, LAB_CATEGORY_ID, NAME_EN, NAME_AR |
| `FORMULA` | Calculated test formulas | ID, PROFILE_ID, FORMULA_EXPRESSION |
| `FORMULA_LAB_CATEGORY_PACKAGE` | Formula-test mapping | ID, FORMULA_ID, LAB_CATEGORY_PACKAGE_ID |
| `LINKED_TEST` | Test dependency links | ID, PARENT_ID, CHILD_ID |
| `LAB_PACKAGE_ITEM` | Package component tests | ID, PACKAGE_ID, TEST_ID |
| `PLATFORM_CATEGORY` | Platform category groupings | ID, NAME_EN, NAME_AR |
| `PLATFORM_CATEGORY_LAB_CATEGORY_PACKAGE` | Platform-test pivot | ID, PLATFORM_CATEGORY_ID, LAB_CATEGORY_PACKAGE_ID |

---

### 2.4 — Orders & Samples

| Table | Purpose | Key Columns |
|-------|---------|-------------|
| `END_USER_LAB_CART` | Shopping cart | ID, END_USER_ID, LAB_CATEGORY_PACKAGE_ID, PROFILE_ID |
| `END_USER_LAB_ORDER` | Order header **[CRITICAL]** | ID, END_USER_ID, PROFILE_ID, HOSPITAL_ID, ORDER_DATE, STATUS_ID, ORDER_TYPE |
| `END_USER_LAB_ORDER_PACKAGE` | Order line items / samples **[CRITICAL]** | ID, END_USER_LAB_ORDER_ID, LAB_CATEGORY_PACKAGE_ID, STATUS_ID, RESULT_STATUS, PRICE |
| `END_USER_LAB_ORDER_PACKAGE_RESULT` | Individual result values **[CRITICAL]** | ID, END_USER_LAB_ORDER_PACKAGE_ID, RESULT_ID, VALUE, UNIT |
| `END_USER_LAB_ORDER_PACKAGE_TEMPLATE` | Template-based results | ID, END_USER_LAB_ORDER_PACKAGE_ID, TEMPLATE_ID |
| `END_USER_LAB_ORDER_PACKAGE_OPINION` | Doctor opinions/comments | ID, END_USER_LAB_ORDER_PACKAGE_ID, OPINION_TEXT |
| `END_USER_LAB_ORDER_PACKAGE_BLOCK` | Block/lock controls | ID, END_USER_LAB_ORDER_PACKAGE_ID, SYSTEM_USER_ID |
| `END_USER_LAB_ORDER_PACKAGE_INTERNAL_SAMPLE` | Internal sample tracking | ID, END_USER_LAB_ORDER_PACKAGE_ID |
| `END_USER_LAB_ORDER_PACKAGE_CONFIRMATION_RESULT` | Result confirmation | ID, END_USER_LAB_ORDER_PACKAGE_ID |
| `END_USER_LAB_ORDER_ATTACHMENT` | Order attachments | ID, END_USER_LAB_ORDER_ID, FILE_PATH |
| `END_USER_LAB_ORDER_PACKAGE_ATTACHMENT` | Sample attachments | ID, END_USER_LAB_ORDER_PACKAGE_ID, FILE_PATH |
| `END_USER_LAB_ORDER_ESAMPLE` | Electronic sample data | ID, END_USER_LAB_ORDER_ID |
| `END_USER_LAB_ORDER_HISTORY` | Order status history/audit | ID, END_USER_LAB_ORDER_ID, STATUS_ID, CHANGED_BY |
| `END_USER_PACKAGE_REFERENCE` | External package references | ID, END_USER_LAB_ORDER_PACKAGE_ID, REFERENCE |
| `END_USER_PACKAGE_SENDOUT` | Send-out requests | ID, END_USER_LAB_ORDER_PACKAGE_ID, SENDOUT_LAB_ID |
| `END_USER_SAMPLE_COMMENT` | Sample comments | ID, END_USER_LAB_ORDER_PACKAGE_ID, COMMENT |
| `END_USER_SAMPLE_DISPOSE` | Sample disposal records | ID, END_USER_LAB_ORDER_PACKAGE_ID, DISPOSE_DATE |
| `END_USER_SAMPLE_STORAGE_UNIT` | Sample storage assignment | ID, END_USER_LAB_ORDER_PACKAGE_ID, STORAGE_UNIT_ID |
| `END_USER_SAMPLE_RETRIEVE_STORAGE` | Sample retrieval log | ID, END_USER_LAB_ORDER_PACKAGE_ID |
| `ORDER_STATUS` | Order status lookup | ID, NAME_EN, NAME_AR, CODE |
| `LAB_ORDER_STATUS` | Sample-level status lookup | ID, NAME_EN, NAME_AR, CODE |
| `CANCEL_REASON` | Cancellation reasons | ID, NAME_EN, NAME_AR |
| `REJECT_REASON` | Rejection reasons | ID, NAME_EN, NAME_AR |
| `BATCH` | Analyzer batch groupings | ID, PROFILE_ID, NAME, STATUS |
| `PICKUP` | Pickup scheduling | ID, PROFILE_ID, DATE, TIME_SLOT |
| `SAMPLE_GENERATION` | Sample generation records | ID, PROFILE_ID, ORDER_ID |
| `SAMPLE_GENERATION_ANALYZER` | Analyzer assignments | ID, SAMPLE_GENERATION_ID, ANALYZER_ID |
| `SAMPLE_GENERATION_TEST` | Test assignments in generation | ID, SAMPLE_GENERATION_ID, TEST_ID |
| `GROUP` | Test result groups | ID, PROFILE_ID, NAME |
| `GROUP_PACKAGE_RESULT` | Group-result pivot | ID, GROUP_ID, RESULT_ID |
| `RUN` | Lab run records | ID, PROFILE_ID |
| `END_USER_PACKAGE_QUESTIONNAIRE_ANSWERS` | Questionnaire answers | ID, END_USER_LAB_ORDER_PACKAGE_ID, QUESTION_ID, ANSWER |
| `END_USER_PACKAGE_QUESTIONNAIRE_ANSWERS_CART` | Cart questionnaire answers | ID, CART_ID, QUESTION_ID, ANSWER |
| `LAB_AVAILABLE_TIME` | Time slots per hospital | ID, HOSPITAL_ID, DAY_ID, FROM_TIME, TO_TIME |
| `HOME_VISIT_CITY` | Home visit enabled cities | ID, PROFILE_ID, CITY_ID |
| `HOME_VISIT_CITY_HOSPITAL` | Home visit hospital per city | ID, HOME_VISIT_CITY_ID, HOSPITAL_ID |

---

### 2.5 — Payments & Finance

| Table | Purpose | Key Columns |
|-------|---------|-------------|
| `PAYMENTS` | Payment transactions **[CRITICAL]** | ID, END_USER_LAB_ORDER_ID, AMOUNT, METHOD_ID, STATUS, GATEWAY_REF |
| `PAYMENT_METHOD` | Payment methods | ID, NAME_EN, NAME_AR, TYPE |
| `ONLINE_PAYMENT_METHOD` | Online payment methods | ID, NAME, GATEWAY |
| `PROFILE_ONLINE_PAYMENT_METHOD` | Active payment methods per profile | ID, PROFILE_ID, ONLINE_PAYMENT_METHOD_ID |
| `END_USER_INVOICE` | Patient invoices **[CRITICAL]** | ID, END_USER_ID, PROFILE_ID, TOTAL, VAT_AMOUNT, STATUS |
| `END_USER_AUTOMATIC_INVOICE` | Auto-generated invoices | ID, END_USER_ID, PROFILE_ID |
| `END_USER_INVOICE_REJECTED` | Rejected invoice records | ID, END_USER_INVOICE_ID |
| `END_USER_CREDIT_NOTE` | Credit notes | ID, END_USER_ID, PROFILE_ID, AMOUNT |
| `END_USER_DEBIT_NOTE` | Debit notes | ID, END_USER_ID, PROFILE_ID, AMOUNT |
| `INVOICES` | General invoices | ID, PROFILE_ID, INVOICE_NUMBER, TOTAL |
| `INVOICES_SEQUENCES` | Invoice number sequences | ID, PROFILE_ID, YEAR, SEQUENCE |
| `INVOICE_STATUS` | Invoice status lookup | ID, NAME_EN, NAME_AR |
| `SYSTEM_USER_INVOICE` | Staff-generated invoices | ID, SYSTEM_USER_ID, PROFILE_ID |
| `END_USER_WALLET` | Wallet transactions | ID, END_USER_ID, AMOUNT, TYPE, REFERENCE |
| `WALLET_TRANSACTION_TYPE` | Wallet transaction types | ID, NAME |
| `ORDER_TRANSACTION_REFUND` | Refund records | ID, ORDER_ID, AMOUNT, REFUND_DATE |
| `COUPON` | Discount coupons | ID, PROFILE_ID, CODE, DISCOUNT, EXPIRY |
| `END_USER_COUPON` | Coupon usage tracking | ID, END_USER_ID, COUPON_ID, USED_AT |
| `END_USER_POINT` | Loyalty points | ID, END_USER_ID, POINTS, TYPE |
| `PROFILE_LOYALTY_TEST` | Tests earning loyalty points | ID, PROFILE_ID, LAB_CATEGORY_PACKAGE_ID, POINTS |

---

### 2.6 — Insurance & Claims

| Table | Purpose | Key Columns |
|-------|---------|-------------|
| `INSURANCE_COMPANY` | Insurance providers | ID, PROFILE_ID, NAME_EN, NAME_AR |
| `INSURANCE_CLAIMS` | Insurance claims **[CRITICAL]** | ID, PROFILE_ID, END_USER_LAB_ORDER_PACKAGE_ID, CLAIM_STATUS, NPHIES_ID |
| `INSURANCE_INVOICES` | Insurance billing invoices | ID, PROFILE_ID, INSURANCE_COMPANY_ID, TOTAL |
| `INSURANCE_APPROVALS` | Pre-authorization approvals | ID, CLAIM_ID, APPROVAL_STATUS |
| `INSURANCE_COVERAGE_POLICIES` | Coverage policy definitions | ID, INSURANCE_COMPANY_ID |
| `INSURANCE_DOCUMENTS` | Supporting documents | ID, CLAIM_ID, DOCUMENT_PATH |
| `INSURANCE_GROUPS` | Insurance group classifications | ID, PROFILE_ID, NAME |
| `INSURANCE_HOSPITAL` | Insurance-hospital linkage | ID, INSURANCE_COMPANY_ID, HOSPITAL_ID |
| `INSURANCE_TEST_PRICES` | Insurance-specific test prices | ID, INSURANCE_COMPANY_ID, LAB_CATEGORY_PACKAGE_ID, PRICE |
| `INSURANCE_USERS_INVOICE` | Patient insurance invoices | ID, END_USER_ID, INSURANCE_COMPANY_ID |
| `INSURANCE_INVOICE_REJECTED` | Rejected insurance invoices | ID, INSURANCE_INVOICE_ID |
| `PATIENT_INSURANCE_ATTACHMENTS` | Insurance document attachments | ID, END_USER_ID, DOCUMENT_PATH |
| `INSURANCES` | Patient insurance assignments | ID, END_USER_ID, INSURANCE_COMPANY_ID, POLICY_NUMBER |

---

### 2.7 — ZATCA (E-Invoicing)

| Table | Purpose | Key Columns |
|-------|---------|-------------|
| `ZATCA_INVOICE` | ZATCA B2C e-invoices **[CRITICAL]** | ID, PROFILE_ID, INVOICE_ID, ZATCA_STATUS, QR_CODE, XML |
| `ZATCA_B2B_INVOICE` | ZATCA B2B e-invoices | ID, PROFILE_ID, INVOICE_ID, CLEARANCE_STATUS |
| `ZATCA_HOSPITAL` | ZATCA hospital config | ID, HOSPITAL_ID, ZATCA_CERT |
| `ZATCA_INTEGRATION` | ZATCA integration credentials | ID, PROFILE_ID, CSR, CERT, PRIVATE_KEY |

---

### 2.8 — QC (Quality Control)

| Table | Purpose | Key Columns |
|-------|---------|-------------|
| `QC` | QC sessions | ID, PROFILE_ID, DATE, STATUS |
| `QC_ANALYZER` | QC analyzer assignments | ID, QC_ID, ANALYZER_ID |
| `QC_RESULT` | QC test results | ID, QC_LOT_TEST_ID, VALUE, WESTGARD_STATUS |
| `QC_LOT` | QC reagent lots | ID, PROFILE_ID, LOT_NUMBER, EXPIRY |
| `QC_LOT_TEST` | Tests per QC lot | ID, QC_LOT_ID, LAB_CATEGORY_PACKAGE_ID |
| `QC_STATISTIC` | Statistical calculations | ID, QC_LOT_TEST_ID, MEAN, SD, CV |
| `QC_APPROVAL_RESULT` | Approved QC results | ID, QC_RESULT_ID, APPROVED_BY |
| `QC_LAB_CATEGORY_PACKAGE` | QC-test linkage | ID, QC_ID, LAB_CATEGORY_PACKAGE_ID |
| `QC_WESTGARD_RULE` | Westgard rule definitions | ID, NAME, RULE_CODE |
| `PROFILE_QC_WESTGARD_RULES` | Active Westgard rules per profile | ID, PROFILE_ID, QC_WESTGARD_RULE_ID |
| `CORRECTIVE_ACTIONS` | QC corrective action records | ID, PROFILE_ID, ACTION_TEXT, STATUS |

---

### 2.9 — Analyzers & Instruments

| Table | Purpose | Key Columns |
|-------|---------|-------------|
| `ANALYZER_TYPE` | Analyzer instrument types | ID, NAME_EN, NAME_AR |
| `ANALYZER_TYPE_FILE` | Analyzer file format configs | ID, TYPE_ID, NAME, FILE_NAME |
| `PROFILE_ANALYZER` | Profile analyzer assignments | ID, PROFILE_ID, ANALYZER_TYPE_ID |
| `PROFILE_ANALYZER_WORK_LIST` | Work list configurations | ID, PROFILE_ANALYZER_ID |
| `ANALYZER_PACKAGE_REFERENCE` | Test code mappings per analyzer | ID, ANALYZER_ID, LAB_CATEGORY_PACKAGE_ID, CODE |
| `QC_ANALYZER` | QC analyzer tracking | ID, QC_ID, ANALYZER_ID |

---

### 2.10 — Inventory / Warehouse

| Table | Purpose | Key Columns |
|-------|---------|-------------|
| `PROFILE_INV_ITEM` | Inventory items (reagents, kits) | ID, PROFILE_ID, NAME, ITEM_TYPE_ID |
| `PROFILE_INV_ITEM_TYPE` | Item type categories | ID, NAME |
| `PROFILE_INV_ITEM_UNIT` | Item units | ID, ITEM_ID, UNIT_ID, QUANTITY |
| `PROFILE_INV_ITEM_LINE` | Item batch/lot lines | ID, ITEM_ID, LOT_NUMBER, EXPIRY |
| `PROFILE_INV_ITEM_TEST` | Item-test associations | ID, ITEM_ID, LAB_CATEGORY_PACKAGE_ID |
| `PROFILE_INV_KIT_ITEM` | Kit compositions | ID, KIT_ID, COMPONENT_ID, QUANTITY |
| `PROFILE_INV_UNIT` | Measurement units | ID, PROFILE_ID, UNIT_NAME |
| `PROFILE_INV_VENDOR` | Vendor/supplier records | ID, PROFILE_ID, VENDOR_NAME |
| `PROFILE_INV_VENDOR_CONTACT_LIST` | Vendor contacts | ID, VENDOR_ID, NAME, MOBILE |
| `PROFILE_INV_VENDOR_ITEM` | Vendor-item catalog | ID, VENDOR_ID, ITEM_ID, PRICE |
| `PROFILE_INV_MAIN_TRANSACTION` | Inventory movement header | ID, PROFILE_ID, TRANSACTION_TYPE, DATE |
| `PROFILE_INV_MAIN_TRANSACTION_DETAILS` | Inventory movement lines | ID, TRANSACTION_ID, ITEM_ID, QUANTITY |
| `PROFILE_INV_TRANSACTION` | Raw inventory transactions | ID, PROFILE_ID, ITEM_ID, QUANTITY, TYPE |
| `PROFILE_PURCHASE_ORDER` | Purchase orders | ID, PROFILE_ID, VENDOR_ID, STATUS |
| `PROFILE_PURCHASE_ORDER_CART` | PO cart items | ID, PO_ID, ITEM_ID, QUANTITY |
| `PROFILE_PURCHASE_ORDER_ITEM` | PO line items | ID, PO_ID, ITEM_ID, QUANTITY, PRICE |
| `PROFILE_PURCHASE_REQUEST` | Purchase requests | ID, PROFILE_ID, REQUESTED_BY |
| `PROFILE_PURCHASE_REQUEST_ITEM` | PR line items | ID, PR_ID, ITEM_ID, QUANTITY |
| `PROFILE_PURCHASE_RECEIVED` | Goods received records | ID, PO_ID, RECEIVED_DATE |
| `PROFILE_PURCHASE_RECEIVED_ITEM` | Received items | ID, RECEIVED_ID, ITEM_ID, QUANTITY |
| `PROFILE_PURCHASE_RECEIVED_ATTACHMENT` | Receipt attachments | ID, RECEIVED_ID, FILE_PATH |
| `PROFILE_PURCHASE_STATUS` | Purchase status lookup | ID, NAME |
| `PROFILE_PURCHASE_ITEM_STATUS` | Item status lookup | ID, NAME |
| `PROFILE_PO_PAYMENT` | PO payment records | ID, PO_ID, AMOUNT |
| `PROFILE_PO_PAYMENT_STATUS` | PO payment status | ID, NAME |

---

### 2.11 — Notifications & Alerts

| Table | Purpose | Key Columns |
|-------|---------|-------------|
| `NOTIFICATION` | Notification templates | ID, PROFILE_ID, TYPE_ID, TEMPLATE_EN, TEMPLATE_AR |
| `NOTIFICATION_TYPES` | Notification types | ID, NAME_EN, NAME_AR |
| `NOTIFICATION_EVENTS` | Event trigger definitions | ID, NAME, EVENT_TYPE |
| `NOTIFICATION_EVENT_VALUES` | Event parameter values | ID, NOTIFICATION_EVENT_ID, KEY, VALUE |
| `NOTIFICATION_GROUPS` | User notification groups | ID, PROFILE_ID, NAME |
| `NOTIFICATION_USER_GROUP` | Group membership | ID, GROUP_ID, SYSTEM_USER_ID |
| `NOTIFICATION_PROMOTIONS` | Promotional notifications | ID, PROFILE_ID, TITLE, MESSAGE |
| `NOTIFICATION_SUMMARY` | Notification batch summaries | ID, PROFILE_ID, SENT_AT |
| `NOTIFICATION_SUMMARY_USERS` | Users in notification batch | ID, SUMMARY_ID, END_USER_ID |
| `NOTIFICATION_TESTS` | Test-specific notifications | ID, NOTIFICATION_ID, LAB_CATEGORY_PACKAGE_ID |
| `NOTIFICATION_USERS` | User-notification tracking | ID, NOTIFICATION_ID, END_USER_ID |
| `END_USER_NOTIFICATION` | Patient notifications | ID, END_USER_ID, MESSAGE, IS_READ |
| `SYSTEM_USER_NOTIFICATION` | Staff notifications | ID, SYSTEM_USER_ID, MESSAGE, IS_READ |
| `DELIVERY_METHOD_NOTIFICATION` | Delivery methods | ID, NAME (SMS, Push, Email, WhatsApp) |
| `NOTIFICATIONS` | Laravel default notifications table | id, type, notifiable_id |
| `ALERT` | Alert definitions | ID, PROFILE_ID, NAME, ALERT_USER_GROUP_ID |
| `ALERT_TYPE` | Alert types | ID, NAME, CLASS, ATTRIBUTE |
| `ALERT_TYPE_GROUP` | Alert type groupings | ID, NAME, MODULE |
| `ALERT_EVENT` | Alert event triggers | ID, ALERT_ID, ALERT_EVENT_ID |
| `ALERT_EVENT_TYPE` | Event type definitions | ID, NAME, ALERT_TYPE_ID |
| `ALERT_EVENT_PROCESS` | Event processing steps | ID, ALERT_PROCESS_ID, ALERT_EVENT_PROCESS_ID |
| `ALERT_PROCESSING` | Alert processing queue | ID, ALERT_ID, STATUS |
| `ALERT_SCHEDULING_PROCESS` | Scheduled alert runs | ID, ALERT_PROCESS_ID, SAMPLE_ID |
| `ALERT_HOSPITALS` | Alert-hospital scope | ID, ALERT_ID, HOSPITAL_ID |
| `ALERT_PACKAGES` | Alert-test scope | ID, ALERT_ID, PACKAGE_ID |
| `ALERT_USER_GROUP` | Alert user groups | ID, PROFILE_ID, NAME |
| `ALERT_SYSTEM_USER_GROUP` | Staff in alert groups | ID, ALERT_USER_GROUP_ID, SYSTEM_USER_ID |
| `ALERT_DELIVERY_METHOD` | Alert delivery methods | ID, ALERT_ID, DELIVERY_ID |

---

### 2.12 — Reports & Templates

| Table | Purpose | Key Columns |
|-------|---------|-------------|
| `TEMPLATE` | Report templates | ID, PROFILE_ID, NAME, TYPE |
| `TEMPLATE_COMPONENTS` | Template building blocks | ID, TEMPLATE_ID, COMPONENT_TYPE |
| `TEMPLATE_COMPONENT_OPTION` | Component options | ID, COMPONENT_ID, KEY, VALUE |
| `TEMPLATE_SPECIMEN_TYPE` | Specimen types for templates | ID, TEMPLATE_ID, SPECIMEN_TYPE_ID |
| `TEMPLATE_SPECIMEN_INCREMENT` | Specimen numbering | ID, TEMPLATE_ID |
| `SUB_TEMPLATE` | Sub-template definitions | ID, TEMPLATE_ID, NAME |
| `PROFILE_SIGNATURE` | Doctor/lab signatures | ID, PROFILE_ID, SIGNATURE_IMAGE |
| `PROFILE_SIGNATURE_LOG` | Signature audit log | ID, PROFILE_ID, SYSTEM_USER_ID |
| `PROFILE_PROGRAMMABLE_COMMENT` | Auto-generated comments | ID, PROFILE_ID, CONDITION, COMMENT |
| `LH_REPORT` | LiveHealth report records | ID, PROFILE_ID, ORDER_ID |

---

### 2.13 — Analytics & BI

| Table | Purpose | Key Columns |
|-------|---------|-------------|
| `SALES_FORECAST` | Sales forecast data | ID, PROFILE_ID, PERIOD, AMOUNT |
| `FORECAST_BRANCH_TARGETS` | Branch sales targets | ID, HOSPITAL_ID, TARGET_AMOUNT |
| `FORECAST_MONTHLY_TARGETS` | Monthly targets | ID, PROFILE_ID, MONTH, YEAR, TARGET |
| `FORECAST_YEARLY_DATA` | Yearly actuals | ID, PROFILE_ID, YEAR, AMOUNT |
| `branch_totals_cache` | Cached branch totals | id, HOSPITAL_ID, DATE, TOTAL |
| `MY_HEALTH_USER_SCORES` | Patient health scores | ID, END_USER_ID, SCORE, CATEGORY |
| `PROFILE_MY_HEALTH_CATEGORY` | Health score categories | ID, PROFILE_ID, NAME |
| `PROFILE_MY_HEALTH_CATEGORY_TESTS` | Tests per health category | ID, CATEGORY_ID, LAB_CATEGORY_PACKAGE_ID |
| `SYSTEM_USER_LOG` | Staff activity audit log | ID, SYSTEM_USER_ID, ACTION, TIMESTAMP |
| `SYSTEM_USER_SHIFT` | Staff shift records | ID, SYSTEM_USER_ID, SHIFT_START, SHIFT_END |

---

### 2.14 — ERP Integration

| Table | Purpose | Key Columns |
|-------|---------|-------------|
| `ERP_INTEGRATION` | ERP connection config | ID, PROFILE_ID, ERP_TYPE, HOST |
| `ERP_COMPANIES` | ERP company mappings | ID, PROFILE_ID, ERP_COMPANY_ID |
| `PROFILE_ERP_CREDENTIAL` | ERP credentials | ID, PROFILE_ID, USERNAME, PASSWORD |
| `PROFILE_HIS` | HIS system config | ID, PROFILE_ID, HIS_TYPE, HOST |
| `PROFILE_HIS_ENDPOINT` | HIS API endpoints | ID, PROFILE_ID, ENDPOINT_KEY, URL |

---

### 2.15 — HESN / NPHIES

| Table | Purpose | Key Columns |
|-------|---------|-------------|
| `HESN_PLUS_TOKEN` | HESN Plus OAuth tokens | ID, PROFILE_ID, ACCESS_TOKEN, EXPIRES_AT |
| `HESN_PLUS_DIRECTORATE` | MOH directorate lookup | ID, NAME_EN, NAME_AR, CODE |
| `PROFILE_HESN` | HESN config per profile | ID, PROFILE_ID, HESN_ID, CREDENTIALS |
| `HL7_ERROR_LOGS` | HL7 message error logs | ID, PROFILE_ID, ERROR_MSG, MESSAGE |
| `TEST_CATEGORY_INTEGRATION` | Test integration mappings | ID, PROFILE_ID, LAB_CATEGORY_PACKAGE_ID, EXTERNAL_CODE |

---

### 2.16 — Lookup / Reference Data

| Table | Purpose |
|-------|---------|
| `COUNTRY` | Countries |
| `CITY` | Cities |
| `CITY_STATE` | City regions/states |
| `REGION` | Saudi regions |
| `NATIONALITY` | Nationalities |
| `GENDER` | Genders |
| `LANGUAGE` | Languages |
| `DAY_OF_WEEK` | Days (for scheduling) |
| `SPECIALITY` | Medical specialities |
| `STORAGE_TEMPERATURE_TYPE` | Storage temperature types |
| `OPINION_STATUS` | Opinion/result statuses |
| `LAB_AVAILABLE_TIME` | Available time slots |
| `ADDRESS_TITLE` | Address titles (Mr, Mrs, etc.) |
| `ADDRESS_TYPE` | Address types (home, work) |
| `CURRENCY_SYMBOL` | Currency symbols |
| `COUNTRY_SYMBOLS` | Country phone codes |
| `COUNTRY_SYMBOLS_PROFILE` | Profile phone code overrides |
| `NG_CODES` | National gazette codes |
| `SEARCH_COMMON` | Common search terms |
| `REDIRECT_URL` | URL redirects |
| `USER_LANGUAGE` | User language preferences |

---

### 2.17 — Diabetic Module

| Table | Purpose |
|-------|---------|
| `diabetic_patient_visits` | Diabetic patient visit records |
| `diabetic_genders` | Gender lookup for diabetic module |
| `diabetic_types_of_diabetes` | Diabetes type lookup |
| `diabetic_hba1c_levels` | HbA1c level categories |
| `diabetic_smokers` | Smoking status lookup |
| `diabetic_type_of_footwears` | Footwear type lookup |
| `diabetic_affected_areas` | Affected body areas |
| `diabetic_types_of_amputation` | Amputation types |
| `diabetic_wound_duration` | Wound duration categories |
| `diabetic_type_of_visits` | Visit type lookup |
| `CLUSTER` | Geographic clusters |

---

### 2.18 — Histopathology & Genetics

| Table | Purpose |
|-------|---------|
| `HISTOPATHOLOGY_BATCH` | Histopathology batch records |
| `GENETICS_BATCHES` | Genetics test batches |

---

### 2.19 — Content Management

| Table | Purpose |
|-------|---------|
| `BANNER` | Promotional banners |
| `BLOG_ARTICLE` | Blog articles (bilingual) |
| `BLOG_CATEGORIES` | Blog categories |
| `LAB_SLIDER` | Homepage sliders |
| `WHITE_LABEL_BRANCHES` | White-label branch pages |
| `WHITE_LABEL_CAROUSEL_SLIDES` | Carousel content |
| `WHITE_LABEL_MEDIA_ITEMS` | Media library |
| `WHITE_LABEL_PAGE_SECTIONS` | Page section content |
| `WHITE_LABEL_SERVICES` | Service listings |
| `WHITE_LABEL_SERVICE_FEATURES` | Service features |
| `WHITE_LABEL_STATISTICS` | Statistics display |

---

### 2.20 — Laravel System Tables

| Table | Purpose |
|-------|---------|
| `migrations` | Migration tracking |
| `jobs` | Queue jobs |
| `job_batches` | Job batch tracking |
| `failed_jobs` | Failed job records |
| `cache` | Cache store |
| `cache_locks` | Cache locks |
| `telescope_entries` | Telescope debug data |
| `telescope_entries_tags` | Telescope tags |
| `telescope_monitoring` | Telescope monitoring |
| `sessions` | Session data |
| `password_resets` | Password reset tokens |
| `password_reset_tokens` | Password reset tokens (v2) |
| `personal_access_tokens` | Sanctum tokens |
| `users` | Default Laravel users (unused) |

---

## 3. Critical Table: PROFILE

The `PROFILE` table is the **most important table** in the system. It:
- Acts as the **tenant root** — all business data references `PROFILE_ID`
- Stores **all per-tenant configuration** (150+ columns)
- Contains **integration credentials** (SMS, payment, HIS, ERP, HESN)
- Contains **feature flags** (50+ `ENABLE_*` boolean columns)
- Contains **branding configuration** (logos, colors, links)
- Contains **financial configuration** (VAT, invoice sequences, credit terms)

---

## 4. Critical Table: END_USER_LAB_ORDER_PACKAGE

This table represents a single test/sample in an order. It has the most relationships:
- Links to `END_USER_LAB_ORDER` (the parent order)
- Links to `LAB_CATEGORY_PACKAGE` (the test being performed)
- Links to `END_USER_LAB_ORDER_PACKAGE_RESULT` (results)
- Links to `PAYMENTS` (payment info)
- Links to `INSURANCE_CLAIMS` (insurance)
- Links to `ZATCA_INVOICE` (tax invoice)
- Tracks status via `LAB_ORDER_STATUS`
- References 15+ staff members (analyzed by, validated by, collected by, etc.)

---

## 5. Key Foreign Key Relationships

```
PROFILE (1) ──── (N) HOSPITAL
PROFILE (1) ──── (N) END_USER
PROFILE (1) ──── (N) LAB_CATEGORY_PACKAGE
PROFILE (1) ──── (N) SYSTEM_USER
HOSPITAL (1) ──── (N) END_USER_LAB_ORDER
END_USER (1) ──── (N) END_USER_LAB_ORDER
END_USER_LAB_ORDER (1) ──── (N) END_USER_LAB_ORDER_PACKAGE
LAB_CATEGORY_PACKAGE (1) ──── (N) END_USER_LAB_ORDER_PACKAGE
END_USER_LAB_ORDER_PACKAGE (1) ──── (N) END_USER_LAB_ORDER_PACKAGE_RESULT
END_USER_LAB_ORDER_PACKAGE (1) ──── (1) PAYMENTS
END_USER_LAB_ORDER_PACKAGE (1) ──── (1) INSURANCE_CLAIMS
END_USER_LAB_ORDER_PACKAGE (1) ──── (1) ZATCA_INVOICE
INSURANCE_CLAIMS (N) ──── (1) INSURANCE_COMPANY
INSURANCE_CLAIMS (N) ──── (1) INSURANCE_INVOICES
```

---

## 6. Indexes Summary

All primary keys are indexed. Key indexes:
- `PROFILE_ID` — indexed on all business tables (multi-tenancy queries)
- `END_USER_ID` — indexed on order/notification tables
- `END_USER_LAB_ORDER_ID` — indexed on package/attachment tables
- `LAB_CATEGORY_PACKAGE_ID` — indexed on result/price tables
- `MOBILE_NUMBER` / `FULL_NAME` on `END_USER` (search)
- `FIRST_NAME` / `LAST_NAME` on `END_USER` (search)
- `SYSTEM_USER_ID` on log/notification tables


---

## Appendix: Live Table List (auto-generated)

*Generated by `php artisan ai:update-docs` — reflects live database schema.*

| # | Table Name | Est. Rows |
|---|------------|----------|
| 1 | `ACCOUNT_MANAGERS` | 4 |
| 2 | `ADDRESS_TITLE` | 3 |
| 3 | `ADDRESS_TYPE` | 4 |
| 4 | `ALERT` | 3 |
| 5 | `ALERT_DELIVERY_METHOD` | 3 |
| 6 | `ALERT_EVENT` | 3 |
| 7 | `ALERT_EVENT_PROCESS` | 8,747 |
| 8 | `ALERT_EVENT_TYPE` | 11 |
| 9 | `ALERT_HOSPITALS` | 16 |
| 10 | `ALERT_PACKAGES` | 0 |
| 11 | `ALERT_PROCESSING` | 8,648 |
| 12 | `ALERT_SCHEDULING_PROCESS` | 57,367 |
| 13 | `ALERT_SYSTEM_USER_GROUP` | 14 |
| 14 | `ALERT_TYPE` | 5 |
| 15 | `ALERT_TYPE_GROUP` | 2 |
| 16 | `ALERT_USER_GROUP` | 9 |
| 17 | `ANALYZER_PACKAGE_REFERENCE` | 2,297 |
| 18 | `ANALYZER_TYPE` | 102 |
| 19 | `ANALYZER_TYPE_FILE` | 71 |
| 20 | `BANNER` | 7 |
| 21 | `BATCH` | 88,463 |
| 22 | `BLACKLIST` | 0 |
| 23 | `BLOG_ARTICLE` | 93 |
| 24 | `BLOG_CATEGORIES` | 0 |
| 25 | `BM_ADMINS` | 11 |
| 26 | `BM_GENERAL_SETTING` | 0 |
| 27 | `BM_GROUP_PERMISSIONS` | 27 |
| 28 | `BM_MODEL_HAS_PERMISSIONS` | 0 |
| 29 | `BM_MODEL_HAS_ROLE` | 14 |
| 30 | `BM_PERMISSIONS` | 119 |
| 31 | `BM_ROLES` | 4 |
| 32 | `BM_ROLE_HAS_PERMISSIONS` | 253 |
| 33 | `CANCEL_REASON` | 3 |
| 34 | `CATEGORY_ADVICE` | 93 |
| 35 | `CATEGORY_PACKAGE` | 47 |
| 36 | `CITY` | 27 |
| 37 | `CITY_STATE` | 687 |
| 38 | `CLIENT_GROUP` | 18 |
| 39 | `CLUSTER` | 22 |
| 40 | `CONTACT_INFORMATION` | 5 |
| 41 | `CONTACT_US` | 0 |
| 42 | `CORRECTIVE_ACTIONS` | 2 |
| 43 | `COUNTRY` | 222 |
| 44 | `COUNTRY_SYMBOLS` | 0 |
| 45 | `COUNTRY_SYMBOLS_PROFILE` | 0 |
| 46 | `COUPON` | 67,215 |
| 47 | `CURRENCY_SYMBOL` | 0 |
| 48 | `DAY_OF_WEEK` | 7 |
| 49 | `DELIVERY_METHOD_NOTIFICATION` | 0 |
| 50 | `DEVICE_TOKENS` | 35,068 |
| 51 | `END_USER` | 2,055,739 |
| 52 | `END_USER_ADDRESS` | 16 |
| 53 | `END_USER_AI_RECOMMENDATION` | 0 |
| 54 | `END_USER_AI_RECOMMENDATION_PACKAGES` | 0 |
| 55 | `END_USER_AUTOMATIC_INVOICE` | 19,454 |
| 56 | `END_USER_CHANGE_CLIENT` | 0 |
| 57 | `END_USER_COUPON` | 2 |
| 58 | `END_USER_CREDIT_NOTE` | 0 |
| 59 | `END_USER_DEBIT_NOTE` | 0 |
| 60 | `END_USER_EMAIL_VERIFICATION` | 0 |
| 61 | `END_USER_INVITES` | 0 |
| 62 | `END_USER_INVOICE` | 1,092 |
| 63 | `END_USER_INVOICE_REJECTED` | 547,070 |
| 64 | `END_USER_LAB_CART` | 14,381 |
| 65 | `END_USER_LAB_ORDER` | 3,160,976 |
| 66 | `END_USER_LAB_ORDER_ATTACHMENT` | 184,020 |
| 67 | `END_USER_LAB_ORDER_ESAMPLE` | 47 |
| 68 | `END_USER_LAB_ORDER_HISTORY` | 0 |
| 69 | `END_USER_LAB_ORDER_PACKAGE` | 14,195,967 |
| 70 | `END_USER_LAB_ORDER_PACKAGE_ATTACHMENT` | 30,101 |
| 71 | `END_USER_LAB_ORDER_PACKAGE_BLOCK` | 51 |
| 72 | `END_USER_LAB_ORDER_PACKAGE_CONFIRMATION_RESULT` | 24 |
| 73 | `END_USER_LAB_ORDER_PACKAGE_INTERNAL_SAMPLE` | 22 |
| 74 | `END_USER_LAB_ORDER_PACKAGE_OPINION` | 0 |
| 75 | `END_USER_LAB_ORDER_PACKAGE_RESULT` | 10,702,996 |
| 76 | `END_USER_LAB_ORDER_PACKAGE_TEMPLATE` | 39,410 |
| 77 | `END_USER_MEMBER` | 163,589 |
| 78 | `END_USER_NOTIFICATION` | 14 |
| 79 | `END_USER_PACKAGE_FAVOURITE` | 642 |
| 80 | `END_USER_PACKAGE_QUESTIONNAIRE_ANSWERS` | 123,586 |
| 81 | `END_USER_PACKAGE_QUESTIONNAIRE_ANSWERS_CART` | 464 |
| 82 | `END_USER_PACKAGE_REFERENCE` | 7,480,206 |
| 83 | `END_USER_PACKAGE_SENDOUT` | 5,047 |
| 84 | `END_USER_POINT` | 61 |
| 85 | `END_USER_SAMPLE_COMMENT` | 433,361 |
| 86 | `END_USER_SAMPLE_DISPOSE` | 12,905 |
| 87 | `END_USER_SAMPLE_RETRIEVE_STORAGE` | 18,835 |
| 88 | `END_USER_SAMPLE_STORAGE_UNIT` | 45,983 |
| 89 | `END_USER_WALLET` | 28,944 |
| 90 | `ERP_COMPANIES` | 0 |
| 91 | `ERP_INTEGRATION` | 0 |
| 92 | `FOLLOWER` | 10,868 |
| 93 | `FOLLOWER_RELATION` | 8 |
| 94 | `FORECAST_BRANCH_TARGETS` | 110 |
| 95 | `FORECAST_MONTHLY_TARGETS` | 24 |
| 96 | `FORECAST_YEARLY_DATA` | 4 |
| 97 | `FORMULA` | 120 |
| 98 | `FORMULA_LAB_CATEGORY_PACKAGE` | 187 |
| 99 | `GENDER` | 2 |
| 100 | `GENETICS_BATCHES` | 0 |
| 101 | `GROUP` | 147 |
| 102 | `GROUP_PACKAGE_RESULT` | 10 |
| 103 | `HESN_PLUS_DIRECTORATE` | 20 |
| 104 | `HESN_PLUS_TOKEN` | 1,964 |
| 105 | `HISTOPATHOLOGY_BATCH` | 15 |
| 106 | `HL7_ERROR_LOGS` | 27 |
| 107 | `HOME_VISIT_CITY` | 4 |
| 108 | `HOME_VISIT_CITY_HOSPITAL` | 4 |
| 109 | `HOSPITAL` | 1,206 |
| 110 | `HOSPITAL_BANK` | 283 |
| 111 | `HOSPITAL_GENDER` | 4 |
| 112 | `HOSPITAL_INV_LOCATION` | 214 |
| 113 | `HOSPITAL_LOCATION` | 605 |
| 114 | `HOSPITAL_POS` | 1,186 |
| 115 | `HOSPITAL_STORAGE_UNIT` | 1,454 |
| 116 | `INSURANCES` | 0 |
| 117 | `INSURANCE_APPROVALS` | 0 |
| 118 | `INSURANCE_CLAIMS` | 0 |
| 119 | `INSURANCE_COMPANY` | 26 |
| 120 | `INSURANCE_COVERAGE_POLICIES` | 0 |
| 121 | `INSURANCE_DOCUMENTS` | 0 |
| 122 | `INSURANCE_GROUPS` | 0 |
| 123 | `INSURANCE_HOSPITAL` | 0 |
| 124 | `INSURANCE_INVOICES` | 0 |
| 125 | `INSURANCE_INVOICE_REJECTED` | 0 |
| 126 | `INSURANCE_TEST_PRICES` | 0 |
| 127 | `INSURANCE_USERS_INVOICE` | 0 |
| 128 | `INVOICES` | 24 |
| 129 | `INVOICES_SEQUENCES` | 0 |
| 130 | `INVOICE_STATUS` | 5 |
| 131 | `LAB_AVAILABLE_TIME` | 86,142 |
| 132 | `LAB_CATEGORY` | 171 |
| 133 | `LAB_CATEGORY_PACKAGE` | 15,327 |
| 134 | `LAB_CATEGORY_PACKAGE_END_USER` | 7,348,563 |
| 135 | `LAB_CATEGORY_PACKAGE_GROUP_OPTION` | 12,834 |
| 136 | `LAB_CATEGORY_PACKAGE_HOSPITAL` | 211,531 |
| 137 | `LAB_CATEGORY_PACKAGE_INSTRUCTION` | 0 |
| 138 | `LAB_CATEGORY_PACKAGE_QUESTIONNAIRE` | 563 |
| 139 | `LAB_CATEGORY_PACKAGE_QUESTIONNAIRE_OPTIONS` | 835 |
| 140 | `LAB_CATEGORY_PACKAGE_RESULT` | 3,411 |
| 141 | `LAB_CATEGORY_PACKAGE_RESULT_OPTIONS` | 246,822 |
| 142 | `LAB_CATEGORY_TYPE` | 6 |
| 143 | `LAB_ORDER_STATUS` | 23 |
| 144 | `LAB_PACKAGE_ITEM` | 51,853 |
| 145 | `LAB_SETTING` | 0 |
| 146 | `LAB_SLIDER` | 3 |
| 147 | `LANGUAGE` | 8 |
| 148 | `LH_REPORT` | 0 |
| 149 | `LINK` | 1,208 |
| 150 | `LINKED_TEST` | 192 |
| 151 | `MOBILE_NO_VERIFICATION` | 6 |
| 152 | `MY_HEALTH_USER_SCORES` | 0 |
| 153 | `NATIONALITY` | 194 |
| 154 | `NG_CODES` | 0 |
| 155 | `NOTIFICATION` | 0 |
| 156 | `NOTIFICATIONS` | 15 |
| 157 | `NOTIFICATION_EVENTS` | 16 |
| 158 | `NOTIFICATION_EVENT_VALUES` | 38 |
| 159 | `NOTIFICATION_GROUPS` | 2 |
| 160 | `NOTIFICATION_PROMOTIONS` | 11 |
| 161 | `NOTIFICATION_SUMMARY` | 8 |
| 162 | `NOTIFICATION_SUMMARY_USERS` | 807 |
| 163 | `NOTIFICATION_TESTS` | 30 |
| 164 | `NOTIFICATION_TYPES` | 6 |
| 165 | `NOTIFICATION_USERS` | 75 |
| 166 | `NOTIFICATION_USER_GROUP` | 14 |
| 167 | `ONLINE_PAYMENT_METHOD` | 3 |
| 168 | `OPINION_STATUS` | 2 |
| 169 | `ORDER_STATUS` | 15 |
| 170 | `ORDER_TRANSACTION_REFUND` | 3,988 |
| 171 | `PATIENT_INSURANCE_ATTACHMENTS` | 0 |
| 172 | `PAYMENTS` | 14 |
| 173 | `PAYMENT_METHOD` | 3 |
| 174 | `PERMISSION` | 274 |
| 175 | `PICKUP` | 26,670 |
| 176 | `PLATFORM_CATEGORY` | 34 |
| 177 | `PLATFORM_CATEGORY_LAB_CATEGORY_PACKAGE` | 347 |
| 178 | `PROFILE` | 69 |
| 179 | `PROFILE_AI_TRANSACTIONS` | 0 |
| 180 | `PROFILE_ANALYZER` | 417 |
| 181 | `PROFILE_ANALYZER_WORK_LIST` | 74 |
| 182 | `PROFILE_BALANCES` | 36 |
| 183 | `PROFILE_DISCOUNT_LIST_PACKAGE` | 1,653 |
| 184 | `PROFILE_ENABLE_OPTION` | 652,399 |
| 185 | `PROFILE_ENABLE_RESULT` | 12,725 |
| 186 | `PROFILE_ERP_CREDENTIAL` | 0 |
| 187 | `PROFILE_HESN` | 10 |
| 188 | `PROFILE_HIS` | 4 |
| 189 | `PROFILE_HIS_ENDPOINT` | 4 |
| 190 | `PROFILE_IGNORE_RESULT` | 24 |
| 191 | `PROFILE_INV_ITEM` | 1,168 |
| 192 | `PROFILE_INV_ITEM_LINE` | 68,854 |
| 193 | `PROFILE_INV_ITEM_TEST` | 360 |
| 194 | `PROFILE_INV_ITEM_TYPE` | 2 |
| 195 | `PROFILE_INV_ITEM_UNIT` | 1,881 |
| 196 | `PROFILE_INV_KIT_ITEM` | 22 |
| 197 | `PROFILE_INV_MAIN_TRANSACTION` | 1,366 |
| 198 | `PROFILE_INV_MAIN_TRANSACTION_DETAILS` | 74,714 |
| 199 | `PROFILE_INV_TRANSACTION` | 140,474 |
| 200 | `PROFILE_INV_UNIT` | 51 |
| 201 | `PROFILE_INV_VENDOR` | 49 |
| 202 | `PROFILE_INV_VENDOR_CONTACT_LIST` | 7 |
| 203 | `PROFILE_INV_VENDOR_ITEM` | 417 |
| 204 | `PROFILE_LAB_CATEGORY_PACKAGE` | 289 |
| 205 | `PROFILE_LAB_CATEGORY_PACKAGE_QUESTIONNAIRE` | 195 |
| 206 | `PROFILE_LOYALTY_TEST` | 2 |
| 207 | `PROFILE_MY_HEALTH_CATEGORY` | 6 |
| 208 | `PROFILE_MY_HEALTH_CATEGORY_TESTS` | 18 |
| 209 | `PROFILE_ONLINE_PAYMENT_METHOD` | 8 |
| 210 | `PROFILE_PACKAGE_CODE` | 3,101 |
| 211 | `PROFILE_PACKAGE_TIME` | 79,590 |
| 212 | `PROFILE_PO_PAYMENT` | 9 |
| 213 | `PROFILE_PO_PAYMENT_STATUS` | 3 |
| 214 | `PROFILE_PRICE_LIST` | 743 |
| 215 | `PROFILE_PRICE_LIST_PACKAGE` | 260,327 |
| 216 | `PROFILE_PROGRAMMABLE_COMMENT` | 569 |
| 217 | `PROFILE_PURCHASE_ITEM_STATUS` | 8 |
| 218 | `PROFILE_PURCHASE_ORDER` | 445 |
| 219 | `PROFILE_PURCHASE_ORDER_CART` | 3 |
| 220 | `PROFILE_PURCHASE_ORDER_ITEM` | 1,295 |
| 221 | `PROFILE_PURCHASE_RECEIVED` | 401 |
| 222 | `PROFILE_PURCHASE_RECEIVED_ATTACHMENT` | 0 |
| 223 | `PROFILE_PURCHASE_RECEIVED_ITEM` | 942 |
| 224 | `PROFILE_PURCHASE_REQUEST` | 34 |
| 225 | `PROFILE_PURCHASE_REQUEST_ITEM` | 61 |
| 226 | `PROFILE_PURCHASE_STATUS` | 7 |
| 227 | `PROFILE_QC_WESTGARD_RULES` | 5 |
| 228 | `PROFILE_QUESTIONNAIRE` | 160 |
| 229 | `PROFILE_QUESTIONNAIRE_CATEGORY` | 158 |
| 230 | `PROFILE_REFERENCE_DOCTOR` | 384 |
| 231 | `PROFILE_REFERENCE_RANGE` | 12,672 |
| 232 | `PROFILE_SENDOUT` | 2,698 |
| 233 | `PROFILE_SIGNATURE` | 187 |
| 234 | `PROFILE_SIGNATURE_LOG` | 8 |
| 235 | `PROFILE_UNIT` | 442 |
| 236 | `PROFILE_UNIT_CATEGORY` | 43 |
| 237 | `PROFILE_UNIT_TEST` | 4,860 |
| 238 | `QC` | 734 |
| 239 | `QC_ANALYZER` | 745 |
| 240 | `QC_APPROVAL_RESULT` | 385,360 |
| 241 | `QC_LAB_CATEGORY_PACKAGE` | 5,135 |
| 242 | `QC_LOT` | 1,086 |
| 243 | `QC_LOT_TEST` | 6,667 |
| 244 | `QC_RESULT` | 389,937 |
| 245 | `QC_STATISTIC` | 3 |
| 246 | `QC_WESTGARD_RULE` | 5 |
| 247 | `REDIRECT_URL` | 11 |
| 248 | `REFERENCE_RANGE_RULE` | 11,300 |
| 249 | `REFERENCE_SYMBOL` | 6 |
| 250 | `REF_RANGE_TYPE` | 22 |
| 251 | `REF_RANGE_UNIT` | 85 |
| 252 | `REGION` | 15 |
| 253 | `REJECT_REASON` | 38 |
| 254 | `ROLE` | 384 |
| 255 | `ROLE_HAS_PERMISSION` | 27,188 |
| 256 | `RUN` | 43 |
| 257 | `SALES_FORECAST` | 1,222 |
| 258 | `SAMPLE_CONDITIONS` | 379 |
| 259 | `SAMPLE_GENERATION` | 4,355 |
| 260 | `SAMPLE_GENERATION_ANALYZER` | 585 |
| 261 | `SAMPLE_GENERATION_TEST` | 28,920 |
| 262 | `SEARCH_COMMON` | 2 |
| 263 | `SPECIALITY` | 0 |
| 264 | `SPECIMEN_TYPE` | 7 |
| 265 | `STORAGE_TEMPERATURE_TYPE` | 4 |
| 266 | `SUB_TEMPLATE` | 877 |
| 267 | `SYSTEM_MODULE` | 5 |
| 268 | `SYSTEM_USER` | 6,396 |
| 269 | `SYSTEM_USER_DEVICE_TOKEN` | 0 |
| 270 | `SYSTEM_USER_INVOICE` | 17,864 |
| 271 | `SYSTEM_USER_LOG` | 10,741 |
| 272 | `SYSTEM_USER_NOTIFICATION` | 0 |
| 273 | `SYSTEM_USER_SHIFT` | 0 |
| 274 | `SYSTEM_USER_UPDATES` | 4 |
| 275 | `TEMPLATE` | 549 |
| 276 | `TEMPLATE_COMPONENTS` | 491 |
| 277 | `TEMPLATE_COMPONENT_OPTION` | 343 |
| 278 | `TEMPLATE_SPECIMEN_INCREMENT` | 45 |
| 279 | `TEMPLATE_SPECIMEN_TYPE` | 46 |
| 280 | `TEST_CATEGORY_INTEGRATION` | 0 |
| 281 | `USER_LANGUAGE` | 2 |
| 282 | `VAT_PROFILE` | 1 |
| 283 | `WALLET_TRANSACTION_TYPE` | 5 |
| 284 | `WHITE_LABEL_BRANCHES` | 0 |
| 285 | `WHITE_LABEL_CAROUSEL_SLIDES` | 0 |
| 286 | `WHITE_LABEL_MEDIA_ITEMS` | 0 |
| 287 | `WHITE_LABEL_PAGE_SECTIONS` | 0 |
| 288 | `WHITE_LABEL_SERVICES` | 0 |
| 289 | `WHITE_LABEL_SERVICE_FEATURES` | 0 |
| 290 | `WHITE_LABEL_STATISTICS` | 0 |
| 291 | `WORKFLOW_STATE` | 6 |
| 292 | `ZATCA_B2B_INVOICE` | 0 |
| 293 | `ZATCA_HOSPITAL` | 108 |
| 294 | `ZATCA_INTEGRATION` | 45 |
| 295 | `ZATCA_INVOICE` | 0 |
| 296 | `branch_totals_cache` | 6 |
| 297 | `cache` | 0 |
| 298 | `cache_locks` | 0 |
| 299 | `diabetic_affected_areas` | 2 |
| 300 | `diabetic_genders` | 2 |
| 301 | `diabetic_hba1c_levels` | 2 |
| 302 | `diabetic_patient_visits` | 2 |
| 303 | `diabetic_smokers` | 2 |
| 304 | `diabetic_type_of_footwears` | 2 |
| 305 | `diabetic_type_of_visits` | 2 |
| 306 | `diabetic_types_of_amputation` | 5 |
| 307 | `diabetic_types_of_diabetes` | 2 |
| 308 | `diabetic_wound_duration` | 3 |
| 309 | `failed_jobs` | 2 |
| 310 | `job_batches` | 0 |
| 311 | `jobs` | 0 |
| 312 | `migrations` | 648 |
| 313 | `password_reset_tokens` | 0 |
| 314 | `password_resets` | 0 |
| 315 | `personal_access_tokens` | 0 |
| 316 | `sessions` | 1 |
| 317 | `telescope_entries` | 66,267 |
| 318 | `telescope_entries_tags` | 8,130 |
| 319 | `telescope_monitoring` | 0 |
| 320 | `users` | 0 |
