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

Workflow การตรวจสอบปฏิกิริยาระหว่างยา (Drug Interaction Workflow)

📋 สารบัญ


ภาพรวม

ไฟล์: modules/pharmacy/drug-interaction.html (1066 lines)

ระบบตรวจสอบปฏิกิริยาระหว่างยา (Drug Interaction) เป็น Safety Feature สำคัญที่ช่วยป้องกันอันตรายจากการใช้ยาร่วมกันที่ไม่เหมาะสม โดยระบบจะตรวจสอบอัตโนมัติเมื่อมีการสั่งยาและแจ้งเตือนถ้าพบปัญหา

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

  • ✅ ตรวจสอบปฏิกิริยายาอัตโนมัติเมื่อสั่งยา
  • ✅ แสดงคำเตือนตามระดับความรุนแรง
  • ✅ แนะนำการจัดการที่เหมาะสม
  • ✅ บันทึก Override พร้อมเหตุผล
  • ✅ ค้นหาและดูรายการปฏิกิริยายาทั้งหมด

ระดับความรุนแรง

1. Major (รุนแรง) 🔴

คำจำกัดความ: ปฏิกิริยารุนแรงที่อาจเป็นอันตรายถึงชีวิต หรือทำให้เกิดผลข้างเคียงร้ายแรง

แนวทางจัดการ: - ❌ ห้ามใช้ร่วมกัน (Contraindicated) - หากจำเป็นต้องใช้ → ต้องได้รับการอนุมัติจากแพทย์เฉพาะทาง - บันทึกเหตุผลอย่างชัดเจน

ตัวอย่าง:

Warfarin + Aspirin
→ เพิ่มความเสี่ยงเลือดออกอย่างมาก

Methotrexate + NSAIDs  
→ เพิ่มความเป็นพิษต่อเม็ดเลือด

Simvastatin + Clarithromycin
→ เพิ่มความเสี่ยง Rhabdomyolysis

UI Display:

<div class="alert alert-danger">
    <i class="bi bi-exclamation-triangle-fill"></i>
    <strong>Drug Interaction: MAJOR</strong>
    <p><strong>Warfarin ⚠️ Aspirin</strong></p>
    <p>เพิ่มความเสี่ยงเลือดออกอย่างมาก อาจเป็นอันตรายถึงชีวิต</p>
    <hr>
    <p><strong>การจัดการ:</strong></p>
    <ul>
        <li>หลีกเลี่ยงการใช้ร่วมกัน</li>
        <li>พิจารณาเปลี่ยนเป็น Clopidogrel แทน Aspirin</li>
        <li>หรือตรวจ INR บ่อยขึ้น (ทุก 3-5 วัน)</li>
    </ul>
    <button class="btn btn-warning btn-sm">แจ้งแพทย์</button>
    <button class="btn btn-danger btn-sm">Override</button>
</div>


2. Moderate (ปานกลาง) 🟡

คำจำกัดความ: ปฏิกิริยาที่อาจทำให้เกิดผลข้างเคียงหรือลดประสิทธิภาพของยา

แนวทางจัดการ: - ⚠️ ระวังใช้ (Use with caution) - ปรับขนาดยา - เพิ่มการตรวจติดตาม (Monitoring) - ห่างเวลาการใช้ยา

ตัวอย่าง:

Levothyroxine + Calcium carbonate
→ Calcium ลดการดูดซึม Levothyroxine

Ciprofloxacin + Antacids
→ Antacid ลดการดูดซึม Ciprofloxacin

ACE inhibitor + Potassium supplements
→ เพิ่มความเสี่ยง Hyperkalemia

UI Display:

<div class="alert alert-warning">
    <i class="bi bi-exclamation-circle"></i>
    <strong>Drug Interaction: MODERATE</strong>
    <p><strong>Levothyroxine ⚠️ Calcium carbonate</strong></p>
    <p>Calcium ลดการดูดซึม Levothyroxine ทำให้ประสิทธิภาพลดลง</p>
    <hr>
    <p><strong>การจัดการ:</strong></p>
    <ul>
        <li>ให้ห่างกันอย่างน้อย 4 ชั่วโมง</li>
        <li>รับประทาน Levothyroxine ตอนเช้าก่อนอาหาร</li>
        <li>รับประทาน Calcium ตอนกลางวันหรือเย็น</li>
    </ul>
    <button class="btn btn-info btn-sm">รับทราบ</button>
</div>


3. Minor (เล็กน้อย) 🟢

