ข้ามไปที่เนื้อหา

1.4 Notification System

1.4 Module: Notification System (ระบบการแจ้งเตือนและติดตาม)

อ้างอิง TOR:

  • 3.5 ระบบการแจ้งเตือนและติดตามการแจ้งเตือน (ครบทุกข้อ 3.5.1 - 3.5.4)
  • 2.2 วัตถุประสงค์: เพิ่มความสะดวกให้ผู้ป่วยและลดอัตราการไม่มาตามนัด

วัตถุประสงค์:

Module นี้เป็นหัวใจหลักในการส่งการแจ้งเตือนไปยังผู้ป่วยผ่าน LINE OA รวมถึงการติดตามสถานะการส่ง การตอบกลับของผู้ป่วย และการจัดการข้อความแบบต่างๆ เพื่อให้ผู้ป่วยได้รับข้อมูลที่ถูกต้องและตรงเวลา


1.4.1 Feature: Notification Sending

1. ส่งข้อความแจ้งเตือนอัตโนมัติตาม Schedule

TOR Reference: 3.5.1 (ส่วนข้อความ), 3.4.1, 3.4.2

คำอธิบาย: ระบบอัตโนมัติสำหรับส่งข้อความแจ้งเตือนนัดหมายไปยังผู้ป่วยตามตารางเวลาที่กำหนดไว้ โดยใช้ LINE Messaging API และ Cron Job/Scheduler ทำงานเบื้องหลัง

การทำงาน:

Background Scheduler Process:

  1. Cron Job/Windows Scheduled Task ทำงานทุก 1-5 นาที
  2. Query ข้อมูล: ดึงรายการนัดที่ต้องส่งแจ้งเตือนในช่วงเวลานี้

  3. วันที่ต้องส่ง = วันนี้

  4. เวลาต้องส่ง ≤ เวลาปัจจุบัน
  5. สถานะ = "รอส่ง" (Pending)
  6. ผู้ป่วยเปิดรับการแจ้งเตือน
  7. มีข้อมูล LINE User ID

  8. สร้าง Notification Queue: จัดเรียงลำดับการส่ง

  9. ส่งข้อความทีละรายการ:

  10. เรียก LINE Messaging API

  11. ส่ง Push Message ไปยัง LINE User ID
  12. รอ Response จาก LINE API

  13. อัปเดตสถานะ:

  14. สำเร็จ → สถานะ "ส่งแล้ว" + บันทึก Timestamp

  15. ล้มเหลว → สถานะ "ล้มเหลว" + บันทึกสาเหตุ + Retry Queue

กลไกการ Retry (ลองใหม่):

  • ล้มเหลวครั้งแรก → รอ 5 นาที แล้วลองใหม่
  • ล้มเหลวครั้งที่ 2 → รอ 15 นาที แล้วลองใหม่
  • ล้มเหลวครั้งที่ 3 → แจ้งเตือนเจ้าหน้าที่ + หยุด Retry

Rate Limiting (จำกัดอัตรา):

  • LINE API มีข้อจำกัด: ไม่เกิน 500 ข้อความ/วินาที
  • ระบบควบคุม: ส่งไม่เกิน 100 ข้อความ/นาที (ปลอดภัย)
  • ใช้ Queue Management ถ้ามีข้อความเยอะ

การจัดการข้อผิดพลาด:

  • LINE User Block Bot: อัปเดตสถานะเป็น "Inactive" ไม่ส่งอีก
  • Invalid LINE User ID: แจ้งเตือนเจ้าหน้าที่ให้ตรวจสอบ
  • LINE API Down: Retry + Alert ผู้ดูแล
  • Network Error: Retry ตาม Exponential Backoff

ตัวอย่างการทำงาน:

เวลา 09:00 น.
→ ระบบ Query พบนัด 50 รายการที่ต้องส่ง
→ สร้าง Queue 50 รายการ
→ ส่งทีละรายการ (ประมาณ 30 วินาที เสร็จทั้งหมด)
→ สำเร็จ 48 รายการ, ล้มเหลว 2 รายการ
→ 2 รายการล้มเหลวเข้า Retry Queue
→ บันทึก Log

