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

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:

  1. โรงพยาบาลสร้าง LINE Official Account
  2. เข้า LINE Developers Console (https://developers.line.biz)
  3. สร้าง Messaging API Channel
  4. คัดลอก Channel Access Token (Long-lived)
  5. คัดลอก Channel Secret

Step 2: ตั้งค่าใน Back Office:

  1. ผู้ดูแลระบบเข้าสู่หน้า "ตั้งค่าระบบ" → "LINE OA"
  2. กรอกข้อมูล:

  3. Channel Access Token: Paste Token ที่คัดลอกมา

  4. Channel Secret: Paste Secret ที่คัดลอกมา
  5. Channel ID: รหัส Channel (ถ้ามี)

  6. เลือก Environment: Production/Development

  7. คลิก "บันทึก"

Step 3: Encryption & Storage:

  1. ระบบเข้ารหัส Token ด้วย AES-256
  2. บันทึกลง Database ที่ปลอดภัย
  3. ไม่แสดง 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 ในระบบ:

  1. ระบบสร้าง Webhook Endpoint:

https://yourdomain.com/api/line/webhook
2. URL ต้อง:

  • ใช้ HTTPS (SSL Certificate)
  • เข้าถึงได้จาก Internet
  • ตอบสนองภายใน 1 วินาที

Step 2: ตั้งค่าใน LINE Developers Console:

  1. เข้า Channel Settings
  2. ไปที่ Messaging API Settings
  3. กรอก Webhook URL: https://yourdomain.com/api/line/webhook
  4. เปิด "Use webhook": ON
  5. คลิก "Verify" เพื่อทดสอบ
  6. ถ้าสำเร็จ → แสดง ✓ 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:

  1. LINE Server ส่ง POST Request มา
  2. ระบบตรวจสอบ Signature (ความปลอดภัย)
  3. Parse JSON Body
  4. แยกประเภท Event
  5. ประมวลผลตาม Business Logic
  6. ตอบกลับด้วย 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 ในระบบ:

  1. เข้าสู่หน้า "ตั้งค่า LINE OA"
  2. แสดง Webhook URL ที่ระบบสร้างให้
  3. ปุ่ม "คัดลอก URL"
  4. สถานะการเชื่อมต่อ (Last received event)
  5. 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):

  1. คลิกปุ่ม "ทดสอบส่งข้อความ"
  2. กรอก LINE User ID ที่ต้องการทดสอบ (ของตัวเอง)
  3. ระบบส่งข้อความทดสอบ:

🧪 ทดสอบการเชื่อมต่อ LINE OA

ระบบของ [ชื่อโรงพยาบาล]
ทำงานปกติ ✅

วันที่: 25 พ.ย. 2025
เวลา: 14:30:25
4. แสดงผลลัพธ์:

  • สำเร็จ → แสดงข้อความ "ส่งสำเร็จ" พร้อม Message ID
  • ล้มเหลว → แสดง Error พร้อมวิธีแก้ไข

การทดสอบที่ 2: ทดสอบ Webhook:

  1. คลิกปุ่ม "ทดสอบ Webhook"
  2. ระบบส่ง Test Event ไปยัง Webhook URL
  3. ตรวจสอบ:

  4. Webhook ตอบกลับภายใน 1 วินาที?

  5. Status Code = 200 OK?
  6. Signature ถูกต้อง?

  7. แสดงผลลัพธ์พร้อมรายละเอียด

การทดสอบที่ 3: ทดสอบ Rich Menu:

  1. คลิกปุ่ม "ทดสอบ Rich Menu"
  2. ระบบตรวจสอบ:

  3. Rich Menu ถูกตั้งค่าหรือยัง?

  4. รูปภาพโหลดได้หรือไม่?
  5. ปุ่มทั้งหมดทำงานหรือไม่?

  6. แสดงผล Preview Rich Menu