คำจำกัดความ: ปฏิกิริยาเล็กน้อยที่ไม่น่าจะเกิดผลกระทบร้ายแรง

แนวทางจัดการ: - ✓ ใช้ได้ (Can use together) - ให้ความรู้กับผู้ป่วย - สังเกตอาการ

ตัวอย่าง:

Ibuprofen + Coffee
→ อาจเพิ่มอาการระคายเคืองกระเพาะ

Antihistamine + Alcohol
→ เพิ่มอาการง่วงซึม

UI Display:

<div class="alert alert-info">
    <i class="bi bi-info-circle"></i>
    <strong>Drug Interaction: MINOR</strong>
    <p><strong>Chlorpheniramine ⚠️ Alcohol</strong></p>
    <p>อาจเพิ่มอาการง่วงซึม</p>
    <p><strong>คำแนะนำ:</strong> หลีกเลี่ยงการดื่มแอลกอฮอล์ขณะรับประทานยา</p>
    <button class="btn btn-success btn-sm">รับทราบ</button>
</div>


กลไกการตรวจสอบ

1. Real-time Check (เมื่อสั่งยา)

graph LR
    A[แพทย์เพิ่มยาในใบสั่ง] --> B[Trigger checkInteraction]
    B --> C{มียาอื่นในใบสั่งหรือไม่?}
    C -->|No| D[ไม่ต้องตรวจสอบ]
    C -->|Yes| E[เรียก MedicationService.checkDrugInteractions]
    E --> F[เปรียบเทียบกับ drug-interactions.json]
    F --> G{พบปฏิกิริยา?}
    G -->|No| H[ผ่านการตรวจสอบ]
    G -->|Yes| I[แสดง Alert ตามระดับ]
    I --> J{Major?}
    J -->|Yes| K[Block การสั่งยา]
    J -->|No| L[เตือนแต่ให้สั่งได้]

2. Code Implementation

// ใน OPD/IPD Dispensing
async function onMedicationAdded(medication) {
    const currentMedications = getMedicationsInOrder();
    currentMedications.push(medication);

    // ตรวจสอบ Drug Interactions
    const interactions = await medicationService.checkDrugInteractions(
        currentMedications
    );

    if (interactions.length > 0) {
        displayInteractionAlerts(interactions);

        // ถ้ามี Major interaction → แสดง Confirmation
        const hasMajor = interactions.some(i => i.severity === 'major');
        if (hasMajor) {
            const confirmed = await confirmMajorInteraction(interactions);
            if (!confirmed) {
                removeMedication(medication);
                return;
            }
        }
    }

    addMedicationToList(medication);
}

3. Service Method

// MedicationService.js
checkDrugInteractions(medications) {
    const interactions = [];

    // เปรียบเทียบยาทุกคู่
    for (let i = 0; i < medications.length; i++) {
        for (let j = i + 1; j < medications.length; j++) {
            const drug1 = medications[i];
            const drug2 = medications[j];

            // ค้นหาใน drug-interactions.json
            const interaction = this.findInteraction(
                drug1.drugCode, 
                drug2.drugCode
            );

            if (interaction) {
                interactions.push({
                    drug1: {
                        code: drug1.drugCode,
                        name: drug1.tradeName
                    },
                    drug2: {
                        code: drug2.drugCode,
                        name: drug2.tradeName
                    },
                    severity: interaction.severity,
                    description: interaction.description,
                    mechanism: interaction.mechanism,
                    management: interaction.management,
                    references: interaction.references
                });
            }
        }
    }

    return interactions;
}

การจัดการเมื่อพบปฏิกิริยา

Workflow การจัดการ

graph TB
    A[ระบบตรวจพบ Drug Interaction] --> B{ระดับความรุนแรง?}

    B -->|Major| C[แสดง Alert แดง + Block]
    B -->|Moderate| D[แสดง Alert เหลือง + Warning]
    B -->|Minor| E[แสดง Alert เขียว + Info]

    C --> F{แพทย์/เภสัชกรทำอะไร?}

    F -->|ทางเลือก 1| G[เปลี่ยนยา]
    G --> H[เลือกยาทดแทน]
    H --> I[สั่งยาใหม่]

    F -->|ทางเลือก 2| J[ปรับขนาดยา]
    J --> K[ลดขนาดยา/เพิ่มการตรวจติดตาม]

    F -->|ทางเลือก 3| L[Override]
    L --> M[กรอกเหตุผล]
    M --> N[บันทึกการ Override]
    N --> O[ต้องมีลายเซ็นแพทย์]

    D --> P[แสดงคำแนะนำ]
    P --> Q[แพทย์ตัดสินใจ]
    Q --> R[ดำเนินการตามคำแนะนำ]

    E --> S[ให้ความรู้ผู้ป่วย]
    S --> T[บันทึกคำแนะนำ]

