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

01. ระบบงานชันสูตร (Laboratory Management System)

📋 ภาพรวมระบบ

ระบบงานชันสูตรเป็นส่วนสำคัญของ HIS ที่จัดการกระบวนการตรวจทางห้องปฏิบัติการตั้งแต่แพทย์สั่งตรวจจนถึงการรายงานผล รองรับการทำงานของบุคลากรหลายแผนก และมีระบบตรวจสอบคุณภาพที่เข้มงวด


🎯 วัตถุประสงค์หลัก

  1. เพิ่มความรวดเร็ว: ลดเวลาตั้งแต่สั่งตรวจจนได้ผล (Turnaround Time)
  2. ความปลอดภัย: ป้องกันข้อผิดพลาด ด้วย Barcode, Delta Check, Critical Alert
  3. ตรวจสอบได้: Track ทุกขั้นตอน พร้อม Audit Trail
  4. คุณภาพสูง: Specimen Quality Control + Result Approval Workflow
  5. รองรับ Outlab: จัดการแล็บนอก (Outsourcing) ได้สะดวก

👥 ผู้ใช้งานหลัก (Stakeholders)

1. แพทย์ (Doctor) 🩺

บทบาท: สั่งตรวจแล็บและดูผลการตรวจ - สั่ง Lab Order ผ่านระบบ OPD/IPD - ดูผลแล็บ Real-time - รับ Critical Alert กรณีผลผิดปกติร้ายแรง

หน้าที่เกี่ยวข้อง: - modules/lab/doctor-order.html - สั่งตรวจแล็บ - modules/opd-exam/ - ดูผลแล็บใน OPD Visit


2. เจ้าหน้าที่เก็บสิ่งส่งตรวจ (Phlebotomist/Nurse) 💉

บทบาท: เจาะเลือด/เก็บตัวอย่างสิ่งส่งตรวจ - เรียกคิว Lab Order - เจาะเลือด/เก็บปัสสาวะ/อื่นๆ - ตรวจสอบคุณภาพสิ่งส่งตรวจ (Specimen QC) - ปฏิเสธสิ่งส่งตรวจที่ไม่ผ่านมาตรฐาน - พิมพ์ Barcode Label

หน้าที่เกี่ยวข้อง: - modules/lab/specimen-collection.html - เก็บสิ่งส่งตรวจ + QC


3. นักเทคนิคการแพทย์ (Medical Technologist) 🔬

บทบาท: ตรวจวิเคราะห์และลงผลแล็บ - รับงานจากคิว (Order Queue) - ตรวจวิเคราะห์ด้วยเครื่องมือ - ลงผลแล็บ (Manual/Interface) - ตรวจสอบความผิดปกติ (Delta Check) - แนบไฟล์ผลจากแล็บนอก - จัดการผลที่ถูกปฏิเสธ (Re-entry)

หน้าที่เกี่ยวข้อง: - modules/lab/order-queue.html - คิวงาน - modules/lab/result-entry.html - ลงผลแล็บ


4. หัวหน้าห้องแล็บ (Lab Supervisor) 👨‍⚕️

บทบาท: ตรวจสอบและอนุมัติผล - Review ผลแล็บก่อนรายงาน - อนุมัติผล (Approve) - ปฏิเสธผล (Reject) กรณีผิดปกติ - ระบุว่าต้องเก็บสิ่งส่งตรวจใหม่หรือไม่ - ติดต่อแพทย์กรณี Critical Result

หน้าที่เกี่ยวข้อง: - modules/lab/result-approval.html - อนุมัติผล


5. เจ้าหน้าที่แผนกต้นสังกัด (Ward Staff) 🏥

บทบาท: ติดตามผล และนำส่งผู้ป่วยเจาะเลือด (กรณี IPD) - ตรวจสอบสถานะ Order - พิมพ์ใบนัด/ใบนำส่ง - รับผลแล็บเพื่อนำเข้าแฟ้ม


🏗️ โครงสร้างระบบ (System Architecture)

┌─────────────────────────────────────────────────────────────────┐
│                     LABORATORY MANAGEMENT SYSTEM                 │
└─────────────────────────────────────────────────────────────────┘
                                  │
        ┌─────────────────────────┼─────────────────────────┐
        │                         │                         │
   ┌────▼─────┐            ┌─────▼──────┐          ┌──────▼──────┐
   │ Frontend │            │  Services  │          │    Data     │
   │  (HTML)  │───────────▶│    (JS)    │─────────▶│ (LocalStorage│
   └──────────┘            └────────────┘          │   + JSON)   │
                                                   └─────────────┘

