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

Test Cases

ระบบเภสัชกรรม (Pharmacy Information System)

โรงพยาบาลค่ายธนรัชน์


เอกสารเลขที่: SRS-1.2.13-TESTCASES
เวอร์ชัน: 1.0
วันที่: 30 ตุลาคม 2568
ผู้จัดทำ: ทีมพัฒนาระบบ
ผู้อนุมัติ: ผู้อำนวยการโรงพยาบาลค่ายธนรัชน์


📝 ประกอบการทดสอบ

🎯 Scope ของการทดสอบ

ระบบเภสัชกรรมจะครอบคลุมการทดสอบฟังก์ชันหลัก 6 กลุ่ม: - การจัดการข้อมูลพื้นฐาน - การกำหนดทะเบียนยา Drug Interaction และข้อมูลมาตรฐาน - การสั่งยาผู้ป่วยนอก (OPD) - การสั่งยาแบบรายการ Template RE-MED และการตรวจสอบความปลอดภัย - การสั่งยาผู้ป่วยใน (IPD) - การสั่งยาแบบ Continue One Day STAT และยากลับบ้าน - การยกเลิกและแก้ไขการสั่งยา - การจัดการเปลี่ยนแปลงคำสั่งยา - การตรวจสอบและจ่ายยา - การ Verify Dispense และการตรวจสอบความปลอดภัย - การพิมพ์เอกสาร - ใบสั่งยา ฉลากยา และเอกสารที่เกี่ยวข้อง

🔗 Integration Dependencies

ระบบเภสัชกรรมเชื่อมโยงกับระบบอื่นดังนี้: - ระบบเวชระเบียน (1.2.1): ข้อมูลผู้ป่วยหลักและการ Visit - ระบบซักประวัติ (1.2.2): ข้อมูลการแพ้ยาและประวัติสุขภาพ - ระบบห้องตรวจแพทย์ (1.2.3): การส่งคำสั่งยา OPD และการวินิจฉัย - ระบบห้องฉุกเฉิน (1.2.4): การส่งคำสั่งยาฉุกเฉิน STAT - ระบบทันตกรรม (1.2.5): การส่งคำสั่งยาจากทันตกรรม - ระบบนัดหมาย (1.2.6): การคำนวณจำนวนยาตามวันนัด - ระบบงานชันสูตร (1.2.7): การดูผล Lab ประกอบการสั่งยา - ระบบการเงิน (1.2.14): การคำนวณค่ายาและการชำระเงิน - ระบบตรวจสอบสิทธิ (1.2.15): การตรวจสอบสิทธิและกำหนดราคาตามสิทธิ - ระบบผู้ป่วยใน (1.2.17): การสั่งยาผู้ป่วยในและ Medication Profile

📊 คำจำกัดความ

คำศัพท์ คำอธิบาย
HN Hospital Number - หมายเลขประจำตัวผู้ป่วย
AN Admission Number - หมายเลขการรับเข้าผู้ป่วยใน
OPD Out Patient Department - แผนกผู้ป่วยนอก
IPD In Patient Department - แผนกผู้ป่วยใน
Rx Prescription - ใบสั่งยา
Drug Interaction อันตรกิริยาระหว่างยา - ปฏิกิริยาที่เกิดขึ้นเมื่อยา 2 ชนิดขึ้นไปใช้ร่วมกัน
ADR Adverse Drug Reaction - อาการไม่พึงประสงค์จากยา
Dosage Form รูปแบบเภสัชภัณฑ์ - เช่น เม็ด แคปซูล น้ำ
Generic Name ชื่อสามัญของยา - ชื่อทางเคมีหรือชื่อทั่วไป
Trade Name ชื่อการค้า - ชื่อที่บริษัทผู้ผลิตตั้งขึ้น
Ingredient ส่วนประกอบสำคัญของยา
Template ชุดยาสำเร็จรูป - กลุ่มยาที่ตั้งค่าไว้ล่วงหน้า
RE-MED Re-medication - การสั่งยาซ้ำ
STAT Immediate/Urgent - ยาเร่งด่วนทันที
PRN Pro Re Nata - ยาเมื่อมีอาการ/ตามความจำเป็น
Continue Order คำสั่งยาต่อเนื่อง - ยาที่ใช้ติดต่อกันหลายวัน
One Day Order คำสั่งยารายวัน - ยาที่สั่งครั้งเดียวต่อวัน
Day-Dose จำนวนวันที่ใช้ยา
Profile Sheet บันทึกการใช้ยาของผู้ป่วย
Dispense การจ่ายยา
Verify การตรวจสอบความถูกต้องของคำสั่งยา
G6PD Glucose-6-Phosphate Dehydrogenase Deficiency - ภาวะพร่องเอนไซม์ G6PD
GPO Government Pharmaceutical Organization - องค์การเภสัชกรรม
TMT Thai Medical Terminology - รหัสยามาตรฐานไทย
24 Digit Code รหัสยามาตรฐาน 24 หลัก ของสำนักงานหลักประกันสุขภาพแห่งชาติ
INV Inventory Code - รหัสยาของระบบคลัง
NLEM National List of Essential Medicines - บัญชียาหลักแห่งชาติ
Contraindication ข้อห้ามใช้ยา
Copayment ค่าใช้จ่ายส่วนตัวของผู้ป่วย

📑 สารบัญ Test Cases

  1. 📋 กลุ่มที่ 1: การจัดการข้อมูลพื้นฐาน (TOR 1.2.13.1) - 26 Test Cases (16 Normal + 7 Error + 3 Fail)
  2. 💊 กลุ่มที่ 2: การสั่งยาและเวชภัณฑ์ผู้ป่วยนอก (TOR 1.2.13.2) - 19 Test Cases (12 Normal + 4 Error + 3 Fail)
  3. 🏥 กลุ่มที่ 3: การสั่งยาและเวชภัณฑ์ผู้ป่วยใน (TOR 1.2.13.3) - 19 Test Cases (13 Normal + 3 Error + 3 Fail)
  4. ❌ กลุ่มที่ 4: การยกเลิกการสั่งยาและเวชภัณฑ์ (TOR 1.2.13.4) - 6 Test Cases (4 Normal + 1 Error + 1 Fail)
  5. ✅ กลุ่มที่ 5: การตรวจสอบการสั่ง/จ่ายยาและเวชภัณฑ์ (TOR 1.2.13.5) - 8 Test Cases (6 Normal + 1 Error + 1 Fail)
  6. 🖨️ กลุ่มที่ 6: การพิมพ์เอกสาร (TOR 1.2.13.6) - 8 Test Cases (6 Normal + 1 Error + 1 Fail)

รวม Test Cases ทั้งหมด: 86 Test Cases - Normal Test Cases: 57 Cases - Error Test Cases: 17 Cases
- Fail Test Cases: 12 Cases


รายการ Test Cases

📋 กลุ่มที่ 1: การจัดการข้อมูลพื้นฐาน (TOR 1.2.13.1)

Test Case: การบันทึกข้อมูลทะเบียนยาครบถ้วน

Test ID: TC-PHARM-001
Description: ทดสอบการบันทึกข้อมูลทะเบียนยาและเวชภัณฑ์ครบถ้วนตาม TOR
TOR Reference: 1.2.13.1.1-4
Pre-condition: 
- ระบบพร้อมใช้งาน
- ผู้ดูแลระบบหรือเภสัชกรล็อกอินสำเร็จ
- มีข้อมูล Master Data (หมวดยา, กลุ่มยา, Dosage Form)
Test Steps:
1. เข้าสู่หน้าจัดการทะเบียนยา
2. คลิกปุ่มเพิ่มยาใหม่
3. กรอกข้อมูลพื้นฐาน:
   - ชื่อยา: "Paracetamol"
   - ชื่อสามัญ: "Acetaminophen"
   - ความแรง: "500"
   - หน่วย: "mg"
   - Dosage Form: "Tablet"
4. กรอกข้อมูลเพิ่มเติม:
   - ชื่อการค้า: "Tylenol"
   - จำนวนบรรจุ: "10 เม็ด/แผง"
   - Drug Category: "Analgesic & Antipyretic"
   - กลุ่มการออกฤทธิ์: "Non-opioid analgesic"
5. กรอกข้อมูลราคา:
   - ราคาต้นทุน: "2.50 บาท/เม็ด"
   - ราคา OPD: "3.00 บาท/เม็ด"
   - ราคา IPD: "2.80 บาท/เม็ด"
6. กรอก Therapeutic Use:
   - (ไทย): "ใช้บรรเทาอาการปวดและลดไข้"
   - (Eng): "Relief of pain and fever"
7. กรอกฉลากช่วย:
   - (ไทย): "รับประทานหลังอาหาร"
   - (Eng): "Take after meal"
8. ระบุประเภทยา: "ยาในบัญชียาหลักแห่งชาติ"
9. บันทึกข้อมูล
Expected Result: 
- บันทึกข้อมูลยาสำเร็จ
- แสดงข้อความยืนยันการบันทึก
- ยาปรากฏในรายการทะเบียนยา
- สามารถค้นหายาได้
- บันทึกผู้สร้างและเวลาที่สร้าง
Test Data: Drug: Paracetamol 500mg, Category: Analgesic, NLEM: ใน

Test Case: การบันทึกรหัสยามาตรฐาน

Test ID: TC-PHARM-002
Description: ทดสอบการบันทึกรหัสยามาตรฐานทั้ง 4 ระบบ (GPO, INV, TMT, 24 หลัก)
TOR Reference: 1.2.13.1.4
Pre-condition: 
- มีรายการยาในระบบแล้ว
- ผู้ใช้มีสิทธิ์แก้ไขข้อมูลยา
Test Steps:
1. เข้าสู่หน้าแก้ไขทะเบียนยา
2. เลือกยา "Paracetamol 500mg"
3. คลิกแท็บ "รหัสมาตรฐาน"
4. กรอกรหัสยาทั้ง 4 ระบบ:
   - รหัส GPO: "002584"
   - รหัส INV: "INV-PAR-500"
   - รหัส TMT: "TMT000002584"
   - รหัส 24 หลัก: "100116000000102584010001"
5. บันทึกข้อมูล
6. ทดสอบค้นหายาด้วยรหัสแต่ละระบบ
Expected Result: 
- บันทึกรหัสทั้ง 4 ระบบสำเร็จ
- สามารถค้นหาด้วยรหัสใดก็ได้
- แสดงรหัสทั้งหมดในหน้ารายละเอียดยา
- เชื่อมโยงกับระบบการเงิน (1.2.14) สำหรับการเบิกจ่าย
- เชื่อมโยงกับระบบตรวจสอบสิทธิ (1.2.15) สำหรับการเคลม
Test Data: GPO: 002584, INV: INV-PAR-500, TMT: TMT000002584

Test Case: การบันทึกรูปภาพยา

Test ID: TC-PHARM-003
Description: ทดสอบการบันทึกและแสดงรูปภาพยา
TOR Reference: 1.2.13.1.5
Pre-condition: 
- มีรายการยาในระบบ
- มีไฟล์รูปภาพยาพร้อมใช้งาน
Test Steps:
1. เข้าสู่หน้าแก้ไขทะเบียนยา
2. เลือกยา "Paracetamol 500mg"
3. คลิกปุ่ม "อัปโหลดรูปภาพ"
4. เลือกไฟล์รูปภาพ (.jpg, .png)
5. ครอบตัดและปรับขนาดรูปภาพ
6. บันทึกรูปภาพ
7. ตรวจสอบการแสดงผลในหน้ารายละเอียดยา
8. ทดสอบการแสดงรูปในหน้าสั่งยา
Expected Result: 
- อัปโหลดรูปภาพสำเร็จ
- แสดงรูปภาพในหน้ารายละเอียดยา
- แสดงรูปภาพในหน้าสั่งยาเพื่อช่วยระบุยา
- รองรับไฟล์ .jpg, .png
- จำกัดขนาดไฟล์ไม่เกิน 2 MB
Test Data: Image: paracetamol_500mg.jpg, Size: 1.2 MB

Test Case: การกำหนดสิทธิการสั่งใช้ยา

Test ID: TC-PHARM-004
Description: ทดสอบการกำหนดสิทธิการสั่งใช้ยาตามกลุ่มผู้ใช้งาน ผู้ป่วย และสิทธิการรักษา
TOR Reference: 1.2.13.1.6
Pre-condition: 
- มีรายการยาในระบบ (เช่น ยาควบคุมพิเศษ)
- มีข้อมูลกลุ่มผู้ใช้งาน (แพทย์ทั่วไป, แพทย์เฉพาะทาง)
Test Steps:
1. เข้าสู่หน้าจัดการสิทธิการสั่งยา
2. เลือกยา "Morphine 10mg" (ยาควบคุมพิเศษ)
3. กำหนดสิทธิการสั่งตามกลุ่มผู้ใช้:
   - อนุญาต: แพทย์ทุกท่าน, เภสัชกรที่ได้รับมอบหมาย
   - ไม่อนุญาต: พยาบาล, บุคลากรอื่น
4. กำหนดข้อจำกัดตามประเภทผู้ป่วย:
   - อนุญาต: ผู้ป่วยใน (IPD), ผู้ป่วยฉุกเฉิน (ER)
   - ต้องขออนุมัติ: ผู้ป่วยนอก (OPD)
5. กำหนดข้อจำกัดตามสิทธิ:
   - ต้องขออนุมัติ: UC (หลักประกันสุขภาพ)
   - อนุญาต: จ่ายตรง, ประกันสังคม
6. บันทึกการตั้งค่า
7. ทดสอบการสั่งยาโดยผู้ใช้ที่ไม่มีสิทธิ์
Expected Result: 
- บันทึกสิทธิการสั่งใช้สำเร็จ
- ระบบตรวจสอบสิทธิ์ผู้สั่งยา
- แสดงข้อความเตือนเมื่อไม่มีสิทธิ์
- ไม่สามารถสั่งยาได้หากไม่มีสิทธิ์
- บันทึก Log การพยายามสั่งยา
Test Data: Drug: Morphine 10mg, User: พยาบาล, Expected: ไม่อนุญาต

Test Case: การจัดเก็บข้อมูล Ingredient

Test ID: TC-PHARM-005
Description: ทดสอบการบันทึกส่วนประกอบสำคัญ (Ingredient) ของยา
TOR Reference: 1.2.13.1.7
Pre-condition: 
- มีรายการยาในระบบ
- มีข้อมูล Master Ingredient
Test Steps:
1. เข้าสู่หน้าแก้ไขทะเบียนยา
2. เลือกยา "Co-Amoxiclav 625mg"
3. คลิกแท็บ "Ingredient"
4. เพิ่ม Ingredient:
   - Ingredient 1: "Amoxicillin" - 500 mg
   - Ingredient 2: "Clavulanic Acid" - 125 mg
5. บันทึกข้อมูล
6. ตรวจสอบการแสดงผลส่วนประกอบ
Expected Result: 
- บันทึก Ingredient สำเร็จ
- แสดงส่วนประกอบครบถ้วน
- ใช้ในการตรวจสอบ Drug Interaction ตาม Ingredient
- ใช้ในการตรวจสอบการแพ้ยาตามสารสำคัญ
- แสดงในฉลากยา
Test Data: Drug: Co-Amoxiclav, Ingredient: Amoxicillin 500mg + Clavulanic 125mg

Test Case: การกำหนดคำช่วยค้นหา

Test ID: TC-PHARM-006
Description: ทดสอบการกำหนดคำช่วยค้นหาได้มากกว่า 1 ชื่อต่อ 1 รหัสยา
TOR Reference: 1.2.13.1.8
Pre-condition: 
- มีรายการยาในระบบ
Test Steps:
1. เข้าสู่หน้าแก้ไขทะเบียนยา
2. เลือกยา "Hydrochlorothiazide 25mg"
3. คลิกแท็บ "คำช่วยค้นหา"
4. เพิ่มคำช่วยค้นหา:
   - "HCTZ"
   - "Dichlotride"
   - "Thiazide"
   - "ยาขับปัสสาวะ"