UI/UX Requirements:

  • Scheduler Status Dashboard:

  • แสดงสถานะ Service (Running/Stopped)

  • เวลารันครั้งล่าสุด
  • จำนวนข้อความที่ส่งไปแล้ววันนี้
  • จำนวนข้อความในคิว (Pending)
  • อัตราความสำเร็จ (%)

  • Manual Control:

  • ปุ่ม Start/Stop Service (สำหรับ Admin)

  • ปุ่ม "ส่งคิวทันที" (Force Send)
  • ปุ่ม "ล้างคิว" (Clear Queue)

  • Real-time Monitor:

  • แสดงข้อความที่กำลังส่ง (Live)

  • Progress Bar
  • Log แสดงทุกการส่ง (Success/Failed)

  • Alert System:

  • แจ้งเตือนเมื่อ Service หยุดทำงาน

  • แจ้งเตือนเมื่อ Success Rate < 90%
  • แจ้งเตือนเมื่อ LINE API มีปัญหา

2. ส่งข้อความแบบตอบกลับ (Interactive Message)

TOR Reference: 3.5.1

คำอธิบาย: ฟีเจอร์ส่งข้อความแจ้งเตือนที่ผู้ป่วยสามารถตอบกลับได้ทันที โดยใช้ LINE Quick Reply หรือ Flex Message พร้อมปุ่ม เพื่อให้ผู้ป่วยยืนยัน เลื่อน หรือยกเลิกนัดได้ง่าย

การทำงาน:

ส่วนการส่งข้อความ:

  1. สร้างข้อความแจ้งเตือนตาม Template
  2. เพิ่ม Quick Reply Buttons:

  3. ✅ "ยืนยันมาตามนัด"

  4. 📅 "ขอเลื่อนนัด"
  5. ❌ "ขอยกเลิกนัด"

  6. หรือใช้ Flex Message (Card สวยงาม):

  7. แสดงข้อมูลนัดเป็น Card

  8. ปุ่มใหญ่ชัดเจน
  9. มีไอคอนและสี

  10. ส่งผ่าน LINE API

ส่วนรับการตอบกลับ (Webhook): 1. ผู้ป่วยคลิกปุ่ม 2. LINE Server ส่ง Event มาที่ Webhook URL 3. ระบบรับ Event และแยกประเภท:

  • Postback Event (จากปุ่ม Flex Message)
  • Message Event (จาก Quick Reply)

  • ดึงข้อมูล:

  • LINE User ID

  • Action (confirm/reschedule/cancel)
  • Appointment ID (ส่งมาใน Postback Data)

  • ประมวลผลตาม Action

การประมวลผลแต่ละ Action:

🟢 ยืนยันมาตามนัด:

  1. อัปเดตสถานะนัด → "ยืนยันแล้ว"
  2. บันทึก Timestamp การตอบกลับ
  3. ส่งข้อความตอบกลับ:
✅ ยืนยันการนัดสำเร็จ

เราจะรอคุณในวันที่ {date} เวลา {time}
ขอบคุณค่ะ/ครับ 🙏

🟡 ขอเลื่อนนัด:

  1. บันทึกคำขอเลื่อนนัด
  2. อัปเดตสถานะ → "รอเลื่อนนัด"
  3. ส่งข้อความตอบกลับ:
📅 เราได้รับคำขอเลื่อนนัดแล้ว

เจ้าหน้าที่จะติดต่อกลับภายใน 24 ชั่วโมง
หรือโทร 02-XXX-XXXX
  1. แจ้งเตือนเจ้าหน้าที่: ส่งการแจ้งเตือนใน Back Office
  2. เจ้าหน้าที่ติดต่อผู้ป่วยเพื่อนัดใหม่

🔴 ขอยกเลิกนัด:

  1. บันทึกคำขอยกเลิก
  2. อัปเดตสถานะ → "รอยกเลิก"
  3. ส่งข้อความตอบกลับ:
❌ เราได้รับคำขอยกเลิกนัดแล้ว

เจ้าหน้าที่จะยืนยันการยกเลิกภายใน 24 ชั่วโมง
หากต้องการนัดใหม่ โทร 02-XXX-XXXX
  1. แจ้งเตือนเจ้าหน้าที่: ส่งการแจ้งเตือนใน Back Office
  2. เจ้าหน้าที่ยืนยันการยกเลิกใน HIS