┌─────────────────────── FRONTEND MODULES ───────────────────────┐
│                                                                 │
│  📄 doctor-order.html           สั่งตรวจแล็บ                    │
│  📄 order-queue.html            คิวงานแล็บ                     │
│  📄 specimen-collection.html    เก็บสิ่งส่งตรวจ                 │
│  📄 result-entry.html           ลงผลแล็บ                       │
│  📄 result-approval.html        อนุมัติผล                      │
│  📄 index.html                  หน้าหลักเมนู Lab              │
│                                                                 │
└─────────────────────────────────────────────────────────────────┘

┌─────────────────────── SERVICE LAYER ─────────────────────────┐
│                                                                │
│  🔧 PatientService              จัดการข้อมูลผู้ป่วย           │
│  🔧 LabOrderService             จัดการ Lab Orders             │
│  🔧 LabResultService            จัดการผลแล็บ                  │
│  🔧 SpecimenService             จัดการสิ่งส่งตรวจ              │
│  🔧 FileAttachmentService       จัดการไฟล์แนบ (Outlab)        │
│                                                                │
└────────────────────────────────────────────────────────────────┘

┌─────────────────────── DATA MODELS ───────────────────────────┐
│                                                                │
│  📦 Patient                     ข้อมูลผู้ป่วย                 │
│  📦 LabOrder                    คำสั่งตรวจแล็บ                 │
│  📦 LabItem                     รายการตรวจ                    │
│  📦 LabResult                   ผลการตรวจ                     │
│  📦 Specimen                    สิ่งส่งตรวจ                    │
│                                                                │
└────────────────────────────────────────────────────────────────┘

┌─────────────────────── MOCK DATA FILES ───────────────────────┐
│                                                                │
│  📊 patients.json               รายชื่อผู้ป่วย                │
│  📊 lab-items.json              รายการตรวจทั้งหมด             │
│  📊 lab-orders-specimen.json    Lab Orders + Specimens        │
│  📊 lab-previous-results.json   ผลเก่าสำหรับ Delta Check     │
│  📊 lab-instruments.json        เครื่องมือตรวจวิเคราะห์        │
│  📊 lab-pricing.json            ราคารายการตรวจ                │
│  📊 lab-panels.json             Lab Panels (กลุ่มรายการ)      │
│  📊 rejection-reasons.json      เหตุผลการปฏิเสธ               │
│                                                                │
└────────────────────────────────────────────────────────────────┘

📊 ขั้นตอนหลักของระบบ (Main Workflow)

graph TD
    A[1. Doctor Order<br/>แพทย์สั่งตรวจ] --> B[2. Order Queue<br/>คิวงาน]
    B --> C[3. Specimen Collection<br/>เก็บสิ่งส่งตรวจ]
    C --> D[4. Result Entry<br/>ลงผลแล็บ]
    D --> E[5. Result Approval<br/>อนุมัติผล]
    E --> F{ผลผ่าน?}
    F -->|✅ Approve| G[6. Report<br/>รายงานผล]
    F -->|❌ Reject| H{ต้องเก็บใหม่?}
    H -->|ไม่ต้อง| D
    H -->|ต้องเก็บ| C

    style A fill:#e3f2fd
    style C fill:#fff3e0
    style D fill:#f3e5f5
    style E fill:#e8f5e9
    style G fill:#c8e6c9

คำอธิบาย: 1. Doctor Order: แพทย์สั่งตรวจผ่านระบบ 2. Order Queue: งานเข้าคิว รอดำเนินการ 3. Specimen Collection: เจาะเลือด/เก็บตัวอย่าง พร้อม QC 4. Result Entry: นักเทคนิคลงผลการตรวจ 5. Result Approval: หัวหน้า Review และอนุมัติ 6. Report: ผลออกรายงาน พร้อมแจ้งแพทย์


🔄 สถานะของ Lab Order (Order Status Flow)

pending
   ↓
confirmed ────────────┐
   ↓                  │
collecting            │ (Cancel)
   ↓                  │
specimen_collected    │
   ↓                  │
sent_to_lis           │
   ↓                  │
in_progress           │
   ↓                  ↓
partial_result      cancelled
   ↓
pending_approval
   ↓
   ├─ Approve All → approved (completed)
   └─ Approve Some → partial_approved
        ↓
      approved (completed)

รายละเอียดสถานะ:

Status ความหมาย หน้าที่เกี่ยวข้อง
pending รอยืนยัน Order doctor-order.html
confirmed ยืนยันแล้ว รอเก็บสิ่งส่งตรวจ specimen-collection.html
collecting กำลังเก็บสิ่งส่งตรวจ specimen-collection.html
specimen_collected เก็บเสร็จ รอส่ง LIS order-queue.html
sent_to_lis ส่ง LIS แล้ว รอลงผล result-entry.html
in_progress กำลังตรวจวิเคราะห์ result-entry.html
partial_result ลงผลบางส่วน result-entry.html
pending_approval ลงผลครบแล้ว รออนุมัติ result-approval.html
partial_approved อนุมัติบางรายการ 🔄 result-approval.html
approved อนุมัติครบทุกรายการ -
completed เสร็จสมบูรณ์ -
cancelled ยกเลิก -

📌 สถานะพิเศษ: Partial Approval

partial_approved = อนุมัติบางรายการแล้ว ยังมีรายการที่รออนุมัติหรือรอลงผล

เงื่อนไขที่จะเป็น partial_approved:

  1. อนุมัติบางส่วน + ยังมีผลรออนุมัติ
  2. มีผลที่อนุมัติแล้ว (result status = final) ≥ 1 รายการ
  3. และ ยังมีผลรออนุมัติ (result status = preliminary) ≥ 1 รายการ

  4. อนุมัติบางส่วน + ยังรอลงผลบางรายการ

  5. มีผลที่อนุมัติแล้ว ≥ 1 รายการ
  6. และ ยังมีผลที่ยังไม่ลง (result status = pending) ≥ 1 รายการ
  7. ตัวอย่าง: อนุมัติ CBC แล้ว แต่ยังรอผล HIV จากแล็บนอก

ตัวอย่างสถานการณ์:

Order LAB202500001 (5 รายการ):
├─ CBC ................ ✅ อนุมัติแล้ว (final)
├─ Glucose ............ ✅ อนุมัติแล้ว (final)
├─ Creatinine ......... ⏳ รออนุมัติ (preliminary)
├─ HIV ................ ⏳ ยังไม่ลงผล (pending) - Outlab
└─ HBsAg .............. ⏳ ยังไม่ลงผล (pending) - Outlab

Order Status = partial_approved (อนุมัติ 2/5 รายการ)


🔄 สถานะของผลแล็บ (Result Status Flow)

pending (ยังไม่ลงผล)
   ↓
preliminary (ลงผลแล้ว) ────┐
   ↓                        │
   ├─ Approve All           │ Reject 
   │     ↓                  │    ↓
   │   final (all)          │ rejected ─────┐
   │     ↓                  │    ↓           │
   │   Order: approved      │ requireNew?   │
   │                        │    ├─ No      │ Yes
   ├─ Approve Some          │    │  ↓       │  ↓
   │     ↓                  │    │ reenter  │ recollect
   │   final (partial)      │    │  ↓       │  ↓
   │     ↓                  │    └─ preliminary
   │   Order: partial_approved   └─ specimen_collected
   └────────────────────────────────────────┘

รายละเอียดสถานะผล:

Status ความหมาย หน้าที่เกี่ยวข้อง Actions
pending ยังไม่ลงผล (รอจากแล็บนอก) result-entry.html รอ Upload ไฟล์
preliminary ลงผลแล้ว รอตรวจสอบ/อนุมัติ result-entry.html → result-approval.html Approve/Reject
final ผลสุดท้าย อนุมัติแล้ว ✅ result-approval.html พิมพ์รายงาน
rejected ถูกปฏิเสธ ต้องดำเนินการ ❌ result-entry / specimen-collection Re-enter / Recollect
corrected แก้ไขผลที่อนุมัติแล้ว result-approval.html Audit Trail

📌 Approval Modes

ระบบรองรับการอนุมัติ 2 แบบ:

1. Approve All (อนุมัติทั้งหมด)

  • อนุมัติทุกรายการใน Order พร้อมกัน
  • ทุกผล status → final
  • Order status → approved

2. Approve Selected (อนุมัติบางรายการ) 🔄

  • เลือกอนุมัติเฉพาะรายการที่ต้องการ
  • ผลที่เลือก status → final
  • ผลที่ไม่เลือก status → ยังคง preliminary
  • Order status → partial_approved
  • Use Case: อนุมัติผลที่แน่นอนก่อน เก็บผลที่สงสัยไว้ตรวจสอบเพิ่ม

