บริหารคลังยา + อุปกรณ์
Receive ยาเข้า, ย้ายระหว่างสาขา, นับสต็อก (count), alert ใกล้หมดอายุ + ใกล้หมด stock
ภาพรวม 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 ส่งยา/อุปกรณ์มา:
Stock → Receive- เลือก:
- Branch ที่รับ - Supplier (ถ้ามี master)
- กด + เพิ่มรายการ
- กรอกแต่ละ item:
- Item (drug/supply) - Lot number - Expiry date - จำนวน - ราคาทุน (satang ต่อ unit) - PO no. (Purchase Order ของ supplier — optional)
- บันทึก → ระบบ:
- บวก stock เข้า - บันทึก StockMovement kind=RECEIVE - คำนวณ avg cost ใหม่ของ item นั้น
ย้ายระหว่างสาขา (Transfer)
Stock → Transfer:
- เลือก From branch → To branch
- เลือก item + lot + จำนวน
- ระบุเหตุผล (optional)
- กด ส่ง → ระบบ:
- ลด stock branch ต้นทาง - เพิ่ม stock branch ปลายทาง (ใน lot เดิม) - บันทึก StockMovement kind=TRANSFER (2 rows — out + in)
นับสต็อก (Stock Count / Cycle Count)
ทำเดือนละครั้งหรือไตรมาส:
Stock → Count→ Start new count- เลือก scope: ทุก item / specific category / ABC class
- ระบบ print sheet ที่มี item + lot + จำนวนระบบคิด → พิมพ์
- เภสัช/พยาบาลนับจริง → กรอกลง sheet
- กลับมาในระบบ → กรอกจำนวนจริงทีละ item
- ระบบ:
- แสดง 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 หรือเสียหาย:
Stock → Write-off- เลือก lot ที่จะตัดทิ้ง + จำนวน
- ระบุเหตุผล (
EXPIRED,DAMAGED,RECALLED) - บันทึก → ลด stock + บันทึก audit + คำนวณค่าใช้จ่ายเข้า cost report
Purchase Order (PO) — optional
Stock → Purchase Orders ถ้าคลีนิกต้องการ formal PO:
- สร้าง PO → เลือก supplier + items + qty + ราคา
- ส่ง PO ทาง email/PDF
- รอ supplier ส่งของ → Receive (กดจาก PO → auto-fill รายการ)
- PO มีสถานะ:
DRAFT→SENT→PARTIAL→COMPLETE
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 ที่สาขา