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

ไอเดีย (Idea) idea scheduling hospital

ไอเดีย #52: ระบบจัดเวรพยาบาล

หัวหน้าตึกในโรงพยาบาลหลายแห่งยังจัดเวรพยาบาลด้วย Excel หรือกระดาษตาราง ต้องนั่งไล่ทีละช่องให้ทุกคนได้เวรเช้า บ่าย ดึก เท่า ๆ กัน ไม่ให้ใครควงเวรเกินกำลัง แล้วพอมีคนขอแลกเวรทางแชต ตารางในมือก็เริ่มไม่ตรงกับความจริง ระบบจัดเวรพยาบาลจึงเป็นโจทย์ที่ดูเหมือนง่าย แต่มีเงื่อนไขซ่อนอยู่เยอะ เหมาะกับคนที่อยากฝึกคิดเชิง algorithm ไปพร้อมกับทำ UI ใช้งานจริง

ใครจะใช้

  • หัวหน้าหอผู้ป่วย — สร้างตารางเวร อนุมัติการแลกเวร ดูภาพรวม
  • พยาบาล/ผู้ช่วยพยาบาล — ดูเวรของตัวเอง ขอวันหยุด ขอแลกเวร
  • ฝ่ายบริหาร/การเงิน — ดึงสรุปชั่วโมงเวรไปคิดค่าตอบแทนนอกเวลา

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

  • กำหนดประเภทกะ (ช/บ/ด) เวลาเริ่ม-จบ และจำนวนคนขั้นต่ำต่อกะในแต่ละวัน
  • กำหนดข้อจำกัด เช่น ห้ามต่อเวรดึกแล้วเช้า จำนวนเวรสูงสุดต่อเดือน วันหยุดที่ขอไว้
  • สร้างตารางเบื้องต้นอัตโนมัติ แล้วให้หัวหน้าลากวางปรับแก้ได้
  • ตรวจสอบตารางและเตือนเมื่อผิดเงื่อนไข เช่น กะไหนคนไม่ครบ
  • คำขอแลกเวร: คนขอเลือกเวร คู่แลกกดยอมรับ หัวหน้าอนุมัติ ตารางอัปเดตเอง
  • แจ้งเตือนผ่าน LINE เมื่อตารางเผยแพร่หรือคำขอแลกเวรถูกอนุมัติ
  • สรุปจำนวนเวรและชั่วโมงต่อคนต่อเดือน export เป็น Excel

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

  • ใช้ constraint solver หรือ heuristic ที่ฉลาดขึ้นเพื่อกระจายเวรให้ยุติธรรม
  • คะแนนความเป็นธรรม เช่น ใครได้เวรวันหยุดนักขัตฤกษ์บ่อยเกินไป
  • ประกาศเวรว่างให้คนสมัครรับเวรเพิ่ม
  • เชื่อมกับระบบลงเวลาเพื่อเทียบเวรจริงกับเวรในตาราง

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

  • staff — id, name, position, ward_id, max_shifts_per_month
  • shift_type — id, code, start_time, end_time, min_staff
  • roster — id, ward_id, month, status (draft/published)
  • roster_entry — id, roster_id, staff_id, work_date, shift_type_id
  • leave_request — id, staff_id, date, reason, status
  • swap_request — id, from_entry_id, to_entry_id, status, approved_by

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

ท้าทาย — ส่วนที่ยากคือการสร้างตารางอัตโนมัติที่ทำตามข้อจำกัดได้จริง

  • โจทย์ constraint satisfaction และการเขียน validator ตรวจกฎ
  • UI ปฏิทินแบบ drag & drop
  • workflow หลายขั้น (ขอ → ยอมรับ → อนุมัติ) พร้อม transaction ที่ไม่ทำให้ข้อมูลค้างครึ่งทาง
  • การออกรายงานสรุปเพื่อนำไปคำนวณค่าตอบแทน

ข้อควรระวัง

  • กติกาเวรแต่ละหอแต่ละโรงพยาบาลไม่เหมือนกัน อย่า hard-code กฎ ให้ตั้งค่าได้
  • การแลกเวรต้องเก็บประวัติครบ ใครขอ ใครอนุมัติ เพราะเกี่ยวกับค่าตอบแทนและความรับผิดชอบ
  • ระบบอัตโนมัติเป็นแค่ตัวช่วย หัวหน้าต้องตรวจและปรับก่อนเผยแพร่เสมอ

ถ้าเป็นคุณ จะเริ่มสร้างตารางอัตโนมัติด้วยวิธีไหน แบบ greedy ง่าย ๆ ก่อน หรือไปใช้ solver เลย? แล้วมีใครเคยเจอกฎเวรแปลก ๆ ที่ระบบทั่วไปรองรับไม่ได้บ้างไหม เล่าให้ฟังหน่อยครับ ใครลงมือทำแล้วเอามาโชว์ในกระทู้นี้ได้เลย

0 คะแนน

0 คำตอบ

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

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

ตอบคำถามนี้

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

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