UI Components

1. Drug Interaction List Page

<div class="container">
    <h4>รายการ Drug Interactions</h4>

    <!-- Search & Filter -->
    <div class="row mb-3">
        <div class="col-md-6">
            <input type="text" class="form-control" 
                   placeholder="ค้นหายา (Trade name หรือ Generic)">
        </div>
        <div class="col-md-3">
            <select class="form-select" id="filterSeverity">
                <option value="all">ทุกระดับ</option>
                <option value="major">Major เท่านั้น</option>
                <option value="moderate">Moderate เท่านั้น</option>
                <option value="minor">Minor เท่านั้น</option>
            </select>
        </div>
        <div class="col-md-3">
            <button class="btn btn-primary w-100">
                <i class="bi bi-search"></i> ค้นหา
            </button>
        </div>
    </div>

    <!-- Interaction Cards -->
    <div id="interactionList">
        <!-- Cards populated here -->
    </div>
</div>

2. Interaction Card

<div class="interaction-card major">
    <div class="d-flex justify-content-between align-items-start mb-3">
        <div class="drug-pair">
            <div class="drug-name">Warfarin</div>
            <div class="text-center px-3">
                <i class="bi bi-arrow-left-right"></i>
            </div>
            <div class="drug-name">Aspirin</div>
        </div>
        <span class="severity-badge severity-major">MAJOR</span>
    </div>

    <div class="mb-2">
        <strong>ผลกระทบ:</strong>
        <p>เพิ่มความเสี่ยงเลือดออกอย่างมาก อาจเกิดเลือดออกในทางเดินอาหาร 
           เลือดออกในสมอง หรือจุดอื่นๆ</p>
    </div>

    <div class="mb-2">
        <strong>กลไก:</strong>
        <p>Warfarin และ Aspirin ต่างก็ยับยั้งการแข็งตัวของเลือด 
           เมื่อใช้ร่วมกันจะเพิ่มฤทธิ์กัน</p>
    </div>

    <div class="mb-3">
        <strong>การจัดการ:</strong>
        <ul>
            <li>หลีกเลี่ยงการใช้ร่วมกัน</li>
            <li>พิจารณาเปลี่ยนเป็น Clopidogrel แทน Aspirin</li>
            <li>หากจำเป็นต้องใช้ร่วม → ตรวจ INR ทุก 3-5 วัน</li>
        </ul>
    </div>

    <div class="text-muted small">
        <strong>อ้างอิง:</strong> Micromedex, UpToDate
    </div>
</div>

3. Override Confirmation Modal

<div class="modal" id="overrideModal">
    <div class="modal-dialog">
        <div class="modal-content">
            <div class="modal-header bg-danger text-white">
                <h5>⚠️ Override Drug Interaction (Major)</h5>
            </div>
            <div class="modal-body">
                <div class="alert alert-danger">
                    <strong>Warfarin + Aspirin</strong>
                    <p>เพิ่มความเสี่ยงเลือดออกอย่างรุนแรง</p>
                </div>

                <div class="mb-3">
                    <label class="form-label">
                        <strong>เหตุผลในการ Override *</strong>
                    </label>
                    <select class="form-select" required>
                        <option value="">-- เลือกเหตุผล --</option>
                        <option value="benefit_outweigh">ประโยชน์มากกว่าความเสี่ยง</option>
                        <option value="close_monitoring">มีการติดตามใกล้ชิด</option>
                        <option value="short_duration">ใช้ระยะสั้นเท่านั้น</option>
                        <option value="no_alternative">ไม่มียาทดแทน</option>
                        <option value="other">อื่นๆ</option>
                    </select>
                </div>

                <div class="mb-3">
                    <label class="form-label">
                        <strong>รายละเอียดเพิ่มเติม</strong>
                    </label>
                    <textarea class="form-control" rows="3" required
                              placeholder="ระบุรายละเอียดและแผนการติดตาม..."></textarea>
                </div>

                <div class="alert alert-warning">
                    <i class="bi bi-exclamation-triangle"></i>
                    การ Override จะถูกบันทึกและต้องได้รับการอนุมัติจากแพทย์
                </div>
            </div>
            <div class="modal-footer">
                <button class="btn btn-secondary" data-bs-dismiss="modal">
                    ยกเลิก
                </button>
                <button class="btn btn-danger" onclick="confirmOverride()">
                    ยืนยัน Override
                </button>
            </div>
        </div>
    </div>
