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

Data Flow Diagram (DFD)

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

เวอร์ชัน: 1.0

วันที่: 30 ตุลาคม 2568

สอดคล้องกับ: SRS ระบบเภสัชกรรม v1.0, TOR ระบบเภสัชกรรม, ERD v1.0, และ Schema v1.0


สารบัญ

  1. ภาพรวมระบบ
  2. Context Diagram
  3. Level 0 DFD
  4. Level 1 DFD - การจัดการข้อมูลพื้นฐาน
  5. Level 1 DFD - การสั่งยาผู้ป่วยนอก
  6. Level 1 DFD - การสั่งยาผู้ป่วยใน
  7. Level 1 DFD - การตรวจสอบและจ่ายยา
  8. Level 1 DFD - การพิมพ์เอกสาร
  9. Data Dictionary
  10. 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 โรงพยาบาลค่ายธนรัชต์