กรณีพิเศษ:

  • ตอบกลับหลายครั้ง: รับเฉพาะครั้งแรก เวลาถัดมาแจ้งว่า "ได้รับคำตอบแล้ว"
  • ตอบกลับช้า: ถ้าเลยวันนัดแล้ว แจ้งว่า "ไม่สามารถดำเนินการได้"
  • ข้อความเปล่า: ส่ง Help Message แนะนำวิธีใช้

UI/UX Requirements:

  • LINE Message Design:

  • Flex Message แบบ Bubble (Card)

  • Header แสดงโลโก้โรงพยาบาล
  • Body แสดงข้อมูลนัดชัดเจน
  • Footer มีปุ่ม 3 ปุ่ม (สีเขียว/เหลือง/แดง)
  • ใช้ Emoji ให้เข้าใจง่าย

  • Back Office - Response Dashboard:

  • แสดงรายการผู้ป่วยที่ตอบกลับ

  • กรองตามประเภทการตอบ (ยืนยัน/เลื่อน/ยกเลิก)
  • Badge แจ้งเตือน "ต้องดำเนินการ" สำหรับคำขอเลื่อน/ยกเลิก
  • ปุ่มติดต่อผู้ป่วย (แสดงเบอร์โทร)
  • ปุ่มยืนยันการดำเนินการ

  • Response Timeline:

  • แสดงเวลาที่ส่งข้อความ

  • แสดงเวลาที่ผู้ป่วยตอบกลับ
  • แสดงเวลาที่เจ้าหน้าที่ดำเนินการ
  • สถานะแต่ละขั้นตอน

3. ส่งข้อความแบบกลุ่มตามเงื่อนไข (Broadcast Message)

TOR Reference: 3.5.4, 2.4 (รองรับการส่งข้อความกลุ่มตามเงื่อนไข)

คำอธิบาย: ฟีเจอร์สำหรับส่งข้อความไปยังกลุ่มผู้ป่วยที่ตรงตามเงื่อนไข เช่น แจ้งข่าวสาร ประกาศปิดแผนก หรือข้อมูลสำคัญ โดยสามารถกรองกลุ่มเป้าหมายได้อย่างละเอียด

การทำงาน:

Step 1: สร้างแคมเปญข้อความกลุ่ม:

  1. เจ้าหน้าที่เข้าสู่หน้า "ส่งข้อความกลุ่ม"
  2. คลิกปุ่ม "สร้างแคมเปญใหม่"
  3. ตั้งชื่อแคมเปญ เช่น "ประกาศปิดแผนก US วันที่ 1 ธ.ค."
  4. กำหนดเงื่อนไขกลุ่มเป้าหมาย (ตาม TOR 3.5.4 และ 2.4)

เงื่อนไขการกรองกลุ่มเป้าหมาย:

1. กรองตามข้อมูลทั่วไป:

  • อายุ: ช่วงอายุ (เช่น 20-40 ปี, 60+ ปี)
  • เพศ: ชาย/หญิง/ทั้งหมด
  • หน่วยงาน/แผนก: ผู้ป่วยของแผนกใด

2. กรองตามนัดหมาย (ตาม TOR 3.5.4):

  • วันที่นัดหมาย:

  • ช่วงวันที่ (เช่น 1-10 ธ.ค. 2025)

  • วันที่เฉพาะ (เช่น วันนี้, พรุ่งนี้, สัปดาห์นี้)

  • ประเภทการนัดหมาย:

  • เลือกหลายประเภท (US, MG, CT, X-Ray)

  • หรือทุกประเภท

  • แพทย์ผู้นัดหมาย:

  • เลือกแพทย์คนใดคนหนึ่ง

  • หรือทุกคน

  • สถานะนัด:

  • รอยืนยัน/ยืนยันแล้ว/ทั้งหมด

3. กรองตามกลุ่มประเภทการรักษา (ตาม TOR 2.4):

  • กลุ่มโรค (ถ้ามีข้อมูลใน HIS)
  • ประเภทการรักษา (ผู้ป่วยนอก/ผู้ป่วยใน)
  • ความถี่การมา (มาครั้งแรก/ติดตาม)

Step 2: เขียนข้อความ:

  1. กรอกข้อความที่ต้องการส่ง
  2. สามารถใช้ Variables: {name}, {date}, {department}
  3. เพิ่มรูปภาพ (Optional)
  4. Preview ข้อความ