5. บันทึกข้อมูล
6. ทดสอบค้นหาด้วยคำต่างๆ
Expected Result: 
- บันทึกคำช่วยค้นหาทั้งหมดสำเร็จ
- สามารถค้นหาด้วยคำใดก็ได้
- ค้นหาได้ทั้งภาษาไทยและอังกฤษ
- แสดงผลยาเดียวกันเมื่อค้นหาด้วยคำต่างๆ
- รองรับการพิมพ์ผิด (Fuzzy Search)
Test Data: Drug: Hydrochlorothiazide, Aliases: HCTZ, Dichlotride, Thiazide

Test Case: การจัดกลุ่มยาในบัญชี/นอกบัญชี NLEM

Test ID: TC-PHARM-007
Description: ทดสอบการจัดกลุ่มยาเป็นในบัญชี และนอกบัญชียาหลักแห่งชาติ
TOR Reference: 1.2.13.1.9
Pre-condition: 
- มีรายการยาในระบบ
- มีข้อมูลบัญชียาหลักแห่งชาติ (NLEM)
Test Steps:
1. เข้าสู่หน้าแก้ไขทะเบียนยา
2. เลือกยา "Paracetamol 500mg"
3. เลือกประเภทยา: "ยาในบัญชียาหลักแห่งชาติ"
4. บันทึกข้อมูล
5. เลือกยา "Celecoxib 200mg"
6. เลือกประเภทยา: "ยานอกบัญชียาหลักแห่งชาติ"
7. กำหนดเหตุผลการใช้ยานอกบัญชี
8. บันทึกข้อมูล
9. ตรวจสอบการแสดงผลและการเตือน
Expected Result: 
- บันทึกประเภทยาสำเร็จ
- แสดงสัญลักษณ์แยกยาในบัญชี/นอกบัญชี
- เตือนเมื่อสั่งยานอกบัญชี
- ต้องระบุเหตุผลเมื่อสั่งยานอกบัญชี
- เชื่อมโยงกับการพิมพ์หนังสือขออนุมัติ
Test Data: NLEM: Paracetamol (ใน), Celecoxib (นอก)

Test Case: การผูกติดรายการค่าใช้จ่าย

Test ID: TC-PHARM-008
Description: ทดสอบการผูกติดรายการค่าใช้จ่ายกับรายการยา
TOR Reference: 1.2.13.1.10
Pre-condition: 
- มีรายการยาในระบบ
- มีข้อมูลรายการค่าใช้จ่ายในระบบการเงิน (1.2.14)
Test Steps:
1. เข้าสู่หน้าจัดการค่าใช้จ่ายยา
2. เลือกยา "Paracetamol 500mg"
3. เลือกรายการค่าใช้จ่าย: "ยาและเวชภัณฑ์ - OPD"
4. กำหนดราคา: 3.00 บาท/เม็ด
5. บันทึกข้อมูล
6. เลือกยา "Insulin Aspart 100U/ml"
7. เลือกรายการค่าใช้จ่าย: "ยาและเวชภัณฑ์ - IPD"
8. กำหนดราคา: 450.00 บาท/ขวด
9. บันทึกข้อมูล
Expected Result: 
- ผูกติดรายการค่าใช้จ่ายสำเร็จ
- เชื่อมโยงกับระบบการเงิน (1.2.14)
- คำนวณค่ายาอัตโนมัติเมื่อจ่ายยา
- แยกรายการค่าใช้จ่าย OPD/IPD ได้
- แสดงราคาถูกต้องตามสิทธิ
Test Data: Drug: Paracetamol, ChargeItem: ยาและเวชภัณฑ์ OPD, Price: 3.00

Test Case: การกำหนดราคาตามสิทธิการรักษา

Test ID: TC-PHARM-009
Description: ทดสอบการกำหนดราคาขายและประเภทการชำระเงินตามสิทธิการรักษา
TOR Reference: 1.2.13.1.11, 14
Pre-condition: 
- มีรายการยาในระบบ
- มีข้อมูลสิทธิการรักษาในระบบตรวจสอบสิทธิ (1.2.15)
Test Steps:
1. เข้าสู่หน้าจัดการราคาตามสิทธิ
2. เลือกยา "Atorvastatin 20mg"
3. กำหนดราคาตามสิทธิ:
   - UC (หลักประกันสุขภาพ): 0.00 บาท (ฟรี)
   - ประกันสังคม: 5.00 บาท (Copay)
   - จ่ายตรง: 15.00 บาท (ราคาเต็ม)
   - ข้าราชการ: 0.00 บาท (ฟรี)
   - เบิกได้ (LGO): 10% (ส่วนลด)
4. บันทึกข้อมูล
5. ทดสอบการคำนวณราคาเมื่อสั่งยาด้วยสิทธิต่างๆ
Expected Result: 
- บันทึกราคาตามสิทธิสำเร็จ
- เชื่อมโยงกับระบบตรวจสอบสิทธิ (1.2.15)
- คำนวณราคาถูกต้องตามสิทธิ
- แสดงราคาที่ต้องชำระให้ผู้ป่วยเห็น
- เชื่อมโยงกับระบบการเงิน (1.2.14)
Test Data: Drug: Atorvastatin, UC: 0, SSO: 5, Cash: 15 บาท

Test Case: การกำหนด Notify สำหรับผู้ป่วยพิเศษ

Test ID: TC-PHARM-010
Description: ทดสอบการกำหนดข้อมูล Notify สำหรับหญิงตั้งครรภ์ ให้นมบุตร เด็ก G6PD เพศ
TOR Reference: 1.2.13.1.12
Pre-condition: 
- มีรายการยาในระบบ
Test Steps:
1. เข้าสู่หน้าแก้ไขทะเบียนยา
2. เลือกยา "Aspirin 300mg"
3. คลิกแท็บ "คำเตือนพิเศษ"
4. กำหนดคำเตือน:
   - หญิงตั้งครรภ์: "ห้ามใช้ในไตรมาสที่ 3"
   - หญิงให้นมบุตร: "ระมัดระวัง อาจผ่านเข้าน้ำนม"
   - เด็ก: "ห้ามใช้ในเด็กอายุต่ำกว่า 12 ปี"
   - G6PD: "ไม่มีข้อห้าม"
   - เพศ: "ไม่มีข้อจำกัด"
5. กำหนดระดับความรุนแรง: "สูง"
6. บันทึกข้อมูล
7. ทดสอบการเตือนเมื่อสั่งยาให้ผู้ป่วยที่เข้าเงื่อนไข
Expected Result: 
- บันทึกคำเตือนสำเร็จ
- แสดงคำเตือนเมื่อสั่งยาให้ผู้ป่วยกลุ่มเสี่ยง
- ดึงข้อมูลผู้ป่วยจากระบบเวชระเบียน (1.2.1)
- แสดง Alert ชัดเจนพร้อมคำแนะนำ
- ต้องยืนยันก่อนสั่งยาต่อ
- บันทึก Log การเตือนและการตัดสินใจ
Test Data: Drug: Aspirin, Condition: Pregnancy (Trimester 3), Alert: ห้ามใช้

Test Case: การกำหนดจำนวนสั่งเริ่มต้นและสูงสุด

Test ID: TC-PHARM-011
Description: ทดสอบการกำหนดจำนวนการสั่งเริ่มต้นและจำนวนสั่งสูงสุดของยา
TOR Reference: 1.2.13.1.15
Pre-condition: 
- มีรายการยาในระบบ
Test Steps:
1. เข้าสู่หน้าแก้ไขทะเบียนยา
2. เลือกยา "Metformin 500mg"
3. กำหนดจำนวนสั่งเริ่มต้น: 60 เม็ด (ยา 1 เดือน)
4. กำหนดจำนวนสั่งสูงสุด: 180 เม็ด (ยา 3 เดือน)
5. บันทึกข้อมูล
6. ทดสอบสั่งยาโดยไม่ระบุจำนวน (ใช้ค่าเริ่มต้น)
7. ทดสอบสั่งยาเกินจำนวนสูงสุด
Expected Result: 
- บันทึกค่าเริ่มต้นและสูงสุดสำเร็จ
- แสดงจำนวนเริ่มต้นเมื่อสั่งยา
- เตือนเมื่อสั่งเกินจำนวนสูงสุด
- อนุญาตให้เกินได้หากมีเหตุผล
- บันทึก Log เมื่อสั่งเกินจำนวน
Test Data: Drug: Metformin, Default: 60, Max: 180 เม็ด

Test Case: การคำนวณจำนวนยาอัตโนมัติตามวันนัด

Test ID: TC-PHARM-012
Description: ทดสอบการคำนวณจำนวนเม็ดยาอัตโนมัติตามวันนัดและวิธีใช้ยา
TOR Reference: 1.2.13.1.16
Pre-condition: 
- มีรายการยาในระบบ
- มีการนัดหมายในระบบนัดหมาย (1.2.6)
- ผู้ป่วยมีวันนัดในอนาคต
Test Steps:
1. เข้าสู่หน้าสั่งยา OPD
2. เลือกผู้ป่วยที่มีวันนัดในอนาคต (นัด 30 วัน)
3. เลือกยา "Amlodipine 5mg"
4. กำหนดวิธีใช้: "รับประทานวันละ 1 ครั้ง เช้า"
5. เลือกตัวเลือก "คำนวณตามวันนัด"
6. ตรวจสอบจำนวนที่คำนวณได้
7. ปรับจำนวนเอง (ถ้าต้องการ)
8. บันทึกการสั่งยา
Expected Result: 
- คำนวณจำนวนยาอัตโนมัติ = 30 เม็ด (วันนัด 30 วัน x 1 เม็ด/วัน)
- เชื่อมโยงกับระบบนัดหมาย (1.2.6)
- ดึงวันนัดถัดไปมาคำนวณ
- อนุญาตให้ปรับจำนวนเองได้
- แสดงคำอธิบายการคำนวณ
Test Data: Drug: Amlodipine 5mg OD, Appointment: 30 days, Quantity: 30 tabs

Test Case: การกำหนดตัวยาที่ห้ามสั่งจ่ายกับรหัสโรค ICD10

Test ID: TC-PHARM-013
Description: ทดสอบการกำหนดข้อห้ามใช้ยา (Contraindication) กับรหัสโรค ICD10
TOR Reference: 1.2.13.1.17
Pre-condition: 
- มีรายการยาในระบบ
- มีข้อมูล ICD10 ในระบบเวชระเบียน (1.2.1)
Test Steps:
1. เข้าสู่หน้าจัดการ Contraindication
2. เลือกยา "NSAIDs (Ibuprofen 400mg)"
3. คลิกปุ่มเพิ่มข้อห้ามใช้
4. เพิ่มรหัสโรคที่ห้ามใช้:
   - ICD10: K25 (Gastric Ulcer - แผลในกระเพาะอาหาร)
   - ระดับความรุนแรง: "สูง"
   - คำเตือน: "ห้ามใช้ในผู้ป่วยที่มีแผลในกระเพาะอาหาร"
5. เพิ่มรหัสโรคอื่น:
   - ICD10: I50 (Heart Failure - หัวใจล้มเหลว)
   - ระดับความรุนแรง: "ปานกลาง"
   - คำเตือน: "ระมัดระวัง อาจทำให้อาการแย่ลง"
6. บันทึกข้อมูล
7. ทดสอบสั่งยาให้ผู้ป่วยที่มีโรคดังกล่าว
Expected Result: 
- บันทึก Contraindication สำเร็จ
- เชื่อมโยงกับระบบเวชระเบียน (1.2.1) เพื่อดูการวินิจฉัย
- แสดง Alert เมื่อสั่งยาให้ผู้ป่วยที่มีโรคห้ามใช้
- แสดงระดับความรุนแรงและคำแนะนำ
- ไม่อนุญาตให้สั่งยาหากเป็น Contraindication สูง
- บันทึก Log การเตือน
Test Data: Drug: Ibuprofen, ICD10: K25 (Gastric Ulcer), Alert: ห้ามใช้

Test Case: การบันทึก Drug Interaction

Test ID: TC-PHARM-014
Description: ทดสอบการบันทึกข้อมูล Drug Interaction ระหว่างยา 2 รายการ
TOR Reference: 1.2.13.1.18-19
Pre-condition: 
- มีรายการยาในระบบ
Test Steps:
1. เข้าสู่หน้าจัดการ Drug Interaction
2. คลิกปุ่มเพิ่ม Interaction ใหม่
3. เลือกยาคู่แรก:
   - ยา A: "Warfarin 5mg" (ยาละลายลิ่มเลือด)
   - ยา B: "Aspirin 100mg" (ยาแก้ปวด/ต้านการแข็งตัวของเลือด)
4. กำหนดข้อมูล Interaction:
   - ระดับความรุนแรง: "สูง (High)"
   - ประเภท: "เพิ่มฤทธิ์กัน"
   - อาการที่อาจเกิด: "เพิ่มความเสี่ยงเลือดออก"
   - คำแนะนำ: "หลีกเลี่ยงการใช้ร่วมกัน หรือติดตามค่า INR อย่างใกล้ชิด"
5. บันทึกข้อมูล
6. เพิ่ม Interaction คู่อื่น:
   - ยา A: "Simvastatin 20mg"
   - ยา B: "Clarithromycin 500mg"
   - ระดับความรุนแรง: "สูง"
   - คำเตือน: "เพิ่มความเสี่ยง Rhabdomyolysis"
7. บันทึกข้อมูล
Expected Result: 
- บันทึก Drug Interaction สำเร็จ
- แสดงระดับความรุนแรง (สูง/ปานกลาง/ต่ำ)
- แสดงอาการที่อาจเกิดและคำแนะนำ
- ใช้ในการตรวจสอบเมื่อสั่งยา
- แสดง Alert เมื่อพบ Interaction
Test Data: Drug A: Warfarin, Drug B: Aspirin, Severity: High

Test Case: การตรวจสอบใบสั่งยาย้อนหลัง

Test ID: TC-PHARM-015
Description: ทดสอบการตรวจสอบใบสั่งยาย้อนหลังที่มีผลต่อการสั่งยาครั้งนี้
TOR Reference: 1.2.13.1.20
Pre-condition: 
- มีข้อมูล Drug Interaction ในระบบ
- ผู้ป่วยมีประวัติการใช้ยาย้อนหลัง
Test Steps:
1. เข้าสู่หน้าการตั้งค่าระบบ
2. กำหนดระยะเวลาตรวจสอบย้อนหลัง: 30 วัน
3. บันทึกการตั้งค่า
4. เข้าสู่หน้าสั่งยา OPD
5. เลือกผู้ป่วยที่เคยได้รับ "Warfarin 5mg" เมื่อ 15 วันที่แล้ว
6. พยายามสั่งยา "Aspirin 100mg"
7. ตรวจสอบการแจ้งเตือน Interaction
Expected Result: 
- ตั้งค่าระยะเวลาตรวจสอบสำเร็จ
- ระบบดึงข้อมูลการใช้ยาย้อนหลัง 30 วัน
- ตรวจสอบ Interaction กับยาที่ใช้อยู่
- แสดง Alert: "ผู้ป่วยกำลังใช้ Warfarin, Aspirin อาจเพิ่มความเสี่ยงเลือดออก"
- แสดงวันที่ที่ได้รับยา Warfarin
- อนุญาตให้สั่งต่อได้หากมีเหตุผล
Test Data: Drug History: Warfarin (15 days ago), New Drug: Aspirin, Alert: Yes

Test Case: การหยุดการจำหน่ายยาและแจ้งเตือน

Test ID: TC-PHARM-016
Description: ทดสอบการหยุดการจำหน่ายยาหรือแจ้งว่ายาหมดพร้อมข้อความเตือน
TOR Reference: 1.2.13.1.3
Pre-condition: 
- มีรายการยาในระบบ
- ผู้ใช้มีสิทธิ์หยุดการจำหน่ายยา
Test Steps:
1. เข้าสู่หน้าจัดการสถานะยา
2. เลือกยา "Losartan 50mg"
3. เปลี่ยนสถานะเป็น "หยุดจำหน่าย"
4. กรอกข้อความเตือน: "ยาหมดชั่วคราว คาดว่าจะมียาวันที่ 15 พ.ย. 2568"
5. กรอกเหตุผล: "รอรับของจากผู้จัดจำหน่าย"
6. เลือกยาทดแทนแนะนำ: "Irbesartan 150mg"
7. บันทึกข้อมูล
8. ทดสอบสั่งยา Losartan โดยแพทย์
Expected Result: 
- บันทึกสถานะหยุดจำหน่ายสำเร็จ
- แสดงข้อความเตือนเมื่อพยายามสั่งยา
- แสดงยาทดแทนที่แนะนำ
- ไม่สามารถสั่งยาได้จนกว่าจะเปิดจำหน่ายใหม่
- บันทึก Log การเปลี่ยนสถานะ
- แจ้งเตือนเภสัชกรเมื่อมีการสั่งยาที่หยุดจำหน่าย
Test Data: Drug: Losartan, Status: หยุดจำหน่าย, Alternative: Irbesartan

