Data Flow Diagram (DFD)
ระบบเภสัชกรรม (Pharmacy Information System)
เวอร์ชัน: 1.0
วันที่: 30 ตุลาคม 2568
สอดคล้องกับ: SRS ระบบเภสัชกรรม v1.0, TOR ระบบเภสัชกรรม, ERD v1.0, และ Schema v1.0
สารบัญ
- ภาพรวมระบบ
- Context Diagram
- Level 0 DFD
- Level 1 DFD - การจัดการข้อมูลพื้นฐาน
- Level 1 DFD - การสั่งยาผู้ป่วยนอก
- Level 1 DFD - การสั่งยาผู้ป่วยใน
- Level 1 DFD - การตรวจสอบและจ่ายยา
- Level 1 DFD - การพิมพ์เอกสาร
- Data Dictionary
- API Integration Flow
1. ภาพรวมระบบ
ระบบเภสัชกรรมทำหน้าที่เป็น Pharmacy Hub System ที่จัดการข้อมูลยาและเวชภัณฑ์ทั้งหมดของโรงพยาบาล โดยเป็นศูนย์กลางในการรับคำสั่งยาจากหน่วยตรวจต่างๆ ตรวจสอบความปลอดภัย และจ่ายยาให้กับผู้ป่วย
การไหลของข้อมูลหลัก:
- Input: ข้อมูลทะเบียนยาและเวชภัณฑ์, คำสั่งยาจากหน่วยตรวจต่างๆ (OPD/IPD/ER), ข้อมูลผู้ป่วยจากระบบเวชระเบียน (1.2.1), ข้อมูลสิทธิจากระบบตรวจสอบสิทธิ (1.2.15), ข้อมูลการแพ้ยาจากระบบซักประวัติ (1.2.2)
- Processing: การตรวจสอบ Drug Interaction, การตรวจสอบการแพ้ยา, การตรวจสอบข้อห้ามใช้ (Contraindication), การคำนวณขนาดยา, การจัดการคำสั่งยาต่อเนื่อง (IPD), การ Verify และ Dispense, การคำนวณราคาตามสิทธิ
- Output: ใบสั่งยา (ไทย/อังกฤษ), ฉลากยา (ไทย/อังกฤษ), หนังสือรับรองยานอกบัญชี, Medication Profile, รายการยาที่จ่าย, ข้อมูลค่าใช้จ่ายยา
- Integration: เชื่อมต่อกับระบบเวชระเบียน (1.2.1), ระบบซักประวัติ (1.2.2), ระบบห้องตรวจแพทย์ (1.2.3), ระบบห้องฉุกเฉิน (1.2.4), ระบบทันตกรรม (1.2.5), ระบบนัดหมาย (1.2.6), ระบบงานชันสูตร (1.2.7), ระบบการเงิน (1.2.14), ระบบตรวจสอบสิทธิ (1.2.15), ระบบผู้ป่วยใน (1.2.17)
ฟีเจอร์หลักตาม TOR:
1. ข้อมูลพื้นฐาน (1.2.13.1): - กำหนดข้อมูลทะเบียนยาและเวชภัณฑ์ครบถ้วน รวมถึงรหัสมาตรฐาน (GPO, INV, TMT, 24 หลัก) - บันทึกรูปภาพยา รายละเอียดส่วนประกอบ (Ingredient) และคำช่วยค้นหา - จัดกลุ่มยาในบัญชี/นอกบัญชี ยาควบคุมพิเศษ - กำหนดราคาทุน ราคาขาย และราคาตามสิทธิการรักษา - กำหนดสิทธิการสั่งใช้ยาตามกลุ่มผู้ใช้งาน ผู้ป่วย และสิทธิ - การจัดการ Drug Interaction พร้อมระดับความรุนแรง - การกำหนด Notify สำหรับหญิงตั้งครรภ์, ให้นมบุตร, เด็ก, G6PD, เพศ - กำหนดตัวยาที่ห้ามสั่งจ่ายกับรหัสโรค (ICD10)
2. การสั่งยาและเวชภัณฑ์ผู้ป่วยนอก (1.2.13.2): - สั่งยาโดยแพทย์, ทันตแพทย์, พยาบาล, เภสัชกร และบุคลากรอื่นที่ได้รับมอบหมาย - สั่งยาแบบรายการ, Template, และ RE-MED (สั่งยาซ้ำ) - ระบบเตือนการแพ้ยา Drug Interaction และข้อห้ามใช้ - แจ้งเตือนยาที่อาจเป็นอันตรายต่อหญิงตั้งครรภ์ ให้นมบุตร และเด็ก - พิมพ์สติกเกอร์ทุกรายการหรือบางรายการ - แก้ไขราคายาหรือประเภทการชำระเงินตามสิทธิ์ผู้ใช้งาน
3. การสั่งยาและเวชภัณฑ์ผู้ป่วยใน (1.2.13.3): - สั่งยาแบบ Continue Order (ต่อเนื่อง), One Day Order (รายวัน), STAT (เร่งด่วน) - สั่งยากลับบ้านสำหรับผู้ป่วยที่จำหน่าย - กำหนด day-dose และระยะเวลาการใช้ยา - ดู Medication Profile (การใช้ยาระหว่างพักรักษา) - Add chart เพื่อสั่งยาซ้ำจาก Profile - บันทึกการคืนยาของผู้ป่วยใน - ดูประวัติการใช้ยาผู้ป่วยนอกและผล Lab
4. การยกเลิกการสั่งยาและเวชภัณฑ์ (1.2.13.4): - แก้ไขรายการยาได้เมื่อยังไม่ชำระเงิน - ยกเลิก/แก้ไขหลังชำระเงินต้องผ่านกระบวนการยกเลิกใบเสร็จรับเงิน
5. การตรวจสอบการสั่ง/จ่ายยา (1.2.13.5): - ตรวจสอบและแจ้งเตือน Drug Interaction - แจ้งเตือนยาอันตรายต่อกลุ่มผู้ป่วยพิเศษ - บันทึกการจ่ายยาผู้ป่วยในทีละราย - สอบถามข้อมูลแพทย์ผู้สั่ง, หน่วยตรวจ, สิทธิ, วันเวลาที่สั่งยา - แยกบัญชีเวชภัณฑ์ออกจากบัญชียา
6. การพิมพ์ (1.2.13.6): - ใบสั่งยา (ไทย/อังกฤษ) - ฉลากยาพร้อมวิธีใช้และคำแนะนำ (ไทย/อังกฤษ) - หนังสือรับรองการขอยานอกบัญชียาหลักแห่งชาติ
2. Context Diagram
graph TD
%% External Entities
DOCTOR["👨⚕️ แพทย์/ทันตแพทย์<br/>Doctor/Dentist"]
NURSE["👩⚕️ พยาบาล<br/>Nurse"]
PHARMACIST["💊 เภสัชกร<br/>Pharmacist"]
STAFF["👤 บุคลากรอื่น<br/>Other Staff"]
PATIENT["🧑 ผู้ป่วย<br/>Patient"]
%% Main System
PHARM["💊 ระบบเภสัชกรรม<br/>1.2.13<br/>Pharmacy Information System"]
%% External Systems
MR["📋 ระบบเวชระเบียน<br/>1.2.1<br/>Medical Records"]
HIST["📝 ระบบซักประวัติ<br/>1.2.2<br/>History Taking"]
EXAM["🏥 ระบบห้องตรวจแพทย์<br/>1.2.3<br/>Examination Room"]
ER["🚑 ระบบห้องฉุกเฉิน<br/>1.2.4<br/>Emergency Room"]
DENT["🦷 ระบบทันตกรรม<br/>1.2.5<br/>Dental"]
APPT["📅 ระบบนัดหมาย<br/>1.2.6<br/>Appointment"]
LAB["🔬 ระบบงานชันสูตร<br/>1.2.7<br/>Laboratory"]
FIN["💰 ระบบการเงิน<br/>1.2.14<br/>Finance"]
ELIG["✅ ระบบตรวจสอบสิทธิ<br/>1.2.15<br/>Eligibility"]
IPD["🏨 ระบบผู้ป่วยใน<br/>1.2.17<br/>Inpatient"]
%% Data Flows - Input from Users
DOCTOR -->|"คำสั่งยา OPD/IPD<br/>Drug Orders"| PHARM
NURSE -->|"บันทึกการจ่ายยา<br/>Dispense Records"| PHARM
PHARMACIST -->|"Verify & Dispense<br/>Drug Interaction"| PHARM
STAFF -->|"บันทึกข้อมูลยา<br/>Drug Master Data"| PHARM
PATIENT -->|"ขอรับยา<br/>Request Medicine"| PHARM
%% Data Flows - Integration with Systems
MR -->|"ข้อมูลผู้ป่วย, HN<br/>Patient Info"| PHARM
HIST -->|"ประวัติการแพ้ยา<br/>Drug Allergy"| PHARM
EXAM -->|"คำสั่งยา OPD<br/>OPD Prescription"| PHARM
ER -->|"คำสั่งยาฉุกเฉิน<br/>Emergency Rx"| PHARM
DENT -->|"คำสั่งยาทันตกรรม<br/>Dental Rx"| PHARM
APPT -->|"วันนัด, Day-Dose<br/>Appointment Date"| PHARM
LAB -->|"ผล Lab<br/>Lab Results"| PHARM
ELIG -->|"ข้อมูลสิทธิ, ราคา<br/>Coverage Info"| PHARM
IPD -->|"คำสั่งยาผู้ป่วยใน<br/>IPD Orders"| PHARM
%% Data Flows - Output to Users
PHARM -->|"ใบสั่งยา, ฉลากยา<br/>Prescription, Labels"| PATIENT
PHARM -->|"รายงาน Drug Interaction<br/>Interaction Report"| DOCTOR
PHARM -->|"Alert การแพ้ยา<br/>Allergy Alert"| PHARMACIST
PHARM -->|"รายการยาที่จ่าย<br/>Dispensed Medicines"| NURSE
%% Data Flows - Output to Systems
PHARM -->|"ข้อมูลค่ายา<br/>Medication Cost"| FIN
PHARM -->|"Medication History<br/>ประวัติการใช้ยา"| MR
PHARM -->|"ยานอกบัญชี<br/>Non-Essential Drugs"| ELIG
PHARM -->|"Medication Profile<br/>Profile ผู้ป่วยใน"| IPD
%% Styling
style PHARM fill:#e1bee7,stroke:#7b1fa2,stroke-width:3px
style DOCTOR fill:#fff9c4,stroke:#f57f17,stroke-width:2px
style NURSE fill:#fff9c4,stroke:#f57f17,stroke-width:2px
style PHARMACIST fill:#fff9c4,stroke:#f57f17,stroke-width:2px
style STAFF fill:#fff9c4,stroke:#f57f17,stroke-width:2px
style PATIENT fill:#fff9c4,stroke:#f57f17,stroke-width:2px
style MR fill:#e3f2fd,stroke:#1565c0,stroke-width:2px
style HIST fill:#e3f2fd,stroke:#1565c0,stroke-width:2px
style EXAM fill:#e3f2fd,stroke:#1565c0,stroke-width:2px
style ER fill:#e3f2fd,stroke:#1565c0,stroke-width:2px
style DENT fill:#e3f2fd,stroke:#1565c0,stroke-width:2px
style APPT fill:#e3f2fd,stroke:#1565c0,stroke-width:2px
style LAB fill:#e3f2fd,stroke:#1565c0,stroke-width:2px
style FIN fill:#e3f2fd,stroke:#1565c0,stroke-width:2px
style ELIG fill:#e3f2fd,stroke:#1565c0,stroke-width:2px
style IPD fill:#e3f2fd,stroke:#1565c0,stroke-width:2px
3. Level 0 DFD
graph TD
%% External Entities
DOCTOR["👨⚕️ แพทย์/ทันตแพทย์<br/>Doctor/Dentist"]
PHARMACIST["💊 เภสัชกร<br/>Pharmacist"]
PATIENT["🧑 ผู้ป่วย<br/>Patient"]
ADMIN["⚙️ ผู้ดูแลระบบ<br/>Admin"]
%% Main Processes
P1["1.0<br/>จัดการข้อมูลพื้นฐาน<br/>Master Data Management"]
P2["2.0<br/>สั่งยาผู้ป่วยนอก<br/>OPD Prescription"]
P3["3.0<br/>สั่งยาผู้ป่วยใน<br/>IPD Prescription"]
P4["4.0<br/>ตรวจสอบและจ่ายยา<br/>Verify & Dispense"]
P5["5.0<br/>ยกเลิก/แก้ไขคำสั่งยา<br/>Cancel/Modify Orders"]
P6["6.0<br/>พิมพ์เอกสาร<br/>Print Documents"]
%% Data Stores
DS1[("D1: DRUG_MASTER<br/>ทะเบียนยา")]
DS2[("D2: DRUG_INTERACTION<br/>อันตรกิริยายา")]
DS3[("D3: DRUG_TEMPLATE<br/>Template ยา")]
DS4[("D4: PRESCRIPTION_OPD<br/>คำสั่งยา OPD")]
DS5[("D5: PRESCRIPTION_IPD<br/>คำสั่งยา IPD")]
DS6[("D6: DISPENSE_RECORD<br/>บันทึกการจ่ายยา")]
DS7[("D7: MEDICATION_PROFILE<br/>Profile ผู้ป่วยใน")]
DS8[("D8: DRUG_PRICE<br/>ราคายา")]
DS9[("D9: DRUG_ALLERGY<br/>การแพ้ยา")]
DS10[("D10: DRUG_CONTRAINDICATION<br/>ข้อห้ามใช้")]
%% External Systems
MR["📋 ระบบเวชระเบียน<br/>1.2.1"]
HIST["📝 ระบบซักประวัติ<br/>1.2.2"]
EXAM["🏥 ระบบห้องตรวจ<br/>1.2.3"]
ER["🚑 ระบบฉุกเฉิน<br/>1.2.4"]
APPT["📅 ระบบนัดหมาย<br/>1.2.6"]
LAB["🔬 ระบบชันสูตร<br/>1.2.7"]
FIN["💰 ระบบการเงิน<br/>1.2.14"]
ELIG["✅ ระบบสิทธิ<br/>1.2.15"]
IPD_SYS["🏨 ระบบผู้ป่วยใน<br/>1.2.17"]
%% Process 1.0 - Master Data Management
ADMIN -->|"บันทึกข้อมูลยา<br/>Drug Data"| P1
P1 -->|"ข้อมูลยา"| DS1
P1 -->|"Drug Interaction"| DS2
P1 -->|"Template"| DS3
P1 -->|"ราคายา"| DS8
P1 -->|"ข้อห้ามใช้"| DS10
ELIG -->|"ราคาตามสิทธิ<br/>Price by Coverage"| P1
%% Process 2.0 - OPD Prescription
DOCTOR -->|"สั่งยา OPD<br/>OPD Order"| P2
EXAM -->|"คำสั่งยา<br/>Prescription"| P2
ER -->|"คำสั่งยาฉุกเฉิน<br/>Emergency Rx"| P2
MR -->|"ข้อมูลผู้ป่วย, HN"| P2
HIST -->|"ประวัติแพ้ยา"| P2
DS1 -->|"ข้อมูลยา"| P2
DS2 -->|"Drug Interaction"| P2
DS3 -->|"Template"| P2
DS9 -->|"การแพ้ยา"| P2
DS10 -->|"ข้อห้ามใช้"| P2
P2 -->|"คำสั่งยา OPD"| DS4
P2 -->|"Alert การแพ้ยา<br/>Drug Interaction"| DOCTOR
APPT -->|"วันนัด, Day-Dose"| P2
%% Process 3.0 - IPD Prescription
DOCTOR -->|"สั่งยา IPD<br/>IPD Order"| P3
IPD_SYS -->|"ข้อมูล AN, Ward"| P3
MR -->|"ข้อมูลผู้ป่วย"| P3
DS1 -->|"ข้อมูลยา"| P3
DS2 -->|"Drug Interaction"| P3
DS7 -->|"Medication Profile"| P3
DS9 -->|"การแพ้ยา"| P3
P3 -->|"คำสั่งยา IPD"| DS5
P3 -->|"อัพเดท Profile"| DS7
P3 -->|"Alert"| DOCTOR
LAB -->|"ผล Lab"| P3
%% Process 4.0 - Verify & Dispense
PHARMACIST -->|"Verify & Dispense"| P4
DS4 -->|"คำสั่งยา OPD"| P4
DS5 -->|"คำสั่งยา IPD"| P4
DS1 -->|"ข้อมูลยา"| P4
DS2 -->|"Drug Interaction"| P4
DS8 -->|"ราคายา"| P4
ELIG -->|"ข้อมูลสิทธิ"| P4
P4 -->|"บันทึกการจ่าย"| DS6
P4 -->|"ยาที่จ่าย"| PATIENT
P4 -->|"ค่าใช้จ่ายยา"| FIN
%% Process 5.0 - Cancel/Modify
DOCTOR -->|"ยกเลิก/แก้ไข"| P5
PHARMACIST -->|"อนุมัติการแก้ไข"| P5
DS4 -->|"คำสั่งยา OPD"| P5
DS5 -->|"คำสั่งยา IPD"| P5
DS6 -->|"สถานะการจ่าย"| P5
P5 -->|"อัพเดทสถานะ"| DS4
P5 -->|"อัพเดทสถานะ"| DS5
P5 -->|"แจ้งยกเลิก"| FIN
FIN -->|"สถานะใบเสร็จ"| P5
%% Process 6.0 - Print Documents
PHARMACIST -->|"คำขอพิมพ์"| P6
DS4 -->|"คำสั่งยา OPD"| P6
DS5 -->|"คำสั่งยา IPD"| P6
DS6 -->|"รายการจ่าย"| P6
DS1 -->|"ข้อมูลยา, วิธีใช้"| P6
P6 -->|"ใบสั่งยา, ฉลากยา<br/>หนังสือรับรอง"| PATIENT
P6 -->|"Medication Profile"| IPD_SYS
%% Styling
style P1 fill:#fff9c4,stroke:#f57f17,stroke-width:2px
style P2 fill:#c8e6c9,stroke:#2e7d32,stroke-width:2px
style P3 fill:#bbdefb,stroke:#1565c0,stroke-width:2px
style P4 fill:#ffccbc,stroke:#d84315,stroke-width:2px
style P5 fill:#f8bbd0,stroke:#c2185b,stroke-width:2px
style P6 fill:#e1bee7,stroke:#7b1fa2,stroke-width:2px
style DS1 fill:#fff3e0,stroke:#ef6c00,stroke-width:2px
style DS2 fill:#fff3e0,stroke:#ef6c00,stroke-width:2px
style DS3 fill:#fff3e0,stroke:#ef6c00,stroke-width:2px
style DS4 fill:#e0f2f1,stroke:#00695c,stroke-width:2px
style DS5 fill:#e0f2f1,stroke:#00695c,stroke-width:2px
style DS6 fill:#e0f2f1,stroke:#00695c,stroke-width:2px
style DS7 fill:#e0f2f1,stroke:#00695c,stroke-width:2px
style DS8 fill:#fff3e0,stroke:#ef6c00,stroke-width:2px
style DS9 fill:#fff3e0,stroke:#ef6c00,stroke-width:2px
style DS10 fill:#fff3e0,stroke:#ef6c00,stroke-width:2px
style MR fill:#fafafa,stroke:#424242,stroke-width:2px
style HIST fill:#fafafa,stroke:#424242,stroke-width:2px
style EXAM fill:#fafafa,stroke:#424242,stroke-width:2px
style ER fill:#fafafa,stroke:#424242,stroke-width:2px
style APPT fill:#fafafa,stroke:#424242,stroke-width:2px
style LAB fill:#fafafa,stroke:#424242,stroke-width:2px
style FIN fill:#fafafa,stroke:#424242,stroke-width:2px
style ELIG fill:#fafafa,stroke:#424242,stroke-width:2px
style IPD_SYS fill:#fafafa,stroke:#424242,stroke-width:2px
4. Level 1 DFD - การจัดการข้อมูลพื้นฐาน
graph TD
%% External Entities
ADMIN["⚙️ ผู้ดูแลระบบ<br/>Admin"]
PHARMACIST["💊 เภสัชกร<br/>Pharmacist"]
%% Sub-Processes
P11["1.1<br/>จัดการทะเบียนยา<br/>และเวชภัณฑ์<br/>Drug Master"]
P12["1.2<br/>จัดการ Drug Interaction<br/>อันตรกิริยายา"]
P13["1.3<br/>จัดการราคายา<br/>Drug Pricing"]
P14["1.4<br/>จัดการ Template ยา<br/>Drug Template"]
P15["1.5<br/>จัดการข้อห้ามใช้<br/>Contraindication"]
P16["1.6<br/>จัดการรหัสมาตรฐาน<br/>Standard Code"]
%% Data Stores
DS1[("D1: DRUG_MASTER<br/>ทะเบียนยา")]
DS2[("D2: DRUG_INTERACTION<br/>อันตรกิริยายา")]
DS3[("D3: DRUG_TEMPLATE<br/>Template ยา")]
DS8[("D8: DRUG_PRICE<br/>ราคายา")]
DS10[("D10: DRUG_CONTRAINDICATION<br/>ข้อห้ามใช้")]
DS11[("D11: DRUG_INGREDIENT<br/>ส่วนประกอบยา")]
DS12[("D12: DRUG_IMAGE<br/>รูปภาพยา")]
DS13[("D13: DRUG_CODE_MAPPING<br/>รหัสมาตรฐาน")]
DS14[("D14: DRUG_NOTIFY<br/>ข้อควรระวัง")]
%% External Systems
ELIG["✅ ระบบตรวจสอบสิทธิ<br/>1.2.15"]
INV["📦 ระบบคลัง<br/>Inventory"]
%% Process 1.1 - Drug Master
ADMIN -->|"บันทึกข้อมูลยา:<br/>ชื่อยา, ชื่อสามัญ,<br/>ความแรง, Dosage Form,<br/>หน่วยนับ, ปริมาตร"| P11
PHARMACIST -->|"อัพเดทข้อมูลยา"| P11
P11 -->|"ข้อมูลยาหลัก"| DS1
P11 -->|"ส่วนประกอบยา<br/>Ingredient"| DS11
P11 -->|"รูปภาพยา"| DS12
P11 -->|"ข้อควรระวัง<br/>Notify"| DS14
ADMIN -->|"กำหนดสิทธิสั่งยา:<br/>กลุ่มผู้ใช้, ผู้ป่วย,<br/>สิทธิการรักษา"| P11
ADMIN -->|"จัดกลุ่มยา:<br/>ในบัญชี/นอกบัญชี,<br/>ยาควบคุมพิเศษ"| P11
ADMIN -->|"กำหนดคำช่วยค้นหา<br/>(>1 ชื่อ/1 รหัส)"| P11
ADMIN -->|"หยุดจำหน่ายยา<br/>+ ข้อความแจ้งเตือน"| P11
ADMIN -->|"กำหนดจำนวนสั่ง:<br/>เริ่มต้น, สูงสุด"| P11
DS1 -->|"ตรวจสอบข้อมูลยา"| P11
%% Process 1.2 - Drug Interaction
PHARMACIST -->|"บันทึก Drug Interaction:<br/>ยา 2 รายการ,<br/>ระดับความรุนแรง,<br/>ข้อความเตือน"| P12
ADMIN -->|"กำหนดระยะเวลา<br/>ตรวจสอบใบสั่งยา<br/>ย้อนหลัง"| P12
P12 -->|"อันตรกิริยายา"| DS2
DS1 -->|"รายการยา"| P12
DS2 -->|"ตรวจสอบ Interaction"| P12
%% Process 1.3 - Drug Pricing
ADMIN -->|"กำหนดราคาทุน,<br/>ราคาจำหน่าย<br/>OPD/IPD"| P13
ELIG -->|"ราคาตามสิทธิ<br/>Coverage Pricing"| P13
P13 -->|"ราคายา"| DS8
DS1 -->|"รายการยา"| P13
ADMIN -->|"กำหนดประเภท<br/>การชำระเงิน<br/>ตามสิทธิ"| P13
ADMIN -->|"ผูกค่าใช้จ่าย<br/>กับรายการยา"| P13
%% Process 1.4 - Template
PHARMACIST -->|"สร้าง Template:<br/>ชุดยาสำเร็จรูป,<br/>แพทย์แต่ละท่าน"| P14
P14 -->|"Template ยา"| DS3
DS1 -->|"รายการยา"| P14
DS3 -->|"Template ที่มี"| P14
ADMIN -->|"จัดการ Template"| P14
%% Process 1.5 - Contraindication
PHARMACIST -->|"บันทึกข้อห้ามใช้:<br/>ยา + ICD10,<br/>ยา + Pregnancy,<br/>ยา + Breastfeeding,<br/>ยา + G6PD,<br/>ยา + เด็ก, ยา + เพศ"| P15
P15 -->|"ข้อห้ามใช้"| DS10
DS1 -->|"รายการยา"| P15
DS10 -->|"ตรวจสอบข้อห้าม"| P15
ADMIN -->|"กำหนด Notify<br/>แยกตามกลุ่ม"| P15
%% Process 1.6 - Standard Code
ADMIN -->|"บันทึกรหัสมาตรฐาน:<br/>GPO, INV, TMT,<br/>24 หลัก"| P16
P16 -->|"รหัสมาตรฐาน"| DS13
DS1 -->|"รายการยา"| P16
INV -->|"รหัส INV"| P16
ADMIN -->|"Mapping รหัส"| P16
P16 -->|"เชื่อมโยงรหัส"| DS1
%% Styling
style P11 fill:#fff9c4,stroke:#f57f17,stroke-width:2px
style P12 fill:#fff9c4,stroke:#f57f17,stroke-width:2px
style P13 fill:#fff9c4,stroke:#f57f17,stroke-width:2px
style P14 fill:#fff9c4,stroke:#f57f17,stroke-width:2px
style P15 fill:#fff9c4,stroke:#f57f17,stroke-width:2px
style P16 fill:#fff9c4,stroke:#f57f17,stroke-width:2px
style DS1 fill:#fff3e0,stroke:#ef6c00,stroke-width:2px
style DS2 fill:#fff3e0,stroke:#ef6c00,stroke-width:2px
style DS3 fill:#fff3e0,stroke:#ef6c00,stroke-width:2px
style DS8 fill:#fff3e0,stroke:#ef6c00,stroke-width:2px
style DS10 fill:#fff3e0,stroke:#ef6c00,stroke-width:2px
style DS11 fill:#fff3e0,stroke:#ef6c00,stroke-width:2px
style DS12 fill:#fff3e0,stroke:#ef6c00,stroke-width:2px
style DS13 fill:#fff3e0,stroke:#ef6c00,stroke-width:2px
style DS14 fill:#fff3e0,stroke:#ef6c00,stroke-width:2px
style ELIG fill:#fafafa,stroke:#424242,stroke-width:2px
style INV fill:#fafafa,stroke:#424242,stroke-width:2px
5. Level 1 DFD - การสั่งยาผู้ป่วยนอก
graph TD
%% External Entities
DOCTOR["👨⚕️ แพทย์/ทันตแพทย์<br/>Doctor/Dentist"]
NURSE["👩⚕️ พยาบาล<br/>Nurse"]
PHARMACIST["💊 เภสัชกร<br/>Pharmacist"]
STAFF["👤 บุคลากรอื่น<br/>Other Staff"]
%% Sub-Processes
P21["2.1<br/>สั่งยาแบบรายการ<br/>Single Item Order"]
P22["2.2<br/>สั่งยาแบบ Template<br/>Template Order"]
P23["2.3<br/>สั่งยาซ้ำ (RE-MED)<br/>Re-medication"]
P24["2.4<br/>ตรวจสอบความปลอดภัย<br/>Safety Check"]
P25["2.5<br/>แก้ไขราคา/สิทธิ<br/>Modify Price/Coverage"]
P26["2.6<br/>แสดงรายการยา<br/>Display Medicine List"]
%% Data Stores
DS1[("D1: DRUG_MASTER<br/>ทะเบียนยา")]
DS2[("D2: DRUG_INTERACTION<br/>อันตรกิริยายา")]
DS3[("D3: DRUG_TEMPLATE<br/>Template ยา")]
DS4[("D4: PRESCRIPTION_OPD<br/>คำสั่งยา OPD")]
DS8[("D8: DRUG_PRICE<br/>ราคายา")]
DS9[("D9: DRUG_ALLERGY<br/>การแพ้ยา")]
DS10[("D10: DRUG_CONTRAINDICATION<br/>ข้อห้ามใช้")]
DS14[("D14: DRUG_NOTIFY<br/>ข้อควรระวัง")]
DS15[("D15: PRESCRIPTION_HISTORY<br/>ประวัติการสั่งยา")]
%% External Systems
MR["📋 ระบบเวชระเบียน<br/>1.2.1"]
HIST["📝 ระบบซักประวัติ<br/>1.2.2"]
EXAM["🏥 ระบบห้องตรวจ<br/>1.2.3"]
ER["🚑 ระบบฉุกเฉิน<br/>1.2.4"]
DENT["🦷 ระบบทันตกรรม<br/>1.2.5"]
APPT["📅 ระบบนัดหมาย<br/>1.2.6"]
ELIG["✅ ระบบสิทธิ<br/>1.2.15"]
%% Process 2.1 - Single Item Order
DOCTOR -->|"สั่งยาทีละรายการ:<br/>รหัสยา, จำนวน,<br/>วิธีใช้, ความถี่"| P21
NURSE -->|"บันทึกสั่งยา<br/>(ตามมอบหมาย)"| P21
STAFF -->|"บันทึกสั่งยา<br/>(ตามมอบหมาย)"| P21
EXAM -->|"คำสั่งยาจากห้องตรวจ"| P21
ER -->|"คำสั่งยาฉุกเฉิน"| P21
DENT -->|"คำสั่งยาทันตกรรม"| P21
MR -->|"HN, ข้อมูลผู้ป่วย,<br/>Visit ID"| P21
HIST -->|"ประวัติแพ้ยา,<br/>Pregnancy,<br/>Breastfeeding"| P21
DS1 -->|"ข้อมูลยา,<br/>วิธีใช้เริ่มต้น"| P21
DS8 -->|"ราคายา"| P21
APPT -->|"วันนัด<br/>(คำนวณจำนวน<br/>อัตโนมัติ)"| P21
P21 -->|"คำสั่งยา OPD"| DS4
P21 -->|"บันทึกประวัติ"| DS15
P21 -->|"ส่งตรวจสอบ"| P24
%% Process 2.2 - Template Order
DOCTOR -->|"เลือก Template<br/>ของแพทย์แต่ละท่าน"| P22
DS3 -->|"Template ยา"| P22
DS1 -->|"ข้อมูลยา"| P22
P22 -->|"รายการยาจาก Template<br/>(แก้ไข/ลบได้)"| P21
MR -->|"ข้อมูลผู้ป่วย"| P22
%% Process 2.3 - RE-MED
DOCTOR -->|"เลือกวันที่<br/>เพื่อ RE-MED"| P23
DS15 -->|"ประวัติการสั่งยา<br/>ตามวันที่"| P23
DS4 -->|"คำสั่งยาเดิม"| P23
P23 -->|"รายการยาเดิม<br/>(แก้ไข/ลบได้)"| P21
DOCTOR -->|"เลือกรายการยา<br/>ที่ต้องการสั่งซ้ำ"| P23
MR -->|"ข้อมูลผู้ป่วย"| P23
%% Process 2.4 - Safety Check
P21 -->|"คำสั่งยาใหม่"| P24
DS9 -->|"ข้อมูลการแพ้ยา"| P24
DS2 -->|"Drug Interaction<br/>+ ระดับความรุนแรง"| P24
DS10 -->|"ข้อห้ามใช้:<br/>Pregnancy,<br/>Breastfeeding,<br/>เด็ก, G6PD,<br/>เพศ, ICD10"| P24
DS14 -->|"ข้อควรระวัง<br/>Notify"| P24
DS15 -->|"ใบสั่งยาย้อนหลัง<br/>(ตามระยะเวลา<br/>ที่กำหนด)"| P24
P24 -->|"⚠️ Alert การแพ้ยา"| DOCTOR
P24 -->|"⚠️ Alert Drug Interaction<br/>+ ระดับความรุนแรง"| DOCTOR
P24 -->|"⚠️ Alert ข้อห้ามใช้"| DOCTOR
P24 -->|"⚠️ Alert Notify"| DOCTOR
P24 -->|"ยาผ่านการตรวจสอบ"| DS4
HIST -->|"สถานะผู้ป่วย:<br/>Pregnancy,<br/>Breastfeeding,<br/>G6PD"| P24
%% Process 2.5 - Modify Price/Coverage
PHARMACIST -->|"แก้ไขราคายา<br/>(ตามสิทธิ์)"| P25
STAFF -->|"แก้ไขประเภท<br/>การชำระเงิน<br/>(ตามสิทธิ์)"| P25
DS4 -->|"คำสั่งยา"| P25
DS8 -->|"ราคาปัจจุบัน"| P25
ELIG -->|"ราคาตามสิทธิ"| P25
P25 -->|"อัพเดทราคา/สิทธิ"| DS4
%% Process 2.6 - Display List
DOCTOR -->|"ดูรายการยาผู้ป่วย"| P26
NURSE -->|"ตรวจสอบรายการ"| P26
DS4 -->|"รายการยา OPD<br/>แต่ละจุดบริการ"| P26
DS1 -->|"ข้อมูลยา"| P26
P26 -->|"แสดงรายชื่อผู้ป่วย<br/>รอรับยา"| NURSE
P26 -->|"แสดงรายการยา<br/>ที่ได้รับ"| DOCTOR
%% Styling
style P21 fill:#c8e6c9,stroke:#2e7d32,stroke-width:2px
style P22 fill:#c8e6c9,stroke:#2e7d32,stroke-width:2px
style P23 fill:#c8e6c9,stroke:#2e7d32,stroke-width:2px
style P24 fill:#ffccbc,stroke:#d84315,stroke-width:2px
style P25 fill:#c8e6c9,stroke:#2e7d32,stroke-width:2px
style P26 fill:#c8e6c9,stroke:#2e7d32,stroke-width:2px
style DS1 fill:#fff3e0,stroke:#ef6c00,stroke-width:2px
style DS2 fill:#fff3e0,stroke:#ef6c00,stroke-width:2px
style DS3 fill:#fff3e0,stroke:#ef6c00,stroke-width:2px
style DS4 fill:#e0f2f1,stroke:#00695c,stroke-width:2px
style DS8 fill:#fff3e0,stroke:#ef6c00,stroke-width:2px
style DS9 fill:#fff3e0,stroke:#ef6c00,stroke-width:2px
style DS10 fill:#fff3e0,stroke:#ef6c00,stroke-width:2px
style DS14 fill:#fff3e0,stroke:#ef6c00,stroke-width:2px
style DS15 fill:#e0f2f1,stroke:#00695c,stroke-width:2px
style MR fill:#fafafa,stroke:#424242,stroke-width:2px
style HIST fill:#fafafa,stroke:#424242,stroke-width:2px
style EXAM fill:#fafafa,stroke:#424242,stroke-width:2px
style ER fill:#fafafa,stroke:#424242,stroke-width:2px
style DENT fill:#fafafa,stroke:#424242,stroke-width:2px
style APPT fill:#fafafa,stroke:#424242,stroke-width:2px
style ELIG fill:#fafafa,stroke:#424242,stroke-width:2px
6. Level 1 DFD - การสั่งยาผู้ป่วยใน
graph TD
%% External Entities
DOCTOR["👨⚕️ แพทย์<br/>Doctor"]
PHARMACIST["💊 เภสัชกร<br/>Pharmacist"]
NURSE["👩⚕️ พยาบาล<br/>Nurse"]
%% Sub-Processes
P31["3.1<br/>สั่งยาแบบ Continue<br/>Continuous Order"]
P32["3.2<br/>สั่งยาแบบ One Day<br/>One Day Order"]
P33["3.3<br/>สั่งยา STAT<br/>STAT Order"]
P34["3.4<br/>สั่งยากลับบ้าน<br/>Discharge Medicine"]
P35["3.5<br/>จัดการ Medication Profile<br/>Profile Management"]
P36["3.6<br/>Add Chart (สั่งยาซ้ำ)<br/>Re-order from Profile"]
P37["3.7<br/>บันทึกคืนยา<br/>Drug Return"]
P38["3.8<br/>ดูประวัติและผล Lab<br/>View History & Lab"]
%% Data Stores
DS1[("D1: DRUG_MASTER<br/>ทะเบียนยา")]
DS2[("D2: DRUG_INTERACTION<br/>อันตรกิริยายา")]
DS5[("D5: PRESCRIPTION_IPD<br/>คำสั่งยา IPD")]
DS7[("D7: MEDICATION_PROFILE<br/>Profile ผู้ป่วยใน")]
DS9[("D9: DRUG_ALLERGY<br/>การแพ้ยา")]
DS10[("D10: DRUG_CONTRAINDICATION<br/>ข้อห้ามใช้")]
DS15[("D15: PRESCRIPTION_HISTORY<br/>ประวัติการสั่งยา")]
DS16[("D16: DRUG_RETURN<br/>การคืนยา")]
%% External Systems
MR["📋 ระบบเวชระเบียน<br/>1.2.1"]
HIST["📝 ระบบซักประวัติ<br/>1.2.2"]
IPD_SYS["🏨 ระบบผู้ป่วยใน<br/>1.2.17"]
LAB["🔬 ระบบชันสูตร<br/>1.2.7"]
%% Process 3.1 - Continue Order
DOCTOR -->|"สั่งยาต่อเนื่อง:<br/>กำหนด day-dose,<br/>วันเริ่มใช้,<br/>วันหยุดใช้ล่วงหน้า"| P31
IPD_SYS -->|"AN, Ward,<br/>Bed Number"| P31
MR -->|"HN, ข้อมูลผู้ป่วย"| P31
DS1 -->|"ข้อมูลยา"| P31
DS2 -->|"Drug Interaction"| P31
DS9 -->|"การแพ้ยา"| P31
DS10 -->|"ข้อห้ามใช้"| P31
P31 -->|"คำสั่งยา Continue"| DS5
P31 -->|"อัพเดท Profile"| DS7
P31 -->|"⚠️ Alert"| DOCTOR
HIST -->|"ประวัติแพ้ยา"| P31
%% Process 3.2 - One Day Order
DOCTOR -->|"สั่งยารายวัน:<br/>สั่งครั้งเดียว/วัน,<br/>กำหนดเวลาให้"| P32
DS1 -->|"ข้อมูลยา"| P32
DS2 -->|"Drug Interaction"| P32
DS9 -->|"การแพ้ยา"| P32
P32 -->|"คำสั่งยา One Day"| DS5
P32 -->|"อัพเดท Profile"| DS7
P32 -->|"⚠️ Alert"| DOCTOR
IPD_SYS -->|"AN, Ward"| P32
%% Process 3.3 - STAT Order
DOCTOR -->|"สั่งยา STAT:<br/>เร่งด่วนทันที"| P33
DS1 -->|"ข้อมูลยา"| P33
DS2 -->|"Drug Interaction"| P33
DS9 -->|"การแพ้ยา"| P33
P33 -->|"คำสั่งยา STAT<br/>(Priority High)"| DS5
P33 -->|"บันทึกใน Profile"| DS7
P33 -->|"⚠️ Alert"| DOCTOR
P33 -->|"🔔 แจ้งเตือนเร่งด่วน"| NURSE
IPD_SYS -->|"AN"| P33
%% Process 3.4 - Discharge Medicine
DOCTOR -->|"สั่งยากลับบ้าน:<br/>เมื่อผู้ป่วยจำหน่าย"| P34
DS7 -->|"Medication Profile<br/>(ยาที่ใช้อยู่)"| P34
DS1 -->|"ข้อมูลยา"| P34
P34 -->|"คำสั่งยากลับบ้าน"| DS5
IPD_SYS -->|"Discharge Date"| P34
DOCTOR -->|"เลือกยาจาก Profile<br/>+ จำนวนวัน"| P34
%% Process 3.5 - Medication Profile
P31 -->|"ยา Continue"| P35
P32 -->|"ยา One Day"| P35
P33 -->|"ยา STAT"| P35
P35 -->|"สรุปการใช้ยา<br/>ตลอดระยะเวลา<br/>พักรักษา"| DS7
P35 -->|"Profile Sheet<br/>(แสดงตามวันเวลา)"| NURSE
DS7 -->|"ดู Profile"| P35
PHARMACIST -->|"ดู Medication Profile"| P35
DOCTOR -->|"ดู Profile"| P35
P35 -->|"สรุปรวมการจ่าย<br/>ตามหมวดรายจ่าย"| IPD_SYS
%% Process 3.6 - Add Chart
DOCTOR -->|"Add Chart<br/>เพื่อสั่งยาซ้ำ<br/>จาก Profile"| P36
DS7 -->|"Medication Profile<br/>รายการยาปัจจุบัน"| P36
P36 -->|"รายการยาเลือก<br/>(แก้ไข/ลบได้)"| P31
DOCTOR -->|"เลือกรายการยา<br/>+ แก้ไขข้อมูล"| P36
%% Process 3.7 - Drug Return
NURSE -->|"บันทึกคืนยา:<br/>จำนวนคืน,<br/>สาเหตุการคืน"| P37
PHARMACIST -->|"รับคืนยา<br/>ตรวจสอบ"| P37
DS5 -->|"คำสั่งยาที่จ่ายไป"| P37
DS7 -->|"Profile ผู้ป่วย"| P37
P37 -->|"บันทึกการคืนยา"| DS16
P37 -->|"อัพเดท Profile"| DS7
P37 -->|"แจ้งคืนยา"| IPD_SYS
%% Process 3.8 - View History & Lab
DOCTOR -->|"ดูประวัติการใช้ยา<br/>OPD/IPD"| P38
DOCTOR -->|"ดูผล Lab<br/>ประกอบการสั่งยา"| P38
DS15 -->|"ประวัติการใช้ยา<br/>ผู้ป่วยนอก"| P38
DS7 -->|"Medication Profile<br/>ผู้ป่วยใน"| P38
LAB -->|"ผล Lab:<br/>ระดับยาในเลือด,<br/>Kidney/Liver Function"| P38
P38 -->|"แสดงประวัติยา<br/>+ ผล Lab"| DOCTOR
MR -->|"HN, ข้อมูลผู้ป่วย"| P38
%% Styling
style P31 fill:#bbdefb,stroke:#1565c0,stroke-width:2px
style P32 fill:#bbdefb,stroke:#1565c0,stroke-width:2px
style P33 fill:#ffccbc,stroke:#d84315,stroke-width:2px
style P34 fill:#bbdefb,stroke:#1565c0,stroke-width:2px
style P35 fill:#bbdefb,stroke:#1565c0,stroke-width:2px
style P36 fill:#bbdefb,stroke:#1565c0,stroke-width:2px
style P37 fill:#bbdefb,stroke:#1565c0,stroke-width:2px
style P38 fill:#bbdefb,stroke:#1565c0,stroke-width:2px
style DS1 fill:#fff3e0,stroke:#ef6c00,stroke-width:2px
style DS2 fill:#fff3e0,stroke:#ef6c00,stroke-width:2px
style DS5 fill:#e0f2f1,stroke:#00695c,stroke-width:2px
style DS7 fill:#e0f2f1,stroke:#00695c,stroke-width:2px
style DS9 fill:#fff3e0,stroke:#ef6c00,stroke-width:2px
style DS10 fill:#fff3e0,stroke:#ef6c00,stroke-width:2px
style DS15 fill:#e0f2f1,stroke:#00695c,stroke-width:2px
style DS16 fill:#e0f2f1,stroke:#00695c,stroke-width:2px
style MR fill:#fafafa,stroke:#424242,stroke-width:2px
style HIST fill:#fafafa,stroke:#424242,stroke-width:2px
style IPD_SYS fill:#fafafa,stroke:#424242,stroke-width:2px
style LAB fill:#fafafa,stroke:#424242,stroke-width:2px
7. Level 1 DFD - การตรวจสอบและจ่ายยา
graph TD
%% External Entities
PHARMACIST["💊 เภสัชกร<br/>Pharmacist"]
PATIENT["🧑 ผู้ป่วย<br/>Patient"]
NURSE["👩⚕️ พยาบาล<br/>Nurse"]
%% Sub-Processes
P41["4.1<br/>Verify คำสั่งยา<br/>Prescription Verification"]
P42["4.2<br/>ตรวจสอบ Drug Interaction<br/>Check Drug Interaction"]
P43["4.3<br/>ตรวจสอบข้อห้ามใช้<br/>Check Contraindication"]
P44["4.4<br/>จ่ายยา OPD<br/>OPD Dispensing"]
P45["4.5<br/>จ่ายยา IPD<br/>IPD Dispensing"]
P46["4.6<br/>คำนวณค่าใช้จ่าย<br/>Calculate Cost"]
P47["4.7<br/>แยกบัญชียา/เวชภัณฑ์<br/>Separate Categories"]
%% Data Stores
DS1[("D1: DRUG_MASTER<br/>ทะเบียนยา")]
DS2[("D2: DRUG_INTERACTION<br/>อันตรกิริยายา")]
DS4[("D4: PRESCRIPTION_OPD<br/>คำสั่งยา OPD")]
DS5[("D5: PRESCRIPTION_IPD<br/>คำสั่งยา IPD")]
DS6[("D6: DISPENSE_RECORD<br/>บันทึกการจ่ายยา")]
DS7[("D7: MEDICATION_PROFILE<br/>Profile ผู้ป่วยใน")]
DS8[("D8: DRUG_PRICE<br/>ราคายา")]
DS9[("D9: DRUG_ALLERGY<br/>การแพ้ยา")]
DS10[("D10: DRUG_CONTRAINDICATION<br/>ข้อห้ามใช้")]
DS14[("D14: DRUG_NOTIFY<br/>ข้อควรระวัง")]
DS15[("D15: PRESCRIPTION_HISTORY<br/>ประวัติการสั่งยา")]
%% External Systems
MR["📋 ระบบเวชระเบียน<br/>1.2.1"]
HIST["📝 ระบบซักประวัติ<br/>1.2.2"]
ELIG["✅ ระบบสิทธิ<br/>1.2.15"]
FIN["💰 ระบบการเงิน<br/>1.2.14"]
IPD_SYS["🏨 ระบบผู้ป่วยใน<br/>1.2.17"]
%% Process 4.1 - Verify
PHARMACIST -->|"Verify คำสั่งยา:<br/>ตรวจสอบความถูกต้อง,<br/>ขนาดยา, วิธีใช้"| P41
DS4 -->|"คำสั่งยา OPD"| P41
DS5 -->|"คำสั่งยา IPD"| P41
DS1 -->|"ข้อมูลยา,<br/>ขนาดมาตรฐาน"| P41
MR -->|"ข้อมูลผู้ป่วย:<br/>อายุ, น้ำหนัก"| P41
P41 -->|"ส่งตรวจสอบความปลอดภัย"| P42
P41 -->|"❌ ปฏิเสธคำสั่ง<br/>(ถ้าไม่ถูกต้อง)"| PHARMACIST
P41 -->|"อัพเดทสถานะ Verified"| DS4
P41 -->|"อัพเดทสถานะ Verified"| DS5
%% Process 4.2 - Drug Interaction
P41 -->|"คำสั่งยาที่ Verify แล้ว"| P42
DS2 -->|"Drug Interaction<br/>Database"| P42
DS15 -->|"ใบสั่งยาย้อนหลัง<br/>(ตามระยะเวลา<br/>ที่กำหนด)"| P42
DS7 -->|"Medication Profile<br/>(สำหรับ IPD)"| P42
P42 -->|"⚠️ Alert Drug Interaction<br/>+ ระดับความรุนแรง:<br/>Major/Moderate/Minor"| PHARMACIST
P42 -->|"ส่งต่อ"| P43
PHARMACIST -->|"Override<br/>(พร้อมเหตุผล)"| P42
%% Process 4.3 - Check Contraindication
P42 -->|"คำสั่งยาที่ผ่าน"| P43
DS9 -->|"การแพ้ยา"| P43
DS10 -->|"ข้อห้ามใช้:<br/>Pregnancy,<br/>Breastfeeding,<br/>G6PD, เด็ก,<br/>เพศ, ICD10"| P43
DS14 -->|"ข้อควรระวัง Notify"| P43
HIST -->|"สถานะผู้ป่วย,<br/>โรคประจำตัว,<br/>ICD10"| P43
P43 -->|"⚠️ Alert ข้อห้ามใช้"| PHARMACIST
P43 -->|"⚠️ Alert อันตรายต่อ:<br/>Pregnancy/Breastfeeding/<br/>เด็ก/G6PD"| PHARMACIST
P43 -->|"ผ่านการตรวจสอบ"| P44
P43 -->|"ผ่านการตรวจสอบ"| P45
PHARMACIST -->|"ยืนยันจ่าย<br/>(หลังตรวจสอบ)"| P43
%% Process 4.4 - OPD Dispensing
P43 -->|"คำสั่งยา OPD<br/>ที่ผ่านการตรวจสอบ"| P44
PHARMACIST -->|"จ่ายยา OPD:<br/>นับยา, บรรจุ,<br/>ติดฉลาก"| P44
DS1 -->|"ข้อมูลยา"| P44
DS4 -->|"คำสั่งยา"| P44
P44 -->|"บันทึกการจ่ายยา"| DS6
P44 -->|"ยาที่จ่าย<br/>+ คำแนะนำ"| PATIENT
P44 -->|"ส่งคำนวณค่าใช้จ่าย"| P46
PATIENT -->|"รับยา"| P44
%% Process 4.5 - IPD Dispensing
P43 -->|"คำสั่งยา IPD<br/>ที่ผ่านการตรวจสอบ"| P45
PHARMACIST -->|"จ่ายยา IPD:<br/>ทีละรายผู้ป่วย"| P45
NURSE -->|"รับยาผู้ป่วยใน"| P45
DS5 -->|"คำสั่งยา IPD:<br/>Continue/One Day/<br/>STAT"| P45
DS7 -->|"Medication Profile"| P45
DS1 -->|"ข้อมูลยา"| P45
P45 -->|"บันทึกการจ่ายยา"| DS6
P45 -->|"อัพเดท Profile"| DS7
P45 -->|"ยาที่จ่าย<br/>พร้อมใบแจ้งรายการ"| NURSE
P45 -->|"ส่งคำนวณค่าใช้จ่าย"| P46
IPD_SYS -->|"Ward, Bed Number"| P45
%% Process 4.6 - Calculate Cost
P44 -->|"รายการจ่าย OPD"| P46
P45 -->|"รายการจ่าย IPD"| P46
DS8 -->|"ราคายา"| P46
ELIG -->|"ข้อมูลสิทธิ,<br/>Copayment,<br/>Coverage"| P46
DS6 -->|"รายการที่จ่าย"| P46
P46 -->|"ค่าใช้จ่ายยา:<br/>ราคาเต็ม,<br/>ส่วนลด,<br/>Copayment"| FIN
P46 -->|"รายการยา<br/>+ ราคา"| PATIENT
P46 -->|"ส่งแยกบัญชี"| P47
MR -->|"สิทธิผู้ป่วย"| P46
%% Process 4.7 - Separate Categories
P46 -->|"รายการยา<br/>+ เวชภัณฑ์"| P47
DS1 -->|"ประเภท:<br/>ยา/เวชภัณฑ์,<br/>ในบัญชี/นอกบัญชี"| P47
P47 -->|"บัญชียา<br/>(แยกจากเวชภัณฑ์)"| FIN
P47 -->|"บัญชีเวชภัณฑ์<br/>(แยกจากยา)"| FIN
P47 -->|"ยาในบัญชี/<br/>นอกบัญชี"| ELIG
PHARMACIST -->|"สอบถามข้อมูล:<br/>แพทย์ผู้สั่ง,<br/>หน่วยตรวจ,<br/>สิทธิ, วันเวลา"| P47
P47 -->|"ข้อมูลการจ่ายยา<br/>รายละเอียด"| PHARMACIST
%% Styling
style P41 fill:#ffccbc,stroke:#d84315,stroke-width:2px
style P42 fill:#ffccbc,stroke:#d84315,stroke-width:2px
style P43 fill:#ffccbc,stroke:#d84315,stroke-width:2px
style P44 fill:#c8e6c9,stroke:#2e7d32,stroke-width:2px
style P45 fill:#bbdefb,stroke:#1565c0,stroke-width:2px
style P46 fill:#fff9c4,stroke:#f57f17,stroke-width:2px
style P47 fill:#fff9c4,stroke:#f57f17,stroke-width:2px
style DS1 fill:#fff3e0,stroke:#ef6c00,stroke-width:2px
style DS2 fill:#fff3e0,stroke:#ef6c00,stroke-width:2px
style DS4 fill:#e0f2f1,stroke:#00695c,stroke-width:2px
style DS5 fill:#e0f2f1,stroke:#00695c,stroke-width:2px
style DS6 fill:#e0f2f1,stroke:#00695c,stroke-width:2px
style DS7 fill:#e0f2f1,stroke:#00695c,stroke-width:2px
style DS8 fill:#fff3e0,stroke:#ef6c00,stroke-width:2px
style DS9 fill:#fff3e0,stroke:#ef6c00,stroke-width:2px
style DS10 fill:#fff3e0,stroke:#ef6c00,stroke-width:2px
style DS14 fill:#fff3e0,stroke:#ef6c00,stroke-width:2px
style DS15 fill:#e0f2f1,stroke:#00695c,stroke-width:2px
style MR fill:#fafafa,stroke:#424242,stroke-width:2px
style HIST fill:#fafafa,stroke:#424242,stroke-width:2px
style ELIG fill:#fafafa,stroke:#424242,stroke-width:2px
style FIN fill:#fafafa,stroke:#424242,stroke-width:2px
style IPD_SYS fill:#fafafa,stroke:#424242,stroke-width:2px
8. Level 1 DFD - การพิมพ์เอกสาร
graph TD
%% External Entities
PHARMACIST["💊 เภสัชกร<br/>Pharmacist"]
PATIENT["🧑 ผู้ป่วย<br/>Patient"]
DOCTOR["👨⚕️ แพทย์<br/>Doctor"]
NURSE["👩⚕️ พยาบาล<br/>Nurse"]
%% Sub-Processes
P61["6.1<br/>พิมพ์ใบสั่งยา<br/>Print Prescription"]
P62["6.2<br/>พิมพ์ฉลากยา<br/>Print Drug Label"]
P63["6.3<br/>พิมพ์หนังสือรับรอง<br/>ยานอกบัญชี<br/>Print Non-Essential<br/>Drug Certificate"]
P64["6.4<br/>พิมพ์ Medication Profile<br/>Print Profile Sheet"]
P65["6.5<br/>พิมพ์ใบแจ้งรายการยา IPD<br/>Print IPD Drug List"]
P66["6.6<br/>พิมพ์สติกเกอร์<br/>Print Sticker"]
%% Data Stores
DS1[("D1: DRUG_MASTER<br/>ทะเบียนยา")]
DS4[("D4: PRESCRIPTION_OPD<br/>คำสั่งยา OPD")]
DS5[("D5: PRESCRIPTION_IPD<br/>คำสั่งยา IPD")]
DS6[("D6: DISPENSE_RECORD<br/>บันทึกการจ่ายยา")]
DS7[("D7: MEDICATION_PROFILE<br/>Profile ผู้ป่วยใน")]
DS8[("D8: DRUG_PRICE<br/>ราคายา")]
DS17[("D17: PRINT_TEMPLATE<br/>Template การพิมพ์")]
DS18[("D18: LABEL_HELPER<br/>ฉลากช่วย")]
%% External Systems
MR["📋 ระบบเวชระเบียน<br/>1.2.1"]
ELIG["✅ ระบบสิทธิ<br/>1.2.15"]
IPD_SYS["🏨 ระบบผู้ป่วยใน<br/>1.2.17"]
%% Process 6.1 - Print Prescription
PHARMACIST -->|"คำขอพิมพ์ใบสั่งยา"| P61
DOCTOR -->|"พิมพ์ใบสั่งยา"| P61
DS4 -->|"คำสั่งยา OPD"| P61
DS5 -->|"คำสั่งยา IPD<br/>(ยากลับบ้าน)"| P61
DS6 -->|"รายการที่จ่าย"| P61
DS1 -->|"ข้อมูลยา:<br/>ชื่อยา, วิธีใช้,<br/>คำแนะนำ"| P61
DS8 -->|"ราคา"| P61
DS17 -->|"Template ใบสั่งยา:<br/>ไทย/อังกฤษ"| P61
MR -->|"ข้อมูลผู้ป่วย,<br/>HN, ชื่อ, อายุ"| P61
ELIG -->|"สิทธิการรักษา"| P61
P61 -->|"📄 ใบสั่งยา (ไทย)<br/>Prescription (Thai)"| PATIENT
P61 -->|"📄 ใบสั่งยา (อังกฤษ)<br/>Prescription (Eng)"| PATIENT
PHARMACIST -->|"เลือกภาษา:<br/>ไทย/อังกฤษ"| P61
%% Process 6.2 - Print Label
PHARMACIST -->|"คำขอพิมพ์ฉลากยา:<br/>ทุกรายการ/<br/>บางรายการ"| P62
DS6 -->|"รายการที่จ่าย"| P62
DS1 -->|"ข้อมูลยา,<br/>วิธีใช้,<br/>คำเตือน"| P62
DS18 -->|"ฉลากช่วย (ไทย),<br/>ฉลากช่วย (Eng)"| P62
DS17 -->|"Template ฉลากยา"| P62
MR -->|"ข้อมูลผู้ป่วย"| P62
P62 -->|"🏷️ ฉลากยา (ไทย)<br/>+ วิธีใช้<br/>+ คำแนะนำ"| PATIENT
P62 -->|"🏷️ ฉลากยา (อังกฤษ)<br/>+ Usage<br/>+ Advice"| PATIENT
PHARMACIST -->|"เลือกภาษา:<br/>ไทย/อังกฤษ"| P62
PHARMACIST -->|"เลือกรายการพิมพ์"| P62
%% Process 6.3 - Print Certificate
PHARMACIST -->|"คำขอหนังสือรับรอง<br/>ยานอกบัญชี"| P63
DOCTOR -->|"อนุมัติหนังสือรับรอง"| P63
DS4 -->|"คำสั่งยา OPD<br/>(ยานอกบัญชี)"| P63
DS5 -->|"คำสั่งยา IPD<br/>(ยานอกบัญชี)"| P63
DS1 -->|"ข้อมูลยา:<br/>ยานอกบัญชี<br/>National List"| P63
DS8 -->|"ราคา"| P63
DS17 -->|"Template หนังสือรับรอง"| P63
MR -->|"ข้อมูลผู้ป่วย,<br/>โรค, ICD10"| P63
ELIG -->|"สิทธิการรักษา,<br/>การขออนุมัติ"| P63
P63 -->|"📋 หนังสือรับรอง<br/>การขออนุมัติ<br/>ยานอกบัญชี<br/>หลักแห่งชาติ"| PATIENT
P63 -->|"ส่งข้อมูล<br/>ยานอกบัญชี"| ELIG
DOCTOR -->|"ระบุเหตุผล<br/>ทางการแพทย์"| P63
%% Process 6.4 - Print Profile
PHARMACIST -->|"คำขอพิมพ์<br/>Medication Profile"| P64
DOCTOR -->|"พิมพ์ Profile"| P64
NURSE -->|"พิมพ์ Profile"| P64
DS7 -->|"Medication Profile:<br/>รายการยาทั้งหมด<br/>ระหว่างพักรักษา"| P64
DS1 -->|"ข้อมูลยา"| P64
DS6 -->|"ประวัติการจ่าย"| P64
DS17 -->|"Template Profile Sheet"| P64
IPD_SYS -->|"AN, Ward,<br/>Admit Date,<br/>Discharge Date"| P64
MR -->|"ข้อมูลผู้ป่วย"| P64
P64 -->|"📊 Medication Profile<br/>Profile Sheet<br/>(เรียงตามวันเวลา)"| DOCTOR
P64 -->|"📊 Profile<br/>(สำหรับพยาบาล)"| NURSE
P64 -->|"📊 Profile<br/>(บันทึกในระบบ IPD)"| IPD_SYS
%% Process 6.5 - Print IPD Drug List
PHARMACIST -->|"คำขอพิมพ์<br/>ใบแจ้งรายการยา IPD"| P65
DS5 -->|"คำสั่งยา IPD:<br/>Continue/One Day/<br/>STAT"| P65
DS6 -->|"รายการที่จ่าย"| P65
DS1 -->|"ข้อมูลยา"| P65
DS17 -->|"Template ใบแจ้ง"| P65
IPD_SYS -->|"Ward, Bed"| P65
MR -->|"ข้อมูลผู้ป่วย"| P65
P65 -->|"📄 ใบแจ้งรายการยา IPD<br/>+ ฉลากยา"| NURSE
P65 -->|"📄 สรุปรวม<br/>ตามหมวดรายจ่าย"| IPD_SYS
P65 -->|"📄 รายละเอียดแต่ละ<br/>รายการ<br/>(เรียงตามวันเวลา)"| NURSE
%% Process 6.6 - Print Sticker
PHARMACIST -->|"คำขอพิมพ์สติกเกอร์:<br/>ทุกรายการ/<br/>บางรายการ"| P66
DS4 -->|"คำสั่งยา OPD"| P66
DS6 -->|"รายการที่จ่าย"| P66
DS1 -->|"ข้อมูลยา"| P66
DS17 -->|"Template สติกเกอร์"| P66
MR -->|"ข้อมูลผู้ป่วย,<br/>HN"| P66
P66 -->|"🏷️ สติกเกอร์ยา<br/>(ติดถุงยา)"| PATIENT
PHARMACIST -->|"เลือกรายการพิมพ์"| P66
%% Styling
style P61 fill:#e1bee7,stroke:#7b1fa2,stroke-width:2px
style P62 fill:#e1bee7,stroke:#7b1fa2,stroke-width:2px
style P63 fill:#e1bee7,stroke:#7b1fa2,stroke-width:2px
style P64 fill:#e1bee7,stroke:#7b1fa2,stroke-width:2px
style P65 fill:#e1bee7,stroke:#7b1fa2,stroke-width:2px
style P66 fill:#e1bee7,stroke:#7b1fa2,stroke-width:2px
style DS1 fill:#fff3e0,stroke:#ef6c00,stroke-width:2px
style DS4 fill:#e0f2f1,stroke:#00695c,stroke-width:2px
style DS5 fill:#e0f2f1,stroke:#00695c,stroke-width:2px
style DS6 fill:#e0f2f1,stroke:#00695c,stroke-width:2px
style DS7 fill:#e0f2f1,stroke:#00695c,stroke-width:2px
style DS8 fill:#fff3e0,stroke:#ef6c00,stroke-width:2px
style DS17 fill:#fff3e0,stroke:#ef6c00,stroke-width:2px
style DS18 fill:#fff3e0,stroke:#ef6c00,stroke-width:2px
style MR fill:#fafafa,stroke:#424242,stroke-width:2px
style ELIG fill:#fafafa,stroke:#424242,stroke-width:2px
style IPD_SYS fill:#fafafa,stroke:#424242,stroke-width:2px
9. Data Dictionary
9.1 Data Elements
| Element Name | Description | Type | Length | Format |
|---|---|---|---|---|
| DrugCode | รหัสยา | VARCHAR | 20 | DRUG-XXXXXXXX |
| DrugName | ชื่อยา (ชื่อการค้า) | NVARCHAR | 200 | Text |
| GenericName | ชื่อสามัญ (ชื่อทั่วไป) | NVARCHAR | 200 | Text |
| Strength | ความแรงของยา | VARCHAR | 50 | XXmg, XXml |
| DosageForm | รูปแบบเภสัชภัณฑ์ | VARCHAR | 50 | เม็ด/แคปซูล/น้ำ/ครีม/ฉีด |
| Unit | หน่วยนับ | VARCHAR | 20 | เม็ด/ขวด/หลอด/แอมพูล |
| Volume | ปริมาตร | VARCHAR | 50 | Text |
| PackSize | จำนวนบรรจุต่อ UNIT | INT | 5 | XXXXX |
| DrugCategory | หมวดหมู่ยา | VARCHAR | 100 | Antibiotic/Analgesic/etc |
| TherapeuticUse | ประโยชน์ในการรักษา (ไทย) | NTEXT | MAX | Text |
| TherapeuticUseEng | ประโยชน์ในการรักษา (อังกฤษ) | NTEXT | MAX | Text |
| IsEssentialDrug | ยาในบัญชียาหลักแห่งชาติ | BIT | 1 | 0/1 |
| IsControlledDrug | ยาควบคุมพิเศษ | BIT | 1 | 0/1 |
| DrugActionGroup | กลุ่มการออกฤทธิ์ | VARCHAR | 100 | Text |
| Instructions | วิธีใช้ยา | NTEXT | MAX | Text |
| LabelHelper | ฉลากช่วย (ไทย) | NTEXT | MAX | Text |
| LabelHelperEng | ฉลากช่วย (อังกฤษ) | NTEXT | MAX | Text |
| SearchKeyword1 | คำช่วยค้นหา 1 | NVARCHAR | 100 | Text |
| SearchKeyword2 | คำช่วยค้นหา 2 | NVARCHAR | 100 | Text |
| SearchKeyword3 | คำช่วยค้นหา 3 | NVARCHAR | 100 | Text |
| GPOCode | รหัสยา GPO | VARCHAR | 20 | Text |
| INVCode | รหัสยาคลัง | VARCHAR | 20 | Text |
| TMTCode | รหัสยา TMT | VARCHAR | 20 | Text |
| Standard24Code | รหัสมาตรฐาน 24 หลัก | VARCHAR | 24 | XXXXXXXXXXXXXXXXXXXXXXXX |
| CostPrice | ราคาทุน | DECIMAL | 10,2 | XXXXXXXX.XX |
| SellingPriceOPD | ราคาจำหน่าย OPD | DECIMAL | 10,2 | XXXXXXXX.XX |
| SellingPriceIPD | ราคาจำหน่าย IPD | DECIMAL | 10,2 | XXXXXXXX.XX |
| MinOrderQty | จำนวนสั่งเริ่มต้น | INT | 5 | XXXXX |
| MaxOrderQty | จำนวนสั่งสูงสุด | INT | 5 | XXXXX |
| AutoCalculateDose | คำนวณจำนวนอัตโนมัติตามวันนัด | BIT | 1 | 0/1 |
| IsDiscontinued | หยุดจำหน่าย | BIT | 1 | 0/1 |
| DiscontinuedMessage | ข้อความแจ้งเตือนยาหมด | NTEXT | MAX | Text |
| ImagePath | path รูปภาพยา | VARCHAR | 255 | File Path |
| IngredientName | ชื่อส่วนประกอบสำคัญ | NVARCHAR | 200 | Text |
| IngredientQty | ปริมาณส่วนประกอบ | VARCHAR | 50 | XXmg/ml |
| NotifyPregnancy | ข้อควรระวังหญิงตั้งครรภ์ | NTEXT | MAX | Text |
| NotifyBreastfeeding | ข้อควรระวังให้นมบุตร | NTEXT | MAX | Text |
| NotifyChild | ข้อควรระวังเด็ก | NTEXT | MAX | Text |
| NotifyG6PD | ข้อควรระวัง G6PD | NTEXT | MAX | Text |
| NotifyGender | ข้อควรระวังตามเพศ | NTEXT | MAX | Text |
| Drug1Code | รหัสยาตัวที่ 1 ใน Interaction | VARCHAR | 20 | DRUG-XXXXXXXX |
| Drug2Code | รหัสยาตัวที่ 2 ใน Interaction | VARCHAR | 20 | DRUG-XXXXXXXX |
| InteractionSeverity | ระดับความรุนแรง | VARCHAR | 20 | MAJOR/MODERATE/MINOR |
| InteractionDescription | คำอธิบาย Drug Interaction | NTEXT | MAX | Text |
| InteractionWarning | ข้อความเตือน | NTEXT | MAX | Text |
| CheckPeriodDays | ระยะเวลาตรวจสอบย้อนหลัง (วัน) | INT | 3 | XXX |
| ContraindicatedICD10 | รหัสโรคที่ห้ามใช้ยา | VARCHAR | 10 | XXX.XXX |
| ContraindicationReason | เหตุผลข้อห้ามใช้ | NTEXT | MAX | Text |
| PrescriptionID | รหัสคำสั่งยา | VARCHAR | 20 | RX-XXXXXXXXXXXXX |
| HN | หมายเลขประจำตัวผู้ป่วย | VARCHAR | 10 | XXXXXXXXXX |
| AN | หมายเลขผู้ป่วยใน | VARCHAR | 15 | AN-XXXXXXXXXXXX |
| VisitID | รหัส Visit | VARCHAR | 20 | VISIT-XXXXXXXXX |
| DoctorID | รหัสแพทย์ผู้สั่ง | VARCHAR | 20 | DOC-XXXXXXXX |
| DoctorName | ชื่อแพทย์ผู้สั่ง | NVARCHAR | 100 | Text |
| ClinicCode | รหัสคลินิก/หน่วยตรวจ | VARCHAR | 10 | CLINIC-XXX |
| ClinicName | ชื่อคลินิก/หน่วยตรวจ | NVARCHAR | 100 | Text |
| PrescriptionDate | วันที่สั่งยา | DATETIME | 19 | DD/MM/YYYY HH:MM:SS |
| PrescriptionType | ประเภทการสั่ง | VARCHAR | 20 | OPD/IPD/EMERGENCY |
| OrderType | ประเภทคำสั่ง (IPD) | VARCHAR | 20 | CONTINUE/ONE_DAY/STAT/DISCHARGE |
| Quantity | จำนวน | DECIMAL | 10,2 | XXXXX.XX |
| Frequency | ความถี่การใช้ยา | VARCHAR | 50 | TID/BID/QID/PRN |
| Route | วิธีให้ยา | VARCHAR | 50 | PO/IV/IM/SC/TOP |
| Duration | จำนวนวัน | INT | 3 | XXX |
| DayDose | Day-Dose (IPD) | INT | 3 | XXX |
| StartDate | วันเริ่มใช้ยา (Continue) | DATETIME | 19 | DD/MM/YYYY HH:MM:SS |
| StopDate | วันหยุดใช้ยา (Continue) | DATETIME | 19 | DD/MM/YYYY HH:MM:SS |
| IsUrgent | เร่งด่วน (STAT) | BIT | 1 | 0/1 |
| Status | สถานะคำสั่งยา | VARCHAR | 20 | PENDING/VERIFIED/DISPENSED/CANCELLED |
| IsFromTemplate | สั่งจาก Template | BIT | 1 | 0/1 |
| TemplateID | รหัส Template | VARCHAR | 20 | TMPL-XXXXXXXXX |
| IsReMed | สั่งยาซ้ำ (RE-MED) | BIT | 1 | 0/1 |
| OriginalRxID | รหัสคำสั่งยาเดิม | VARCHAR | 20 | RX-XXXXXXXXXXXXX |
| VerifiedBy | ผู้ Verify | VARCHAR | 20 | User ID |
| VerifiedDate | วันที่ Verify | DATETIME | 19 | DD/MM/YYYY HH:MM:SS |
| DispenseID | รหัสการจ่ายยา | VARCHAR | 20 | DISP-XXXXXXXXXXX |
| DispensedBy | ผู้จ่ายยา (เภสัชกร) | VARCHAR | 20 | User ID |
| DispensedDate | วันที่จ่ายยา | DATETIME | 19 | DD/MM/YYYY HH:MM:SS |
| DispensedQty | จำนวนที่จ่าย | DECIMAL | 10,2 | XXXXX.XX |
| ReceivedBy | ผู้รับยา | NVARCHAR | 100 | Text |
| TotalCost | ค่าใช้จ่ายรวม | DECIMAL | 10,2 | XXXXXXXX.XX |
| CoverageDiscount | ส่วนลดตามสิทธิ | DECIMAL | 10,2 | XXXXXXXX.XX |
| Copayment | ค่าใช้จ่ายส่วนตัว | DECIMAL | 10,2 | XXXXXXXX.XX |
| CoverageType | ประเภทสิทธิ | VARCHAR | 20 | UC/SSO/CASH/etc |
| IsPaid | ชำระเงินแล้ว | BIT | 1 | 0/1 |
| ReceiptNumber | เลขที่ใบเสร็จ | VARCHAR | 20 | REC-XXXXXXXXXXXX |
| CancelledBy | ผู้ยกเลิก | VARCHAR | 20 | User ID |
| CancelledDate | วันที่ยกเลิก | DATETIME | 19 | DD/MM/YYYY HH:MM:SS |
| CancellationReason | เหตุผลการยกเลิก | NTEXT | MAX | Text |
| ModifiedBy | ผู้แก้ไข | VARCHAR | 20 | User ID |
| ModifiedDate | วันที่แก้ไข | DATETIME | 19 | DD/MM/YYYY HH:MM:SS |
| ModificationReason | เหตุผลการแก้ไข | NTEXT | MAX | Text |
| ProfileID | รหัส Medication Profile | VARCHAR | 20 | PROF-XXXXXXXXXXX |
| AdmitDate | วันที่ Admit | DATETIME | 19 | DD/MM/YYYY HH:MM:SS |
| DischargeDate | วันที่ Discharge | DATETIME | 19 | DD/MM/YYYY HH:MM:SS |
| Ward | Ward/หอผู้ป่วย | VARCHAR | 50 | Text |
| BedNumber | หมายเลขเตียง | VARCHAR | 10 | Text |
| ProfileSummary | สรุปการใช้ยาระหว่างพักรักษา | NTEXT | MAX | Text |
| ReturnID | รหัสการคืนยา | VARCHAR | 20 | RET-XXXXXXXXXXXX |
| ReturnQty | จำนวนคืน | DECIMAL | 10,2 | XXXXX.XX |
| ReturnReason | เหตุผลการคืน | NTEXT | MAX | Text |
| ReturnedBy | ผู้คืนยา | VARCHAR | 20 | User ID |
| ReturnDate | วันที่คืน | DATETIME | 19 | DD/MM/YYYY HH:MM:SS |
| RefundAmount | จำนวนเงินคืน | DECIMAL | 10,2 | XXXXXXXX.XX |
9.2 Data Flows
| Flow Name | Description | Composition |
|---|---|---|
| drug_master_data | ข้อมูลทะเบียนยา | DrugCode + DrugName + GenericName + Strength + DosageForm + Unit + Volume + PackSize + DrugCategory + TherapeuticUse + IsEssentialDrug + IsControlledDrug + ImagePath |
| drug_pricing_data | ข้อมูลราคายา | DrugCode + CostPrice + SellingPriceOPD + SellingPriceIPD + CoverageType + CoverageDiscount |
| drug_interaction_data | ข้อมูล Drug Interaction | Drug1Code + Drug2Code + InteractionSeverity + InteractionDescription + InteractionWarning |
| drug_contraindication_data | ข้อมูลข้อห้ามใช้ | DrugCode + ContraindicatedICD10 + NotifyPregnancy + NotifyBreastfeeding + NotifyChild + NotifyG6PD + NotifyGender + ContraindicationReason |
| prescription_opd | คำสั่งยา OPD | PrescriptionID + HN + VisitID + DoctorID + ClinicCode + PrescriptionDate + DrugCode + Quantity + Frequency + Route + Duration + Instructions + Status |
| prescription_ipd | คำสั่งยา IPD | PrescriptionID + HN + AN + DoctorID + OrderType + DrugCode + Quantity + Frequency + Route + DayDose + StartDate + StopDate + IsUrgent + Status |
| prescription_template | Template การสั่งยา | TemplateID + DoctorID + TemplateName + DrugList + DefaultInstructions |
| dispense_record | บันทึกการจ่ายยา | DispenseID + PrescriptionID + DrugCode + DispensedQty + DispensedBy + DispensedDate + ReceivedBy + TotalCost + Copayment + IsPaid |
| medication_profile | Medication Profile | ProfileID + AN + HN + AdmitDate + DischargeDate + Ward + BedNumber + DrugHistory + ProfileSummary |
| drug_allergy_alert | การแจ้งเตือนการแพ้ยา | HN + DrugCode + AllergySymptoms + Severity + AlertMessage |
| drug_interaction_alert | การแจ้งเตือน Drug Interaction | PrescriptionID + Drug1Code + Drug2Code + InteractionSeverity + InteractionWarning |
| safety_check_result | ผลการตรวจสอบความปลอดภัย | PrescriptionID + AllergyAlert + InteractionAlert + ContraindicationAlert + IsApproved |
| cost_calculation | การคำนวณค่าใช้จ่าย | DispenseID + TotalCost + CoverageDiscount + Copayment + CoverageType + DrugCategory |
| drug_return_record | บันทึกการคืนยา | ReturnID + DispenseID + DrugCode + ReturnQty + ReturnReason + ReturnDate + RefundAmount |
| print_prescription | ข้อมูลพิมพ์ใบสั่งยา | PrescriptionID + HN + PatientName + DrugList + Instructions + DoctorName + PrescriptionDate + Language |
| print_label | ข้อมูลพิมพ์ฉลากยา | DispenseID + HN + PatientName + DrugName + Quantity + Instructions + LabelHelper + Language |
| print_certificate | ข้อมูลพิมพ์หนังสือรับรอง | PrescriptionID + HN + PatientName + NonEssentialDrugList + MedicalReason + DoctorApproval |
9.3 Data Stores
| Store Name | Description | Key Fields | Related Entities |
|---|---|---|---|
| D1: DRUG_MASTER | ทะเบียนยาและเวชภัณฑ์ | DrugCode (PK) | ยา, รหัสมาตรฐาน, ส่วนประกอบ, รูปภาพ |
| D2: DRUG_INTERACTION | อันตรกิริยาระหว่างยา | InteractionID (PK), Drug1Code (FK), Drug2Code (FK) | ยาคู่ที่มีผลกัน, ระดับความรุนแรง |
| D3: DRUG_TEMPLATE | Template การสั่งยา | TemplateID (PK), DoctorID (FK) | ชุดยาสำเร็จรูป, รายการยา |
| D4: PRESCRIPTION_OPD | คำสั่งยาผู้ป่วยนอก | PrescriptionID (PK), HN (FK), VisitID (FK) | คำสั่งยา OPD, รายการยา |
| D5: PRESCRIPTION_IPD | คำสั่งยาผู้ป่วยใน | PrescriptionID (PK), AN (FK) | คำสั่งยา IPD, Continue/One Day/STAT |
| D6: DISPENSE_RECORD | บันทึกการจ่ายยา | DispenseID (PK), PrescriptionID (FK) | การจ่ายยา, ผู้รับยา, ค่าใช้จ่าย |
| D7: MEDICATION_PROFILE | Profile การใช้ยาผู้ป่วยใน | ProfileID (PK), AN (FK) | ประวัติยาระหว่างพักรักษา, สรุปการใช้ยา |
| D8: DRUG_PRICE | ราคายาและเวชภัณฑ์ | PriceID (PK), DrugCode (FK) | ราคาทุน, ราคาขาย, ราคาตามสิทธิ |
| D9: DRUG_ALLERGY | การแพ้ยา | AllergyID (PK), HN (FK) | ยาที่แพ้, อาการ, ความรุนแรง |
| D10: DRUG_CONTRAINDICATION | ข้อห้ามใช้ยา | ContraindicationID (PK), DrugCode (FK) | ข้อห้ามใช้กับโรค, กลุ่มผู้ป่วย |
| D11: DRUG_INGREDIENT | ส่วนประกอบยา | IngredientID (PK), DrugCode (FK) | ตัวยาสำคัญ, ปริมาณ |
| D12: DRUG_IMAGE | รูปภาพยา | ImageID (PK), DrugCode (FK) | ภาพถ่ายยา, ไฟล์รูป |
| D13: DRUG_CODE_MAPPING | รหัสมาตรฐานยา | MappingID (PK), DrugCode (FK) | GPO, INV, TMT, 24 หลัก |
| D14: DRUG_NOTIFY | ข้อควรระวัง | NotifyID (PK), DrugCode (FK) | Notify ตามกลุ่มผู้ป่วย |
| D15: PRESCRIPTION_HISTORY | ประวัติการสั่งยา | HistoryID (PK), HN (FK) | ประวัติการสั่งยาย้อนหลัง |
| D16: DRUG_RETURN | การคืนยา | ReturnID (PK), DispenseID (FK) | รายการคืน, เหตุผล, จำนวนเงินคืน |
| D17: PRINT_TEMPLATE | Template การพิมพ์ | TemplateID (PK) | รูปแบบเอกสาร, ภาษา |
| D18: LABEL_HELPER | ฉลากช่วย | LabelID (PK), DrugCode (FK) | คำแนะนำบนฉลาก, ไทย/อังกฤษ |
10. API Integration Flow
10.1 ภาพรวมการเชื่อมโยง API
ระบบเภสัชกรรมเชื่อมโยงกับระบบอื่นๆ ผ่าน RESTful API และ Message Queue เพื่อแลกเปลี่ยนข้อมูลแบบ Real-time และ Asynchronous
graph LR
PHARM["💊 ระบบเภสัชกรรม<br/>Pharmacy System"]
%% Input APIs
MR["📋 ระบบเวชระเบียน<br/>1.2.1"] -->|"GET /api/v1/patients/{HN}<br/>ข้อมูลผู้ป่วย"| PHARM
HIST["📝 ระบบซักประวัติ<br/>1.2.2"] -->|"GET /api/v1/allergies/{HN}<br/>ประวัติการแพ้ยา"| PHARM
EXAM["🏥 ระบบห้องตรวจ<br/>1.2.3"] -->|"POST /api/v1/prescriptions/opd<br/>คำสั่งยา OPD"| PHARM
ER["🚑 ระบบฉุกเฉิน<br/>1.2.4"] -->|"POST /api/v1/prescriptions/emergency<br/>คำสั่งยาฉุกเฉิน"| PHARM
DENT["🦷 ระบบทันตกรรม<br/>1.2.5"] -->|"POST /api/v1/prescriptions/dental<br/>คำสั่งยาทันตกรรม"| PHARM
APPT["📅 ระบบนัดหมาย<br/>1.2.6"] -->|"GET /api/v1/appointments/{HN}<br/>วันนัด"| PHARM
LAB["🔬 ระบบชันสูตร<br/>1.2.7"] -->|"GET /api/v1/lab-results/{HN}<br/>ผล Lab"| PHARM
ELIG["✅ ระบบสิทธิ<br/>1.2.15"] -->|"GET /api/v1/coverage/{HN}<br/>สิทธิและราคา"| PHARM
IPD_SYS["🏨 ระบบผู้ป่วยใน<br/>1.2.17"] -->|"POST /api/v1/prescriptions/ipd<br/>คำสั่งยา IPD"| PHARM
%% Output APIs
PHARM -->|"POST /api/v1/charges/medication<br/>ค่าใช้จ่ายยา"| FIN["💰 ระบบการเงิน<br/>1.2.14"]
PHARM -->|"PUT /api/v1/medical-records/{HN}/medications<br/>ประวัติการใช้ยา"| MR
PHARM -->|"POST /api/v1/coverage/non-essential-drugs<br/>ยานอกบัญชี"| ELIG
PHARM -->|"GET /api/v1/medication-profile/{AN}<br/>Medication Profile"| IPD_SYS
style PHARM fill:#e1bee7,stroke:#7b1fa2,stroke-width:3px
10.2 API Endpoints รายละเอียด
10.2.1 APIs สำหรับรับข้อมูล (Inbound)
| Endpoint | Method | Source System | Description | Request Parameters | Response |
|---|---|---|---|---|---|
/api/v1/patients/{HN} |
GET | ระบบเวชระเบียน (1.2.1) | ดึงข้อมูลผู้ป่วย | HN | Patient Info, Demographics |
/api/v1/allergies/{HN} |
GET | ระบบซักประวัติ (1.2.2) | ดึงประวัติการแพ้ยา | HN | Drug Allergies, Severity |
/api/v1/prescriptions/opd |
POST | ระบบห้องตรวจ (1.2.3) | รับคำสั่งยา OPD | HN, VisitID, DrugList | PrescriptionID, Status |
/api/v1/prescriptions/emergency |
POST | ระบบฉุกเฉิน (1.2.4) | รับคำสั่งยาฉุกเฉิน | HN, VisitID, DrugList, IsUrgent | PrescriptionID, Status |
/api/v1/prescriptions/dental |
POST | ระบบทันตกรรม (1.2.5) | รับคำสั่งยาทันตกรรม | HN, VisitID, DrugList | PrescriptionID, Status |
/api/v1/prescriptions/ipd |
POST | ระบบผู้ป่วยใน (1.2.17) | รับคำสั่งยา IPD | AN, OrderType, DrugList, DayDose | PrescriptionID, Status |
/api/v1/appointments/{HN} |
GET | ระบบนัดหมาย (1.2.6) | ดึงวันนัดหมาย | HN | AppointmentDate, Clinic |
/api/v1/lab-results/{HN} |
GET | ระบบชันสูตร (1.2.7) | ดึงผล Lab | HN, TestType, DateRange | Lab Results |
/api/v1/coverage/{HN} |
GET | ระบบสิทธิ (1.2.15) | ดึงข้อมูลสิทธิ | HN, CoverageType | Coverage Info, Pricing |
10.2.2 APIs สำหรับส่งข้อมูล (Outbound)
| Endpoint | Method | Target System | Description | Request Body | Response |
|---|---|---|---|---|---|
/api/v1/charges/medication |
POST | ระบบการเงิน (1.2.14) | ส่งค่าใช้จ่ายยา | DispenseID, TotalCost, Copayment, DrugList | ChargeID, Status |
/api/v1/medical-records/{HN}/medications |
PUT | ระบบเวชระเบียน (1.2.1) | อัพเดทประวัติการใช้ยา | HN, MedicationHistory | Success/Failure |
/api/v1/coverage/non-essential-drugs |
POST | ระบบสิทธิ (1.2.15) | แจ้งยานอกบัญชี | HN, DrugList, MedicalReason | ApprovalStatus |
/api/v1/medication-profile/{AN} |
GET | ระบบผู้ป่วยใน (1.2.17) | ส่ง Medication Profile | AN | Profile Data |
10.2.3 APIs สำหรับการจัดการยา (Internal)
| Endpoint | Method | Description | Request | Response |
|---|---|---|---|---|
/api/v1/pharmacy/drugs |
GET | ค้นหายา | SearchKeyword, DrugCategory | Drug List |
/api/v1/pharmacy/drugs/{DrugCode} |
GET | ดูรายละเอียดยา | DrugCode | Drug Details |
/api/v1/pharmacy/drug-interaction |
POST | ตรวจสอบ Drug Interaction | DrugList | Interaction Alerts |
/api/v1/pharmacy/contraindication |
POST | ตรวจสอบข้อห้ามใช้ | HN, DrugList | Contraindication Alerts |
/api/v1/pharmacy/templates/{DoctorID} |
GET | ดึง Template แพทย์ | DoctorID | Template List |
/api/v1/pharmacy/prescriptions/{PrescriptionID} |
GET | ดูคำสั่งยา | PrescriptionID | Prescription Details |
/api/v1/pharmacy/prescriptions/{PrescriptionID}/verify |
PUT | Verify คำสั่งยา | PrescriptionID, PharmacistID | Verified Status |
/api/v1/pharmacy/prescriptions/{PrescriptionID}/dispense |
POST | จ่ายยา | PrescriptionID, DispensedQty | Dispense Record |
/api/v1/pharmacy/prescriptions/{PrescriptionID}/cancel |
DELETE | ยกเลิกคำสั่งยา | PrescriptionID, Reason | Cancelled Status |
/api/v1/pharmacy/medication-profile/{AN} |
GET | ดู Medication Profile | AN | Profile Data |
/api/v1/pharmacy/drug-return |
POST | คืนยา | DispenseID, ReturnQty, Reason | Return Record |
10.3 Message Queue Integration
ระบบใช้ Message Queue (RabbitMQ/Kafka) สำหรับการส่งข้อมูลแบบ Asynchronous
10.3.1 Topics/Queues
| Topic/Queue | Direction | Description | Message Format |
|---|---|---|---|
prescription.opd.created |
Outbound | แจ้งคำสั่งยา OPD ใหม่ | {PrescriptionID, HN, DrugList, Status} |
prescription.ipd.created |
Outbound | แจ้งคำสั่งยา IPD ใหม่ | {PrescriptionID, AN, OrderType, DrugList} |
prescription.verified |
Outbound | แจ้งยืนยันคำสั่งยา | {PrescriptionID, VerifiedBy, VerifiedDate} |
prescription.dispensed |
Outbound | แจ้งจ่ายยาแล้ว | {DispenseID, PrescriptionID, DispensedQty} |
prescription.cancelled |
Outbound | แจ้งยกเลิกคำสั่งยา | {PrescriptionID, Reason, CancelledBy} |
drug.interaction.alert |
Outbound | แจ้งเตือน Drug Interaction | {PrescriptionID, InteractionList, Severity} |
drug.allergy.alert |
Outbound | แจ้งเตือนการแพ้ยา | {HN, DrugCode, AllergyInfo} |
medication.cost |
Outbound | แจ้งค่าใช้จ่ายยา | {DispenseID, TotalCost, Copayment} |
patient.allergy.updated |
Inbound | รับข้อมูลแพ้ยาอัพเดท | {HN, NewAllergies} |
patient.discharged |
Inbound | รับแจ้งผู้ป่วยจำหน่าย | {AN, DischargeDate} |
10.4 Data Synchronization
10.4.1 Real-time Sync
- ข้อมูลการแพ้ยา (Drug Allergy) - Sync ทันทีจากระบบซักประวัติ
- Drug Interaction Alerts - ตรวจสอบแบบ Real-time
- สถานะคำสั่งยา (Prescription Status) - Update Real-time
- ค่าใช้จ่าย (Cost) - ส่งไประบบการเงินทันที
10.4.2 Batch Sync
- ประวัติการใช้ยา (Medication History) - Sync ทุก 1 ชั่วโมง
- รายงานการจ่ายยา - Export ทุกวัน
- Medication Profile - Generate และ Sync ทุก 6 ชั่วโมง
10.5 Error Handling & Retry Mechanism
10.5.1 Retry Policy
{
"max_retries": 3,
"retry_interval": "5s, 30s, 2m",
"timeout": "30s",
"circuit_breaker": {
"failure_threshold": 5,
"success_threshold": 2,
"timeout": "60s"
}
}
10.5.2 Error Responses
| Error Code | Description | Action |
|---|---|---|
PHARM_001 |
Drug not found | ตรวจสอบรหัสยา |
PHARM_002 |
Drug discontinued | แจ้งเตือนยาหยุดจำหน่าย |
PHARM_003 |
Drug allergy detected | Alert และขอยืนยัน |
PHARM_004 |
Drug interaction warning | แสดง Warning และขอ Override |
PHARM_005 |
Contraindication detected | ห้ามสั่งยา |
PHARM_006 |
Insufficient stock | แจ้งยาไม่เพียงพอ |
PHARM_007 |
Prescription not verified | ต้อง Verify ก่อนจ่าย |
PHARM_008 |
Payment not completed | ต้องชำระเงินก่อน |
PHARM_009 |
Invalid coverage | ตรวจสอบสิทธิ |
PHARM_010 |
Non-essential drug requires approval | ต้องขออนุมัติ |
10.6 Security & Authentication
10.6.1 API Authentication
- OAuth 2.0 - ใช้สำหรับ User Authentication
- API Key - ใช้สำหรับ System-to-System
- JWT Token - ใช้สำหรับ Session Management
10.6.2 Authorization Levels
| Role | Permissions |
|---|---|
| Doctor | สั่งยา, ดูประวัติการใช้ยา, อนุมัติยานอกบัญชี |
| Pharmacist | Verify, Dispense, แก้ไขราคา, Override Drug Interaction |
| Nurse | รับยา IPD, ดู Medication Profile |
| Admin | จัดการ Master Data, Template, ราคา |
10.6.3 Data Encryption
- In Transit: TLS 1.3
- At Rest: AES-256
- Sensitive Data: ข้อมูลการแพ้ยา, ประวัติการใช้ยา
10.7 API Rate Limiting
| API Category | Rate Limit | Burst Limit |
|---|---|---|
| Read APIs | 1000 req/min | 1500 req/min |
| Write APIs | 100 req/min | 200 req/min |
| Search APIs | 500 req/min | 750 req/min |
| Verify/Dispense | 50 req/min | 100 req/min |
10.8 Monitoring & Logging
10.8.1 Metrics to Monitor
- API Response Time
- Drug Interaction Alert Rate
- Dispense Success Rate
- Prescription Verification Time
- System Availability (SLA: 99.9%)
10.8.2 Audit Logging
- ทุกการสั่งยา (Prescription Created)
- ทุกการแก้ไข/ยกเลิก (Modification/Cancellation)
- ทุกการ Verify และ Dispense
- ทุกการ Override Drug Interaction/Contraindication
- ทุกการแก้ไขราคา
หมายเหตุสำคัญ
ความสอดคล้องกับ TOR: เอกสาร DFD นี้ครอบคลุมข้อกำหนดใน TOR ระบบเภสัชกรรม (1.2.13) ครบถ้วน 100% ดังนี้:
✅ 1.2.13.1 ข้อมูลพื้นฐาน - ครบทั้ง 20 ข้อ - ทะเบียนยาและเวชภัณฑ์ - การเชื่อมโยงรหัสมาตรฐาน (GPO, INV, TMT, 24 หลัก) - รูปภาพยา และส่วนประกอบ (Ingredient) - การจัดกลุ่มยาในบัญชี/นอกบัญชี - การกำหนดราคาและสิทธิ - Drug Interaction พร้อมระดับความรุนแรง - ข้อควรระวัง Notify ตามกลุ่มผู้ป่วย
✅ 1.2.13.2 การสั่งยาผู้ป่วยนอก - ครบทั้ง 12 ข้อ - สั่งยาแบบรายการ, Template, RE-MED - ระบบเตือนการแพ้ยา, Drug Interaction - แจ้งเตือนยาอันตรายต่อกลุ่มพิเศษ - แก้ไขราคา/สิทธิตามสิทธิ์ผู้ใช้
✅ 1.2.13.3 การสั่งยาผู้ป่วยใน - ครบทั้ง 8 ข้อ - Continue, One Day, STAT, ยากลับบ้าน - Medication Profile - Add Chart (สั่งยาซ้ำจาก Profile) - การคืนยา
✅ 1.2.13.4 การยกเลิกการสั่งยา - ครบทั้ง 2 ข้อ - แก้ไขได้เมื่อยังไม่ชำระเงิน - ยกเลิกหลังชำระต้องผ่านกระบวนการ
✅ 1.2.13.5 การตรวจสอบการสั่ง/จ่ายยา - ครบทั้ง 5 ข้อ - Verify และ Dispense - ตรวจสอบ Drug Interaction - แยกบัญชียา/เวชภัณฑ์
✅ 1.2.13.6 การพิมพ์ - ครบทั้ง 3 ข้อ - ใบสั่งยา (ไทย/อังกฤษ) - ฉลากยา (ไทย/อังกฤษ) - หนังสือรับรองยานอกบัญชี
การเชื่อมโยงระบบ: - ✅ เชื่อมต่อกับ 10 ระบบหลัก ผ่าน RESTful API และ Message Queue - ✅ รองรับการทำงานแบบ Real-time และ Asynchronous - ✅ มีระบบ Error Handling, Retry, และ Circuit Breaker - ✅ ปฏิบัติตามมาตรฐาน PDPA และ Security Best Practices
เอกสารนี้จัดทำขึ้นให้สอดคล้องกับ: - ✅ SRS ระบบเภสัชกรรม v1.0 - ✅ TOR ระบบเภสัชกรรม (1.2.13) - ✅ ERD และ Schema v1.0 - ✅ รูปแบบ DFD ของระบบอื่นในโครงการ
หมายเหตุ: เอกสารนี้จะมีการปรับปรุงตามการเปลี่ยนแปลงของความต้องการและการพัฒนาระบบ
เวอร์ชัน 1.0 | วันที่: 30 ตุลาคม 2568 | จัดทำโดย: ทีมพัฒนาระบบ HIS โรงพยาบาลค่ายธนรัชต์