การทดสอบที่ 4: ทดสอบการลงทะเบียน (End-to-End):

  1. คลิกปุ่ม "ทดสอบการลงทะเบียน"
  2. แสดง QR Code หรือลิงก์ Add Friend
  3. Scan และทำตามขั้นตอนลงทะเบียน
  4. ตรวจสอบว่าข้อมูลบันทึกถูกต้อง

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: กรอกข้อมูลการเชื่อมต่อ:

  1. Server Address/IP:

  2. IP Address หรือ Hostname

  3. ตัวอย่าง: 192.168.1.100, his-db.hospital.local

  4. Port:

  5. SQL Server: 1433 (Default)

  6. MySQL: 3306
  7. PostgreSQL: 5432

  8. Database Name:

  9. ชื่อ Database ที่เก็บข้อมูลผู้ป่วย

  10. Username:

  11. User สำหรับ Read-Only (แนะนำ)

  12. Password:

  13. รหัสผ่าน (เข้ารหัสก่อนเก็บ)

  14. Connection String (Advanced):

  15. สำหรับ 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: ทดสอบการเชื่อมต่อ:

  1. คลิกปุ่ม "ทดสอบการเชื่อมต่อ"
  2. ระบบพยายาม Connect
  3. แสดงผลลัพธ์:

  4. ✅ สำเร็จ: แสดง Database Version, Size

  5. ❌ ล้มเหลว: แสดง Error Message

Step 5: บันทึกการตั้งค่า:

  1. เข้ารหัสข้อมูลที่สำคัญ (Password)
  2. บันทึกลง Configuration File
  3. บันทึก 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:

  1. ระบบ Query ดึงโครงสร้างตาราง (Tables & Columns)
  2. แสดงรายการตารางทั้งหมด
  3. ผู้ดูแลเลือกตารางที่เกี่ยวข้อง:

  4. ตาราง Patient/Person

  5. ตาราง Appointment/Visit

Step 2: Smart Mapping (AI-assisted):

  1. ระบบพยายามจับคู่อัตโนมัติ:

  2. เทียบชื่อฟิลด์ที่คล้ายกัน

  3. เช็ค Data Type ที่ตรงกัน
  4. แนะนำการจับคู่ที่เป็นไปได้

  5. แสดงผลการจับคู่แนะนำ

Step 3: Manual Mapping:

  1. ผู้ดูแลตรวจสอบและแก้ไข
  2. Drag & Drop หรือ Dropdown เลือกฟิลด์
  3. ตั้งค่า Transformation (ถ้าจำเป็น):

  4. Date Format: dd/mm/yyyy → yyyy-mm-dd

  5. Gender: M/F → ชาย/หญิง
  6. Phone: 0812345678 → 081-234-5678

Step 4: Validation & Testing:

  1. คลิกปุ่ม "ทดสอบการ Mapping"
  2. ระบบดึงข้อมูลตัวอย่าง (5-10 รายการ)
  3. แสดงผลลัพธ์:
HIS Data          →  System Data
----------------------------------
hn: 12345         →  HN: 12345 ✓
fname: สมชาย      →  ชื่อ: สมชาย ✓
lname: ใจดี       →  นามสกุล: ใจดี ✓
sex: M            →  เพศ: ชาย ✓
birthdate: 1980   →  อายุ: 45 ปี ✓
  1. แจ้งเตือนถ้ามี Mapping ผิดพลาด

Step 5: บันทึก Mapping Configuration:

  1. บันทึกเป็น JSON Configuration
  2. สามารถ Export/Import ได้
  3. 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: ดึงข้อมูลผู้ป่วย:

  1. คลิกปุ่ม "ทดสอบดึงข้อมูลผู้ป่วย"
  2. กรอก HN ที่ต้องการทดสอบ
  3. ระบบ Query จาก HIS
  4. แสดงผลลัพธ์:

  5. ข้อมูลดิบจาก HIS

  6. ข้อมูลหลังแปลง (Mapped)
  7. เปรียบเทียบ Side-by-side