Test Case: ERROR - การบันทึกรหัสยาซ้ำ

Test ID: TC-PHARM-E001
Description: ทดสอบการป้องกันการบันทึกรหัสยาซ้ำในระบบ
TOR Reference: 1.2.13.1.1-4
Pre-condition: 
- มีรายการยา "Paracetamol 500mg" รหัส "PAR500" ในระบบแล้ว
Test Steps:
1. เข้าสู่หน้าเพิ่มยาใหม่
2. พยายามใช้รหัสยา "PAR500" (ซ้ำกับที่มีอยู่)
3. กรอกข้อมูลอื่นๆ
4. พยายามบันทึก
Expected Result: 
- แสดงข้อความแจ้งเตือน: "รหัสยานี้มีอยู่ในระบบแล้ว"
- แสดงข้อมูลยาที่มีรหัสซ้ำ
- ไม่อนุญาตให้บันทึก
- แนะนำรหัสที่ว่าง เช่น "PAR500-01"
Test Data: Duplicate Code: PAR500, Expected: Error Message

Test Case: ERROR - การอัปโหลดไฟล์รูปภาพขนาดใหญ่เกินไป

Test ID: TC-PHARM-E002
Description: ทดสอบการจำกัดขนาดไฟล์รูปภาพยา
TOR Reference: 1.2.13.1.5
Pre-condition: 
- มีไฟล์รูปภาพขนาด 5 MB
Test Steps:
1. เข้าสู่หน้าอัปโหลดรูปภาพยา
2. เลือกไฟล์รูปภาพขนาด 5 MB
3. พยายามอัปโหลด
Expected Result: 
- แสดงข้อความแจ้งเตือน: "ขนาดไฟล์เกิน 2 MB"
- ไม่อนุญาตให้อัปโหลด
- แนะนำให้ลดขนาดไฟล์ก่อน
Test Data: File Size: 5 MB, Limit: 2 MB, Expected: Error

Test Case: ERROR - การบันทึกยาโดยไม่มีข้อมูลบังคับ

Test ID: TC-PHARM-E003
Description: ทดสอบการป้องกันการบันทึกยาที่ขาดข้อมูลบังคับ
TOR Reference: 1.2.13.1.4
Pre-condition: 
- ระบบพร้อมใช้งาน
Test Steps:
1. เข้าสู่หน้าเพิ่มยาใหม่
2. กรอกเฉพาะชื่อยา: "Amoxicillin"
3. ไม่กรอกข้อมูลบังคับ: ความแรง, หน่วย, Dosage Form
4. พยายามบันทึก
Expected Result: 
- แสดงข้อความแจ้งเตือน: "กรุณากรอกข้อมูลที่จำเป็น"
- ไฮไลท์ช่องที่ต้องกรอก
- ไม่อนุญาตให้บันทึก
- แสดงรายการช่องที่ต้องกรอก
Test Data: Required Fields: ชื่อยา, ความแรง, หน่วย, Dosage Form

Test Case: ERROR - การกำหนดราคาไม่ถูกต้อง

Test ID: TC-PHARM-E004
Description: ทดสอบการตรวจสอบความถูกต้องของราคายา
TOR Reference: 1.2.13.1.13-14
Pre-condition: 
- มีรายการยาในระบบ
Test Steps:
1. เข้าสู่หน้าแก้ไขราคายา
2. พยายามกำหนดราคาขาย (3.00 บาท) ต่ำกว่าราคาทุน (5.00 บาท)
3. พยายามบันทึก
Expected Result: 
- แสดงข้อความเตือน: "ราคาขายต่ำกว่าราคาทุน"
- อนุญาตให้บันทึกได้หากยืนยัน
- บันทึก Log การกำหนดราคาขายต่ำกว่าทุน
- แจ้งเตือนผู้บริหารเพื่อทบทวน
Test Data: Cost: 5.00, Selling: 3.00, Expected: Warning

Test Case: ERROR - การกำหนด Drug Interaction ซ้ำ

Test ID: TC-PHARM-E005
Description: ทดสอบการป้องกัน Drug Interaction ซ้ำซ้อน
TOR Reference: 1.2.13.1.18-19
Pre-condition: 
- มี Drug Interaction: Warfarin + Aspirin อยู่แล้ว
Test Steps:
1. เข้าสู่หน้าเพิ่ม Drug Interaction
2. พยายามเพิ่ม Interaction คู่เดิม:
   - ยา A: "Warfarin 5mg"
   - ยา B: "Aspirin 100mg"
3. พยายามบันทึก
Expected Result: 
- แสดงข้อความเตือน: "Drug Interaction คู่นี้มีอยู่ในระบบแล้ว"
- แสดงข้อมูล Interaction เดิม
- เสนอตัวเลือกแก้ไข Interaction เดิม
- ไม่อนุญาตให้สร้างซ้ำ
Test Data: Duplicate: Warfarin + Aspirin, Expected: Error

Test Case: FAIL - การตรวจสอบ Contraindication ไม่ทำงาน

Test ID: TC-PHARM-F001
Description: ทดสอบกรณีระบบไม่แสดง Alert เมื่อสั่งยาให้ผู้ป่วยที่มีข้อห้ามใช้
TOR Reference: 1.2.13.1.17
Pre-condition: 
- มี Contraindication: NSAIDs + ICD10 K25 (Gastric Ulcer)
- ผู้ป่วยมีการวินิจฉัย K25
Test Steps:
1. แพทย์สั่งยา "Ibuprofen 400mg" ให้ผู้ป่วย
2. ระบบไม่แสดง Alert
3. อนุญาตให้สั่งยาได้โดยไม่มีการเตือน
Expected Result (Fail Scenario):
- ระบบควรแสดง Alert แต่ไม่แสดง
- อนุญาตให้สั่งยาได้โดยไม่มีการเตือน
Root Cause (ตัวอย่าง):
- ไม่ได้ดึงข้อมูลการวินิจฉัยจากระบบเวชระเบียน (1.2.1)
- การเชื่อมต่อ API ขัดข้อง
- ข้อมูล Contraindication ไม่ Active
Test Data: Drug: Ibuprofen, ICD10: K25, Expected Alert: Yes, Actual: No

Test Case: FAIL - Drug Interaction ไม่ตรวจสอบยาย้อนหลัง

Test ID: TC-PHARM-F002
Description: ทดสอบกรณีระบบไม่ตรวจสอบ Drug Interaction กับยาที่ใช้อยู่
TOR Reference: 1.2.13.1.20
Pre-condition: 
- ผู้ป่วยได้รับ "Warfarin 5mg" เมื่อ 10 วันที่แล้ว
- ตั้งค่าตรวจสอบย้อนหลัง 30 วัน
Test Steps:
1. แพทย์สั่งยา "Aspirin 100mg"
2. ระบบไม่แสดง Alert Drug Interaction
3. อนุญาตให้สั่งยาได้โดยไม่มีการเตือน
Expected Result (Fail Scenario):
- ระบบควรแสดง Alert แต่ไม่แสดง
- อนุญาตให้สั่งยาได้โดยไม่เตือน
Root Cause (ตัวอย่าง):
- Query ดึงข้อมูลยาย้อนหลังไม่ถูกต้อง
- ไม่ได้กรองยาที่ยังใช้อยู่ (Active medications)
- Performance issue ทำให้ข้ามการตรวจสอบ
Test Data: Current Drug: Warfarin (10 days ago), New: Aspirin, Expected Alert: Yes, Actual: No

Test Case: ERROR - การอัปโหลดไฟล์รูปภาพผิดนามสกุล

Test ID: TC-PHARM-E006
Description: ทดสอบการจำกัดประเภทไฟล์รูปภาพ
TOR Reference: 1.2.13.1.5
Pre-condition: 
- มีไฟล์ .pdf หรือ .doc
Test Steps:
1. เข้าสู่หน้าอัปโหลดรูปภาพยา
2. เลือกไฟล์ที่ไม่ใช่รูปภาพ (เช่น .pdf, .doc)
3. พยายามอัปโหลด
Expected Result: 
- แสดงข้อความเตือน: "รองรับเฉพาะไฟล์ .jpg, .png, .gif เท่านั้น"
- ไม่อนุญาตให้อัปโหลด
- แสดงรายการประเภทไฟล์ที่รองรับ
Test Data: File Type: .pdf, Allowed: .jpg/.png/.gif, Expected: Error

Test Case: ERROR - ราคาตามสิทธิไม่สอดคล้องกัน

Test ID: TC-PHARM-E007
Description: ทดสอบการตรวจสอบความสอดคล้องของราคาตามสิทธิต่างๆ
TOR Reference: 1.2.13.1.14
Pre-condition: 
- มีรายการยาในระบบ
Test Steps:
1. เข้าสู่หน้าจัดการราคาตามสิทธิ
2. กำหนดราคา:
   - UC: 10.00 บาท
   - จ่ายตรง: 5.00 บาท (ต่ำกว่า UC)
3. พยายามบันทึก
Expected Result: 
- แสดงข้อความเตือน: "ราคาจ่ายตรงควรสูงกว่าหรือเท่ากับราคาสิทธิอื่น"
- อนุญาตให้บันทึกได้หากยืนยัน
- บันทึก Log การกำหนดราคาที่ไม่สอดคล้อง
Test Data: UC: 10, Cash: 5, Expected: Warning

Test Case: FAIL - คำนวณจำนวนยาตามวันนัดผิดพลาด

Test ID: TC-PHARM-F003
Description: ทดสอบกรณีคำนวณจำนวนยาผิดเมื่อมีวันนัดหลายครั้ง
TOR Reference: 1.2.13.1.16
Pre-condition: 
- ผู้ป่วยมีการนัด 2 ครั้ง: 15 วัน (Lab) และ 30 วัน (พบแพทย์)
Test Steps:
1. แพทย์สั่งยา "Metformin 500mg" OD
2. เลือกคำนวณตามวันนัด
3. ระบบคำนวณ = 15 เม็ด (ใช้วันนัดแรก)
Expected Result (Fail Scenario):
- ระบบควรให้แพทย์เลือกว่าจะใช้วันนัดไหน
- หรือควรใช้วันนัดพบแพทย์ (30 วัน) เป็นค่าเริ่มต้น
- แต่ระบบคำนวณด้วยวันนัดแรกโดยอัตโนมัติ
Root Cause (ตัวอย่าง):
- Logic เลือกวันนัดผิดพลาด
- ไม่มีตัวเลือกให้แพทย์เลือก
- ไม่แยกประเภทการนัด (Lab vs พบแพทย์)
Test Data: Appointments: 15d (Lab), 30d (Doctor), Calculated: 15 tabs, Expected: 30 tabs

Test Case: ERROR - จำนวนสั่งเกินจำนวนสูงสุดที่กำหนด

Test ID: TC-PHARM-E008
Description: ทดสอบการป้องกันการสั่งยาเกินจำนวนสูงสุด
TOR Reference: 1.2.13.1.15
Pre-condition: 
- ยา "Morphine 10mg" กำหนดจำนวนสูงสุด 30 เม็ด
Test Steps:
1. แพทย์สั่งยา "Morphine 10mg"
2. ระบุจำนวน 50 เม็ด (เกินจำนวนสูงสุด)
3. พยายามบันทึก
Expected Result: 
- แสดงข้อความเตือน: "จำนวนเกินที่กำหนด (สูงสุด 30 เม็ด)"
- อนุญาตให้สั่งเกินได้หากระบุเหตุผล
- ต้องได้รับการอนุมัติจากหัวหน้าแผนก
- บันทึก Log การสั่งเกินจำนวน
Test Data: Max: 30, Order: 50, Expected: Warning + Approval Required

💊 กลุ่มที่ 2: การสั่งยาและเวชภัณฑ์ผู้ป่วยนอก (TOR 1.2.13.2)

Test Case: การสั่งยาแบบรายการปกติ

Test ID: TC-PHARM-017
Description: ทดสอบการสั่งยาผู้ป่วยนอก (OPD) แบบรายการทั่วไป
TOR Reference: 1.2.13.2.1
Pre-condition: 
- ระบบพร้อมใช้งาน
- แพทย์ล็อกอินสำเร็จ
- ผู้ป่วย HN: 001234 มี Visit OPD อยู่
- ไม่มีประวัติการแพ้ยา
Test Steps:
1. แพทย์เข้าสู่หน้าสั่งยา OPD
2. เลือกผู้ป่วย HN: 001234
3. ค้นหาและเลือกยา "Paracetamol 500mg"
4. กำหนดวิธีใช้: "รับประทานเมื่อปวดหรือมีไข้"
5. กำหนดขนาด: "1-2 เม็ด/ครั้ง"
6. กำหนดความถี่: "ทุก 6 ชั่วโมง"
7. กำหนดจำนวน: 20 เม็ด
8. กรอกคำแนะนำเพิ่มเติม: "รับประทานหลังอาหาร"
9. บันทึกการสั่งยา
Expected Result: 
- บันทึกการสั่งยาสำเร็จ
- สร้าง Prescription Order ID
- แสดงในรายการยาที่สั่ง
- เชื่อมโยงกับระบบการเงิน (1.2.14) สำหรับคิดค่ายา
- เชื่อมโยงกับระบบเวชระเบียน (1.2.1) บันทึกประวัติ
- พร้อมจ่ายยา
Test Data: HN: 001234, Drug: Paracetamol 500mg, Qty: 20 tabs

Test Case: การสั่งยาโดยใช้ Template

Test ID: TC-PHARM-018
Description: ทดสอบการสั่งยาด้วยชุดยาสำเร็จรูป (Template) ของแพทย์
TOR Reference: 1.2.13.2.2
Pre-condition: 
- แพทย์มี Template "ยาแก้หวัด" ประกอบด้วย:
  * Paracetamol 500mg - 10 tabs
  * Chlorpheniramine 4mg - 10 tabs
  * Pseudoephedrine 60mg - 10 tabs
Test Steps:
1. แพทย์เข้าสู่หน้าสั่งยา OPD
2. เลือกผู้ป่วย
3. คลิกปุ่ม "Template"
4. เลือก Template "ยาแก้หวัด"
5. ตรวจสอบรายการยาที่เติมอัตโนมัติ
6. แก้ไขจำนวน Paracetamol เป็น 15 เม็ด
7. ลบ Pseudoephedrine ออก
8. เพิ่มยา Ambroxol 30mg - 10 tabs
9. บันทึกการสั่งยา
Expected Result: 
- โหลด Template สำเร็จ
- แสดงรายการยาทั้งหมดใน Template
- สามารถแก้ไขรายการได้
- สามารถลบรายการได้
- สามารถเพิ่มรายการใหม่ได้
- บันทึกการสั่งยาสำเร็จ
- ไม่แก้ไข Template ต้นฉบับ
Test Data: Template: ยาแก้หวัด (3 items), Modified: 2 items + 1 new

Test Case: การสั่งยาซ้ำ (RE-MED)

Test ID: TC-PHARM-019
Description: ทดสอบการแสดงและสั่งยาซ้ำจากประวัติการใช้ยาเดิม
TOR Reference: 1.2.13.2.3
Pre-condition: 
- ผู้ป่วยเคยได้รับยา "เบาหวาน" เมื่อ 30 วันที่แล้ว:
  * Metformin 500mg - 60 tabs
  * Glipizide 5mg - 30 tabs