🔄 สถานะของสิ่งส่งตรวจ (Specimen Status Flow)

collected ────┐
   ↓          │
sent_to_lab   │ Reject
   ↓          │   ↓
testing       │ rejected ──┐
   ↓          │            │
completed     │            │ Recollect
              └────────────┘     ↓
                              collected (new)

รายละเอียดสถานะ:

Status ความหมาย หน้าที่เกี่ยวข้อง
collected เก็บสำเร็จ specimen-collection.html
sent_to_lab ส่งห้องแล็บ -
testing กำลังตรวจ result-entry.html
completed ตรวจเสร็จ result-approval.html
rejected ปฏิเสธ ต้องเก็บใหม่ specimen-collection.html

📁 โครงสร้างไฟล์ (File Structure)

modules/lab/
├── index.html                   # หน้าหลัก Lab Menu
├── doctor-order.html            # สั่งตรวจแล็บ
├── order-queue.html             # คิวงานแล็บ
├── specimen-collection.html     # เก็บสิ่งส่งตรวจ
├── result-entry.html            # ลงผลแล็บ
├── result-approval.html         # อนุมัติผล
└── test-service.html            # ทดสอบ Services

assets/js/
├── models/
│   ├── Patient.js
│   ├── LabOrder.js
│   ├── LabItem.js
│   ├── LabResult.js
│   └── Specimen.js
└── services/
    ├── PatientService.js
    ├── LabOrderService.js
    ├── LabResultService.js
    ├── SpecimenService.js
    └── FileAttachmentService.js

data/
├── patients.json
├── lab-items.json
├── lab-orders-specimen.json
├── lab-previous-results.json
├── lab-instruments.json
├── lab-pricing.json
├── lab-panels.json
└── rejection-reasons.json

🎨 Design Principles

1. User-Centric Design

  • แต่ละหน้าออกแบบเฉพาะบทบาท (Role-based UI)
  • ลดขั้นตอนที่ไม่จำเป็น (Minimal clicks)
  • ข้อมูลสำคัญแสดงเด่นชัด (Visual hierarchy)

2. Safety First

  • Confirmation dialogs สำหรับการกระทำสำคัญ
  • Color-coded status (สีเขียว=ปกติ, เหลือง=รอ, แดง=ปัญหา)
  • Alert modals สำหรับผลผิดปกติ (Critical, Delta Check)

3. Traceability

  • บันทึกว่าใครทำอะไรเมื่อไหร่ (Audit Trail)
  • แสดงประวัติการปฏิเสธ/แก้ไข
  • Track specimen versions (original + recollections)

4. Performance

  • LocalStorage สำหรับ state management
  • JSON files สำหรับ mock data
  • Lazy loading รายการตรวจ (ไม่โหลดทั้งหมดทันที)

📱 Responsive Design

ระบบรองรับการใช้งานบนหน้าจอขนาดต่างๆ: - Desktop (1920x1080): Full feature, Multi-column layout - Tablet (768px+): ปรับ Grid เป็น 2 คอลัมน์ - Mobile (320px+): Stack layout, Touch-optimized buttons


🔒 Data Privacy & Security

  1. Mock Data Only: ข้อมูลทั้งหมดเป็น Mock ไม่มีข้อมูลผู้ป่วยจริง
  2. LocalStorage: ข้อมูลเก็บใน Browser ไม่ส่งไปเซิร์ฟเวอร์
  3. No Real API: ไม่มีการเชื่อมต่อ Backend จริง
  4. User Simulation: ใช้ Mock User Role (เลือกเองในระบบ)

📚 เอกสารเพิ่มเติม

  1. 02-MAIN-WORKFLOW.md - Flow หลักแบบละเอียด
  2. 03-REJECTION-WORKFLOW.md - การปฏิเสธผล/สิ่งส่งตรวจ
  3. 04-PAGES-FEATURES.md - Features แต่ละหน้า
  4. 05-DATA-STATUS-FLOW.md - Data Models & Status

📞 ติดต่อทีมพัฒนา

หากมีคำถามหรือต้องการข้อมูลเพิ่มเติม: - GitHub Issues: สร้าง issue ใน repository - Documentation: อ่านเอกสารเพิ่มเติมในโฟลเดอร์ docs/LAB/ - Data README: ดูคำอธิบาย Mock Data ใน data/README_*.md


Last Updated: December 26, 2025
Version: 1.0.0
Target Audience: UX/UI Designer, Product Owner, QA Team