บริหารคลังยา + อุปกรณ์

Receive ยาเข้า, ย้ายระหว่างสาขา, นับสต็อก (count), alert ใกล้หมดอายุ + ใกล้หมด stock

6 นาที·อัปเดต 2026-05-24

ภาพรวม Stock

HexaHealth track stock ที่ระดับ:

  • Drug (จาก Drug Catalog) หรือ Item (อุปกรณ์อื่น — gauze, syringe, ฯลฯ)
  • × Branch (แต่ละสาขามี stock แยกกัน)
  • × Lot (รับเข้าหลายรอบ → หลาย lot/expiry)

ทุกการเปลี่ยนแปลงเก็บใน StockMovement audit log

ดู Stock ปัจจุบัน

Stock → Inventory (/dashboard/stock)

ตาราง:

  • Item (drug หรือ supply)
  • Branch
  • On-hand (จำนวนปัจจุบัน, รวมทุก lot)
  • Min/Max (ที่ตั้งไว้)
  • Reorder needed (ถ้า < reorder point)
  • Lots (กดดูแต่ละ lot + expiry)

Filter: by branch, by category (drug/supply), by status (low/expiring/OK)

รับยาเข้า (Receive)

เมื่อ supplier ส่งยา/อุปกรณ์มา:

  1. Stock → Receive
  2. เลือก:

- Branch ที่รับ - Supplier (ถ้ามี master)

  1. กด + เพิ่มรายการ
  2. กรอกแต่ละ item:

- Item (drug/supply) - Lot number - Expiry date - จำนวน - ราคาทุน (satang ต่อ unit) - PO no. (Purchase Order ของ supplier — optional)

  1. บันทึก → ระบบ:

- บวก stock เข้า - บันทึก StockMovement kind=RECEIVE - คำนวณ avg cost ใหม่ของ item นั้น

ย้ายระหว่างสาขา (Transfer)

Stock → Transfer:

  1. เลือก From branchTo branch
  2. เลือก item + lot + จำนวน
  3. ระบุเหตุผล (optional)
  4. กด ส่ง → ระบบ:

- ลด stock branch ต้นทาง - เพิ่ม stock branch ปลายทาง (ใน lot เดิม) - บันทึก StockMovement kind=TRANSFER (2 rows — out + in)

นับสต็อก (Stock Count / Cycle Count)

ทำเดือนละครั้งหรือไตรมาส:

  1. Stock → CountStart new count
  2. เลือก scope: ทุก item / specific category / ABC class
  3. ระบบ print sheet ที่มี item + lot + จำนวนระบบคิด → พิมพ์
  4. เภสัช/พยาบาลนับจริง → กรอกลง sheet
  5. กลับมาในระบบ → กรอกจำนวนจริงทีละ item
  6. ระบบ:

- แสดง variance (จริง - ระบบ) - ถ้าเกิน threshold (เช่น 5%) → require approval ผู้จัดการ - บันทึก StockMovement kind=ADJUSTMENT พร้อมเหตุผล (broken, expired, theft, miscount)

Alert

ระบบส่ง alert (in-app + email/LINE):

  • Low stock — < min stock ที่ตั้งไว้
  • Reorder point — ถึงระดับที่ควรสั่งเพิ่ม
  • Expiring soon — lot ที่ใกล้หมด < 90 วัน
  • Expired — lot หมดอายุแล้ว (lock ห้าม dispense)

ตั้งช่องทาง alert ที่ Settings → Notifications → Stock Alerts

Discard / Write-off

เมื่อยา expire หรือเสียหาย:

  1. Stock → Write-off
  2. เลือก lot ที่จะตัดทิ้ง + จำนวน
  3. ระบุเหตุผล (EXPIRED, DAMAGED, RECALLED)
  4. บันทึก → ลด stock + บันทึก audit + คำนวณค่าใช้จ่ายเข้า cost report

Purchase Order (PO) — optional

Stock → Purchase Orders ถ้าคลีนิกต้องการ formal PO:

  1. สร้าง PO → เลือก supplier + items + qty + ราคา
  2. ส่ง PO ทาง email/PDF
  3. รอ supplier ส่งของ → Receive (กดจาก PO → auto-fill รายการ)
  4. PO มีสถานะ: DRAFTSENTPARTIALCOMPLETE

Cost Report

Stock → Reports:

  • Inventory value — มูลค่าคงเหลือทั้งคลัง (sum lot × avg cost)
  • COGS — Cost of Goods Sold ในช่วงเวลา (ตามที่ dispense)
  • Loss — write-off + expired
  • Top movers — item ขายเยอะสุด / ช้าสุด

ส่งออก Excel/CSV สำหรับบัญชี

ตัวอย่างปัญหาที่พบ

จำนวน stock ไม่ตรงกับของจริง — ทำ cycle count → ปรับเข้าระบบ. อย่ามาแก้ DB เอง (เสีย audit trail)

Lot หมดอายุไม่ถูกตัด — เภสัชต้องสแกน lot ตอน dispense, ไม่ใช่ตัด stock manual

Transfer ไม่เห็นที่ branch ปลายทาง — เช็คว่ามี StockMovement 2 rows (out + in). บางครั้งติด permission ที่สาขา

บทความที่เกี่ยวข้อง