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
- แพทย์เปิดใบสั่งยา → เห็นว่าผู้ป่วยกิน Warfarin อยู่
- เพิ่มยา "Aspirin 100mg"
- ระบบ Alert ทันที: 🔴 Major Interaction!
Warfarin + Aspirin เพิ่มความเสี่ยงเลือดออกอย่างมาก ❌ ไม่แนะนำให้ใช้ร่วมกัน - แพทย์มี 3 ทางเลือก:
- A) เปลี่ยนยา → เลือก Clopidogrel แทน Aspirin
- B) ยกเลิก → ไม่สั่ง Aspirin
- C) Override → กรอกเหตุผล: "ผู้ป่วยเคยใช้ร่วมกันมาก่อน มีการตรวจ INR ทุกสัปดาห์"
- แพทย์เลือก A → เปลี่ยนเป็น Clopidogrel
- ระบบตรวจสอบใหม่ → ไม่พบปัญหา ✓
- สั่งยาสำเร็จ
Use Case 2: เภสัชกรพบ Interaction ขณะจ่ายยา
Scenario: เภสัชกรกำลังจ่ายยา OPD และพบว่ามี Moderate Interaction
- เภสัชกรเปิดใบสั่งยา
- ระบบแสดง Warning: 🟡 Moderate Interaction
Levothyroxine + Calcium carbonate Calcium ลดการดูดซึม Levothyroxine - เภสัชกรอ่านคำแนะนำ: "ให้ห่างกัน 4 ชั่วโมง"
- เภสัชกรพิมพ์ฉลากยาพร้อมคำแนะนำ:
Levothyroxine: รับประทานตอนเช้าก่อนอาหาร Calcium: รับประทานตอนกลางวันหรือเย็น ⚠️ ห่างกันอย่างน้อย 4 ชั่วโมง - อธิบายให้ผู้ป่วยฟัง
- บันทึกว่าได้ให้คำแนะนำแล้ว
Use Case 3: ค้นหาปฏิกิริยายา
Scenario: แพทย์ต้องการตรวจสอบว่ายา 2 ตัวที่จะสั่งมี Interaction หรือไม่
- เข้าหน้า Drug Interaction
- ค้นหา "Warfarin"
- ระบบแสดงรายการยาทั้งหมดที่มี Interaction กับ Warfarin:
- Warfarin + Aspirin (Major)
- Warfarin + NSAIDs (Major)
- Warfarin + Antibiotics (Moderate-Major)
- ...
- แพทย์เห็นว่า Aspirin มี Major interaction
- ตัดสินใจไม่สั่ง หรือสั่งยาอื่นแทน
สรุป
ระบบตรวจสอบปฏิกิริยาระหว่างยาเป็น Safety Net สำคัญ ที่ช่วย:
✅ ป้องกันอันตราย - ตรวจจับปัญหาก่อนจ่ายยา
✅ แจ้งเตือนทันท่วงที - Alert แบบ Real-time
✅ แนะนำการจัดการ - ให้แนวทางที่ชัดเจน
✅ บันทึกการตัดสินใจ - Override มีเหตุผล
✅ เพิ่มความปลอดภัย - ลดข้อผิดพลาดจากการใช้ยา
หลักการสำคัญ: - ตรวจสอบทุกครั้งที่เพิ่มยา - แสดงผลตามระดับความรุนแรง - Major = ต้องจัดการก่อนดำเนินการต่อ - Moderate/Minor = เตือนและให้คำแนะนำ - Override ต้องมีเหตุผลและบันทึก
อัปเดตล่าสุด: 6 มกราคม 2026
Data Source: data/drug-interactions.json
Service: MedicationService.checkDrugInteractions()