Step 3: ตรวจสอบกลุ่มเป้าหมาย:

  1. ระบบแสดงจำนวนผู้รับ (เช่น "พบ 245 คน")
  2. แสดงตัวอย่างรายชื่อ (10 คนแรก)
  3. Preview ข้อความที่จะส่ง

Step 4: กำหนดเวลาส่ง:

  • ส่งทันที: ส่งทันทีที่กด Confirm
  • กำหนดเวลา: เลือกวันและเวลาที่ต้องการส่ง

Step 5: ส่งข้อความ:

  1. Confirm การส่ง
  2. ระบบสร้าง Queue
  3. ส่งข้อความทีละราย (ไม่เกิน 100 ข้อความ/นาที)
  4. บันทึก Log และสถิติ

ตัวอย่างการใช้งาน:

กรณีที่ 1: แจ้งปิดแผนกชั่วคราว

  • เงื่อนไข: นัด US ในวันที่ 1-5 ธ.ค.
  • ข้อความ: "เรียนคุณ{name} แผนก Ultrasound จะปิดชั่วคราววันที่ 3 ธ.ค. กรุณาติดต่อเลื่อนนัดค่ะ"

กรณีที่ 2: แจ้งข่าวสารสำคัญ

  • เงื่อนไข: ทุกคนที่ลงทะเบียน LINE
  • ข้อความ: "โรงพยาบาลขยายเวลาเปิด-ปิดใหม่ 07:00-20:00 น."

กรณีที่ 3: แจ้งกลุ่มผู้ป่วยเฉพาะ

  • เงื่อนไข: เพศหญิง อายุ 40-60 ปี นัด MG
  • ข้อความ: "เชิญร่วมกิจกรรม Pink October ตรวจเต้านมฟรี"

UI/UX Requirements:

  • หน้าสร้างแคมเปญ:

  • Wizard แบบ Step-by-Step (4-5 Steps)

  • Progress Indicator ด้านบน
  • ปุ่ม "ย้อนกลับ" และ "ถัดไป"

  • Filter Builder:

  • UI แบบ Visual Query Builder

  • Drag & Drop เงื่อนไข
  • เพิ่ม/ลบเงื่อนไขได้ง่าย
  • แสดงจำนวนผู้รับแบบ Real-time

  • Message Editor:

  • Text Area ขนาดใหญ่

  • Image Upload
  • Preview Panel ด้านข้าง
  • Character Counter

  • Confirmation Screen:

  • แสดงสรุปทั้งหมด

  • จำนวนผู้รับ
  • เวลาที่จะส่ง
  • Preview ข้อความ
  • Checkbox "ยืนยันการส่ง"

  • Campaign History:

  • ตารางแสดงแคมเปญที่ส่งแล้ว

  • สถิติ: ส่งไป X คน, อ่านแล้ว Y คน
  • ปุ่ม "ส่งอีกครั้ง" (Copy Campaign)

4. ส่งข้อความเร่งด่วนเฉพาะบุคคล (Manual Send)

TOR Reference: 3.5.4

คำอธิบาย: ฟีเจอร์สำหรับเจ้าหน้าที่ส่งข้อความไปยังผู้ป่วยเฉพาะรายได้ทันที สำหรับกรณีเร่งด่วน เช่น แจ้งยกเลิกนัด เปลี่ยนแพลงเวลา หรือแจ้งข้อมูลสำคัญ

การทำงาน:

Step 1: เลือกผู้รับ:

  1. เจ้าหน้าที่เข้าสู่หน้า "ส่งข้อความด่วน"
  2. ค้นหาผู้ป่วยด้วย:

  3. HN

  4. ชื่อ-สกุล
  5. เบอร์โทร

  6. หรือเลือกจากรายการนัดหมาย (มีปุ่ม "ส่งข้อความ" ในแต่ละรายการ)

  7. ระบบแสดงข้อมูลผู้ป่วยและนัดหมาย

