ข้ามไปยังเนื้อหาหลัก
ProgrammerThailand

ไอเดีย (Idea) idea hospital inventory health

ไอเดีย #49: ระบบเบิกจ่ายยาและเวชภัณฑ์ในโรงพยาบาล

เภสัชกรที่ดูแลคลังยาโรงพยาบาลชุมชนเคยบ่นให้ผมฟังว่า สิ้นปีงบประมาณทีไรต้องนั่งนับสต็อกจนดึก แล้วก็เจอยาหมดอายุซุกอยู่หลังชั้นเป็นลัง ทั้งที่อีกหน่วยงานเพิ่งขอเบิกยาตัวเดียวกันไปแล้วได้คำตอบว่าหมด ใบเบิกยังเป็นกระดาษ ลงบัญชีคุมในสเปรดชีต ข้อมูลระหว่างคลังใหญ่กับห้องยาย่อยไม่เคยตรงกัน ระบบเบิกจ่ายที่รู้ lot และวันหมดอายุจึงช่วยลดทั้งของเสียและความเสี่ยงต่อผู้ป่วย

ใครจะใช้

  • เจ้าหน้าที่คลังเวชภัณฑ์ — รับของเข้า จ่ายของออก ตรวจนับ และจัดการ lot
  • หน่วยเบิก — หอผู้ป่วย ห้องฉุกเฉิน ห้องยาย่อย ที่ส่งใบเบิกออนไลน์
  • หัวหน้าฝ่าย/เภสัชกร — อนุมัติใบเบิก ดูยาใกล้หมดอายุ และสต็อกต่ำกว่าจุดสั่งซื้อ
  • ฝ่ายพัสดุ/บัญชี — ดูมูลค่าคงคลังและรายงานการใช้

ฟีเจอร์ขั้นต่ำ (MVP)

  • ทะเบียนยาและเวชภัณฑ์ มีรหัส หน่วยนับ หน่วยบรรจุ และจุดสั่งซื้อขั้นต่ำ
  • รับเข้าตาม lot ระบุเลข lot วันหมดอายุ ราคาทุน และผู้ขาย
  • หน่วยงานสร้างใบเบิกออนไลน์ ผ่านการอนุมัติ แล้วคลังจ่ายจริงตามจำนวนที่มี
  • จ่ายแบบ FEFO คือ lot ที่หมดอายุก่อนออกก่อน โดยระบบเลือก lot ให้อัตโนมัติ
  • สต็อกแยกตามคลัง และโอนระหว่างคลังได้
  • แจ้งเตือนยาที่จะหมดอายุภายในช่วงที่กำหนด และยาที่ต่ำกว่าจุดสั่งซื้อ
  • บัญชีคุมรายตัว (stock card) ย้อนดูได้ทุกความเคลื่อนไหว พร้อมตรวจนับและปรับยอด

ต่อยอดได้อีก

  • สแกนบาร์โค้ดตอนรับและจ่าย ลดการคีย์ผิด
  • คำนวณปริมาณที่ควรสั่งจากอัตราการใช้ย้อนหลัง
  • ติดตามยาควบคุมพิเศษที่ต้องบันทึกละเอียดกว่าปกติ
  • แอปมือถือ Flutter สำหรับตรวจนับหน้าชั้นวาง

โครงข้อมูลตั้งต้น

  • items — id, code, name, unit, pack_size, reorder_point, is_controlled
  • warehouses — id, name, type, parent_id
  • lots — id, item_id, lot_no, expiry_date, unit_cost, supplier_id
  • stock_balances — warehouse_id, lot_id, qty (primary key คู่ warehouse และ lot)
  • requisitions / requisition_lines — id, from_dept_id, status, approved_by / item_id, qty_requested, qty_issued
  • stock_movements — id, lot_id, warehouse_id, type, qty, ref_type, ref_id, created_by, created_at

ระดับความยาก และสิ่งที่จะได้เรียนรู้

ระดับ ท้าทาย ตัว CRUD ไม่ยาก แต่ความถูกต้องของยอดคงเหลือคือหัวใจ ทำด้วย Yii2 หรือ Laravel + PostgreSQL/MySQL ได้ สิ่งที่จะได้เรียนรู้:

  • ออกแบบระบบคลังแบบ movement ledger ที่ยอดคงเหลือคำนวณย้อนได้เสมอ
  • เขียน logic FEFO และการตัดหลาย lot ในใบเบิกเดียว
  • ใช้ transaction กับ SELECT ... FOR UPDATE กันยอดติดลบ
  • workflow อนุมัติหลายขั้น และรายงานมูลค่าคงคลัง

ข้อควรระวัง

  • ถ้าสองใบเบิกตัดยา lot เดียวกันพร้อมกัน อาจเกิด race condition ทำให้สต็อกติดลบ ต้องล็อกแถวยอดคงเหลือทุกครั้ง
  • ห้ามแก้หรือลบ movement ย้อนหลัง ให้ทำรายการปรับปรุงแทนพร้อมเหตุผล เพื่อให้ตรวจสอบได้
  • วิธีคิดต้นทุนและรายงานที่ต้องส่งหน่วยงานต้นสังกัดอาจมีระเบียบเฉพาะ ควรตรวจสอบกับฝ่ายพัสดุ บัญชี และระเบียบล่าสุดก่อนออกแบบ

ใครเคยทำระบบคลังยาหรือคลังพัสดุของโรงพยาบาลบ้างครับ เก็บยอดคงเหลือเป็นตารางสรุปหรือคำนวณจาก movement ทุกครั้ง แล้วเจอปัญหาอะไรตอนตรวจนับสิ้นปี มาแลกเปลี่ยนหรือแชร์โครงสร้างที่ใช้จริงในบอร์ดนี้ได้เลย

0 คะแนน

0 คำตอบ

ยังไม่มีคำตอบ

รู้คำตอบ? ช่วยแบ่งปันได้เลย

ตอบคำถามนี้

เข้าสู่ระบบเพื่อตอบคำถามและโหวต

เข้าสู่ระบบ สมัครสมาชิก