Test Steps:
1. แพทย์เข้าสู่หน้าสั่งยา OPD
2. เลือกผู้ป่วย
3. คลิกปุ่ม "RE-MED"
4. เลือกวันที่ที่ต้องการดูประวัติ (30 วันที่แล้ว)
5. แสดงรายการยาเดิม
6. เลือกยาที่ต้องการสั่งซ้ำ (ทั้ง 2 รายการ)
7. แก้ไขจำนวน Metformin เป็น 90 เม็ด
8. คงจำนวน Glipizide เดิม
9. บันทึกการสั่งยา
Expected Result: 
- แสดงประวัติการใช้ยาตามวันที่เลือก
- สามารถเลือกยาเดิมมาสั่งซ้ำได้
- เลือกได้ทั้งหมดหรือบางรายการ
- สามารถแก้ไขจำนวนและวิธีใช้ได้
- บันทึกการสั่งยาสำเร็จ
- เชื่อมโยงกับข้อมูลเดิมเพื่อการติดตาม
Test Data: Previous Rx (30d ago): Metformin 60, Glipizide 30, New: 90, 30

Test Case: การแจ้งเตือนการแพ้ยา

Test ID: TC-PHARM-020
Description: ทดสอบระบบเตือนเมื่อสั่งยาที่ผู้ป่วยแพ้
TOR Reference: 1.2.13.2.4, 9
Pre-condition: 
- ผู้ป่วยมีประวัติแพ้ "Penicillin" บันทึกในระบบซักประวัติ (1.2.2)
Test Steps:
1. แพทย์เข้าสู่หน้าสั่งยา OPD
2. เลือกผู้ป่วยที่แพ้ Penicillin
3. พยายามสั่งยา "Amoxicillin 500mg"
4. ตรวจสอบการแจ้งเตือน
Expected Result: 
- แสดง Alert ทันทีเมื่อเลือกยา: "ผู้ป่วยแพ้ Penicillin"
- แสดงประวัติการแพ้และอาการที่เคยเกิด
- แสดงสีแดงเตือนชัดเจน
- ไม่อนุญาตให้สั่งยาต่อไป
- แนะนำยาทางเลือกที่ไม่ใช่กลุ่ม Penicillin
- เชื่อมโยงกับระบบซักประวัติ (1.2.2)
- บันทึก Log การพยายามสั่งยาที่แพ้
Test Data: Drug Allergy: Penicillin, Attempted: Amoxicillin, Alert: ห้ามใช้

Test Case: การแจ้งเตือน Drug Interaction

Test ID: TC-PHARM-021
Description: ทดสอบระบบเตือน Drug Interaction เมื่อสั่งยาที่มีปฏิกิริยากัน
TOR Reference: 1.2.13.2.10
Pre-condition: 
- ผู้ป่วยกำลังใช้ "Warfarin 5mg" อยู่
- มีข้อมูล Drug Interaction: Warfarin + Aspirin = High Risk
Test Steps:
1. แพทย์สั่งยา "Warfarin 5mg" เสร็จแล้ว
2. พยายามเพิ่มยา "Aspirin 100mg" 
3. ตรวจสอบการแจ้งเตือน
4. อ่านรายละเอียดและคำแนะนำ
5. ตัดสินใจสั่งยาต่อพร้อมระบุเหตุผล
Expected Result: 
- แสดง Alert Drug Interaction ทันที
- แสดงระดับความรุนแรง: "สูง (High)"
- แสดงอาการที่อาจเกิด: "เพิ่มความเสี่ยงเลือดออก"
- แสดงคำแนะนำ: "หลีกเลี่ยงหรือติดตามค่า INR อย่างใกล้ชิด"
- อนุญาตให้สั่งต่อได้หากระบุเหตุผล
- บันทึก Log พร้อมเหตุผล
- แจ้งเตือนเภสัชกรเมื่อ Verify ใบสั่งยา
Test Data: Drug 1: Warfarin, Drug 2: Aspirin, Interaction: High, Allow: Yes with reason

Test Case: การแจ้งเตือนยาอันตรายต่อหญิงตั้งครรภ์

Test ID: TC-PHARM-022
Description: ทดสอบการเตือนเมื่อสั่งยาที่อันตรายต่อหญิงตั้งครรภ์
TOR Reference: 1.2.13.2.12
Pre-condition: 
- ผู้ป่วยเป็นหญิง อายุ 28 ปี
- มีข้อมูลตั้งครรภ์ในระบบเวชระเบียน (1.2.1)
- ยา "Methotrexate" มีคำเตือน: ห้ามใช้ในหญิงตั้งครรภ์
Test Steps:
1. แพทย์พยายามสั่งยา "Methotrexate 2.5mg"
2. ตรวจสอบการแจ้งเตือน
Expected Result: 
- แสดง Alert สีแดง: "ห้ามใช้ในหญิงตั้งครรภ์"
- แสดงข้อมูลอายุครรภ์
- แสดงความเสี่ยงต่อทารก: "ทำให้เกิดความพิการแก่ทารก"
- ไม่อนุญาตให้สั่งยา
- แนะนำยาทางเลือกที่ปลอดภัย
- บันทึก Log การพยายามสั่งยา
Test Data: Patient: หญิงตั้งครรภ์ 12 สัปดาห์, Drug: Methotrexate, Alert: ห้ามใช้

Test Case: การแจ้งเตือนยาสำหรับเด็ก

Test ID: TC-PHARM-023
Description: ทดสอบการเตือนเมื่อสั่งยาที่ไม่เหมาะสมสำหรับเด็ก
TOR Reference: 1.2.13.2.12
Pre-condition: 
- ผู้ป่วยเป็นเด็กอายุ 8 ปี น้ำหนัก 25 kg
- ยา "Aspirin" มีคำเตือน: ห้ามใช้ในเด็กอายุต่ำกว่า 12 ปี
Test Steps:
1. แพทย์พยายามสั่งยา "Aspirin 300mg"
2. ตรวจสอบการแจ้งเตือน
3. ตรวจสอบขนาดยาที่เหมาะสม
Expected Result: 
- แสดง Alert: "ห้ามใช้ในเด็กอายุต่ำกว่า 12 ปี"
- แสดงอายุและน้ำหนักผู้ป่วย
- แสดงความเสี่ยง: "อาจทำให้เกิด Reye's Syndrome"
- ไม่อนุญาตให้สั่งยา
- แนะนำยาทางเลือก: "Paracetamol"
- แสดงขนาดยาที่เหมาะสมสำหรับเด็ก (mg/kg)
Test Data: Patient: เด็ก 8 ปี 25kg, Drug: Aspirin, Alert: ห้ามใช้

Test Case: การกำหนดสิทธิ์การสั่งยา

Test ID: TC-PHARM-024
Description: ทดสอบการกำหนดสิทธิ์การสั่งยาตามกลุ่มผู้ใช้งาน
TOR Reference: 1.2.13.2.11
Pre-condition: 
- ยา "Morphine 10mg" สั่งได้เฉพาะแพทย์เฉพาะทาง
- มีผู้ใช้: แพทย์ทั่วไป และแพทย์ Pain Clinic
Test Steps:
1. แพทย์ทั่วไปพยายามสั่งยา "Morphine 10mg"
2. ตรวจสอบการแจ้งเตือน
3. แพทย์ Pain Clinic สั่งยา "Morphine 10mg"
4. ตรวจสอบผลลัพธ์
Expected Result: 
- แพทย์ทั่วไป: แสดง Alert "ยานี้สั่งได้เฉพาะแพทย์เฉพาะทาง"
- ไม่อนุญาตให้สั่งยา หรือต้องขออนุมัติ
- แพทย์ Pain Clinic: สั่งยาได้ปกติ
- บันทึก Log ผู้สั่งยาและสิทธิ์
Test Data: Drug: Morphine, User1: แพทย์ทั่วไป (ไม่อนุญาต), User2: Pain Clinic (อนุญาต)

Test Case: การพิมพ์สติกเกอร์ยา

Test ID: TC-PHARM-025
Description: ทดสอบการพิมพ์สติกเกอร์ฉลากยาบางรายการหรือทุกรายการ
TOR Reference: 1.2.13.2.5
Pre-condition: 
- มีการสั่งยา 5 รายการ
Test Steps:
1. เข้าสู่หน้ารายการยาที่สั่ง
2. เลือกยา 2 รายการ: Paracetamol, Amoxicillin
3. คลิกปุ่ม "พิมพ์สติกเกอร์รายการที่เลือก"
4. ตรวจสอบสติกเกอร์ที่พิมพ์ออกมา
5. คลิกปุ่ม "พิมพ์สติกเกอร์ทั้งหมด"
6. ตรวจสอบสติกเกอร์ทั้งหมด
Expected Result: 
- พิมพ์สติกเกอร์ได้ตามรายการที่เลือก (2 รายการ)
- พิมพ์สติกเกอร์ได้ทั้งหมด (5 รายการ)
- สติกเกอร์แสดงข้อมูล: HN, ชื่อผู้ป่วย, ชื่อยา, วิธีใช้, จำนวน
- แสดงฉลากช่วย (ไทย/อังกฤษ)
- แสดง Barcode สำหรับสแกน
Test Data: Total Drugs: 5, Selected: 2, Print: 2 labels then 5 labels

Test Case: การแสดงรายการยาจากจุดต่างๆ

Test ID: TC-PHARM-026
Description: ทดสอบการแสดงข้อมูลยาที่ผู้ป่วยได้รับจากหน่วยตรวจต่างๆ
TOR Reference: 1.2.13.2.6
Pre-condition: 
- ผู้ป่วยได้รับยาจาก:
  * ห้องตรวจแพทย์ (1.2.3) - Metformin
  * ห้องฉุกเฉิน (1.2.4) - Paracetamol
  * ทันตกรรม (1.2.5) - Amoxicillin
Test Steps:
1. เข้าสู่หน้าประวัติการใช้ยาผู้ป่วย
2. เลือกช่วงเวลา: เดือนนี้
3. ตรวจสอบรายการยาทั้งหมด
4. กรองตามแหล่งที่มา: ห้องฉุกเฉิน
5. ตรวจสอบรายการที่กรอง
Expected Result: 
- แสดงรายการยาจากทุกหน่วยตรวจ
- แยกแสดงแหล่งที่มา (OPD/ER/Dental)
- แสดงวันที่และเวลาที่ได้รับยา
- แสดงแพทย์ผู้สั่ง
- สามารถกรองตามแหล่งที่มาได้
- สามารถกรองตามช่วงเวลาได้
Test Data: Sources: OPD (Metformin), ER (Paracetamol), Dental (Amoxicillin)

Test Case: การแสดงรายชื่อผู้ป่วยรอรับยา

Test ID: TC-PHARM-027
Description: ทดสอบการแสดงรายชื่อผู้ป่วยที่ถูกส่งมารอรับยา
TOR Reference: 1.2.13.2.7
Pre-condition: 
- มีผู้ป่วย 5 รายที่สั่งยาเสร็จและรอรับยา
- ผู้ป่วย 2 รายชำระเงินแล้ว
- ผู้ป่วย 3 รายยังไม่ชำระเงิน
Test Steps:
1. เภสัชกรเข้าสู่หน้า "คิวรอรับยา"
2. ตรวจสอบรายชื่อผู้ป่วยทั้งหมด
3. กรองเฉพาะผู้ป่วยที่ชำระเงินแล้ว
4. เรียงตามเวลาที่สั่งยา
5. เลือกผู้ป่วยเพื่อจ่ายยา
Expected Result: 
- แสดงรายชื่อผู้ป่วยรอรับยาทั้งหมด
- แสดงสถานะการชำระเงิน (ชำระแล้ว/ยังไม่ชำระ)
- แสดงเวลาที่รอ
- สามารถกรองและเรียงลำดับได้
- คลิกเพื่อดูรายละเอียดยา
- เชื่อมโยงกับระบบการเงิน (1.2.14)
Test Data: Waiting: 5 patients (2 paid, 3 unpaid)

Test Case: การแก้ไขราคายาตามสิทธิ์ผู้ใช้

Test ID: TC-PHARM-028
Description: ทดสอบการแก้ไขราคายาและประเภทการชำระเงินตามสิทธิ์ผู้ใช้งาน
TOR Reference: 1.2.13.2.8
Pre-condition: 
- มีการสั่งยา Atorvastatin ราคา 15 บาท
- เภสัชกรมีสิทธิ์แก้ไขราคา
- พยาบาลไม่มีสิทธิ์แก้ไขราคา
Test Steps:
1. เภสัชกรเข้าสู่หน้ารายการยา
2. แก้ไขราคา Atorvastatin เป็น 10 บาท
3. เปลี่ยนประเภทการชำระจาก "จ่ายตรง" เป็น "เบิกได้"
4. ระบุเหตุผล: "ผู้ป่วยยากจน"
5. บันทึกการแก้ไข
6. พยาบาลพยายามแก้ไขราคา
Expected Result: 
- เภสัชกร: แก้ไขราคาสำเร็จ
- ต้องระบุเหตุผลการแก้ไข
- บันทึก Log การแก้ไข
- เชื่อมโยงกับระบบการเงิน (1.2.14)
- พยาบาล: ไม่อนุญาตให้แก้ไข (ไม่มีสิทธิ์)
Test Data: Original: 15฿, Modified: 10฿, User: เภสัชกร (อนุญาต), พยาบาล (ไม่อนุญาต)

Test Case: ERROR - การสั่งยาโดยไม่เลือกผู้ป่วย

Test ID: TC-PHARM-E009
Description: ทดสอบการป้องกันการสั่งยาโดยไม่ได้เลือกผู้ป่วย
TOR Reference: 1.2.13.2.1
Pre-condition: 
- อยู่ในหน้าสั่งยา แต่ยังไม่ได้เลือกผู้ป่วย
Test Steps:
1. เข้าสู่หน้าสั่งยา OPD
2. พยายามค้นหาและเลือกยาโดยตรง (ไม่เลือกผู้ป่วยก่อน)
3. พยายามบันทึก
Expected Result: 
- แสดงข้อความเตือน: "กรุณาเลือกผู้ป่วยก่อนสั่งยา"
- ปิดการใช้งานปุ่มสั่งยา
- ไฮไลท์ช่องค้นหาผู้ป่วย
- ไม่อนุญาตให้สั่งยา
Test Data: Patient: Not selected, Expected: Error

Test Case: ERROR - การสั่งยาที่หยุดจำหน่าย

Test ID: TC-PHARM-E010
Description: ทดสอบการป้องกันการสั่งยาที่หยุดจำหน่าย
TOR Reference: 1.2.13.1.3, 1.2.13.2.1
Pre-condition: 
- ยา "Losartan 50mg" อยู่ในสถานะหยุดจำหน่าย
Test Steps:
1. แพทย์พยายามค้นหายา "Losartan"
2. พบยาในรายการแต่มีสถานะ "หยุดจำหน่าย"
3. พยายามเลือกยา
Expected Result: 
- แสดงยาพร้อมสถานะ "หยุดจำหน่าย"
- แสดงข้อความ: "ยาหมดชั่วคราว คาดว่าจะมียาวันที่ 15 พ.ย. 2568"
- แสดงยาทดแทนแนะนำ: "Irbesartan 150mg"
- ไม่อนุญาตให้เลือกยา
- สามารถเลือกยาทดแทนแทนได้
Test Data: Drug: Losartan, Status: หยุดจำหน่าย, Alternative: Irbesartan

Test Case: ERROR - การสั่งยาโดยไม่ระบุวิธีใช้

Test ID: TC-PHARM-E011
Description: ทดสอบการป้องกันการสั่งยาโดยไม่มีวิธีใช้
TOR Reference: 1.2.13.2.1
Pre-condition: 
- เลือกยาแล้วแต่ยังไม่กรอกวิธีใช้
Test Steps:
1. เลือกยา "Metformin 500mg"
2. กรอกเฉพาะจำนวน: 60 เม็ด
3. ไม่กรอกวิธีใช้ (ความถี่, เวลา)
4. พยายามบันทึก
Expected Result: 
- แสดงข้อความเตือน: "กรุณาระบุวิธีใช้ยา"
- ไฮไลท์ช่องวิธีใช้
- ไม่อนุญาตให้บันทึก
- แนะนำวิธีใช้มาตรฐานของยานั้น
Test Data: Drug: Metformin, Quantity: 60, Instruction: Missing

Test Case: FAIL - Template โหลดไม่สมบูรณ์