</div>

Use Cases

Use Case 1: แพทย์สั่งยาที่มี Major Interaction

Scenario: แพทย์กำลังสั่งยาให้ผู้ป่วยที่กิน Warfarin อยู่แล้ว และต้องการเพิ่ม Aspirin

  1. แพทย์เปิดใบสั่งยา → เห็นว่าผู้ป่วยกิน Warfarin อยู่
  2. เพิ่มยา "Aspirin 100mg"
  3. ระบบ Alert ทันที: 🔴 Major Interaction!
    Warfarin + Aspirin
    เพิ่มความเสี่ยงเลือดออกอย่างมาก
    ❌ ไม่แนะนำให้ใช้ร่วมกัน
    
  4. แพทย์มี 3 ทางเลือก:
  5. A) เปลี่ยนยา → เลือก Clopidogrel แทน Aspirin
  6. B) ยกเลิก → ไม่สั่ง Aspirin
  7. C) Override → กรอกเหตุผล: "ผู้ป่วยเคยใช้ร่วมกันมาก่อน มีการตรวจ INR ทุกสัปดาห์"
  8. แพทย์เลือก A → เปลี่ยนเป็น Clopidogrel
  9. ระบบตรวจสอบใหม่ → ไม่พบปัญหา ✓
  10. สั่งยาสำเร็จ

Use Case 2: เภสัชกรพบ Interaction ขณะจ่ายยา

Scenario: เภสัชกรกำลังจ่ายยา OPD และพบว่ามี Moderate Interaction

  1. เภสัชกรเปิดใบสั่งยา
  2. ระบบแสดง Warning: 🟡 Moderate Interaction
    Levothyroxine + Calcium carbonate
    Calcium ลดการดูดซึม Levothyroxine
    
  3. เภสัชกรอ่านคำแนะนำ: "ให้ห่างกัน 4 ชั่วโมง"
  4. เภสัชกรพิมพ์ฉลากยาพร้อมคำแนะนำ:
    Levothyroxine: รับประทานตอนเช้าก่อนอาหาร
    Calcium: รับประทานตอนกลางวันหรือเย็น
    ⚠️ ห่างกันอย่างน้อย 4 ชั่วโมง
    
  5. อธิบายให้ผู้ป่วยฟัง
  6. บันทึกว่าได้ให้คำแนะนำแล้ว

Use Case 3: ค้นหาปฏิกิริยายา

Scenario: แพทย์ต้องการตรวจสอบว่ายา 2 ตัวที่จะสั่งมี Interaction หรือไม่

  1. เข้าหน้า Drug Interaction
  2. ค้นหา "Warfarin"
  3. ระบบแสดงรายการยาทั้งหมดที่มี Interaction กับ Warfarin:
  4. Warfarin + Aspirin (Major)
  5. Warfarin + NSAIDs (Major)
  6. Warfarin + Antibiotics (Moderate-Major)
  7. ...
  8. แพทย์เห็นว่า Aspirin มี Major interaction
  9. ตัดสินใจไม่สั่ง หรือสั่งยาอื่นแทน

สรุป

ระบบตรวจสอบปฏิกิริยาระหว่างยาเป็น Safety Net สำคัญ ที่ช่วย:

ป้องกันอันตราย - ตรวจจับปัญหาก่อนจ่ายยา
แจ้งเตือนทันท่วงที - Alert แบบ Real-time
แนะนำการจัดการ - ให้แนวทางที่ชัดเจน
บันทึกการตัดสินใจ - Override มีเหตุผล
เพิ่มความปลอดภัย - ลดข้อผิดพลาดจากการใช้ยา

หลักการสำคัญ: - ตรวจสอบทุกครั้งที่เพิ่มยา - แสดงผลตามระดับความรุนแรง - Major = ต้องจัดการก่อนดำเนินการต่อ - Moderate/Minor = เตือนและให้คำแนะนำ - Override ต้องมีเหตุผลและบันทึก


อัปเดตล่าสุด: 6 มกราคม 2026
Data Source: data/drug-interactions.json
Service: MedicationService.checkDrugInteractions()