การทดสอบที่ 2: ดึงข้อมูลนัดหมาย:

  1. คลิกปุ่ม "ทดสอบดึงข้อมูลนัดหมาย"
  2. เลือกช่วงวันที่ (เช่น วันนี้-พรุ่งนี้)
  3. ระบบ Query นัดหมายจาก HIS
  4. แสดงผลลัพธ์:

  5. จำนวนนัดที่พบ

  6. รายการนัดแต่ละรายการ
  7. สถานะการ Mapping (ถูก/ผิด)

การทดสอบที่ 3: Sync Simulation:

  1. คลิกปุ่ม "จำลองการ Sync"
  2. ระบบจำลองกระบวนการ Sync แบบเต็มรูปแบบ
  3. แสดงผลลัพธ์:

  4. เวลาที่ใช้

  5. จำนวนรายการที่ดึงได้
  6. จำนวนที่ Import สำเร็จ/ล้มเหลว
  7. 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 วัน

การบันทึกและใช้งาน:

  1. แก้ไขค่าที่ต้องการ
  2. คลิก "บันทึก"
  3. ระบบ Validate ข้อมูล
  4. Reload Configuration
  5. บันทึก 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):

  1. คลิกปุ่ม "สำรองข้อมูลทันที"
  2. เลือกข้อมูลที่ต้องการสำรอง:

  3. ✓ Database ทั้งหมด

  4. ✓ ข้อมูลผู้ใช้
  5. ✓ ข้อมูลผู้ป่วย
  6. ✓ ข้อมูลนัดหมาย
  7. ✓ Logs
  8. ✓ Configuration Files

  9. คลิก "เริ่มสำรองข้อมูล"

  10. ระบบสร้างไฟล์ Backup:

  11. รูปแบบ: .bak, .sql, .zip

  12. ชื่อไฟล์: Backup_20251125_143000.zip

  13. Download ไฟล์หรือบันทึกใน Server

Automatic Backup (สำรองอัตโนมัติ):

  1. ตั้งค่า Schedule:

  2. รายวัน: เลือกเวลา (เช่น 02:00 AM)

  3. รายสัปดาห์: เลือกวันและเวลา
  4. รายเดือน: เลือกวันที่และเวลา

  5. เลือกตำแหน่งเก็บ:

  6. Local Folder

  7. Network Drive
  8. Cloud Storage (Google Drive, Dropbox)

  9. ตั้งค่า Retention:

  10. เก็บ Backup ย้อนหลัง X วัน

  11. ลบ Backup เก่าอัตโนมัติ

  12. Email Notification เมื่อ Backup สำเร็จ/ล้มเหลว

การ Restore ข้อมูล:

Step 1: เลือกไฟล์ Backup:

  1. คลิกปุ่ม "กู้คืนข้อมูล"
  2. เลือกไฟล์ Backup:

  3. จากรายการที่มีในระบบ

  4. หรือ Upload ไฟล์ใหม่

  5. แสดงข้อมูลไฟล์:

  6. วันที่สำรอง

  7. ขนาดไฟล์
  8. เนื้อหาที่มีในไฟล์

Step 2: Restore Options:

  1. เลือกส่วนที่ต้องการกู้คืน:

  2. ✓ Database

  3. ✓ Configuration
  4. ✓ Files

  5. เลือกวิธีกู้คืน:

  6. Overwrite: เขียนทับข้อมูลปัจจุบัน

  7. Merge: ผสมข้อมูล
  8. New Database: สร้าง Database ใหม่

Step 3: ยืนยันและดำเนินการ:

  1. แสดงคำเตือน: "ข้อมูลปัจจุบันจะถูกแทนที่"
  2. ต้องพิมพ์ "CONFIRM" เพื่อยืนยัน
  3. คลิก "เริ่มกู้คืน"
  4. แสดง Progress
  5. เสร็จแล้ว → 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 ชั่วโมง