ไอเดีย #52: ระบบจัดเวรพยาบาล
หัวหน้าตึกในโรงพยาบาลหลายแห่งยังจัดเวรพยาบาลด้วย Excel หรือกระดาษตาราง ต้องนั่งไล่ทีละช่องให้ทุกคนได้เวรเช้า บ่าย ดึก เท่า ๆ กัน ไม่ให้ใครควงเวรเกินกำลัง แล้วพอมีคนขอแลกเวรทางแชต ตารางในมือก็เริ่มไม่ตรงกับความจริง ระบบจัดเวรพยาบาลจึงเป็นโจทย์ที่ดูเหมือนง่าย แต่มีเงื่อนไขซ่อนอยู่เยอะ เหมาะกับคนที่อยากฝึกคิดเชิง algorithm ไปพร้อมกับทำ UI ใช้งานจริง
ใครจะใช้
- หัวหน้าหอผู้ป่วย — สร้างตารางเวร อนุมัติการแลกเวร ดูภาพรวม
- พยาบาล/ผู้ช่วยพยาบาล — ดูเวรของตัวเอง ขอวันหยุด ขอแลกเวร
- ฝ่ายบริหาร/การเงิน — ดึงสรุปชั่วโมงเวรไปคิดค่าตอบแทนนอกเวลา
ฟีเจอร์ขั้นต่ำ (MVP)
- กำหนดประเภทกะ (ช/บ/ด) เวลาเริ่ม-จบ และจำนวนคนขั้นต่ำต่อกะในแต่ละวัน
- กำหนดข้อจำกัด เช่น ห้ามต่อเวรดึกแล้วเช้า จำนวนเวรสูงสุดต่อเดือน วันหยุดที่ขอไว้
- สร้างตารางเบื้องต้นอัตโนมัติ แล้วให้หัวหน้าลากวางปรับแก้ได้
- ตรวจสอบตารางและเตือนเมื่อผิดเงื่อนไข เช่น กะไหนคนไม่ครบ
- คำขอแลกเวร: คนขอเลือกเวร คู่แลกกดยอมรับ หัวหน้าอนุมัติ ตารางอัปเดตเอง
- แจ้งเตือนผ่าน LINE เมื่อตารางเผยแพร่หรือคำขอแลกเวรถูกอนุมัติ
- สรุปจำนวนเวรและชั่วโมงต่อคนต่อเดือน export เป็น Excel
ต่อยอดได้อีก
- ใช้ constraint solver หรือ heuristic ที่ฉลาดขึ้นเพื่อกระจายเวรให้ยุติธรรม
- คะแนนความเป็นธรรม เช่น ใครได้เวรวันหยุดนักขัตฤกษ์บ่อยเกินไป
- ประกาศเวรว่างให้คนสมัครรับเวรเพิ่ม
- เชื่อมกับระบบลงเวลาเพื่อเทียบเวรจริงกับเวรในตาราง
โครงข้อมูลตั้งต้น
staff— id, name, position, ward_id, max_shifts_per_monthshift_type— id, code, start_time, end_time, min_staffroster— id, ward_id, month, status (draft/published)roster_entry— id, roster_id, staff_id, work_date, shift_type_idleave_request— id, staff_id, date, reason, statusswap_request— id, from_entry_id, to_entry_id, status, approved_by
ระดับความยาก และสิ่งที่จะได้เรียนรู้
ท้าทาย — ส่วนที่ยากคือการสร้างตารางอัตโนมัติที่ทำตามข้อจำกัดได้จริง
- โจทย์ constraint satisfaction และการเขียน validator ตรวจกฎ
- UI ปฏิทินแบบ drag & drop
- workflow หลายขั้น (ขอ → ยอมรับ → อนุมัติ) พร้อม transaction ที่ไม่ทำให้ข้อมูลค้างครึ่งทาง
- การออกรายงานสรุปเพื่อนำไปคำนวณค่าตอบแทน
ข้อควรระวัง
- กติกาเวรแต่ละหอแต่ละโรงพยาบาลไม่เหมือนกัน อย่า hard-code กฎ ให้ตั้งค่าได้
- การแลกเวรต้องเก็บประวัติครบ ใครขอ ใครอนุมัติ เพราะเกี่ยวกับค่าตอบแทนและความรับผิดชอบ
- ระบบอัตโนมัติเป็นแค่ตัวช่วย หัวหน้าต้องตรวจและปรับก่อนเผยแพร่เสมอ
ถ้าเป็นคุณ จะเริ่มสร้างตารางอัตโนมัติด้วยวิธีไหน แบบ greedy ง่าย ๆ ก่อน หรือไปใช้ solver เลย? แล้วมีใครเคยเจอกฎเวรแปลก ๆ ที่ระบบทั่วไปรองรับไม่ได้บ้างไหม เล่าให้ฟังหน่อยครับ ใครลงมือทำแล้วเอามาโชว์ในกระทู้นี้ได้เลย