Test ID: TC-PHARM-F004
Description: ทดสอบกรณี Template โหลดได้เพียงบางรายการ
TOR Reference: 1.2.13.2.2
Pre-condition: 
- Template "เบาหวาน" มียา 3 รายการ
- ยา 1 รายการหยุดจำหน่าย
Test Steps:
1. แพทย์เลือก Template "เบาหวาน"
2. ระบบโหลดเฉพาะยา 2 รายการที่มียา
3. ไม่แจ้งเตือนว่ามียาที่โหลดไม่ได้
Expected Result (Fail Scenario):
- ควรแสดงเตือน: "Template ไม่สมบูรณ์ มียา 1 รายการที่ไม่สามารถโหลดได้"
- ควรแสดงรายชื่อยาที่หายไปพร้อมเหตุผล
- ควรแนะนำยาทดแทน
Root Cause (ตัวอย่าง):
- ไม่มีการตรวจสอบความพร้อมของยาใน Template
- ไม่แจ้งเตือนผู้ใช้
Test Data: Template: 3 items, Loaded: 2 items, Missing Alert: Yes

Test Case: FAIL - RE-MED แสดงยาที่ไม่ใช่ของผู้ป่วย

Test ID: TC-PHARM-F005
Description: ทดสอบกรณี RE-MED แสดงประวัติยาผิดคน
TOR Reference: 1.2.13.2.3
Pre-condition: 
- ผู้ป่วย HN: 001234 เคยได้รับ Metformin
- ผู้ป่วย HN: 005678 เคยได้รับ Insulin
Test Steps:
1. เลือกผู้ป่วย HN: 001234
2. คลิก RE-MED
3. ระบบแสดงยาของผู้ป่วย HN: 005678 (Insulin)
Expected Result (Fail Scenario):
- ควรแสดงเฉพาะยาของ HN: 001234 (Metformin)
- แต่แสดงยาของคนอื่น (Insulin)
Root Cause (ตัวอย่าง):
- Query ไม่ Filter ตาม HN ที่ถูกต้อง
- Session HN ผิดพลาด
- Cache ข้อมูลผู้ป่วยคนก่อนหน้า
Test Data: Current HN: 001234, Shown: 005678's drugs, Expected: Wrong

Test Case: ERROR - การแก้ไขราคาโดยไม่ระบุเหตุผล

Test ID: TC-PHARM-E012
Description: ทดสอบการบังคับให้ระบุเหตุผลเมื่อแก้ไขราคา
TOR Reference: 1.2.13.2.8
Pre-condition: 
- เภสัชกรมีสิทธิ์แก้ไขราคา
Test Steps:
1. เภสัชกรแก้ไขราคายาจาก 15 บาท เป็น 5 บาท
2. ไม่กรอกเหตุผล
3. พยายามบันทึก
Expected Result: 
- แสดงข้อความเตือน: "กรุณาระบุเหตุผลการแก้ไขราคา"
- ไฮไลท์ช่องเหตุผล
- ไม่อนุญาตให้บันทึก
Test Data: Price Change: 15→5, Reason: Not provided, Expected: Error

Test Case: FAIL - Drug Interaction ไม่แสดงเมื่อสั่งพร้อมกัน

Test ID: TC-PHARM-F006
Description: ทดสอบกรณีสั่งยา 2 ตัวพร้อมกันแต่ไม่ตรวจสอบ Interaction
TOR Reference: 1.2.13.2.10
Pre-condition: 
- มี Drug Interaction: Warfarin + Aspirin
Test Steps:
1. แพทย์เลือกยา Warfarin และ Aspirin พร้อมกัน
2. บันทึกการสั่งยาทั้ง 2 ตัวพร้อมกัน
3. ระบบไม่แสดง Alert Interaction
Expected Result (Fail Scenario):
- ควรตรวจสอบ Interaction ระหว่างยาที่สั่งในครั้งเดียวกัน
- ควรแสดง Alert ก่อนบันทึก
Root Cause (ตัวอย่าง):
- ตรวจสอบเฉพาะกับยาที่มีอยู่แล้ว
- ไม่ตรวจสอบระหว่างยาที่สั่งใหม่ด้วยกัน
Test Data: New Drugs: Warfarin + Aspirin (same time), Interaction Check: Failed

🏥 กลุ่มที่ 3: การสั่งยาและเวชภัณฑ์ผู้ป่วยใน (TOR 1.2.13.3)

Test Case: การสั่งยาแบบ Continue Order

Test ID: TC-PHARM-029
Description: ทดสอบการสั่งยาแบบต่อเนื่อง (Continuous Order) สำหรับผู้ป่วยใน
TOR Reference: 1.2.13.3.1, 4
Pre-condition: 
- ผู้ป่วย AN: 2025001 Admit อยู่ที่หอผู้ป่วยใน
- แพทย์ล็อกอินสำเร็จ
Test Steps:
1. แพทย์เข้าสู่หน้าสั่งยา IPD
2. เลือกผู้ป่วย AN: 2025001
3. เลือกประเภทคำสั่ง: "Continue Order"
4. เลือกยา "Metformin 500mg"
5. กำหนดวิธีใช้: "1 เม็ด เช้า-เย็น"
6. กำหนดวันเวลาเริ่มใช้: "1 พ.ย. 2568 08:00"
7. กำหนดวันเวลาหยุดใช้: "10 พ.ย. 2568 08:00"
8. ระบบคำนวณ day-dose อัตโนมัติ: 10 วัน
9. บันทึกการสั่งยา
Expected Result: 
- บันทึก Continue Order สำเร็จ
- คำนวณ day-dose = 10 วัน (20 เม็ด)
- สร้างตาราง Medication Schedule เช้า-เย็น
- แสดงในรายการยาต่อเนื่อง
- เชื่อมโยงกับระบบผู้ป่วยใน (1.2.17)
- แสดงใน Medication Profile
- จ่ายยาทีละวันตามตาราง
Test Data: AN: 2025001, Drug: Metformin BID, Duration: 10 days, Type: Continue

Test Case: การสั่งยาแบบ One Day Order

Test ID: TC-PHARM-030
Description: ทดสอบการสั่งยาแบบรายวัน (One Day Order) สำหรับผู้ป่วยใน
TOR Reference: 1.2.13.3.1
Pre-condition: 
- ผู้ป่วย AN: 2025001 Admit อยู่ในโรงพยาบาล
Test Steps:
1. แพทย์เข้าสู่หน้าสั่งยา IPD
2. เลือกผู้ป่วย AN: 2025001
3. เลือกประเภทคำสั่ง: "One Day Order"
4. เลือกยา "Paracetamol 500mg"
5. กำหนดวิธีใช้: "1 เม็ด เมื่อมีไข้ (PRN)"
6. กำหนดจำนวน: 10 เม็ด
7. กำหนดวันที่: "1 พ.ย. 2568"
8. บันทึกการสั่งยา
Expected Result: 
- บันทึก One Day Order สำเร็จ
- ยามีผลเฉพาะวันที่กำหนด
- ไม่ต่ออายุอัตโนมัติในวันถัดไป
- แสดงใน Medication Profile ของวันนั้น
- จ่ายยาได้ทั้งหมด 10 เม็ดสำหรับวันนั้น
- เภสัชกร Verify และจ่ายยาได้
Test Data: AN: 2025001, Drug: Paracetamol PRN, Qty: 10, Type: One Day

Test Case: การสั่งยาแบบ STAT

Test ID: TC-PHARM-031
Description: ทดสอบการสั่งยาแบบเร่งด่วนทันที (STAT) สำหรับผู้ป่วยใน
TOR Reference: 1.2.13.3.1
Pre-condition: 
- ผู้ป่วย AN: 2025001 มีอาการเฉียบพลัน
Test Steps:
1. แพทย์เข้าสู่หน้าสั่งยา IPD
2. เลือกผู้ป่วย AN: 2025001
3. เลือกประเภทคำสั่ง: "STAT"
4. เลือกยา "Furosemide 40mg IV"
5. กำหนดขนาด: "1 amp"
6. กำหนดวิธีให้: "IV push"
7. บันทึกการสั่งยา
8. ตรวจสอบการแจ้งเตือนเภสัชกร
Expected Result: 
- บันทึก STAT Order สำเร็จ
- แสดงสถานะ "เร่งด่วน" ชัดเจน
- แจ้งเตือนเภสัชกรทันที (Alert/Notification)
- จ่ายยาได้ทันทีโดยไม่รอคิว
- แสดงเวลาที่สั่งและต้องให้ยา
- เชื่อมโยงกับระบบผู้ป่วยใน (1.2.17)
- บันทึกใน Medication Profile
Test Data: AN: 2025001, Drug: Furosemide 40mg IV, Type: STAT, Priority: Urgent

Test Case: การสั่งยากลับบ้าน

Test ID: TC-PHARM-032
Description: ทดสอบการสั่งยากลับบ้านสำหรับผู้ป่วยที่จำหน่าย
TOR Reference: 1.2.13.3.1
Pre-condition: 
- ผู้ป่วย AN: 2025001 กำลังจะจำหน่าย (Discharge)
- ผู้ป่วยมีการนัดหมายพบแพทย์อีกครั้งในอีก 14 วัน
Test Steps:
1. แพทย์เข้าสู่หน้าสั่งยา IPD
2. เลือกผู้ป่วย AN: 2025001
3. เลือกประเภทคำสั่ง: "ยากลับบ้าน (Discharge Medication)"
4. เลือกยา "Amlodipine 5mg"
5. กำหนดวิธีใช้: "1 เม็ด เช้า"
6. เลือก "คำนวณตามวันนัด" = 14 วัน
7. ระบบคำนวณจำนวน = 14 เม็ด
8. เพิ่มยา "Atorvastatin 20mg" - 1 เม็ด เย็น - 14 เม็ด
9. บันทึกการสั่งยา
Expected Result: 
- บันทึกยากลับบ้านสำเร็จ
- คำนวณจำนวนตามวันนัดอัตโนมัติ
- เชื่อมโยงกับระบบนัดหมาย (1.2.6)
- เชื่อมโยงกับระบบผู้ป่วยใน (1.2.17)
- แสดงในใบสรุปการจำหน่าย (Discharge Summary)
- พิมพ์ฉลากยาได้
- เชื่อมโยงกับระบบการเงิน (1.2.14)
Test Data: AN: 2025001, Type: Discharge, Drugs: 2 items, Duration: 14 days

Test Case: การระบุ Day-Dose เอง

Test ID: TC-PHARM-033
Description: ทดสอบการสั่งยาโดยระบุจำนวน day-dose เอง
TOR Reference: 1.2.13.3.4
Pre-condition: 
- ผู้ป่วย AN: 2025001 Admit อยู่
Test Steps:
1. แพทย์เข้าสู่หน้าสั่งยา IPD
2. เลือกผู้ป่วย AN: 2025001
3. เลือกยา "Omeprazole 20mg"
4. กำหนดวิธีใช้: "1 แคปซูล ก่อนอาหารเช้า"
5. เลือก "กำหนด day-dose เอง"
6. ระบุ day-dose: 7 วัน
7. ระบบคำนวณจำนวน = 7 แคปซูล
8. บันทึกการสั่งยา
Expected Result: 
- บันทึกการสั่งยาสำเร็จ
- ใช้ day-dose ที่ระบุ (7 วัน)
- คำนวณจำนวนยาถูกต้อง (7 แคปซูล)
- แสดงวันที่คาดว่ายาจะหมด
- แจ้งเตือนเภสัชกรเมื่อใกล้หมด
Test Data: Drug: Omeprazole OD, Day-dose: 7 days, Quantity: 7 caps

Test Case: การดู Medication Profile

Test ID: TC-PHARM-034
Description: ทดสอบการดูข้อมูลการใช้ยาระหว่างการพักรักษาตัว (Profile Sheet)
TOR Reference: 1.2.13.3.5
Pre-condition: 
- ผู้ป่วย AN: 2025001 Admit มา 5 วัน
- มียาต่อเนื่อง 3 รายการ
- มียา One Day 2 รายการ
- มียา STAT 1 รายการ
Test Steps:
1. เข้าสู่หน้า Medication Profile
2. เลือกผู้ป่วย AN: 2025001
3. เลือกช่วงเวลา: "ทั้งหมดตั้งแต่ Admit"
4. ตรวจสอบรายการยาทั้งหมด
5. กรองเฉพาะ "Continue Order"
6. กรองเฉพาะยาที่ให้แล้ว (Administered)
7. ดูรายละเอียดการให้ยาแต่ละครั้ง
Expected Result: 
- แสดง Medication Profile ครบถ้วน
- แสดงยาทุกประเภท (Continue/One Day/STAT)
- แสดงสถานะ: สั่งแล้ว/จ่ายแล้ว/ให้แล้ว
- แสดงวันเวลาที่ให้ยา
- แสดงผู้ให้ยา (พยาบาล/เภสัชกร)
- สามารถกรองและค้นหาได้
- สามารถพิมพ์ Profile Sheet ได้
- แสดงกราฟการใช้ยา (ถ้ามี)
Test Data: AN: 2025001, Days: 5, Continue: 3, One Day: 2, STAT: 1

Test Case: การ Add Chart จาก Medication Profile

Test ID: TC-PHARM-035
Description: ทดสอบการนำรายการยาจาก Profile มาสั่งจ่ายซ้ำ
TOR Reference: 1.2.13.3.2
Pre-condition: 
- ผู้ป่วย AN: 2025001 มียาต่อเนื่องที่กำลังใช้อยู่
Test Steps:
1. แพทย์เข้าสู่หน้าสั่งยา IPD
2. เลือกผู้ป่วย AN: 2025001
3. คลิกปุ่ม "Add Chart"
4. แสดง Medication Profile ปัจจุบัน
5. เลือกยา "Metformin 500mg" และ "Amlodipine 5mg"
6. แก้ไขขนาด Metformin จาก 500mg เป็น 1000mg
7. คง Amlodipine เดิม
8. เพิ่มยาใหม่ "Atorvastatin 20mg"
9. บันทึกการสั่งยา
Expected Result: 
- แสดง Medication Profile สำเร็จ
- เลือกยาจาก Profile ได้
- สามารถแก้ไขรายการที่เลือกได้
- สามารถเพิ่มยาใหม่ได้
- บันทึกการสั่งยาสำเร็จ
- ยาเดิมที่แก้ไขจะหยุดและเริ่มใหม่
Test Data: Profile: 5 drugs, Selected: 2, Modified: 1, Added: 1

Test Case: การพิมพ์ใบแจ้งรายการยาผู้ป่วยใน

Test ID: TC-PHARM-036
Description: ทดสอบการพิมพ์ใบแจ้งรายการยาและเวชภัณฑ์สำหรับผู้ป่วยใน
TOR Reference: 1.2.13.3.3
Pre-condition: 
- ผู้ป่วย AN: 2025001 มียาสั่งแล้ว 5 รายการ
Test Steps:
1. เข้าสู่หน้ารายการยาผู้ป่วยใน
2. เลือกผู้ป่วย AN: 2025001
3. เลือกช่วงเวลา: วันนี้
4. คลิกปุ่ม "พิมพ์ใบแจ้งรายการยา"
5. ตรวจสอบเอกสารที่พิมพ์
Expected Result: 
- พิมพ์ใบแจ้งรายการยาสำเร็จ
- แสดงข้อมูลผู้ป่วย: HN, AN, ชื่อ, หอผู้ป่วย, เตียง
- แสดงรายการยาทั้งหมด
- แสดงวิธีใช้, ขนาด, เวลา
- แสดงประเภทคำสั่ง (Continue/One Day/STAT)
- แสดงแพทย์ผู้สั่ง
- แสดงวันที่พิมพ์
Test Data: AN: 2025001, Drugs: 5 items, Document: ใบแจ้งรายการยา

Test Case: การพิมพ์ใบสั่งยาพร้อมฉลากยาผู้ป่วยใน