Step 2: เขียนข้อความ:

  1. เลือก Template ด่วน (ถ้ามี):

  2. "แจ้งยกเลิกนัด"

  3. "แจ้งเปลี่ยนเวลานัด"
  4. "แจ้งเตือนพิเศษ"
  5. "ข้อความทั่วไป"

  6. หรือพิมพ์ข้อความเอง

  7. สามารถแทรกตัวแปร (ชื่อ, วันนัด, เวลา)
  8. Preview ข้อความ

Step 3: ส่งข้อความ:

  1. กด "ส่งทันที"
  2. ระบบส่งผ่าน LINE API
  3. แสดงผลลัพธ์ทันที (สำเร็จ/ล้มเหลว)
  4. บันทึก Log

การตรวจสอบก่อนส่ง:

  • เช็คว่าผู้ป่วยลงทะเบียน LINE หรือยัง
  • เช็คว่าผู้ป่วยเปิดรับการแจ้งเตือนหรือไม่
  • เตือนถ้าผู้ป่วย Block Bot
  • แสดงเวลาที่ส่งข้อความครั้งล่าสุด (ไม่ให้ส่งซ้ำบ่อย)

ตัวอย่าง Template ด่วน:

Template "แจ้งยกเลิกนัด":

🔴 แจ้งเปลี่ยนแปลงการนัดหมาย

เรียนคุณ{name}

ขออภัยค่ะ/ครับ การนัดหมายของคุณ
วันที่: {appointment_date}
เวลา: {appointment_time}
ถูกยกเลิก เนื่องจาก {reason}

กรุณาติดต่อนัดใหม่
โทร: 02-XXX-XXXX

Template "แจ้งเปลี่ยนเวลา":

⏰ แจ้งเปลี่ยนเวลานัดหมาย

เรียนคุณ{name}

เวลานัดเดิม: {old_time}
เปลี่ยนเป็น: {new_time}
วันที่: {appointment_date}

หากไม่สะดวก กรุณาติดต่อ
โทร: 02-XXX-XXXX

กรณีพิเศษ:

  • ส่งหลายคนพร้อมกัน: เลือกได้สูงสุด 10 คนต่อครั้ง
  • ส่งพร้อมไฟล์: แนบรูปภาพหรือเอกสาร (PDF)
  • ข้อความยาว: เตือนถ้าเกิน 1,000 ตัวอักษร

UI/UX Requirements:

  • หน้าส่งข้อความด่วน:

  • Layout แบบ 2 คอลัมน์

  • ซ้าย: ค้นหาและเลือกผู้รับ
  • ขวา: เขียนข้อความและส่ง

  • Search & Select:

  • Autocomplete Search Box

  • แสดงผลลัพธ์เป็นรายการ
  • แสดงข้อมูลผู้ป่วยย่อ (HN, ชื่อ, นัดล่าสุด)
  • Badge แสดงสถานะ LINE (เขียว=ใช้งานได้, แดง=Block)

  • Message Composer:

  • Dropdown เลือก Template

  • Text Area ขนาดกลาง
  • ปุ่ม Insert Variable
  • Preview Panel ด้านล่าง
  • Character Counter

  • Send Button:

  • ปุ่มใหญ่สีส้ม "ส่งทันที"

  • แสดง Loading ขณะส่ง
  • แสดง Success/Error Message ทันที

  • Send History:

  • แสดงข้อความที่ส่งไปล่าสุด (5 รายการ)

  • เพื่อตรวจสอบว่าส่งซ้ำหรือไม่

1.4.2 Feature: Notification Tracking

1. บันทึกสถานะการส่งข้อความ

TOR Reference: 3.5.2

คำอธิบาย: ระบบบันทึกข้อมูลทุกครั้งที่มีการส่งข้อความแจ้งเตือน เพื่อให้สามารถตรวจสอบย้อนหลังได้ว่าส่งไปเมื่อไหร่ สถานะอย่างไร และมีปัญหาหรือไม่

การทำงาน:

ข้อมูลที่บันทึก (ตาม TOR 3.5.2):

  • Notification ID: รหัสเฉพาะของการแจ้งเตือน
  • Appointment ID: นัดหมายที่เกี่ยวข้อง
  • HN: รหัสผู้ป่วย
  • LINE User ID: ผู้รับ
  • Message Type: ประเภทข้อความ (นัดหมาย/ข่าวสาร/ด่วน)
  • Message Content: เนื้อหาข้อความที่ส่ง
  • Sent Timestamp: วันเวลาที่ส่ง
  • Status: สถานะการส่ง

  • pending - รอส่ง

  • sent - ส่งสำเร็จ
  • delivered - ส่งถึง LINE Server
  • read - ผู้รับอ่านแล้ว (ถ้า LINE แจ้งกลับมา)
  • failed - ส่งล้มเหลว
  • blocked - ผู้รับ Block Bot

  • Error Message: ข้อความ Error (ถ้ามี)

  • Retry Count: จำนวนครั้งที่ลองส่งใหม่
  • Sent By: ผู้ส่ง (System/User ID)

กระบวนการบันทึก:

  1. ก่อนส่งข้อความ → สร้าง Record สถานะ pending
  2. ส่งข้อความผ่าน LINE API
  3. รับ Response:

  4. สำเร็จ → อัปเดตเป็น sent + บันทึก Timestamp

  5. ล้มเหลว → อัปเดตเป็น failed + บันทึก Error

  6. ถ้า LINE Webhook แจ้งว่าอ่านแล้ว → อัปเดตเป็น read

การใช้ประโยชน์จากข้อมูล:

  • ตรวจสอบว่าผู้ป่วยได้รับข้อความหรือไม่
  • วิเคราะห์อัตราความสำเร็จการส่ง
  • หาสาเหตุของการส่งล้มเหลว
  • ตรวจสอบว่าส่งซ้ำหรือไม่

UI/UX Requirements:

  • Notification Log Table:

  • แสดงรายการทั้งหมดที่ส่ง

  • คอลัมน์: วันเวลา, HN, ชื่อ, ประเภท, สถานะ
  • Badge สีแสดงสถานะ
  • ไอคอนแสดงประเภทข้อความ

  • Filter & Search:

  • กรองตามสถานะ

  • กรองตามวันที่
  • ค้นหาด้วย HN/ชื่อ

  • Detail View:

  • คลิกดูรายละเอียดเต็ม

  • แสดงเนื้อหาข้อความ
  • แสดง Timeline การส่ง
  • แสดง Error Details (ถ้ามี)

  • Statistics Dashboard:

  • จำนวนข้อความส่งวันนี้

  • อัตราความสำเร็จ
  • กราฟแสดงจำนวนข้อความรายวัน

2. บันทึกการตอบกลับของผู้ป่วย

TOR Reference: 3.5.3

คำอธิบาย: ระบบบันทึกข้อมูลทุกครั้งที่ผู้ป่วยตอบกลับข้อความแจ้งเตือน เพื่อติดตามสถานะนัดหมายและวิเคราะห์พฤติกรรมผู้ป่วย

การทำงาน:

ข้อมูลที่บันทึก (ตาม TOR 3.5.3):

  • Response ID: รหัสเฉพาะของการตอบกลับ
  • Notification ID: การแจ้งเตือนที่เกี่ยวข้อง
  • Appointment ID: นัดหมายที่เกี่ยวข้อง
  • HN: รหัสผู้ป่วย
  • LINE User ID: ผู้ตอบกลับ
  • Response Type: ประเภทการตอบกลับ

  • confirmed - ยืนยันมาตามนัด

  • reschedule - ขอเลื่อนนัด
  • cancelled - ขอยกเลิกนัด
  • other - ข้อความอื่นๆ

  • Response Message: ข้อความที่ผู้ป่วยส่งมา (ถ้ามี)

  • Response Timestamp: วันเวลาที่ตอบกลับ
  • Response Time: ระยะเวลาตอบกลับ (นับจากส่งข้อความ)
  • Action Taken: การดำเนินการของเจ้าหน้าที่
  • Action By: เจ้าหน้าที่ที่ดำเนินการ
  • Action Timestamp: วันเวลาดำเนินการ

กระบวนการบันทึก:

  1. ผู้ป่วยคลิกปุ่มตอบกลับ/พิมพ์ข้อความ
  2. LINE Webhook ส่ง Event มา
  3. ระบบรับและแยกประเภทการตอบกลับ
  4. สร้าง Response Record
  5. อัปเดตสถานะนัดหมาย
  6. ส่งข้อความตอบกลับผู้ป่วย
  7. ถ้าเป็นคำขอเลื่อน/ยกเลิก → สร้าง Task สำหรับเจ้าหน้าที่

