ไอเดีย #46: ระบบนัดหมายคลินิกและเตือนนัดผ่าน LINE
คลินิกทันตกรรมเล็ก ๆ แถวบ้านผมมีสมุดนัดเล่มหนาวางอยู่หน้าเคาน์เตอร์ พนักงานต้องโทรเตือนคนไข้ทีละคนทุกเย็น ใครไม่รับสายก็ส่งข้อความตามอีกรอบ แต่ก็ยังมีคนลืมนัด ปล่อยเก้าอี้ทำฟันว่างไปทั้งชั่วโมง ขณะที่คนอื่นอยากได้คิวกลับต้องรอเป็นสัปดาห์ ในเมื่อคนไข้เกือบทุกคนมี LINE อยู่แล้ว ระบบนัดหมายที่เตือนและให้ยกเลิกเองได้ผ่าน LINE จึงเป็นโปรเจกต์ที่ขายคลินิกได้จริง
ใครจะใช้
- คนไข้ — จองนัด รับการเตือน ยืนยัน เลื่อน หรือยกเลิกผ่าน LINE OA
- พนักงานต้อนรับ — ดูตารางรายวัน รับนัดทางโทรศัพท์ และจัดการคิวว่าง
- แพทย์/ทันตแพทย์ — กำหนดตารางออกตรวจ วันลา และระยะเวลาต่อหัตถการ
- เจ้าของคลินิก — ดูอัตราการมาตามนัด และภาระงานของแต่ละคน
ฟีเจอร์ขั้นต่ำ (MVP)
- ตั้งตารางเวลาทำงานของแพทย์แต่ละคน และระยะเวลาของบริการ เช่น ขูดหินปูน หรือ ตรวจทั่วไป
- คนไข้เลือกบริการ แพทย์ และช่วงเวลาที่ว่างจริง ผ่าน LIFF หรือหน้าเว็บ
- ผูกบัญชี LINE กับเวชระเบียนด้วยเบอร์โทรและ OTP
- เตือนนัดอัตโนมัติก่อนหนึ่งวันและก่อนสองชั่วโมง ผ่าน LINE Messaging API พร้อมปุ่มยืนยันหรือยกเลิก
- ยกเลิกหรือเลื่อนเองได้ตามนโยบาย เช่น ต้องแจ้งล่วงหน้าอย่างน้อยกี่ชั่วโมง
- เมื่อมีคนยกเลิก แจ้งคนที่อยู่ในรายการรอคิวช่วงนั้น
- หน้าปฏิทินสำหรับพนักงาน ลากเลื่อนนัดได้ และบันทึกสถานะ มาตามนัด / ไม่มา
ต่อยอดได้อีก
- นัดติดตามผลอัตโนมัติ เช่น ครบหกเดือนแล้วชวนกลับมาตรวจ
- เก็บมัดจำผ่าน PromptPay QR สำหรับหัตถการที่ใช้เวลานาน
- แบบสอบถามความพึงพอใจหลังรับบริการ
- รองรับคลินิกหลายสาขา และแพทย์ที่ออกตรวจหลายที่
โครงข้อมูลตั้งต้น
patients— id, hn, name, phone, line_user_id, consent_atdoctors— id, name, specialty, activeschedules— id, doctor_id, weekday, start_time, end_time, valid_from, valid_toservices— id, name, duration_minappointments— id, patient_id, doctor_id, service_id, start_at, end_at, status, cancelled_reasonreminders— id, appointment_id, send_at, channel, sent_at, response
ระดับความยาก และสิ่งที่จะได้เรียนรู้
ระดับ ปานกลาง ใช้ Yii2 หรือ Laravel + PostgreSQL/MySQL ร่วมกับ LINE Messaging API และ LIFF สิ่งที่จะได้เรียนรู้:
- คำนวณช่วงเวลาว่างจากตารางแพทย์ ลบด้วยนัดที่มีอยู่และวันลา
- รับ webhook จาก LINE ตรวจ signature และจัดการปุ่ม postback
- ตั้ง cron หรือ scheduled job ส่งเตือน และกันส่งซ้ำ
- จัดการ timezone และแสดงวันที่แบบ พ.ศ.
ข้อควรระวัง
- ถ้าสองคนจองช่องเวลาเดียวกันพร้อมกัน จะเกิดนัดซ้อน ควรใช้ exclusion constraint หรือ lock ใน transaction
- ชื่อบริการและอาการเป็นข้อมูลสุขภาพ ซึ่งเป็นข้อมูลอ่อนไหวตาม PDPA ข้อความเตือนผ่าน LINE ควรเขียนกลาง ๆ ไม่ระบุโรค และต้องขอความยินยอมก่อน
- ข้อความ push มีโควตาตามแพ็กเกจของ LINE OA ควรคำนวณจำนวนข้อความต่อเดือนให้คลินิกรู้ล่วงหน้า
มีใครเคยทำระบบนัดให้คลินิกจริงบ้างครับ จัดการเรื่องคนไข้ไม่มาตามนัดยังไง เก็บมัดจำหรือใช้วิธีอื่น แล้วถ้าเป็นคุณจะใช้ LIFF หรือให้คนไข้คุยกับ chatbot ทั้งหมด มาเล่าหรือโพสต์ผลงานไว้ในบอร์ดนี้ได้เลย