Test ID: TC-PHARM-037
Description: ทดสอบการพิมพ์ใบสั่งยาและฉลากยาสำหรับผู้ป่วยใน
TOR Reference: 1.2.13.3.3
Pre-condition: 
- ผู้ป่วย AN: 2025001 มียาสั่งแล้ว
- เภสัชกร Verify ยาเรียบร้อย
Test Steps:
1. เภสัชกรเข้าสู่หน้าจ่ายยาผู้ป่วยใน
2. เลือกผู้ป่วย AN: 2025001
3. เลือกยาที่จะจ่าย (วันนี้)
4. คลิกปุ่ม "พิมพ์ใบสั่งยาพร้อมฉลาก"
5. ตรวจสอบเอกสารที่พิมพ์
Expected Result: 
- พิมพ์ใบสั่งยาสำเร็จ
- พิมพ์ฉลากยาทุกรายการ
- ฉลากแสดงข้อมูล: ชื่อยา, วิธีใช้, เวลา, HN, AN
- ฉลากแสดงข้อความเตือน (ถ้ามี)
- แสดง Barcode สำหรับสแกน
- แยกฉลากตามเวลาให้ยา (เช้า/กลางวัน/เย็น/ก่อนนอน)
Test Data: AN: 2025001, Print: Prescription + Labels

Test Case: การบันทึกการคืนยาผู้ป่วยใน

Test ID: TC-PHARM-038
Description: ทดสอบการบันทึกการคืนยาเมื่อผู้ป่วยจำหน่าย
TOR Reference: 1.2.13.3.6
Pre-condition: 
- ผู้ป่วย AN: 2025001 จำหน่ายแล้ว
- มียาเหลือ 3 รายการ: Metformin 30 เม็ด, Amlodipine 20 เม็ด, Omeprazole 10 แคปซูล
Test Steps:
1. เภสัชกรเข้าสู่หน้าคืนยาผู้ป่วยใน
2. เลือกผู้ป่วย AN: 2025001
3. แสดงรายการยาที่จ่ายไปแล้ว
4. เลือกยาที่ต้องการคืน:
   - Metformin 30 เม็ด
   - Amlodipine 20 เม็ด
5. ระบุเหตุผล: "ผู้ป่วยจำหน่าย"
6. ระบุสภาพยา: "สภาพดี สามารถนำกลับเข้าสต็อกได้"
7. บันทึกการคืนยา
Expected Result: 
- บันทึกการคืนยาสำเร็จ
- แสดงรายการยาที่คืน
- อัปเดตสถานะยา
- เชื่อมโยงกับระบบคลัง (ถ้ามี) เพื่อคืนสต็อก
- เชื่อมโยงกับระบบการเงิน (1.2.14) เพื่อคืนเงิน
- พิมพ์ใบรับคืนยาได้
- บันทึก Log ผู้คืนยาและเวลา
Test Data: AN: 2025001, Return: Metformin 30, Amlodipine 20, Reason: Discharge

Test Case: การดูประวัติการใช้ยาผู้ป่วยนอก

Test ID: TC-PHARM-039
Description: ทดสอบการดูประวัติการใช้ยาผู้ป่วยนอกขณะที่ผู้ป่วย Admit
TOR Reference: 1.2.13.3.7
Pre-condition: 
- ผู้ป่วย HN: 001234, AN: 2025001 Admit อยู่
- มีประวัติใช้ยาผู้ป่วยนอกก่อน Admit
Test Steps:
1. แพทย์เข้าสู่หน้าสั่งยา IPD
2. เลือกผู้ป่วย AN: 2025001
3. คลิกปุ่ม "ดูประวัติ OPD"
4. เลือกช่วงเวลา: 3 เดือนที่แล้ว
5. ตรวจสอบรายการยาที่เคยได้รับ
6. เลือกยาเพื่อสั่งต่อใน IPD
Expected Result: 
- แสดงประวัติการใช้ยา OPD สำเร็จ
- แสดงยาที่เคยได้รับ
- แสดงวันที่และหน่วยตรวจ
- แสดงแพทย์ผู้สั่ง
- เชื่อมโยงกับระบบเวชระเบียน (1.2.1)
- สามารถเลือกยามาสั่งต่อได้
Test Data: HN: 001234, AN: 2025001, OPD History: 3 months

Test Case: การดูผล Lab ประกอบการสั่งยา

Test ID: TC-PHARM-040
Description: ทดสอบการดูข้อมูลผล Lab เพื่อประกอบการสั่งยา
TOR Reference: 1.2.13.3.8
Pre-condition: 
- ผู้ป่วย AN: 2025001 มีผล Lab:
  * Creatinine = 2.5 mg/dL (สูง)
  * eGFR = 35 mL/min (ต่ำ)
Test Steps:
1. แพทย์เข้าสู่หน้าสั่งยา IPD
2. เลือกผู้ป่วย AN: 2025001
3. คลิกปุ่ม "ดูผล Lab"
4. ตรวจสอบผล Renal Function
5. พยายามสั่งยา "Metformin 1000mg"
6. ตรวจสอบการแจ้งเตือน
Expected Result: 
- แสดงผล Lab ล่าสุดสำเร็จ
- เชื่อมโยงกับระบบงานชันสูตร (1.2.7)
- แสดง Alert: "ผู้ป่วยมี Renal Impairment (eGFR 35), Metformin ไม่แนะนำ"
- แสดงค่า Lab ที่เกี่ยวข้อง
- แนะนำการปรับขนาดยาหรือยาทางเลือก
- อนุญาตให้สั่งต่อได้หากมีเหตุผล
Test Data: AN: 2025001, Cr: 2.5, eGFR: 35, Drug: Metformin, Alert: ไม่แนะนำ

Test Case: การแสดงสรุปรวมตามหมวดรายจ่าย

Test ID: TC-PHARM-041
Description: ทดสอบการแสดงสรุปรวมการจ่ายยาตามหมวดรายจ่าย
TOR Reference: 1.2.13.3.1
Pre-condition: 
- ผู้ป่วย AN: 2025001 ใช้ยามา 7 วัน
Test Steps:
1. เข้าสู่หน้าสรุปการใช้ยาผู้ป่วยใน
2. เลือกผู้ป่วย AN: 2025001
3. เลือกรูปแบบ: "สรุปรวมตามหมวด"
4. ตรวจสอบข้อมูลที่แสดง
Expected Result: 
- แสดงสรุปตามหมวด:
  * ยาระบบหัวใจและหลอดเลือด - 2 รายการ
  * ยาระบบทางเดินอาหาร - 1 รายการ
  * ยาต้านการติดเชื้อ - 1 รายการ
- แสดงจำนวนและมูลค่ารวมแต่ละหมวด
- แสดงมูลค่ารวมทั้งหมด
- สามารถดูรายละเอียดแต่ละหมวดได้
- เชื่อมโยงกับระบบการเงิน (1.2.14)
Test Data: AN: 2025001, Categories: 3, Total Items: 4

Test Case: ERROR - การสั่งยา Continue โดยไม่กำหนดวันหยุด

Test ID: TC-PHARM-E013
Description: ทดสอบการป้องกันการสั่ง Continue Order โดยไม่กำหนดวันหยุด
TOR Reference: 1.2.13.3.4
Pre-condition: 
- ผู้ป่วย AN: 2025001 Admit อยู่
Test Steps:
1. แพทย์เลือกประเภท "Continue Order"
2. เลือกยา "Metformin 500mg"
3. กำหนดวันเริ่มใช้: "1 พ.ย. 2568"
4. ไม่กำหนดวันหยุดใช้
5. พยายามบันทึก
Expected Result: 
- แสดงข้อความเตือน: "กรุณากำหนดวันหยุดใช้ยา"
- หรือแสดงตัวเลือก "ใช้จนกว่าจะสั่งหยุด"
- ไม่อนุญาตให้บันทึกหากไม่ระบุ
Test Data: Type: Continue, Start: 01-Nov-2568, End: Not specified, Expected: Error

Test Case: ERROR - การระบุ day-dose เป็น 0 หรือติดลบ

Test ID: TC-PHARM-E014
Description: ทดสอบการป้องกันการระบุ day-dose ที่ไม่ถูกต้อง
TOR Reference: 1.2.13.3.4
Pre-condition: 
- กำลังสั่งยาผู้ป่วยใน
Test Steps:
1. เลือกยา "Omeprazole 20mg"
2. เลือก "กำหนด day-dose เอง"
3. ระบุ day-dose: 0 วัน
4. พยายามบันทึก
Expected Result: 
- แสดงข้อความเตือน: "day-dose ต้องมากกว่า 0"
- ไม่อนุญาตให้บันทึก
- แนะนำค่าที่เหมาะสม (1-30 วัน)
Test Data: Day-dose: 0, Expected: Error, Valid Range: 1-30

Test Case: ERROR - การคืนยามากกว่าที่จ่ายไป

Test ID: TC-PHARM-E015
Description: ทดสอบการป้องกันการคืนยามากกว่าจำนวนที่จ่ายไป
TOR Reference: 1.2.13.3.6
Pre-condition: 
- ผู้ป่วยได้รับ Metformin ไป 60 เม็ด
Test Steps:
1. เภสัชกรบันทึกคืนยา Metformin
2. ระบุจำนวนคืน: 80 เม็ด (มากกว่าที่จ่ายไป)
3. พยายามบันทึก
Expected Result: 
- แสดงข้อความเตือน: "จำนวนคืนเกินกว่าที่จ่ายไป (จ่ายไป 60 เม็ด)"
- ไม่อนุญาตให้บันทึก
- แสดงจำนวนที่จ่ายไป
Test Data: Dispensed: 60, Return: 80, Expected: Error

Test Case: FAIL - Continue Order ไม่หยุดตามวันที่กำหนด

Test ID: TC-PHARM-F007
Description: ทดสอบกรณียาต่อเนื่องไม่หยุดอัตโนมัติตามวันที่กำหนด
TOR Reference: 1.2.13.3.4
Pre-condition: 
- Continue Order: Metformin วันหยุด = 10 พ.ย. 2568
- วันนี้: 11 พ.ย. 2568
Test Steps:
1. เภสัชกรเข้าสู่หน้าจ่ายยาผู้ป่วยใน
2. เลือกผู้ป่วย AN: 2025001
3. ระบบยังแสดงยา Metformin ให้จ่ายต่อ
Expected Result (Fail Scenario):
- ควรหยุดยาอัตโนมัติตามวันที่กำหนด
- ไม่ควรแสดงในรายการยาที่ต้องจ่าย
Root Cause (ตัวอย่าง):
- ไม่มี Job Schedule ตรวจสอบวันหยุดยา
- Logic เปรียบเทียบวันที่ผิดพลาด
Test Data: Stop Date: 10-Nov, Current: 11-Nov, Status: Still Active (Wrong)

Test Case: FAIL - Add Chart แสดงยาที่หยุดไปแล้ว

Test ID: TC-PHARM-F008
Description: ทดสอบกรณี Add Chart แสดงยาที่หยุดใช้ไปแล้ว
TOR Reference: 1.2.13.3.2
Pre-condition: 
- ผู้ป่วยมียา 5 รายการ
- ยา 2 รายการหยุดใช้ไปแล้ว
Test Steps:
1. แพทย์คลิก "Add Chart"
2. ระบบแสดงยาทั้ง 5 รายการ (รวมยาที่หยุดแล้ว)
3. แพทย์เลือกยาที่หยุดไปแล้ว
Expected Result (Fail Scenario):
- ควรแสดงเฉพาะยาที่ Active
- ไม่ควรแสดงยาที่หยุดแล้ว หรือแสดงแยกชัดเจน
- ควรเตือนเมื่อเลือกยาที่หยุดแล้ว
Root Cause (ตัวอย่าง):
- Query ไม่ Filter สถานะยา
- ไม่แสดงสถานะยาชัดเจน
Test Data: Total Drugs: 5 (3 Active, 2 Stopped), Shown: All 5

Test Case: FAIL - Medication Profile ไม่แสดงการให้ยาล่าสุด

Test ID: TC-PHARM-F009
Description: ทดสอบกรณี Profile ไม่อัปเดตเวลาจริง
TOR Reference: 1.2.13.3.5
Pre-condition: 
- พยาบาลให้ยาเมื่อ 5 นาทีที่แล้ว
Test Steps:
1. แพทย์เข้าดู Medication Profile
2. ตรวจสอบการให้ยาล่าสุด
3. ไม่พบการให้ยาที่พยาบาลบันทึกเมื่อ 5 นาทีที่แล้ว
Expected Result (Fail Scenario):
- ควรแสดงการให้ยาล่าสุดแบบ Real-time
- ควรมี Refresh/Auto-update
Root Cause (ตัวอย่าง):
- ไม่มี Real-time update
- ต้อง Refresh หน้าเอง
- Caching ข้อมูลนานเกินไป
Test Data: Last Admin: 5 min ago, Shown: Not updated

❌ กลุ่มที่ 4: การยกเลิกการสั่งยาและเวชภัณฑ์ (TOR 1.2.13.4)

Test Case: การแก้ไขรายการยาก่อนชำระเงิน

Test ID: TC-PHARM-042
Description: ทดสอบการแก้ไขรายการยาเมื่อยังไม่ได้ชำระเงิน
TOR Reference: 1.2.13.4.1
Pre-condition: 
- ผู้ป่วยมีใบสั่งยา Rx: 2568001
- มียา 3 รายการ: Paracetamol, Amoxicillin, Omeprazole
- ยังไม่ชำระเงิน
Test Steps:
1. เภสัชกรเข้าสู่หน้ารายการยา
2. เลือกใบสั่งยา Rx: 2568001
3. ตรวจสอบสถานะ: "ยังไม่ชำระเงิน"
4. คลิกปุ่ม "แก้ไขรายการ"
5. แก้ไขจำนวน Paracetamol จาก 20 เป็น 30 เม็ด
6. ลบรายการ Omeprazole
7. เพิ่มยาใหม่ "Cetrizine 10mg" - 10 เม็ด
8. บันทึกการแก้ไข
Expected Result: 
- อนุญาตให้แก้ไขได้
- แก้ไขจำนวนยาสำเร็จ
- ลบรายการยาสำเร็จ
- เพิ่มยาใหม่สำเร็จ
- อัปเดตราคารวมทันที
- บันทึก Log การแก้ไข
- เชื่อมโยงกับระบบการเงิน (1.2.14)
Test Data: Rx: 2568001, Status: ยังไม่ชำระ, Modified: 3 changes

Test Case: การยกเลิกรายการยาก่อนชำระเงิน

Test ID: TC-PHARM-043
Description: ทดสอบการยกเลิกรายการยาทั้งหมดเมื่อยังไม่ได้ชำระเงิน
TOR Reference: 1.2.13.4.1
Pre-condition: 
- ผู้ป่วยมีใบสั่งยา Rx: 2568002
- ยังไม่ชำระเงิน
Test Steps:
1. เภสัชกรเข้าสู่หน้ารายการยา
2. เลือกใบสั่งยา Rx: 2568002
3. คลิกปุ่ม "ยกเลิกใบสั่งยา"
4. ระบุเหตุผล: "ผู้ป่วยไม่ต้องการรับยา"
5. ยืนยันการยกเลิก
Expected Result: 
- อนุญาตให้ยกเลิกได้
- เปลี่ยนสถานะเป็น "ยกเลิก"
- บันทึกเหตุผลการยกเลิก
- บันทึกผู้ยกเลิกและเวลา
- ไม่สามารถจ่ายยาได้อีก
- เชื่อมโยงกับระบบการเงิน (1.2.14)
Test Data: Rx: 2568002, Action: Cancel, Reason: ผู้ป่วยไม่ต้องการ

Test Case: การแก้ไขยาหลังชำระเงินโดยยกเลิกใบเสร็จ

Test ID: TC-PHARM-044
Description: ทดสอบการแก้ไขยาหลังชำระเงินผ่านกระบวนการยกเลิกใบเสร็จ
TOR Reference: 1.2.13.4.2
Pre-condition: 
- ผู้ป่วยชำระเงินแล้ว Receipt: 256800123
- รับยาไปแล้ว: Paracetamol 20 เม็ด
- ต้องการเปลี่ยนเป็น Ibuprofen
Test Steps:
1. เภสัชกรเข้าสู่หน้ารายการยา
2. เลือกใบสั่งยาที่ชำระแล้ว
3. ตรวจสอบสถานะ: "ชำระเงินแล้ว"
4. พยายามแก้ไข -> แสดงข้อความ "ต้องยกเลิกใบเสร็จก่อน"
5. คลิกลิงก์ "ยกเลิกใบเสร็จ"
6. เชื่อมโยงไปยังระบบการเงิน (1.2.14)
7. ทำการยกเลิกใบเสร็จสำเร็จ
8. กลับมาแก้ไขรายการยา
9. ลบ Paracetamol และเพิ่ม Ibuprofen
10. บันทึกการแก้ไข
11. ออกใบเสร็จใหม่
Expected Result: 
- ไม่อนุญาตให้แก้ไขโดยตรง
- แสดงข้อความเตือนชัดเจน
- ต้องผ่านกระบวนการยกเลิกใบเสร็จ
- เชื่อมโยงกับระบบการเงิน (1.2.14)
- หลังยกเลิกใบเสร็จแล้วสามารถแก้ไขได้
- ออกใบเสร็จใหม่สำเร็จ
- บันทึก Audit Trail ครบถ้วน
Test Data: Receipt: 256800123, Status: Paid, Action: Require receipt cancellation