การใช้ประโยชน์จากข้อมูล:

  • ติดตามสถานะนัดหมาย (ยืนยัน/เลื่อน/ยกเลิก)
  • วิเคราะห์อัตราการตอบกลับ
  • วิเคราะห์เวลาเฉลี่ยในการตอบกลับ
  • วิเคราะห์สาเหตุการเลื่อน/ยกเลิกนัด

UI/UX Requirements:

  • Response Log Table:

  • แสดงรายการการตอบกลับทั้งหมด

  • คอลัมน์: วันเวลา, HN, ชื่อ, ประเภทการตอบ, สถานะดำเนินการ
  • Badge สีแสดงประเภทและสถานะ
  • ไอคอนแสดงว่าดำเนินการแล้วหรือยัง

  • Action Required List:

  • รายการที่รอดำเนินการ (เลื่อน/ยกเลิก)

  • เรียงตาม Priority (เร่งด่วนก่อน)
  • ปุ่ม "ดำเนินการ" ในแต่ละรายการ
  • Badge จำนวนรายการรอดำเนินการ

  • Response Detail:

  • แสดงข้อมูลนัดหมาย

  • แสดงข้อความที่ผู้ป่วยตอบกลับ
  • แสดงประวัติการสื่อสาร
  • ปุ่มติดต่อผู้ป่วย (โทร/ส่งข้อความ)
  • ฟอร์มบันทึกการดำเนินการ

  • Analytics:

  • อัตราการตอบกลับ (%)

  • อัตราการยืนยัน/เลื่อน/ยกเลิก (%)
  • กราฟแสดงจำนวนการตอบกลับรายวัน

3. แสดงประวัติการแจ้งเตือน

TOR Reference: ไม่ระบุใน TOR (แต่จำเป็นสำหรับการติดตาม)

คำอธิบาย: ฟีเจอร์แสดงประวัติการแจ้งเตือนของผู้ป่วยแต่ละราย เพื่อให้เจ้าหน้าที่เห็นภาพรวมการสื่อสารกับผู้ป่วย

การทำงาน:

การแสดงประวัติ:

  1. เจ้าหน้าที่เปิดรายละเอียดผู้ป่วย
  2. คลิกแท็บ "ประวัติการแจ้งเตือน"
  3. แสดงรายการแบบ Timeline:

  4. ข้อความแจ้งเตือนที่ส่งไป

  5. การตอบกลับของผู้ป่วย
  6. การดำเนินการของเจ้าหน้าที่

  7. เรียงจากใหม่ไปเก่า

ข้อมูลที่แสดง:

  • วันเวลาส่ง
  • ประเภทข้อความ
  • เนื้อหาย่อ
  • สถานะ (ส่งแล้ว/อ่านแล้ว/ตอบกลับแล้ว)
  • การตอบกลับ (ถ้ามี)

การกรอง:

  • กรองตามประเภทข้อความ
  • กรองตามช่วงเวลา
  • กรองตามสถานะ

UI/UX Requirements:

  • Timeline View:

  • แสดงเป็นเส้นเวลาแนวตั้ง

  • จุดบนเส้นเวลาแสดงเหตุการณ์
  • ไอคอนต่างกันตามประเภท (ส่ง📤/รับ📥)
  • สีต่างกันตามสถานะ

  • Card Design:

  • แต่ละเหตุการณ์แสดงเป็น Card

  • Header: วันเวลา + ประเภท
  • Body: เนื้อหาข้อความ (ย่อ)
  • Footer: สถานะ + ปุ่ม "ดูเพิ่มเติม"

  • Filter Panel:

  • ด้านบนหรือด้านข้าง

  • Checkbox เลือกประเภทและสถานะ
  • Date Range Picker
  • ปุ่ม "ล้างตัวกรอง"

  • Export:

  • ปุ่ม Export ประวัติเป็น PDF

  • สำหรับเก็บเป็นหลักฐาน

4. Dashboard สถานะการส่ง

TOR Reference: ไม่ระบุใน TOR (แต่จำเป็นสำหรับ Monitoring)

คำอธิบาย: Dashboard สำหรับเจ้าหน้าที่และผู้ดูแลระบบติดตามภาพรวมการส่งการแจ้งเตือนทั้งหมด แบบ Real-time

