1.6 System Configuration
1.6 Module: System Configuration (ระบบตั้งค่า)
อ้างอิง TOR:
- 3.1.6 ระบบสามารถเชื่อมต่อกับข้อมูลโรงพยาบาล
- 3.7 ระบบสามารถเชื่อมต่อกับข้อมูลโรงพยาบาล (3.7.1, 3.7.2)
- 3.1.7 ระบบสามารถติดตั้งบนเครื่องเซิฟเวอร์
วัตถุประสงค์:
Module นี้เป็นส่วนสำคัญในการตั้งค่าระบบทั้งหมด ตั้งแต่การเชื่อมต่อกับ LINE OA, HIS/RIS/LIS, ไปจนถึงการตั้งค่าทั่วไปของระบบ เพื่อให้ระบบสามารถทำงานได้อย่างสมบูรณ์และเหมาะสมกับแต่ละโรงพยาบาล
1.6.1 Feature: LINE OA Configuration
1. กำหนดค่า LINE Channel Access Token
TOR Reference: ไม่ระบุใน TOR (แต่จำเป็นสำหรับการเชื่อมต่อ LINE OA)
คำอธิบาย: ฟีเจอร์สำหรับตั้งค่า Channel Access Token ที่ได้จาก LINE Developers Console เพื่อให้ระบบสามารถส่งข้อความผ่าน LINE Messaging API ได้
การทำงาน:
ขั้นตอนการตั้งค่า:
Step 1: รับ Token จาก LINE Developers:
- โรงพยาบาลสร้าง LINE Official Account
- เข้า LINE Developers Console (https://developers.line.biz)
- สร้าง Messaging API Channel
- คัดลอก Channel Access Token (Long-lived)
- คัดลอก Channel Secret
Step 2: ตั้งค่าใน Back Office:
- ผู้ดูแลระบบเข้าสู่หน้า "ตั้งค่าระบบ" → "LINE OA"
-
กรอกข้อมูล:
-
Channel Access Token: Paste Token ที่คัดลอกมา
- Channel Secret: Paste Secret ที่คัดลอกมา
-
Channel ID: รหัส Channel (ถ้ามี)
-
เลือก Environment: Production/Development
- คลิก "บันทึก"
Step 3: Encryption & Storage:
- ระบบเข้ารหัส Token ด้วย AES-256
- บันทึกลง Database ที่ปลอดภัย
- ไม่แสดง Token เต็มในหน้าจอ (แสดงเฉพาะ 4 ตัวสุดท้าย)
การใช้งาน Token:
- ทุกครั้งที่ส่งข้อความ → ใช้ Token ใน Authorization Header
- ถ้า Token หมดอายุ → แจ้งเตือนผู้ดูแล
- รองรับการเปลี่ยน Token ใหม่ได้ตลอดเวลา
การจัดการความปลอดภัย:
- Token ถูกเข้ารหัสใน Database
- Log ทุกครั้งที่มีการเปลี่ยน Token
- มีการ Validate Token ก่อนบันทึก
- Role-based Access: เฉพาะ Admin ดูได้
UI/UX Requirements:
-
Configuration Form:
-
Label ชัดเจน พร้อมคำอธิบาย
- Text Input แบบ Password (ซ่อน Token)
- ปุ่ม "แสดง Token" (Show/Hide)
- Validation แบบ Real-time
-
แสดงสถานะ Token (Active/Expired/Invalid)
-
Help Section:
-
ลิงก์ไปยัง LINE Developers Console
- วิธีการสร้าง Channel แบบ Step-by-Step
- วิดีโอสอนการตั้งค่า
-
FAQ
-
Status Indicator:
-
Badge แสดงสถานะการเชื่อมต่อ
- 🟢 Connected / 🔴 Disconnected / 🟡 Checking
-
วันเวลาที่ตั้งค่าล่าสุด
-
Security Notice:
-
ข้อความเตือนเรื่องความปลอดภัย
- "Token นี้ควรเก็บเป็นความลับ"
- แจ้งเตือนเมื่อมีการเปลี่ยน Token
2. กำหนดค่า Webhook URL
TOR Reference: ไม่ระบุใน TOR (แต่จำเป็นสำหรับการรับ Event จาก LINE)
คำอธิบาย: ฟีเจอร์สำหรับตั้งค่า Webhook URL ที่ LINE Server จะส่ง Event มา เมื่อผู้ใช้มีการโต้ตอบกับ LINE OA (เช่น กดปุ่ม, พิมพ์ข้อความ)
การทำงาน:
ขั้นตอนการตั้งค่า:
Step 1: กำหนด Webhook URL ในระบบ:
- ระบบสร้าง Webhook Endpoint:
https://yourdomain.com/api/line/webhook
- ใช้ HTTPS (SSL Certificate)
- เข้าถึงได้จาก Internet
- ตอบสนองภายใน 1 วินาที
Step 2: ตั้งค่าใน LINE Developers Console:
- เข้า Channel Settings
- ไปที่ Messaging API Settings
- กรอก Webhook URL: https://yourdomain.com/api/line/webhook
- เปิด "Use webhook": ON
- คลิก "Verify" เพื่อทดสอบ
- ถ้าสำเร็จ → แสดง ✓ Success
Step 3: จัดการ Webhook Events:
ระบบรับ Event ดังนี้:
- Message Event: ผู้ใช้ส่งข้อความ
- Postback Event: ผู้ใช้กดปุ่ม (Quick Reply/Flex Message)
- Follow Event: ผู้ใช้ Add Friend
- Unfollow Event: ผู้ใช้ Block
- Join Event: Bot เข้ากลุ่ม (ถ้ารองรับ)
กระบวนการรับ Webhook:
- LINE Server ส่ง POST Request มา
- ระบบตรวจสอบ Signature (ความปลอดภัย)
- Parse JSON Body
- แยกประเภท Event
- ประมวลผลตาม Business Logic
- ตอบกลับด้วย HTTP 200 OK
การตรวจสอบ Signature:
// Pseudo code
const signature = request.headers['x-line-signature'];
const body = request.body;
const channelSecret = getChannelSecret();
const expectedSignature =
crypto.createHmac('SHA256', channelSecret)
.update(body)
.digest('base64');
if (signature !== expectedSignature) {
// ปฏิเสธ Request
return 403 Forbidden;
}
Webhook URL Configuration ในระบบ:
- เข้าสู่หน้า "ตั้งค่า LINE OA"
- แสดง Webhook URL ที่ระบบสร้างให้
- ปุ่ม "คัดลอก URL"
- สถานะการเชื่อมต่อ (Last received event)
- Log Event ล่าสุด (5-10 รายการ)
UI/UX Requirements:
-
URL Display:
-
แสดง URL ในกรอบที่คัดลอกง่าย
- ปุ่ม "คัดลอก" พร้อมข้อความยืนยัน
-
QR Code สำหรับ Webhook URL (Optional)
-
Setup Guide:
-
แสดง Step-by-Step พร้อมภาพประกอบ
- ลิงก์ไปยัง LINE Developers Console
-
วิดีโอสอนการตั้งค่า
-
Status Monitor:
-
แสดงสถานะ Webhook (Active/Inactive)
- จำนวน Event ที่รับวันนี้
- Event ล่าสุด (เวลา + ประเภท)
-
กราฟจำนวน Event รายชั่วโมง
-
Webhook Log Viewer:
-
ตารางแสดง Event ล่าสุด
- คอลัมน์: เวลา, Event Type, User ID, Status
- กรองตามประเภท Event
- ดูรายละเอียด JSON
3. ทดสอบการเชื่อมต่อ LINE OA
TOR Reference: ไม่ระบุใน TOR (แต่จำเป็นสำหรับการ Validate การตั้งค่า)
คำอธิบาย: ฟีเจอร์สำหรับทดสอบว่าการตั้งค่า LINE OA ถูกต้องและสามารถส่งข้อความได้หรือไม่
การทำงาน:
การทดสอบที่ 1: ทดสอบส่งข้อความ (Push Message):
- คลิกปุ่ม "ทดสอบส่งข้อความ"
- กรอก LINE User ID ที่ต้องการทดสอบ (ของตัวเอง)
- ระบบส่งข้อความทดสอบ:
🧪 ทดสอบการเชื่อมต่อ LINE OA
ระบบของ [ชื่อโรงพยาบาล]
ทำงานปกติ ✅
วันที่: 25 พ.ย. 2025
เวลา: 14:30:25
- สำเร็จ → แสดงข้อความ "ส่งสำเร็จ" พร้อม Message ID
- ล้มเหลว → แสดง Error พร้อมวิธีแก้ไข
การทดสอบที่ 2: ทดสอบ Webhook:
- คลิกปุ่ม "ทดสอบ Webhook"
- ระบบส่ง Test Event ไปยัง Webhook URL
-
ตรวจสอบ:
-
Webhook ตอบกลับภายใน 1 วินาที?
- Status Code = 200 OK?
-
Signature ถูกต้อง?
-
แสดงผลลัพธ์พร้อมรายละเอียด
การทดสอบที่ 3: ทดสอบ Rich Menu:
- คลิกปุ่ม "ทดสอบ Rich Menu"
-
ระบบตรวจสอบ:
-
Rich Menu ถูกตั้งค่าหรือยัง?
- รูปภาพโหลดได้หรือไม่?
-
ปุ่มทั้งหมดทำงานหรือไม่?
-
แสดงผล Preview Rich Menu
การทดสอบที่ 4: ทดสอบการลงทะเบียน (End-to-End):
- คลิกปุ่ม "ทดสอบการลงทะเบียน"
- แสดง QR Code หรือลิงก์ Add Friend
- Scan และทำตามขั้นตอนลงทะเบียน
- ตรวจสอบว่าข้อมูลบันทึกถูกต้อง
Health Check แบบอัตโนมัติ:
- ทุก 5 นาที: Ping LINE API
- ทุกชั่วโมง: ทดสอบส่งข้อความจำลอง
- บันทึก Uptime และ Downtime
- Alert เมื่อไม่สามารถเชื่อมต่อ
ผลการทดสอบที่แสดง:
✅ การเชื่อมต่อ LINE API: ปกติ
✅ การส่งข้อความ: สำเร็จ (Response Time: 0.5s)
✅ Webhook: ทำงานปกติ (Last event: 2 นาทีที่แล้ว)
⚠️ Rich Menu: ยังไม่ได้ตั้งค่า
❌ Webhook Signature: ไม่ตรงกัน (กรุณาตรวจสอบ Channel Secret)
UI/UX Requirements:
-
Test Panel:
-
Card แยกแต่ละประเภททดสอบ
- ปุ่ม "ทดสอบ" ขนาดใหญ่ชัดเจน
- แสดง Progress ขณะทดสอบ
-
แสดงผลลัพธ์พร้อมไอคอน (✓/✗/⚠)
-
Test Message Form:
-
Input สำหรับกรอก LINE User ID
- ปุ่ม "ส่ง"
- แสดง Loading ขณะส่ง
-
แสดงผลลัพธ์ทันที
-
Health Status Dashboard:
-
แสดงสถานะภาพรวม (เขียว=ดี, แดง=มีปัญหา)
- Uptime Percentage
- จำนวน Request สำเร็จ/ล้มเหลววันนี้
-
กราฟ Response Time
-
Troubleshooting Guide:
-
แสดงเมื่อทดสอบล้มเหลว
- แนะนำวิธีแก้ไขตาม Error Code
- ลิงก์ไปยังเอกสาร LINE API
- ปุ่ม "ติดต่อ Support"
1.6.2 Feature: HIS Integration Configuration
1. กำหนดค่าการเชื่อมต่อ Database HIS
TOR Reference: 3.1.6, 3.7
คำอธิบาย: ฟีเจอร์สำหรับตั้งค่าการเชื่อมต่อกับ Database ของระบบ HIS (Hospital Information System), RIS (Radiology Information System), หรือ LIS (Laboratory Information System) เพื่อดึงข้อมูลผู้ป่วยและนัดหมาย
การทำงาน:
ขั้นตอนการตั้งค่า:
Step 1: เลือกประเภท Database:
รองรับหลายประเภท:
- SQL Server (Microsoft SQL Server)
- MySQL/MariaDB
- PostgreSQL
- Oracle Database
- Other (ODBC Connection)
Step 2: กรอกข้อมูลการเชื่อมต่อ:
-
Server Address/IP:
-
IP Address หรือ Hostname
-
ตัวอย่าง: 192.168.1.100, his-db.hospital.local
-
Port:
-
SQL Server: 1433 (Default)
- MySQL: 3306
-
PostgreSQL: 5432
-
Database Name:
-
ชื่อ Database ที่เก็บข้อมูลผู้ป่วย
-
Username:
-
User สำหรับ Read-Only (แนะนำ)
-
Password:
-
รหัสผ่าน (เข้ารหัสก่อนเก็บ)
-
Connection String (Advanced):
-
สำหรับ Custom Connection
Step 3: ตั้งค่าเพิ่มเติม:
- Connection Timeout: 30 วินาที (Default)
- Command Timeout: 60 วินาที
- Max Pool Size: 100 Connections
- Min Pool Size: 5 Connections
- Use SSL/TLS: Yes/No
- Trust Server Certificate: Yes/No (สำหรับ SQL Server)
Step 4: ทดสอบการเชื่อมต่อ:
- คลิกปุ่ม "ทดสอบการเชื่อมต่อ"
- ระบบพยายาม Connect
-
แสดงผลลัพธ์:
-
✅ สำเร็จ: แสดง Database Version, Size
- ❌ ล้มเหลว: แสดง Error Message
Step 5: บันทึกการตั้งค่า:
- เข้ารหัสข้อมูลที่สำคัญ (Password)
- บันทึกลง Configuration File
- บันทึก Activity Log
Connection Pool Management:
- ใช้ Connection Pool เพื่อประสิทธิภาพ
- Auto-reconnect เมื่อ Connection หลุด
- Health Check ทุก 5 นาที
- Alert เมื่อ Connection ล้มเหลว
การจัดการความปลอดภัย:
- ใช้ Read-Only Account (แนะนำ)
- IP Whitelisting (ถ้า HIS รองรับ)
- เข้ารหัสข้อมูล Connection String
- Log ทุก Query ที่ส่งไป HIS
- ไม่อนุญาตให้ INSERT/UPDATE/DELETE
UI/UX Requirements:
-
Connection Form:
-
Form แบบ Step-by-Step Wizard
- Dropdown เลือกประเภท Database
- Input Fields พร้อม Validation
- Password Input แบบซ่อน (Show/Hide)
-
ปุ่ม "ทดสอบการเชื่อมต่อ" เด่นชัด
-
Connection Status Panel:
-
แสดงสถานะปัจจุบัน (Connected/Disconnected)
- วันเวลาที่เชื่อมต่อล่าสุด
- Database Version และ Server Info
- จำนวน Active Connections
-
แสดง Response Time
-
Advanced Settings (Collapsible):
-
Timeout Settings
- Pool Settings
- SSL/TLS Settings
-
แสดงเฉพาะเมื่อคลิก "Advanced"
-
Test Results Display:
-
Modal แสดงผลทดสอบ
- แสดง Success/Error Message
- แสดงรายละเอียด (Database Name, Version, Tables)
-
ปุ่ม "ลองอีกครั้ง" เมื่อล้มเหลว
-
Security Warning:
-
แจ้งเตือนเรื่องความปลอดภัย
- แนะนำใช้ Read-Only Account
- เตือนเรื่อง IP Whitelisting
2. Mapping ฟิลด์ข้อมูล HIS
TOR Reference: 3.7.1, 3.7.2
คำอธิบาย: ฟีเจอร์สำหรับจับคู่ฟิลด์ข้อมูลระหว่างระบบและ Database HIS เนื่องจากแต่ละโรงพยาบาลอาจมีโครงสร้าง Database ต่างกัน
การทำงาน:
ข้อมูลที่ต้อง Map (ตาม TOR 3.7.1, 3.7.2):
1. ข้อมูลผู้ป่วย (Patient Data):
- HN → ฟิลด์ใน HIS:
patient_id,hn,hospital_number - ชื่อ → ฟิลด์ใน HIS:
first_name,fname,patient_name - นามสกุล → ฟิลด์ใน HIS:
last_name,lname,surname - อายุ → ฟิลด์ใน HIS:
age,birthdate,dob - เพศ → ฟิลด์ใน HIS:
gender,sex,patient_gender - เลขบัตรประชาชน → ฟิลด์ใน HIS:
id_card,national_id,cid - เบอร์โทร → ฟิลด์ใน HIS:
phone,mobile,tel
2. ข้อมูลนัดหมาย (Appointment Data):
- Appointment ID → ฟิลด์ใน HIS:
appointment_id,appt_id - HN → ฟิลด์ใน HIS:
patient_id,hn - วันที่นัด → ฟิลด์ใน HIS:
appointment_date,appt_date,visit_date - เวลานัด → ฟิลด์ใน HIS:
appointment_time,appt_time - ประเภทนัด → ฟิลด์ใน HIS:
service_type,exam_type,modality - แพทย์ → ฟิลด์ใน HIS:
doctor_id,doctor_name,physician - แผนก → ฟิลด์ใน HIS:
department,clinic,service_location - สถานะ → ฟิลด์ใน HIS:
status,appt_status
ขั้นตอนการ Mapping:
Step 1: Auto-detect Schema:
- ระบบ Query ดึงโครงสร้างตาราง (Tables & Columns)
- แสดงรายการตารางทั้งหมด
-
ผู้ดูแลเลือกตารางที่เกี่ยวข้อง:
-
ตาราง Patient/Person
- ตาราง Appointment/Visit
Step 2: Smart Mapping (AI-assisted):
-
ระบบพยายามจับคู่อัตโนมัติ:
-
เทียบชื่อฟิลด์ที่คล้ายกัน
- เช็ค Data Type ที่ตรงกัน
-
แนะนำการจับคู่ที่เป็นไปได้
-
แสดงผลการจับคู่แนะนำ
Step 3: Manual Mapping:
- ผู้ดูแลตรวจสอบและแก้ไข
- Drag & Drop หรือ Dropdown เลือกฟิลด์
-
ตั้งค่า Transformation (ถ้าจำเป็น):
-
Date Format: dd/mm/yyyy → yyyy-mm-dd
- Gender: M/F → ชาย/หญิง
- Phone: 0812345678 → 081-234-5678
Step 4: Validation & Testing:
- คลิกปุ่ม "ทดสอบการ Mapping"
- ระบบดึงข้อมูลตัวอย่าง (5-10 รายการ)
- แสดงผลลัพธ์:
HIS Data → System Data
----------------------------------
hn: 12345 → HN: 12345 ✓
fname: สมชาย → ชื่อ: สมชาย ✓
lname: ใจดี → นามสกุล: ใจดี ✓
sex: M → เพศ: ชาย ✓
birthdate: 1980 → อายุ: 45 ปี ✓
- แจ้งเตือนถ้ามี Mapping ผิดพลาด
Step 5: บันทึก Mapping Configuration:
- บันทึกเป็น JSON Configuration
- สามารถ Export/Import ได้
- Version Control (เก็บประวัติการแก้ไข)
ตัวอย่าง Mapping Config (JSON):
{
"patient_mapping": {
"hn": "patients.patient_id",
"name": "patients.first_name",
"surname": "patients.last_name",
"gender": {
"field": "patients.sex",
"transform": {"M": "ชาย", "F": "หญิง"}
},
"birthdate": {
"field": "patients.dob",
"format": "yyyy-MM-dd"
}
},
"appointment_mapping": {
"appointment_id": "appointments.appt_id",
"hn": "appointments.patient_id",
"date": "appointments.appt_date",
"time": "appointments.appt_time",
"type": {
"field": "appointments.service_code",
"mapping": {
"ULTRA": "US",
"MAMMO": "MG",
"CT": "CT"
}
}
}
}
UI/UX Requirements:
-
Schema Browser:
-
Tree View แสดงตารางและคอลัมน์
- แสดง Data Type ของแต่ละคอลัมน์
- แสดงตัวอย่างข้อมูล (5 แถวแรก)
-
Search/Filter ตาราง
-
Mapping Interface:
-
2 Panel เปรียบเทียบ (System ↔ HIS)
- Drag & Drop จับคู่ฟิลด์
- หรือ Dropdown เลือกฟิลด์
- แสดงเส้นเชื่อมระหว่างฟิลด์ที่จับคู่แล้ว
-
Badge แสดงสถานะ (✓ Mapped / ⚠ Required / ✗ Missing)
-
Transformation Panel:
-
แสดงเมื่อต้องการแปลงข้อมูล
- Input/Output Preview
-
ตัวอย่างการแปลง (Before/After)
-
Test Result Display:
-
Table แสดงข้อมูลทดสอบ
- เปรียบเทียบ HIS vs System
- Highlight ค่าที่ผิดปกติ
-
ปุ่ม "ดึงข้อมูลใหม่"
-
Import/Export:
-
ปุ่ม "Export Mapping" → JSON File
- ปุ่ม "Import Mapping" → Upload JSON
- Template สำเร็จรูปสำหรับ HIS ยอดนิยม
3. ทดสอบการดึงข้อมูล
TOR Reference: ไม่ระบุใน TOR (แต่จำเป็นสำหรับ Validate Integration)
คำอธิบาย: ฟีเจอร์สำหรับทดสอบว่าสามารถดึงข้อมูลจาก HIS และแปลงตาม Mapping ได้ถูกต้องหรือไม่
การทำงาน:
การทดสอบที่ 1: ดึงข้อมูลผู้ป่วย:
- คลิกปุ่ม "ทดสอบดึงข้อมูลผู้ป่วย"
- กรอก HN ที่ต้องการทดสอบ
- ระบบ Query จาก HIS
-
แสดงผลลัพธ์:
-
ข้อมูลดิบจาก HIS
- ข้อมูลหลังแปลง (Mapped)
- เปรียบเทียบ Side-by-side
การทดสอบที่ 2: ดึงข้อมูลนัดหมาย:
- คลิกปุ่ม "ทดสอบดึงข้อมูลนัดหมาย"
- เลือกช่วงวันที่ (เช่น วันนี้-พรุ่งนี้)
- ระบบ Query นัดหมายจาก HIS
-
แสดงผลลัพธ์:
-
จำนวนนัดที่พบ
- รายการนัดแต่ละรายการ
- สถานะการ Mapping (ถูก/ผิด)
การทดสอบที่ 3: Sync Simulation:
- คลิกปุ่ม "จำลองการ Sync"
- ระบบจำลองกระบวนการ Sync แบบเต็มรูปแบบ
-
แสดงผลลัพธ์:
-
เวลาที่ใช้
- จำนวนรายการที่ดึงได้
- จำนวนที่ Import สำเร็จ/ล้มเหลว
- Error ที่พบ (ถ้ามี)
Performance Testing:
- วัดเวลาในการ Query
- วัดเวลาในการ Transform
- แนะนำ Index ถ้า Query ช้า
UI/UX Requirements:
-
Test Panel:
-
Card แยกแต่ละประเภททดสอบ
- Input สำหรับกรอกพารามิเตอร์ทดสอบ
-
ปุ่ม "ทดสอบ" ใหญ่ชัดเจน
-
Result Display:
-
JSON Viewer แสดงข้อมูลดิบ
- Table แสดงข้อมูลหลังแปลง
- Diff View เปรียบเทียบ Before/After
-
Syntax Highlighting สำหรับ JSON
-
Performance Metrics:
-
แสดง Query Time, Transform Time
- แสดง Records/Second
-
แจ้งเตือนถ้าช้าผิดปกติ
-
Error Handling:
-
แสดง Error Message ชัดเจน
- แนะนำวิธีแก้ไข
- ลิงก์ไปยัง Mapping Config
1.6.3 Feature: System Settings
1. กำหนดค่าทั่วไป (Basic Settings)
TOR Reference: ไม่ระบุใน TOR (แต่จำเป็นสำหรับ Customization)
คำอธิบาย: ฟีเจอร์สำหรับตั้งค่าข้อมูลพื้นฐานของระบบให้เหมาะสมกับแต่ละโรงพยาบาล
การทำงาน:
การตั้งค่าที่สามารถแก้ไขได้:
1. ข้อมูลโรงพยาบาล:
- ชื่อโรงพยาบาล: เช่น "ศูนย์การแพทย์กาญจนาภิเษก"
- ชื่อย่อ: เช่น "ศูนย์การแพทย์ฯ"
- โลโก้: Upload รูปภาพ (PNG/JPG, Max 2MB)
- สี Theme: เลือกสีหลักของระบบ (Color Picker)
- ที่อยู่: ที่อยู่โรงพยาบาล
- เบอร์โทรศัพท์: เบอร์ติดต่อ
- Email: อีเมลติดต่อ
- เว็บไซต์: URL เว็บไซต์
2. การตั้งค่าการแจ้งเตือน:
- เปิด/ปิดระบบแจ้งเตือน: Toggle Switch
- ภาษาข้อความ: ไทย/อังกฤษ
- Time Zone: Asia/Bangkok
- รูปแบบวันที่: dd/mm/yyyy, mm/dd/yyyy
- รูปแบบเวลา: 24h/12h
3. การตั้งค่าความปลอดภัย:
-
Password Policy:
-
ความยาวขั้นต่ำ (8-20 ตัว)
- ต้องมีตัวเลข (Yes/No)
- ต้องมีตัวพิมพ์ใหญ่ (Yes/No)
-
ต้องมีอักขระพิเศษ (Yes/No)
-
Session Timeout: 15, 30, 60 นาที
- Max Login Attempts: 3, 5, 10 ครั้ง
- 2FA (Two-Factor Authentication): เปิด/ปิด (Optional)
4. การตั้งค่าอีเมล (สำหรับ Alert):
- SMTP Server: mail.example.com
- Port: 25, 465, 587
- Username: [email protected]
- Password: รหัสผ่าน
- Use SSL/TLS: Yes/No
- From Email: [email protected]
- From Name: ระบบแจ้งเตือนนัดหมาย
5. การตั้งค่าการทำงาน:
- Scheduler Interval: 5, 15, 30 นาที
- Max Retry: 1, 3, 5 ครั้ง
- Log Level: Debug, Info, Warning, Error
- Log Retention: 7, 30, 90 วัน
การบันทึกและใช้งาน:
- แก้ไขค่าที่ต้องการ
- คลิก "บันทึก"
- ระบบ Validate ข้อมูล
- Reload Configuration
- บันทึก Activity Log
UI/UX Requirements:
-
Tabbed Interface:
-
แท็บแยกตามหมวดหมู่ (โรงพยาบาล/การแจ้งเตือน/ความปลอดภัย)
-
Navigation ชัดเจน
-
Form Layout:
-
Label และ Input ชัดเจน
- Help Text อธิบายแต่ละฟิลด์
-
Validation แบบ Real-time
-
Logo Upload:
-
Drag & Drop Zone
- Preview รูปภาพ
- Crop/Resize Tool
-
แสดงขนาดไฟล์
-
Color Picker:
-
แสดง Color Palette
- Preview Theme ด้วยสีที่เลือก
-
แสดง Hex Code
-
Test Email Button:
-
ทดสอบส่งอีเมลทันที
-
แสดงผลลัพธ์
-
Reset to Default:
-
ปุ่มรีเซ็ตค่าเป็น Default
- Confirm ก่อนรีเซ็ต
2. จัดการ Backup & Restore
TOR Reference: ไม่ระบุใน TOR (แต่จำเป็นสำหรับ Data Security)
คำอธิบาย: ฟีเจอร์สำหรับสำรองข้อมูลและกู้คืนข้อมูลระบบ เพื่อป้องกันการสูญหายของข้อมูล
การทำงาน:
การ Backup ข้อมูล:
Manual Backup (สำรองแบบ Manual):
- คลิกปุ่ม "สำรองข้อมูลทันที"
-
เลือกข้อมูลที่ต้องการสำรอง:
-
✓ Database ทั้งหมด
- ✓ ข้อมูลผู้ใช้
- ✓ ข้อมูลผู้ป่วย
- ✓ ข้อมูลนัดหมาย
- ✓ Logs
-
✓ Configuration Files
-
คลิก "เริ่มสำรองข้อมูล"
-
ระบบสร้างไฟล์ Backup:
-
รูปแบบ: .bak, .sql, .zip
-
ชื่อไฟล์: Backup_20251125_143000.zip
-
Download ไฟล์หรือบันทึกใน Server
Automatic Backup (สำรองอัตโนมัติ):
-
ตั้งค่า Schedule:
-
รายวัน: เลือกเวลา (เช่น 02:00 AM)
- รายสัปดาห์: เลือกวันและเวลา
-
รายเดือน: เลือกวันที่และเวลา
-
เลือกตำแหน่งเก็บ:
-
Local Folder
- Network Drive
-
Cloud Storage (Google Drive, Dropbox)
-
ตั้งค่า Retention:
-
เก็บ Backup ย้อนหลัง X วัน
-
ลบ Backup เก่าอัตโนมัติ
-
Email Notification เมื่อ Backup สำเร็จ/ล้มเหลว
การ Restore ข้อมูล:
Step 1: เลือกไฟล์ Backup:
- คลิกปุ่ม "กู้คืนข้อมูล"
-
เลือกไฟล์ Backup:
-
จากรายการที่มีในระบบ
-
หรือ Upload ไฟล์ใหม่
-
แสดงข้อมูลไฟล์:
-
วันที่สำรอง
- ขนาดไฟล์
- เนื้อหาที่มีในไฟล์
Step 2: Restore Options:
-
เลือกส่วนที่ต้องการกู้คืน:
-
✓ Database
- ✓ Configuration
-
✓ Files
-
เลือกวิธีกู้คืน:
-
Overwrite: เขียนทับข้อมูลปัจจุบัน
- Merge: ผสมข้อมูล
- New Database: สร้าง Database ใหม่
Step 3: ยืนยันและดำเนินการ:
- แสดงคำเตือน: "ข้อมูลปัจจุบันจะถูกแทนที่"
- ต้องพิมพ์ "CONFIRM" เพื่อยืนยัน
- คลิก "เริ่มกู้คืน"
- แสดง Progress
- เสร็จแล้ว → Restart ระบบ
Backup Management:
- รายการ Backup ทั้งหมด
- ขนาดไฟล์แต่ละ Backup
- พื้นที่ดิสก์ที่เหลือ
- ลบ Backup เก่าที่ไม่ต้องการ
- Download Backup ไปเก็บภายนอก
UI/UX Requirements:
-
Backup Dashboard:
-
แสดงสถานะ Backup ล่าสุด
- วันเวลา Backup ล่าสุด
- ขนาด Backup
-
Backup Schedule ถัดไป
-
Backup List:
-
ตารางแสดง Backup ทั้งหมด
- คอลัมน์: วันที่, ขนาด, ประเภท, สถานะ
-
ปุ่ม Download/Delete/Restore
-
Backup Progress:
-
Progress Bar แสดง %
- แสดงรายการที่กำลัง Backup
-
เวลาโดยประมาณที่เหลือ
-
Restore Wizard:
-
Step-by-Step Interface
- คำเตือนชัดเจน
-
Confirmation Dialog
-
Storage Info:
-
แสดงพื้นที่ดิสก์ทั้งหมด
- พื้นที่ที่ใช้ไป
- พื้นที่ที่เหลือ
- แจ้งเตือนเมื่อพื้นที่เหลือน้อย
สรุป Module 1.6: System Configuration
ความสำคัญ: Module นี้เป็นรากฐานสำคัญในการทำให้ระบบสามารถทำงานได้ ครอบคลุมการเชื่อมต่อกับ LINE OA และ HIS ตลอดจนการตั้งค่าต่างๆ ที่จำเป็น ต้องให้ความสำคัญกับความปลอดภัย ความถูกต้อง และความยืดหยุ่นในการตั้งค่า ครอบคลุมข้อกำหนดใน TOR 3.1.6, 3.7
Timeline Summary:
- SA: 16 ชั่วโมง
- UI Design: 29 ชั่วโมง
- Backend Dev: 72 ชั่วโมง
- Frontend Dev: 52 ชั่วโมง
- Testing: 93 ชั่วโมง
- PM: 17.1 ชั่วโมง
- Marketing Officer: 0 ชั่วโมง