Test Case: การยกเลิกยาหลังจ่ายแล้วบางส่วน

Test ID: TC-PHARM-045
Description: ทดสอบการยกเลิกยาบางรายการหลังจากจ่ายไปแล้ว
TOR Reference: 1.2.13.4.2
Pre-condition: 
- ผู้ป่วยชำระเงินแล้ว
- รับยาไป 3 รายการ: Paracetamol, Amoxicillin, Omeprazole
- ต้องการยกเลิก Omeprazole
Test Steps:
1. เภสัชกรยกเลิกใบเสร็จในระบบการเงิน (1.2.14)
2. กลับมาที่ระบบเภสัชกรรม
3. เลือกใบสั่งยา
4. ลบรายการ Omeprazole
5. บันทึกการแก้ไข
6. คำนวณเงินคืนจำนวน = ราคา Omeprazole
7. ออกใบเสร็จใหม่สำหรับยา 2 รายการ
8. คืนเงินให้ผู้ป่วย
Expected Result: 
- สามารถลบรายการได้
- คำนวณเงินคืนถูกต้อง
- ออกใบเสร็จใหม่สำเร็จ
- บันทึกการคืนเงิน
- เชื่อมโยงกับระบบการเงิน (1.2.14)
- บันทึก Audit Trail
Test Data: Original: 3 items, Modified: 2 items, Refund: Omeprazole price

Test Case: ERROR - การพยายามแก้ไขยาหลังชำระโดยไม่ยกเลิกใบเสร็จ

Test ID: TC-PHARM-E016
Description: ทดสอบการป้องกันการแก้ไขยาหลังชำระเงินโดยไม่ยกเลิกใบเสร็จ
TOR Reference: 1.2.13.4.2
Pre-condition: 
- ผู้ป่วยชำระเงินแล้ว
- รับยาไปแล้ว
Test Steps:
1. เภสัชกรพยายามแก้ไขรายการยาโดยตรง
2. พยายามบันทึก
Expected Result: 
- แสดงข้อความเตือน: "ไม่สามารถแก้ไขได้ เนื่องจากชำระเงินแล้ว"
- แสดงคำแนะนำ: "กรุณายกเลิกใบเสร็จในระบบการเงินก่อน"
- แสดงลิงก์ไปยังระบบการเงิน (1.2.14)
- ไม่อนุญาตให้แก้ไข
Test Data: Status: Paid, Action: Direct Edit, Expected: Blocked

Test Case: FAIL - ยกเลิกใบเสร็จแล้วแต่ยังไม่อนุญาตให้แก้ไข

Test ID: TC-PHARM-F010
Description: ทดสอบกรณียกเลิกใบเสร็จแล้วแต่ระบบยังล็อกการแก้ไข
TOR Reference: 1.2.13.4.2
Pre-condition: 
- ใบเสร็จถูกยกเลิกในระบบการเงิน (1.2.14)
- สถานะในระบบการเงิน: "Cancelled"
Test Steps:
1. เภสัชกรกลับมาที่ระบบเภสัชกรรม
2. พยายามแก้ไขรายการยา
3. ระบบยังแสดงว่าชำระเงินแล้ว
4. ไม่อนุญาตให้แก้ไข
Expected Result (Fail Scenario):
- ควรอัปเดตสถานะเป็น "ยกเลิกใบเสร็จแล้ว"
- ควรอนุญาตให้แก้ไขได้
Root Cause (ตัวอย่าง):
- ไม่มี Webhook/Callback จากระบบการเงิน
- ไม่อัปเดตสถานะอัตโนมัติ
- ต้อง Sync manual
Test Data: Receipt: Cancelled (Financial), Status: Still Paid (Pharmacy)

✅ กลุ่มที่ 5: การตรวจสอบการสั่ง/จ่ายยาและเวชภัณฑ์ (TOR 1.2.13.5)

Test Case: การตรวจสอบ Drug Interaction ขณะบันทึกสั่งยา

Test ID: TC-PHARM-046
Description: ทดสอบการตรวจสอบ Drug Interaction ขณะแพทย์สั่งยา
TOR Reference: 1.2.13.5.1
Pre-condition: 
- ผู้ป่วยกำลังใช้ "Warfarin 5mg" อยู่
- มี Drug Interaction: Warfarin + NSAIDs = High Risk
Test Steps:
1. แพทย์สั่งยาเพิ่ม "Ibuprofen 400mg"
2. ตรวจสอบ Alert ที่แสดง
3. อ่านรายละเอียด Interaction
4. ตัดสินใจสั่งยาต่อ พร้อมระบุเหตุผล
5. บันทึกการสั่งยา
Expected Result: 
- แสดง Alert Drug Interaction ทันที
- แสดงระดับความรุนแรง: "High"
- แสดงกลไกการเกิด Interaction
- แสดงอาการที่อาจเกิด
- แสดงคำแนะนำ/การจัดการ
- อนุญาตให้สั่งต่อได้หากระบุเหตุผล
- บันทึก Log การเตือนและการตัดสินใจ
Test Data: Current: Warfarin, New: Ibuprofen, Interaction: High, Allow: Yes with reason

Test Case: การแจ้งเตือนยาอันตรายต่อผู้ป่วยพิเศษขณะจ่ายยา

Test ID: TC-PHARM-047
Description: ทดสอบการเตือนเภสัชกรเมื่อ Verify ยาที่อันตรายต่อผู้ป่วยพิเศษ
TOR Reference: 1.2.13.5.2
Pre-condition: 
- ผู้ป่วยเป็นหญิงตั้งครรภ์ 12 สัปดาห์
- แพทย์สั่งยา "Aspirin 300mg" (มี Warning)
Test Steps:
1. เภสัชกรเข้าสู่หน้า Verify ยา
2. เลือกใบสั่งยาของผู้ป่วย
3. ตรวจสอบ Alert ที่แสดง
Expected Result: 
- แสดง Alert: "หญิงตั้งครรภ์"
- แสดงคำเตือน: "Aspirin อาจอันตรายต่อทารก"
- แสดงข้อมูลอายุครรภ์
- แสดงความเสี่ยง
- เภสัชกรต้องยืนยันก่อน Verify
- บันทึก Log การเตือนและการยืนยัน
Test Data: Patient: Pregnancy 12 weeks, Drug: Aspirin, Alert: Warning

Test Case: การบันทึกจ่ายยาผู้ป่วยในทีละราย

Test ID: TC-PHARM-048
Description: ทดสอบการบันทึกการจ่ายยาสำหรับผู้ป่วยในทีละรายผู้ป่วย
TOR Reference: 1.2.13.5.3
Pre-condition: 
- มีผู้ป่วยใน AN: 2025001 รอรับยาวันนี้
- มียา 3 รายการที่ต้องจ่าย
Test Steps:
1. เภสัชกรเข้าสู่หน้าจ่ายยาผู้ป่วยใน
2. เลือกผู้ป่วย AN: 2025001
3. แสดงรายการยาที่ต้องจ่ายวันนี้
4. Verify ความถูกต้องของแต่ละรายการ
5. เตรียมยาทั้งหมด
6. สแกน Barcode ยาแต่ละรายการ
7. บันทึกการจ่ายยา
8. พิมพ์ฉลากยา
Expected Result: 
- แสดงรายการยาถูกต้อง
- สามารถ Verify ทีละรายการได้
- รองรับการสแกน Barcode
- บันทึกการจ่ายยาสำเร็จ
- บันทึกผู้จ่ายและเวลา
- อัปเดตสถานะใน Medication Profile
- พิมพ์ฉลากได้
Test Data: AN: 2025001, Drugs: 3 items, Dispense: Success

Test Case: การสอบถามข้อมูลการจ่ายยา

Test ID: TC-PHARM-049
Description: ทดสอบการสอบถามข้อมูลแพทย์ผู้สั่ง หน่วยตรวจ สิทธิ วันเวลา
TOR Reference: 1.2.13.5.4
Pre-condition: 
- มีใบสั่งยา Rx: 2568003
Test Steps:
1. เภสัชกรเข้าสู่หน้ารายละเอียดใบสั่งยา
2. เลือกใบสั่งยา Rx: 2568003
3. ตรวจสอบข้อมูลที่แสดง
Expected Result: 
- แสดงแพทย์ผู้สั่ง: "นพ.สมชาย ใจดี"
- แสดงหน่วยตรวจ: "ห้องตรวจอายุรกรรม"
- แสดงสิทธิการรักษา: "หลักประกันสุขภาพ (UC)"
- แสดงวันที่สั่งยา: "1 พ.ย. 2568 10:30"
- แสดงวันเวลาที่ต้องจ่าย
- เชื่อมโยงกับระบบเวชระเบียน (1.2.1)
- เชื่อมโยงกับระบบตรวจสอบสิทธิ (1.2.15)
Test Data: Rx: 2568003, Doctor: นพ.สมชาย, Dept: อายุรกรรม, Rights: UC

Test Case: การแยกบัญชียาและเวชภัณฑ์

Test ID: TC-PHARM-050
Description: ทดสอบการแยกบัญชีเวชภัณฑ์ออกจากบัญชียา
TOR Reference: 1.2.13.5.5
Pre-condition: 
- มีใบสั่งรวม ยา 3 รายการ และเวชภัณฑ์ 2 รายการ
Test Steps:
1. เภสัชกรเข้าสู่หน้าสรุปรายการ
2. เลือกใบสั่งยา Rx: 2568004
3. คลิกปุ่ม "แยกตามประเภท"
4. ตรวจสอบการจัดกลุ่ม
Expected Result: 
- แยกแสดงบัญชียา:
  * Paracetamol 500mg
  * Amoxicillin 500mg
  * Omeprazole 20mg
- แยกแสดงบัญชีเวชภัณฑ์:
  * Gauze 4x4 inch
  * Alcohol swab
- แสดงมูลค่ารวมแยกกัน
- สามารถพิมพ์รายงานแยกได้
- เชื่อมโยงกับระบบการเงิน (1.2.14)
Test Data: Rx: 2568004, Drugs: 3, Supplies: 2

Test Case: การ Verify ยาโดยเภสัชกร

Test ID: TC-PHARM-051
Description: ทดสอบกระบวนการ Verify ความถูกต้องของคำสั่งยาโดยเภสัชกร
TOR Reference: 1.2.13.5.1-2
Pre-condition: 
- มีใบสั่งยาใหม่รอ Verify
- เภสัชกรล็อกอินสำเร็จ
Test Steps:
1. เภสัชกรเข้าสู่หน้ารายการยารอ Verify
2. เลือกใบสั่งยา Rx: 2568005
3. ตรวจสอบความถูกต้องของ:
   - ชื่อยา ขนาด วิธีใช้
   - ความเหมาะสมกับผู้ป่วย
   - Drug Interaction
   - ขนาดยาตามอายุ/น้ำหนัก
4. ตรวจสอบ Alert ต่างๆ ที่ระบบแสดง
5. แก้ไข/ปรับขนาดยา (ถ้าจำเป็น)
6. คลิกปุ่ม "Verify"
7. ระบุ Username และ Password
8. ยืนยันการ Verify
Expected Result: 
- แสดงรายการยาทั้งหมด
- แสดง Alert ที่เกี่ยวข้อง
- สามารถแก้ไขได้หากมีข้อผิดพลาด
- Verify สำเร็จ
- บันทึกผู้ Verify และเวลา
- เปลี่ยนสถานะเป็น "Verified"
- พร้อมจ่ายยา
Test Data: Rx: 2568005, Pharmacist: ภก.สมหญิง, Status: Verified

Test Case: ERROR - การจ่ายยาโดยไม่ผ่านการ Verify

Test ID: TC-PHARM-E017
Description: ทดสอบการป้องกันการจ่ายยาที่ยังไม่ได้ Verify
TOR Reference: 1.2.13.5.3
Pre-condition: 
- มีใบสั่งยา Rx: 2568006
- สถานะ: "รอ Verify"
Test Steps:
1. เจ้าหน้าที่จ่ายยาพยายามจ่ายยา
2. พยายามบันทึกการจ่าย
Expected Result: 
- แสดงข้อความเตือน: "ยังไม่ได้รับการ Verify จากเภสัชกร"
- ไม่อนุญาตให้จ่ายยา
- แสดงปุ่มติดต่อเภสัชกร
Test Data: Rx: 2568006, Status: Pending Verify, Action: Dispense, Expected: Blocked

Test Case: FAIL - Drug Interaction ไม่แสดงเมื่อ Verify

Test ID: TC-PHARM-F011
Description: ทดสอบกรณีเภสัชกร Verify แต่ไม่เห็น Drug Interaction Alert
TOR Reference: 1.2.13.5.1
Pre-condition: 
- ผู้ป่วยใช้ Warfarin อยู่
- แพทย์สั่ง Aspirin เพิ่ม (มี Interaction)
Test Steps:
1. เภสัชกรเข้า Verify ใบสั่งยา
2. ระบบไม่แสดง Alert Drug Interaction
3. เภสัชกร Verify ผ่าน
Expected Result (Fail Scenario):
- ควรแสดง Alert Drug Interaction
- ควรเตือนเภสัชกรก่อน Verify
Root Cause (ตัวอย่าง):
- ไม่ตรวจสอบซ้ำเมื่อ Verify
- พึ่งพาการตรวจสอบของแพทย์เพียงอย่างเดียว
Test Data: Current: Warfarin, New: Aspirin, Verify Alert: Not shown (Wrong)

🖨️ กลุ่มที่ 6: การพิมพ์เอกสาร (TOR 1.2.13.6)

Test Case: การพิมพ์ใบสั่งยาภาษาไทย

Test ID: TC-PHARM-052
Description: ทดสอบการพิมพ์ใบสั่งยาในรูปแบบภาษาไทย
TOR Reference: 1.2.13.6.1
Pre-condition: 
- มีใบสั่งยา Rx: 2568007 พร้อมจ่าย
Test Steps:
1. เภสัชกรเลือกใบสั่งยา Rx: 2568007
2. คลิกปุ่ม "พิมพ์ใบสั่งยา"
3. เลือกภาษา: "ไทย"
4. ตรวจสอบตัวอย่างเอกสาร
5. คลิกปุ่ม "พิมพ์"
Expected Result: 
- พิมพ์ใบสั่งยาภาษาไทยสำเร็จ
- แสดงข้อมูลผู้ป่วย: HN, ชื่อ-สกุล, อายุ
- แสดงรายการยาทั้งหมด (ภาษาไทย)
- แสดงวิธีใช้ (ภาษาไทย)
- แสดงจำนวนและราคา
- แสดงแพทย์ผู้สั่ง
- แสดงเภสัชกรผู้จ่าย
- แสดงวันที่และเวลา
- มี QR Code (ถ้ามี)
Test Data: Rx: 2568007, Language: Thai, Format: Standard

Test Case: การพิมพ์ใบสั่งยาภาษาอังกฤษ