การทำงาน:

ข้อมูลที่แสดงใน Dashboard:

1. สถิติวันนี้ (Today's Stats):

  • จำนวนข้อความส่งไปแล้ว
  • จำนวนข้อความรอส่ง
  • จำนวนข้อความล้มเหลว
  • อัตราความสำเร็จ (%)

2. สถานะแบบ Real-time:

  • สถานะ Service (Running/Stopped)
  • ข้อความที่กำลังส่ง (กี่รายการ/เหลืออีกกี่รายการ)
  • Queue Size (ในคิว)
  • ข้อความส่งล้มเหลว (Alert)

3. กราฟและชาร์ต:

  • Line Chart: จำนวนข้อความส่งรายวัน (7 วันล่าสุด)
  • Pie Chart: สัดส่วนการตอบกลับ (ยืนยัน/เลื่อน/ยกเลิก/ไม่ตอบ)
  • Bar Chart: จำนวนข้อความแยกตามประเภทนัด
  • Area Chart: Trend การส่งข้อความรายเดือน

4. รายการล่าสุด:

  • ข้อความที่ส่งไปล่าสุด (5-10 รายการ)
  • การตอบกลับล่าสุด (5-10 รายการ)
  • ข้อความล้มเหลว (ต้องดำเนินการ)

5. Alert & Warning:

  • Service หยุดทำงาน (แดง)
  • อัตราความสำเร็จต่ำกว่า 90% (เหลือง)
  • LINE API มีปัญหา (แดง)
  • Queue สูงผิดปกติ (เหลือง)

6. ประสิทธิภาพระบบ:

  • เวลาเฉลี่ยในการส่ง 1 ข้อความ
  • จำนวนข้อความต่อนาที
  • Connection Status กับ LINE API
  • Database Performance

การ Auto-refresh:

  • Dashboard อัปเดตทุก 30-60 วินาที
  • สามารถปิด Auto-refresh ได้
  • ปุ่ม Refresh Manual

UI/UX Requirements:

  • Layout:

  • Grid Layout แบบ Responsive

  • แบ่งเป็น Section ชัดเจน
  • ใช้ Card Design แยกแต่ละส่วน

  • KPI Cards:

  • Card ใหญ่แสดงตัวเลขสำคัญ

  • ใช้สีเด่นชัด
  • แสดงไอคอนประกอบ
  • แสดงเปรียบเทียบกับเมื่อวาน (↑ / ↓)

  • Charts & Graphs:

  • ใช้ Library สวยงาม (Chart.js, D3.js)

  • Interactive (Hover แสดงรายละเอียด)
  • สีสันสบายตา
  • Legend ชัดเจน

  • Status Indicators:

  • Traffic Light Style (🔴🟡🟢)

  • Badge แสดงสถานะ
  • Animation สำหรับ Real-time Update

  • Alert Panel:

  • แสดงเด่นชัดเมื่อมีปัญหา

  • ปุ่ม "แก้ไข" หรือ "ดูรายละเอียด"
  • สามารถ Dismiss Alert ได้

  • Quick Actions:

  • ปุ่มด่วน: Refresh, Export, Settings

  • ลิงก์ไปยัง Log Detail
  • ปุ่ม "ส่งข้อความทดสอบ"

สรุป Module 1.4: Notification System

ความสำคัญ: Module นี้เป็นหัวใจหลักของระบบ ทำหน้าที่ส่งการแจ้งเตือนไปยังผู้ป่วย รับการตอบกลับ และติดตามผลลัพธ์ ต้องให้ความสำคัญกับความน่าเชื่อถือ ความรวดเร็ว และความถูกต้องของข้อมูล รวมถึงการจัดการ Error ที่ดี ครอบคลุมทุกข้อกำหนดใน TOR 3.5 (3.5.1 - 3.5.4)

Timeline Summary:

  • SA: 23 ชั่วโมง
  • UI Design: 28 ชั่วโมง
  • Backend Dev: 104 ชั่วโมง
  • Frontend Dev: 56 ชั่วโมง
  • Testing: 120 ชั่วโมง
  • PM: 21.1 ชั่วโมง
  • Marketing Officer: 2 ชั่วโมง (สำหรับออกแบบ Flex Message และข้อความโฆษณา)