1.2 Patient Registration Management
1.2 Module: Patient Registration Management (ระบบบริหารจัดการลงทะเบียนผู้ป่วย)
อ้างอิง TOR:
- 3.3 ระบบบริหารจัดการลงทะเบียนผู้ป่วย (ครบทุกข้อ 3.3.1 - 3.3.5)
- 3.7.1 การเชื่อมต่อข้อมูลผู้ป่วยจาก HIS
วัตถุประสงค์:
Module นี้เป็นหัวใจสำคัญในการเชื่อมโยงผู้ป่วยกับ LINE OA เพื่อให้สามารถส่งการแจ้งเตือนถึงผู้ป่วยได้ โดยต้องตรวจสอบความถูกต้องกับข้อมูลจาก HIS และจัดการข้อมูลผู้ลงทะเบียนอย่างปลอดภัย
1.2.1 Feature: Patient LINE OA Registration
1. ระบบลงทะเบียนผ่าน LINE OA
TOR Reference: 3.3.1
คำอธิบาย: ฟีเจอร์สำหรับให้ผู้ป่วยลงทะเบียนผ่าน LINE Official Account เพื่อเชื่อมโยงบัญชี LINE กับข้อมูลผู้ป่วยในระบบ HIS และรับการแจ้งเตือนนัดหมาย ระบบจะใช้ LINE Messaging API ในการสื่อสาร
การทำงาน:
Step 1: ผู้ป่วย Add Friend LINE OA
- ผู้ป่วยสแกน QR Code หรือค้นหา LINE OA ของโรงพยาบาล
- กดเพิ่มเพื่อน (Add Friend)
- ระบบส่ง Welcome Message พร้อมคำแนะนำการลงทะเบียน
Step 2: เริ่มกระบวนการลงทะเบียน
- ผู้ป่วยคลิกปุ่ม "ลงทะเบียน" จาก Rich Menu หรือ Quick Reply
-
ระบบแสดง Flex Message พร้อมฟอร์มกรอกข้อมูล:
-
เลขบัตรประชาชน 13 หลัก
- รหัสโรงพยาบาล (HN)
- วันเดือนปีเกิด
- เบอร์โทรศัพท์
- ชื่อผู้ติดต่อ (ถ้าเป็นญาติที่ลงทะเบียนแทน)
Step 3: ตรวจสอบข้อมูลกับ HIS
- ระบบส่งข้อมูลไปตรวจสอบกับ Database HIS
- เช็คว่าข้อมูลตรงกันหรือไม่ (เลขบัตร + HN + วันเกิด)
- ถ้าข้อมูลถูกต้อง → ดำเนินการจับคู่
- ถ้าข้อมูลไม่ถูกต้อง → แสดงข้อความแจ้งเตือนให้ตรวจสอบอีกครั้ง (จำกัด 3 ครั้ง)
Step 4: สร้างการเชื่อมโยง
- บันทึก LINE User ID กับ HN ลง Database
- บันทึกข้อมูลการลงทะเบียน (วันเวลา, สถานะ)
- ตั้งค่าเริ่มต้น: รับการแจ้งเตือน = เปิด
- ส่งข้อความยืนยันการลงทะเบียนสำเร็จ
กรณีพิเศษ:
- ญาติลงทะเบียนแทน: ให้กรอก "ชื่อผู้ติดต่อ" และบันทึกว่าเป็นญาติ
- ผู้ป่วยไม่มี HN: แจ้งให้ติดต่อเจ้าหน้าที่เพื่อสร้าง HN ก่อน
- เบอร์โทรไม่ตรงกับในระบบ: แจ้งเตือนและให้เลือกว่าจะอัปเดตในระบบหรือไม่
UI/UX Requirements:
- Welcome Message: ข้อความต้อนรับพร้อมโลโก้โรงพยาบาล และคำอธิบายสั้นๆ
- Rich Menu: แสดงปุ่ม "ลงทะเบียน", "นัดหมายของฉัน", "ตั้งค่า", "ติดต่อเรา"
- Flex Message Form: ออกแบบให้กรอกง่าย มีตัวอย่างชัดเจน (เช่น รูปแบบเลขบัตร: 1-2345-67890-12-3)
- Input Validation แบบ Real-time: แจ้งเตือนทันทีเมื่อกรอกรูปแบบไม่ถูกต้อง
- Progress Indicator: แสดงว่าอยู่ขั้นตอนไหนของการลงทะเบียน (1/3, 2/3, 3/3)
- Error Message: ข้อความชัดเจนเป็นภาษาไทยง่ายๆ เข้าใจง่าย
- Success Message: พร้อม Emoji ให้ความรู้สึกเป็นมิตร
2. เชื่อมต่อข้อมูล HIS (HN, รหัสบัตร, วันเกิด, เบอร์, ชื่อ)
TOR Reference: 3.3.3, 3.7.1
คำอธิบาย: ระบบต้องเชื่อมต่อกับ Database ของ HIS (Hospital Information System) เพื่อดึงและตรวจสอบข้อมูลผู้ป่วย โดยใช้วิธี Database Connection โดยตรง หรือผ่าน API ที่ HIS จัดเตรียมไว้
ข้อมูลที่ดึงจาก HIS (ตาม TOR 3.7.1):
- HN (Hospital Number): รหัสผู้ป่วยในระบบโรงพยาบาล
- เลขบัตรประชาชน: สำหรับยืนยันตัวตน
- ชื่อ-นามสกุล: ข้อมูลผู้ป่วย
- วันเดือนปีเกิด: สำหรับยืนยันตัวตนและคำนวณอายุ
- เพศ: สำหรับการรายงาน
- เบอร์โทรศัพท์: สำหรับติดต่อฉุกเฉิน
การทำงาน:
การเชื่อมต่อ HIS Database:
-
ระบบมี Configuration สำหรับตั้งค่าการเชื่อมต่อ:
-
Server Address
- Database Name
- Username/Password (เข้ารหัส)
- Port
-
Connection Timeout
-
ใช้ Read-Only Connection (เพื่อความปลอดภัย ไม่ให้แก้ไขข้อมูลใน HIS)
- Connection Pool สำหรับจัดการ Connection ให้มีประสิทธิภาพ
Query ข้อมูลผู้ป่วย:
- รับ Input จากผู้ลงทะเบียน (เลขบัตร, HN, วันเกิด)
- Query ตาราง Patient หรือ Person ใน HIS
- ตรวจสอบว่าข้อมูลตรงกัน 100% หรือไม่
- ดึงข้อมูลเพิ่มเติม (ชื่อ, เพศ, เบอร์)
- Return ผลลัพธ์กลับไปยัง Registration Process
การจัดการข้อผิดพลาด:
- HIS ไม่ตอบสนอง: Retry 3 ครั้ง แล้วแจ้งผู้ใช้ให้ลองใหม่ภายหลัง
- ข้อมูลไม่ตรงกัน: แสดงข้อความแนะนำให้ตรวจสอบข้อมูล
- Connection Timeout: แสดง Error Message และบันทึก Log
UI/UX Requirements:
- Loading Indicator: แสดงขณะตรวจสอบข้อมูลกับ HIS (ข้อความ: "กำลังตรวจสอบข้อมูล...")
-
Error Handling: ข้อความชัดเจนเมื่อเกิดปัญหา พร้อมคำแนะนำแก้ไข
-
"ไม่พบข้อมูลในระบบ กรุณาตรวจสอบเลขบัตรและ HN อีกครั้ง"
-
"วันเกิดไม่ตรงกับในระบบ กรุณาระบุวันเกิดให้ถูกต้อง"
-
ข้อมูลที่ดึงมา: แสดงข้อมูลที่ได้จาก HIS ให้ผู้ใช้ยืนยัน (ชื่อ-สกุล) ก่อน Confirm
- หน้าจอ Back Office: แสดงสถานะการเชื่อมต่อ HIS (Online/Offline) แบบ Real-time
3. ระบบจับคู่ LINE User กับ HN
TOR Reference: 3.3.2
คำอธิบาย: กระบวนการสร้างความสัมพันธ์ (Linking) ระหว่าง LINE User ID กับ HN (รหัสผู้ป่วย) เพื่อให้ระบบสามารถส่งการแจ้งเตือนไปยัง LINE ของผู้ป่วยได้ โดยต้องมีความปลอดภัยและตรวจสอบได้
การทำงาน:
การจับคู่ (Linking):
- เมื่อผู้ป่วยกรอกข้อมูลและยืนยันตัวตนสำเร็จ
-
ระบบบันทึก Mapping ระหว่าง:
-
LINE User ID (จาก LINE Messaging API)
- HN (รหัสผู้ป่วยในระบบ)
- วันเวลาที่ลงทะเบียน
-
สถานะการลงทะเบียน (Active)
-
เก็บข้อมูลเพิ่มเติม:
-
ชื่อ LINE Display Name
- รูปโปรไฟล์ (Picture URL)
- เบอร์โทรที่ให้ไว้
- ชื่อผู้ติดต่อ (ถ้าเป็นญาติ)
การจัดการกรณีพิเศษ:
- HN หนึ่งสามารถเชื่อมกับหลาย LINE ได้: กรณีญาติหลายคนต้องการรับการแจ้งเตือน
- LINE User หนึ่งสามารถเชื่อมกับหลาย HN ได้: กรณีคนเดียวดูแลผู้ป่วยหลายคน
-
การยกเลิกการเชื่อม (Unlink):
-
ผู้ใช้สามารถยกเลิกได้เองผ่าน LINE Menu
- เจ้าหน้าที่สามารถยกเลิกได้ผ่าน Back Office
-
เมื่อผู้ใช้ Block LINE OA ระบบอัปเดตสถานะเป็น Inactive
-
การเชื่อมใหม่: หากเคยเชื่อมแล้วยกเลิก สามารถเชื่อมใหม่ได้โดยผ่านกระบวนการยืนยันตัวตนอีกครั้ง
การตรวจสอบสถานะ:
- ระบบเช็คสถานะการเชื่อมก่อนส่งแจ้งเตือน
- หาก LINE User Unlink หรือ Block Bot จะไม่ส่งแจ้งเตือน
- บันทึก Log ทุกครั้งที่มีการเชื่อม/ยกเลิก
UI/UX Requirements:
-
ข้อความยืนยันการเชื่อม: แสดงข้อมูลที่จับคู่ชัดเจน
-
"เชื่อมบัญชี LINE สำเร็จ"
- "ชื่อ: นายสมชาย ใจดี"
- "HN: 12345678"
-
"คุณจะได้รับการแจ้งเตือนนัดหมายผ่าน LINE นี้"
-
หน้าจอจัดการการเชื่อม (Back Office):
-
แสดงรายการผู้ลงทะเบียนทั้งหมด
- คอลัมน์: HN, ชื่อผู้ป่วย, LINE Display Name, วันที่ลงทะเบียน, สถานะ
- ปุ่มยกเลิกการเชื่อม (สำหรับเจ้าหน้าที่)
-
ตัวกรองตามสถานะ (Active/Inactive)
-
หน้าจอผู้ใช้ LINE:
-
เมนู "บัญชีที่เชื่อม" แสดง HN ทั้งหมดที่เชื่อมไว้
- ปุ่มยกเลิกการเชื่อมแต่ละ HN
- Confirmation Dialog ก่อนยกเลิก
1.2.2 Feature: Patient Data Management
1. แสดง/ค้นหาข้อมูลผู้ป่วยที่ลงทะเบียน
TOR Reference: 3.3.4
คำอธิบาย: ฟีเจอร์สำหรับเจ้าหน้าที่ดูและค้นหาข้อมูลผู้ป่วยที่ลงทะเบียนผ่าน LINE OA เพื่อตรวจสอบสถานะ จัดการข้อมูล และแก้ไขปัญหา
การทำงาน:
การแสดงรายการ:
- เจ้าหน้าที่เข้าสู่หน้า "จัดการผู้ลงทะเบียน"
- ระบบแสดงรายการผู้ป่วยทั้งหมดที่ลงทะเบียนแล้ว
-
แสดงข้อมูล:
-
HN
- ชื่อ-สกุล
- เบอร์โทรศัพท์
- LINE Display Name
- วันที่ลงทะเบียน
- สถานะการรับแจ้งเตือน (เปิด/ปิด)
-
สถานะการเชื่อม (Active/Inactive)
-
รองรับ Pagination (แสดง 20-50 รายการต่อหน้า)
การค้นหา:
-
Quick Search: ช่องค้นหาแบบเดียว รองรับ:
-
HN
- เลขบัตรประชาชน
- ชื่อ-สกุล (ค้นหาแบบบางส่วนได้)
-
เบอร์โทรศัพท์
-
Advanced Search: ค้นหาหลายเงื่อนไข:
-
ช่วงวันที่ลงทะเบียน
- สถานะการรับแจ้งเตือน
- สถานะการเชื่อม
- เพศ
-
ช่วงอายุ
-
การค้นหาแบบ Auto-complete สำหรับชื่อและ HN
การแสดงรายละเอียด:
- คลิกที่รายการเพื่อดูรายละเอียดเต็ม
-
แสดง:
-
ข้อมูลส่วนตัวทั้งหมด
- ประวัติการลงทะเบียน
- ประวัติการรับแจ้งเตือน (5 ครั้งล่าสุด)
- LINE Profile (รูป, ชื่อ)
- ข้อมูลญาติผู้ติดต่อ (ถ้ามี)
UI/UX Requirements:
-
หน้ารายการหลัก: ออกแบบเป็น Table พร้อม:
-
Header ที่สามารถ Sort ได้ (เรียงตาม HN, ชื่อ, วันที่)
- ช่องค้นหาเด่นชัดด้านบน (Search icon + placeholder ชัดเจน)
- ปุ่มกรองข้อมูล (Filter icon) เปิด Panel ด้านข้าง
-
Badge แสดงสถานะ (สีเขียว=Active, สีเทา=Inactive)
-
หน้ารายละเอียด:
-
Layout แบบ 2 คอลัมน์ (ซ้าย=ข้อมูลหลัก, ขวา=ประวัติ)
- Card design สำหรับแต่ละส่วนข้อมูล
-
Timeline แสดงประวัติการแจ้งเตือน
-
Responsive: รองรับการใช้งานบนแท็บเล็ต
- Export: ปุ่ม Export รายการเป็น Excel (ตามเงื่อนไขที่กรอง)
2. จัดการการตั้งค่ารับ/ไม่รับการแจ้งเตือน
TOR Reference: 3.3.5
คำอธิบาย: ให้ผู้ป่วยและเจ้าหน้าที่สามารถจัดการการตั้งค่าการรับการแจ้งเตือนได้ เพื่อเคารพในความต้องการของผู้ป่วยและปฏิบัติตาม PDPA (พ.ร.บ. คุ้มครองข้อมูลส่วนบุคคล)
การทำงาน:
สำหรับผู้ป่วย (ผ่าน LINE):
- ผู้ป่วยเปิด LINE OA และเข้าเมนู "ตั้งค่า"
- เห็นตัวเลือก "การแจ้งเตือน"
-
สามารถเลือกได้:
-
เปิดการแจ้งเตือนทั้งหมด (Default)
- ปิดการแจ้งเตือนทั้งหมด
-
เลือกประเภทการแจ้งเตือน (Advanced):
- แจ้งเตือนนัดหมาย
- ข่าวสารจากโรงพยาบาล
- การแจ้งเตือนเร่งด่วน (บังคับเปิด)
-
เมื่อเปลี่ยนการตั้งค่า ระบบแสดง Confirmation
- บันทึกการเปลี่ยนแปลงพร้อม Timestamp
สำหรับเจ้าหน้าที่ (ผ่าน Back Office):
- เข้าสู่หน้ารายละเอียดผู้ป่วย
- เห็นสถานะการรับแจ้งเตือนปัจจุบัน
- สามารถเปลี่ยนแปลงได้ (กรณีผู้ป่วยขอผ่านเจ้าหน้าที่)
- ต้องระบุเหตุผลในการเปลี่ยนแปลง
- บันทึก Activity Log
การทำงานของระบบ:
- ก่อนส่งแจ้งเตือน เช็คการตั้งค่าของผู้ป่วยทุกครั้ง
- หากปิดการแจ้งเตือน → ข้าม ไม่ส่ง
- บันทึกว่าไม่ได้ส่งเพราะผู้ใช้ปิด (เพื่อ Reporting)
- การแจ้งเตือนฉุกเฉิน ยังคงส่งแม้จะปิด (แจ้งเรื่องสำคัญมาก)
กรณีพิเศษ:
- ยกเลิกการลงทะเบียน: มีปุ่มแยกต่างหาก ต้อง Confirm 2 ครั้ง
- ปิดชั่วคราว: สามารถตั้งเวลาปิดการแจ้งเตือนชั่วคราว (เช่น 1 สัปดาห์)
- ประวัติการเปลี่ยนแปลง: เก็บ Log ทุกครั้งที่เปลี่ยนการตั้งค่า
UI/UX Requirements:
-
หน้าจอ LINE:
-
Toggle Switch ใหญ่ชัดเจนสำหรับเปิด/ปิด
- ไอคอนระฆัง (🔔 เปิด, 🔕 ปิด)
- ข้อความอธิบายสั้นๆ ว่าจะได้รับการแจ้งเตือนอะไรบ้าง
-
Confirmation Dialog พร้อมคำเตือน "คุณอาจพลาดการแจ้งเตือนนัดหมายสำคัญ"
-
หน้าจอ Back Office:
-
แสดงสถานะเด่นชัด (Badge สีเขียว/แดง)
- ปุ่ม Toggle พร้อม Modal ให้ใส่เหตุผล
- แสดงประวัติการเปลี่ยนแปลง (Timeline)
-
Filter ผู้ป่วยที่ปิดการแจ้งเตือนทั้งหมด
-
ข้อความยืนยัน:
-
"เปิดการแจ้งเตือนแล้ว คุณจะได้รับข้อความเมื่อมีนัดหมาย"
- "ปิดการแจ้งเตือนแล้ว คุณจะไม่ได้รับข้อความนัดหมาย (ยกเว้นเรื่องเร่งด่วน)"
3. อัปเดตข้อมูลผู้ป่วย
TOR Reference: 3.3.4
คำอธิบาย: ฟีเจอร์สำหรับอัปเดตข้อมูลผู้ป่วยที่เปลี่ยนแปลง เช่น เบอร์โทรศัพท์ใหม่ หรือชื่อผู้ติดต่อ โดยข้อมูลบางส่วนต้องซิงค์กับ HIS
การทำงาน:
ข้อมูลที่อนุญาตให้แก้ไขได้:
- เบอร์โทรศัพท์
- ชื่อผู้ติดต่อ (กรณีญาติ)
- การตั้งค่าการแจ้งเตือน
ข้อมูลที่ไม่อนุญาตให้แก้ไข:
- HN (ห้ามแก้ไข ต้องลงทะเบียนใหม่)
- เลขบัตรประชาชน (ห้ามแก้ไข)
- ชื่อ-สกุล (แก้ไขที่ HIS แล้วซิงค์มา)
- วันเกิด (แก้ไขที่ HIS)
กระบวนการอัปเดต:
สำหรับผู้ป่วย (ผ่าน LINE):
- เข้าเมนู "ข้อมูลของฉัน"
- เห็นข้อมูลที่ลงทะเบียนไว้
- คลิกปุ่ม "แก้ไข" ที่ช่องที่แก้ไขได้
- กรอกข้อมูลใหม่
- ยืนยันการเปลี่ยนแปลง
- ระบบบันทึกและส่ง Confirmation
สำหรับเจ้าหน้าที่ (ผ่าน Back Office):
- เข้าสู่หน้ารายละเอียดผู้ป่วย
- คลิกปุ่ม "แก้ไขข้อมูล"
- แก้ไขข้อมูลที่ต้องการ
- ระบุเหตุผลในการแก้ไข (บังคับกรอก)
- บันทึกพร้อม Activity Log
การซิงค์กับ HIS:
- ข้อมูลบางส่วน (ชื่อ, อายุ) ดึงจาก HIS แบบ One-way
- ถ้าข้อมูลใน HIS เปลี่ยน ระบบอัปเดตอัตโนมัติ
- มีตัวเลือก "ซิงค์ข้อมูลจาก HIS ใหม่" สำหรับเจ้าหน้าที่
UI/UX Requirements:
-
หน้าจอ LINE:
-
แสดงข้อมูลปัจจุบันเป็น Card
- ไอคอนดินสอสำหรับช่องที่แก้ไขได้
- ไอคอนล็อคสำหรับช่องที่แก้ไขไม่ได้ (พร้อมคำอธิบาย)
-
Inline Editing หรือ Modal Form
-
หน้าจอ Back Office:
-
ฟอร์มแก้ไขแบบ Inline หรือ Modal
- แสดงข้อมูลเดิมและข้อมูลใหม่เปรียบเทียบกัน
- Validation แบบ Real-time
- ปุ่ม "ซิงค์จาก HIS" เด่นชัด
-
แสดงวันเวลาที่ซิงค์ล่าสุด
-
ประวัติการแก้ไข:
-
Timeline แสดงการเปลี่ยนแปลงทั้งหมด
- แสดง Before/After
- แสดงผู้แก้ไขและเหตุผล
สรุป Module 1.2: Patient Registration Management
ความสำคัญ: Module นี้เป็นสะพานเชื่อมระหว่าง LINE OA กับระบบ HIS เป็นส่วนสำคัญที่ทำให้ผู้ป่วยสามารถรับการแจ้งเตือนได้ ต้องให้ความสำคัญกับความถูกต้องของข้อมูลและความปลอดภัย ครอบคลุมทุกข้อกำหนดใน TOR 3.3 (3.3.1 - 3.3.5) และ 3.7.1
Timeline Summary:
- SA: 17 ชั่วโมง
- UI Design: 21 ชั่วโมง
- Backend Dev: 70 ชั่วโมง
- Frontend Dev: 42 ชั่วโมง
- Testing: 84 ชั่วโมง
- PM: 15 ชั่วโมง
- Marketing Officer: 2 ชั่วโมง (สำหรับออกแบบ LINE Rich Menu และข้อความ)