Test ID: TC-PHARM-053
Description: ทดสอบการพิมพ์ใบสั่งยาในรูปแบบภาษาอังกฤษ
TOR Reference: 1.2.13.6.1
Pre-condition: 
- มีใบสั่งยา Rx: 2568008 พร้อมจ่าย
- ผู้ป่วยเป็นชาวต่างชาติ
Test Steps:
1. เภสัชกรเลือกใบสั่งยา Rx: 2568008
2. คลิกปุ่ม "พิมพ์ใบสั่งยา"
3. เลือกภาษา: "อังกฤษ (English)"
4. ตรวจสอบตัวอย่างเอกสาร
5. คลิกปุ่ม "พิมพ์"
Expected Result: 
- พิมพ์ใบสั่งยาภาษาอังกฤษสำเร็จ
- แสดงข้อมูลผู้ป่วย (English)
- แสดงชื่อยาเป็นภาษาอังกฤษ (Generic name)
- แสดงวิธีใช้เป็นภาษาอังกฤษ
- แสดงคำเตือนเป็นภาษาอังกฤษ
- แสดงจำนวนและราคา
- รูปแบบเอกสารมาตรฐานสากล
Test Data: Rx: 2568008, Language: English, Patient: Foreign

Test Case: การพิมพ์ฉลากยาพร้อมวิธีใช้ (ภาษาไทย)

Test ID: TC-PHARM-054
Description: ทดสอบการพิมพ์ฉลากยาพร้อมวิธีใช้และคำแนะนำภาษาไทย
TOR Reference: 1.2.13.6.2
Pre-condition: 
- มียา 3 รายการพร้อมจ่าย
Test Steps:
1. เภสัชกรเลือกยาที่ต้องการพิมพ์ฉลาก
2. คลิกปุ่ม "พิมพ์ฉลากยา"
3. เลือกภาษา: "ไทย"
4. เลือกขนาดฉลาก: "มาตรฐาน 5x7 cm"
5. คลิกปุ่ม "พิมพ์"
Expected Result: 
- พิมพ์ฉลากยาทั้ง 3 รายการ
- แสดงชื่อยา (ไทย)
- แสดงความแรง
- แสดงวิธีใช้: "รับประทานวันละ 2 ครั้ง เช้า-เย็น หลังอาหาร"
- แสดงจำนวน: "20 เม็ด"
- แสดงคำเตือน: "ห้ามใช้เมื่อท้อง"
- แสดงฉลากช่วย (icon/สัญลักษณ์)
- แสดง HN, ชื่อผู้ป่วย
- แสดง Barcode
Test Data: Drugs: 3, Labels: 3, Language: Thai, Size: 5x7cm

Test Case: การพิมพ์ฉลากยาพร้อมวิธีใช้ (ภาษาอังกฤษ)

Test ID: TC-PHARM-055
Description: ทดสอบการพิมพ์ฉลากยาพร้อมวิธีใช้และคำแนะนำภาษาอังกฤษ
TOR Reference: 1.2.13.6.2
Pre-condition: 
- มียา 2 รายการพร้อมจ่าย
- ผู้ป่วยต้องการฉลากภาษาอังกฤษ
Test Steps:
1. เภสัชกรเลือกยาทั้ง 2 รายการ
2. คลิกปุ่ม "พิมพ์ฉลากยา"
3. เลือกภาษา: "อังกฤษ (English)"
4. เลือกขนาดฉลาก: "มาตรฐาน"
5. คลิกปุ่ม "พิมพ์"
Expected Result: 
- พิมพ์ฉลากภาษาอังกฤษสำเร็จ
- แสดงชื่อยา (Generic name)
- แสดงวิธีใช้: "Take 1 tablet twice daily, morning and evening, after meals"
- แสดงคำเตือน: "Do not use during pregnancy"
- แสดงฉลากช่วย (icon)
- แสดง HN, ชื่อผู้ป่วย
- แสดง Barcode
Test Data: Drugs: 2, Labels: 2, Language: English

Test Case: การพิมพ์หนังสือรับรองการขอยานอกบัญชี

Test ID: TC-PHARM-056
Description: ทดสอบการพิมพ์หนังสือรับรองการขออนุมัติค่ายานอกบัญชียาหลักแห่งชาติ
TOR Reference: 1.2.13.6.3
Pre-condition: 
- ผู้ป่วยได้รับยานอกบัญชี "Celecoxib 200mg"
- ผู้ป่วยมีสิทธิ UC
Test Steps:
1. เภสัชกรเข้าสู่หน้ารายการยานอกบัญชี
2. เลือกยา "Celecoxib 200mg"
3. คลิกปุ่ม "พิมพ์หนังสือขออนุมัติ"
4. กรอกเหตุผลการใช้ยานอกบัญชี
5. กรอกชื่อแพทย์ผู้ขออนุมัติ
6. ตรวจสอบเอกสาร
7. คลิกปุ่ม "พิมพ์"
Expected Result: 
- พิมพ์หนังสือรับรองสำเร็จ
- แสดงข้อมูลผู้ป่วย
- แสดงชื่อยานอกบัญชี
- แสดงเหตุผลการใช้ยา
- แสดงการวินิจฉัย (ICD10)
- แสดงแพทย์ผู้ขออนุมัติ
- แสดงหัวหน้าแผนกผู้อนุมัติ
- มีช่องลงนามและตราประทับ
- รูปแบบตามมาตรฐาน สปสช.
Test Data: Drug: Celecoxib (นอกบัญชี), Rights: UC, Document: ใบขออนุมัติ

Test Case: การพิมพ์ฉลากยาแบบกำหนดเอง

Test ID: TC-PHARM-057
Description: ทดสอบการปรับแต่งและพิมพ์ฉลากยาตามต้องการ
TOR Reference: 1.2.13.6.2
Pre-condition: 
- มียาพิเศษที่ต้องการฉลากแบบกำหนดเอง
Test Steps:
1. เภสัชกรเลือกยา "Morphine 10mg"
2. คลิกปุ่ม "ฉลากกำหนดเอง"
3. เลือกขนาดฉลาก: "ใหญ่ 7x10 cm"
4. เพิ่มข้อความเตือน: "ยาควบคุมพิเศษ ห้ามโอน"
5. เพิ่มไอคอนเตือน: "ระวังเสพติด"
6. เลือกแบบอักษรใหญ่
7. ตรวจสอบตัวอย่าง
8. คลิกปุ่ม "พิมพ์"
Expected Result: 
- สามารถปรับแต่งฉลากได้
- เลือกขนาดได้
- เพิ่มข้อความได้
- เพิ่มไอคอนได้
- ปรับขนาดตัวอักษรได้
- พิมพ์ตามที่กำหนดสำเร็จ
Test Data: Drug: Morphine, Label: Custom 7x10cm, Warning: ยาควบคุม

Test Case: ERROR - การพิมพ์ใบสั่งยาก่อน Verify

Test ID: TC-PHARM-E018
Description: ทดสอบการป้องกันการพิมพ์ใบสั่งยาที่ยังไม่ได้ Verify
TOR Reference: 1.2.13.6.1
Pre-condition: 
- มีใบสั่งยา Rx: 2568009
- สถานะ: "รอ Verify"
Test Steps:
1. พยายามพิมพ์ใบสั่งยา
Expected Result: 
- แสดงข้อความเตือน: "ยังไม่ได้รับการ Verify"
- ไม่อนุญาตให้พิมพ์
- แสดงสถานะปัจจุบัน
Test Data: Rx: 2568009, Status: Pending, Action: Print, Expected: Blocked

Test Case: FAIL - ฉลากยาพิมพ์ไม่ชัดเจน

Test ID: TC-PHARM-F012
Description: ทดสอบกรณีฉลากยาพิมพ์ออกมาไม่ชัดเจน
TOR Reference: 1.2.13.6.2
Pre-condition: 
- เครื่องพิมพ์ฉลากพร้อมใช้งาน
Test Steps:
1. พิมพ์ฉลากยา
2. ตรวจสอบฉลากที่พิมพ์ออกมา
3. Barcode สแกนไม่ได้
4. ข้อความบางส่วนจางหรือขาดหาย
Expected Result (Fail Scenario):
- ควรตรวจสอบคุณภาพการพิมพ์
- ควรเตือนเมื่อหมึกใกล้หมด
- ควรมีตัวอย่างก่อนพิมพ์
Root Cause (ตัวอย่าง):
- ไม่ตรวจสอบสถานะเครื่องพิมพ์
- หมึกใกล้หมด
- การตั้งค่าคุณภาพต่ำ
Test Data: Print Quality: Poor, Barcode: Not scannable

📊 สรุปรวม Test Cases

สรุปตามกลุ่ม

กลุ่ม TOR Reference Normal Error Fail รวม
1. การจัดการข้อมูลพื้นฐาน 1.2.13.1 16 7 3 26
2. การสั่งยาผู้ป่วยนอก 1.2.13.2 12 4 3 19
3. การสั่งยาผู้ป่วยใน 1.2.13.3 13 3 3 19
4. การยกเลิกการสั่งยา 1.2.13.4 4 1 1 6
5. การตรวจสอบ/จ่ายยา 1.2.13.5 6 1 1 8
6. การพิมพ์เอกสาร 1.2.13.6 6 1 1 8
รวมทั้งหมด 57 17 12 86

สรุปตามประเภท Test Case

Normal Test Cases (57 Cases): - ครอบคลุมฟังก์ชันหลักทุกส่วนตาม TOR - ทดสอบ Happy Path และการใช้งานปกติ - ครอบคลุมการเชื่อมโยงกับระบบอื่น

Error Test Cases (17 Cases): - ทดสอบการป้องกัน Invalid Input - ทดสอบการแจ้งเตือนที่ถูกต้อง - ทดสอบ Validation ต่างๆ

Fail Test Cases (12 Cases): - ทดสอบ Edge Cases และ Corner Cases - ระบุ Root Cause ที่เป็นไปได้ - ช่วยในการปรับปรุงคุณภาพระบบ

ความครอบคลุมตาม TOR

TOR 1.2.13.1 - ข้อมูลพื้นฐาน (20 ข้อ) - ครอบคลุม 100% - ทดสอบทั้งทะเบียนยา, Drug Interaction, รหัสมาตรฐาน, Notify

TOR 1.2.13.2 - การสั่งยาผู้ป่วยนอก (12 ข้อ) - ครอบคลุม 100% - ทดสอบทั้ง Template, RE-MED, Drug Allergy, Interaction

TOR 1.2.13.3 - การสั่งยาผู้ป่วยใน (8 ข้อ) - ครอบคลุม 100% - ทดสอบ Continue, One Day, STAT, Profile, Add Chart

TOR 1.2.13.4 - การยกเลิกการสั่งยา (2 ข้อ) - ครอบคลุม 100% - ทดสอบการแก้ไข/ยกเลิกก่อนและหลังชำระเงิน

TOR 1.2.13.5 - การตรวจสอบ/จ่ายยา (5 ข้อ) - ครอบคลุม 100% - ทดสอบ Verify, Dispense, Drug Interaction Check

TOR 1.2.13.6 - การพิมพ์เอกสาร (3 ข้อ) - ครอบคลุม 100% - ทดสอบใบสั่งยา, ฉลากยา, หนังสือขออนุมัติ (ไทย/อังกฤษ)

การเชื่อมโยงกับระบบอื่น

Test Cases ครอบคลุมการทดสอบการเชื่อมโยงกับระบบต่อไปนี้:

  • ✅ ระบบเวชระเบียน (1.2.1) - ข้อมูลผู้ป่วย, Visit, การวินิจฉัย
  • ✅ ระบบซักประวัติ (1.2.2) - การแพ้ยา, ประวัติสุขภาพ
  • ✅ ระบบห้องตรวจแพทย์ (1.2.3) - คำสั่งยา OPD
  • ✅ ระบบห้องฉุกเฉิน (1.2.4) - คำสั่งยาฉุกเฉิน
  • ✅ ระบบทันตกรรม (1.2.5) - คำสั่งยาทันตกรรม
  • ✅ ระบบนัดหมาย (1.2.6) - การคำนวณยาตามวันนัด
  • ✅ ระบบงานชันสูตร (1.2.7) - ผล Lab ประกอบการสั่งยา
  • ✅ ระบบการเงิน (1.2.14) - การชำระเงิน, การคืนเงิน, ยกเลิกใบเสร็จ
  • ✅ ระบบตรวจสอบสิทธิ (1.2.15) - สิทธิการรักษา, ราคาตามสิทธิ
  • ✅ ระบบผู้ป่วยใน (1.2.17) - คำสั่งยา IPD, Medication Profile

📝 หมายเหตุสำหรับการทดสอบ

ข้อแนะนำในการใช้ Test Cases

  1. ลำดับการทดสอบ: แนะนำให้ทดสอบตามลำดับกลุ่ม (1-6) เนื่องจากมีการพึ่งพากัน
  2. ข้อมูลทดสอบ: ใช้ข้อมูลตาม Test Data ที่ระบุ หรือปรับให้เหมาะสมกับสภาพแวดล้อมการทดสอบ
  3. Error Cases: ต้องทดสอบทุก Case เพื่อให้มั่นใจว่าระบบป้องกันข้อผิดพลาดได้
  4. Fail Cases: ใช้เป็นแนวทางในการตรวจสอบคุณภาพและปรับปรุงระบบ
  5. Integration Tests: ต้องมีระบบเชื่อมโยงพร้อมใช้งานสำหรับการทดสอบ

Prerequisites สำหรับการทดสอบ

ข้อมูล Master Data: - ✅ ทะเบียนยาและเวชภัณฑ์ครบถ้วน - ✅ Drug Interaction Database - ✅ ข้อมูล Contraindication - ✅ Template การสั่งยา - ✅ รหัสมาตรฐาน (GPO, TMT, 24 หลัก)

ข้อมูลผู้ใช้: - ✅ แพทย์ (ทั่วไป และเฉพาะทาง) - ✅ เภสัชกร - ✅ พยาบาล - ✅ เจ้าหน้าที่จ่ายยา

ข้อมูลผู้ป่วย: - ✅ ผู้ป่วยนอก (OPD) - ✅ ผู้ป่วยใน (IPD) - ✅ ผู้ป่วยที่มีประวัติการแพ้ยา - ✅ ผู้ป่วยพิเศษ (หญิงตั้งครรภ์, เด็ก, G6PD)

สภาพแวดล้อม: - ✅ ฐานข้อมูลพร้อมใช้งาน - ✅ ระบบเชื่อมโยงพร้อมใช้งาน - ✅ เครื่องพิมพ์ใบสั่งยาและฉลากยา - ✅ Barcode Scanner (ถ้ามี)

การบันทึกผลการทดสอบ

สำหรับแต่ละ Test Case ควรบันทึก: - ✅ ผลการทดสอบ (Pass/Fail) - ✅ วันที่และเวลาที่ทดสอบ - ✅ ผู้ทดสอบ - ✅ หมายเหตุ (ถ้ามี) - ✅ Screenshot หรือหลักฐาน (กรณี Fail) - ✅ Bug Report ID (ถ้าพบข้อผิดพลาด)

ระดับความสำคัญ (Priority)

Critical (ต้องผ่านก่อนใช้งานจริง): - Drug Interaction Checking - Drug Allergy Alert - Contraindication Check - การตรวจสอบสิทธิ์ผู้สั่งยา - การยกเลิกใบเสร็จ

High (ควรผ่านก่อนใช้งานจริง): - การสั่งยา OPD/IPD - การ Verify และ Dispense - การพิมพ์เอกสาร - RE-MED และ Template

Medium (สามารถแก้ไขหลังใช้งานได้): - การคำนวณอัตโนมัติ - การแสดงกราฟ - การ Export ข้อมูล


✅ เกณฑ์การผ่าน (Acceptance Criteria)

ระบบเภสัชกรรมจะถือว่าพร้อมใช้งานเมื่อ:

  1. Normal Test Cases ผ่านอย่างน้อย 95% (54/57 Cases)
  2. Error Test Cases ผ่าน 100% (17/17 Cases) - ต้องป้องกันข้อผิดพลาดได้ทั้งหมด
  3. Fail Test Cases ที่พบ - มีแผนแก้ไขหรือ Workaround
  4. Critical Priority Tests ผ่าน 100%
  5. Integration Tests กับระบบอื่นผ่านครบทุกระบบ
  6. Performance Tests - Response time < 3 วินาที
  7. Security Tests - ผ่านการตรวจสอบสิทธิ์และ Audit Trail

เอกสารนี้จัดทำขึ้นเพื่อใช้ในการทดสอบระบบเภสัชกรรมสำหรับโรงพยาบาลค่ายธนรัชต์ และต้องได้รับการอนุมัติจากผู้มีอำนาจก่อนนำไปใช้ในการทดสอบระบบ