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

Entity Relationship Diagram (ERD)

ระบบห้องฉุกเฉิน (Emergency Department System)

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


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


ภาพรวม Entity Relationship Diagram

เอกสารนี้แสดง ERD สำหรับระบบห้องฉุกเฉินที่ปรับปรุงใหม่ โดยใช้ Shared Tables ร่วมกับระบบซักประวัติ (1.2.2) และระบบห้องตรวจแพทย์ (1.2.3) เพื่อลดความซ้ำซ้อนของข้อมูลและเพิ่มประสิทธิภาพในการจัดการข้อมูล ระบบนี้เป็นศูนย์กลางการดูแลผู้ป่วยฉุกเฉินและอุบัติเหตุ โดยรองรับการทำงาน 24/7 และเชื่อมโยงกับระบบ EMS (Emergency Medical Services) และระบบอื่นๆ ผ่าน API Integration

การจัดกลุ่มตาราง (Table Categories)

🎨 คำอธิบายสีในแผนภาพ:

  • 🟢 สีเขียว (Core Tables): ตารางหลักเฉพาะระบบห้องฉุกเฉิน
  • EMERGENCY_CASE - ข้อมูลเคสฉุกเฉินหลัก
  • TRIAGE_ASSESSMENT - การคัดกรองและประเมินความรุนแรง
  • EMERGENCY_TREATMENT - การรักษาฉุกเฉิน
  • ACCIDENT_RECORD - บันทึกข้อมูลอุบัติเหตุ
  • EMS_RECORD - บันทึกการรักษาจากหน่วย EMS
  • OBSERVATION_RECORD - การสังเกตและติดตามผู้ป่วย
  • EMERGENCY_SURGERY_REQUEST - การสั่งผ่าตัดฉุกเฉิน

  • 🔵 สีน้ำเงิน (Shared Tables): ตารางที่ใช้ร่วมกันระหว่างระบบ

  • MEDICAL_DIAGNOSIS - การวินิจฉัยโรค (ร่วมกับ 1.2.2, 1.2.3)
  • MEDICAL_PROCEDURE - หัตถการทางการแพทย์ (ร่วมกับ 1.2.2, 1.2.3)
  • MEDICATION_ORDER - การสั่งจ่ายยา (ร่วมกับ 1.2.2, 1.2.3)
  • LAB_ORDER - การสั่งตรวจทางห้องปฏิบัติการ (ร่วมกับ 1.2.2, 1.2.3)
  • RADIOLOGY_ORDER - การสั่งตรวจรังสี (ร่วมกับ 1.2.2, 1.2.3)
  • PATIENT_REFERRAL - การส่งต่อผู้ป่วย (ร่วมกับ 1.2.2, 1.2.3)
  • PATIENT_CONSULTATION - การขอปรึกษา (ร่วมกับ 1.2.2, 1.2.3)
  • PATIENT_APPOINTMENT - การนัดหมาย (ร่วมกับ 1.2.2, 1.2.3)

  • 🟠 สีส้ม (System Tables): ตารางจัดการระบบและการตรวจสอบ

  • DRUG_ALLERGY_ALERT - การเตือนการแพ้ยา
  • DRUG_INTERACTION_CHECK - ตรวจสอบอันตกริยาของยา
  • LAB_RESULT_VIEW - การแสดงผล Lab แบบเร่งด่วน
  • XRAY_RESULT_VIEW - การแสดงผล X-Ray แบบเร่งด่วน
  • EMERGENCY_NOTES - หมายเหตุและประเมินผล
  • EMERGENCY_CERTIFICATE - ใบรับรองแพทย์ฉุกเฉิน
  • COST_SUMMARY - สรุปค่าใช้จ่าย
  • SHIFT_MANAGEMENT - การจัดการเวรและเจ้าหน้าที่
  • SYSTEM_INTEGRATION_LOG - บันทึกการเชื่อมโยงระบบ
  • AUDIT_LOG - บันทึกการเปลี่ยนแปลง

  • 🟡 สีเหลือง (Master Data - Emergency): ข้อมูลพื้นฐานทางการแพทย์ฉุกเฉิน

  • ICD_CODES - รหัส ICD (WHO และไทย)
  • TREATMENT_GROUP - กลุ่มค่ารักษาพยาบาล
  • MEDICATION_TEMPLATES - Template การสั่งยาฉุกเฉิน
  • TRIAGE_CATEGORIES - หมวดหมู่การคัดกรอง
  • ACCIDENT_TYPES - ประเภทอุบัติเหตุ
  • EMERGENCY_PROCEDURES - หัตถการฉุกเฉิน

  • 🟣 สีม่วง (Master Data - Reference): ข้อมูลอ้างอิงจากระบบอื่น

  • DOCTORS - ข้อมูลแพทย์
  • DEPARTMENTS - ข้อมูลแผนก
  • EMERGENCY_ROOMS - ข้อมูลห้องฉุกเฉิน
  • LAB_ITEMS - รายการ Lab
  • XRAY_ITEMS - รายการ X-Ray
  • EMS_UNITS - หน่วย EMS

  • 🔴 สีแดง (Integration Points): จุดเชื่อมโยงกับระบบอื่น

  • การเชื่อมโยงกับระบบเวชระเบียน (1.2.1)
  • การเชื่อมโยงกับระบบซักประวัติ (1.2.2)
  • การเชื่อมโยงกับระบบห้องตรวจแพทย์ (1.2.3)
  • การเชื่อมโยงกับระบบเภสัชกรรม (1.2.13)
  • การเชื่อมโยงกับระบบตรวจสอบสิทธิ (1.2.15)
  • การเชื่อมโยงกับระบบงานชันสูตร (1.2.7)
  • การเชื่อมโยงกับระบบรังสีวิทยา (1.2.8)
  • การเชื่อมโยงกับระบบห้องผ่าตัด (1.2.18)
  • การเชื่อมโยงกับระบบผู้ป่วยใน (1.2.17)
  • การเชื่อมโยงกับระบบการเงิน (1.2.14)

🔑 ประโยชน์ของ Shared Tables

  1. ลดความซ้ำซ้อน: ไม่ต้องมีตารางเหมือนกันในหลายระบบ
  2. Data Consistency: ข้อมูลมีความสอดคล้องกัน
  3. Easy Integration: ง่ายต่อการรวมข้อมูลระหว่างระบบ
  4. Reduced Maintenance: ลดการบำรุงรักษาโครงสร้างข้อมูล
  5. Better Performance: ประสิทธิภาพในการค้นหาและรายงาน
  6. Emergency Response: การตอบสนองที่รวดเร็วในสถานการณ์ฉุกเฉิน

📝 กลไกการระบุแหล่งที่มา

ทุก Shared Table จะมี field สำคัญ: - SourceSystem: ระบุว่าข้อมูลมาจากระบบไหน ('HISTORY_TAKING', 'EXAMINATION', หรือ 'EMERGENCY') - SourceID: รหัสอ้างอิงไปยัง HistoryID, ExaminationID, หรือ EmergencyCaseID ตามแหล่งที่มา


1. แผนภาพแบบง่าย (Simplified Diagram)

แผนภาพนี้แสดงความสัมพันธ์ระหว่างกลุ่มตารางหลักๆ ที่ปรับปรุงใหม่ด้วย Shared Tables และการเชื่อมโยงกับระบบอื่น

graph TB
    subgraph "🔴 External Systems"
        PATIENT_SYS["📋 ระบบเวชระเบียน<br/>(1.2.1)"]
        HISTORY_SYS["📝 ระบบซักประวัติ<br/>(1.2.2)"]
        EXAM_SYS["🩺 ระบบห้องตรวจแพทย์<br/>(1.2.3)"]
        PHARMACY_SYS["💊 ระบบเภสัชกรรม<br/>(1.2.13)"]
        RIGHT_SYS["🎫 ระบบตรวจสอบสิทธิ<br/>(1.2.15)"]
        LAB_SYS["🔬 ระบบงานชันสูตร<br/>(1.2.7)"]
        XRAY_SYS["📸 ระบบรังสีวิทยา<br/>(1.2.8)"]
        SURGERY_SYS["⚕️ ระบบห้องผ่าตัด<br/>(1.2.18)"]
        IPD_SYS["🏥 ระบบผู้ป่วยใน<br/>(1.2.17)"]
        FINANCE_SYS["💰 ระบบการเงิน<br/>(1.2.14)"]
    end

    subgraph "🟢 Core Emergency System"
        EMERGENCY["🚨 เคสฉุกเฉินหลัก<br/>EMERGENCY_CASE"]
        TRIAGE["⚡ การคัดกรอง<br/>TRIAGE_ASSESSMENT"]
        TREATMENT["🏥 การรักษาฉุกเฉิน<br/>EMERGENCY_TREATMENT"]
        ACCIDENT["🚗 บันทึกอุบัติเหตุ<br/>ACCIDENT_RECORD"]
        EMS["🚑 บันทึก EMS<br/>EMS_RECORD"]
        OBSERVE["👁️ การสังเกต<br/>OBSERVATION_RECORD"]
        SURGERY_REQ["⚕️ สั่งผ่าตัดฉุกเฉิน<br/>EMERGENCY_SURGERY_REQUEST"]
    end

    subgraph "🔵 Shared Tables (ใช้ร่วมกับ 1.2.2, 1.2.3)"
        DIAGNOSIS["🩺 การวินิจฉัย<br/>MEDICAL_DIAGNOSIS"]
        PROCEDURES["⚕️ หัตถการ<br/>MEDICAL_PROCEDURE"]
        MEDICATION["💊 การสั่งยา<br/>MEDICATION_ORDER"]
        LAB_ORDER["🔬 การสั่ง Lab<br/>LAB_ORDER"]
        XRAY_ORDER["📸 การสั่ง X-Ray<br/>RADIOLOGY_ORDER"]
        REFER["📤 การส่งต่อ<br/>PATIENT_REFERRAL"]
        CONSULT["💬 การปรึกษา<br/>PATIENT_CONSULTATION"]
        APPOINTMENT["📅 การนัดหมาย<br/>PATIENT_APPOINTMENT"]
    end

    subgraph "🟠 System Controls & Emergency Features"
        ALLERGY_ALERT["⚠️ เตือนแพ้ยา<br/>DRUG_ALLERGY_ALERT"]
        DRUG_CHECK["🔍 ตรวจ Drug Interaction<br/>DRUG_INTERACTION_CHECK"]
        LAB_RESULT["📊 ผล Lab เร่งด่วน<br/>LAB_RESULT_VIEW"]
        XRAY_RESULT["📹 ผล X-Ray เร่งด่วน<br/>XRAY_RESULT_VIEW"]
        NOTES["📝 หมายเหตุ<br/>EMERGENCY_NOTES"]
        CERTIFICATE["📜 ใบรับรองแพทย์<br/>EMERGENCY_CERTIFICATE"]
        COST["💰 สรุปค่าใช้จ่าย<br/>COST_SUMMARY"]
        SHIFT["⏰ จัดการเวร<br/>SHIFT_MANAGEMENT"]
    end

    %% External connections
    PATIENT_SYS -->|HN, VisitID| EMERGENCY
    HISTORY_SYS -.->|SourceSystem HISTORY_TAKING| DIAGNOSIS
    EXAM_SYS -.->|SourceSystem EXAMINATION| DIAGNOSIS

    %% Emergency system connections with SourceSystem EMERGENCY
    EMERGENCY -->|SourceSystem EMERGENCY| DIAGNOSIS
    EMERGENCY -->|SourceSystem EMERGENCY| PROCEDURES
    EMERGENCY -->|SourceSystem EMERGENCY| MEDICATION
    EMERGENCY -->|SourceSystem EMERGENCY| LAB_ORDER
    EMERGENCY -->|SourceSystem EMERGENCY| XRAY_ORDER
    EMERGENCY -->|SourceSystem EMERGENCY| REFER
    EMERGENCY -->|SourceSystem EMERGENCY| CONSULT
    EMERGENCY -->|SourceSystem EMERGENCY| APPOINTMENT

    %% Core relationships
    EMERGENCY --> TRIAGE
    EMERGENCY --> TREATMENT
    EMERGENCY --> ACCIDENT
    EMERGENCY --> EMS
    EMERGENCY --> OBSERVE
    EMERGENCY --> SURGERY_REQ

    %% System controls
    EMERGENCY --> ALLERGY_ALERT
    MEDICATION --> DRUG_CHECK
    EMERGENCY --> NOTES
    EMERGENCY --> CERTIFICATE
    EMERGENCY --> COST
    EMERGENCY --> SHIFT

    %% Result viewing
    LAB_ORDER -.-> LAB_RESULT
    XRAY_ORDER -.-> XRAY_RESULT

    %% External integrations
    MEDICATION -->|DrugCode| PHARMACY_SYS
    LAB_ORDER -->|LabCode STAT| LAB_SYS
    XRAY_ORDER -->|XRayCode STAT| XRAY_SYS
    SURGERY_REQ -->|SurgeryRequest| SURGERY_SYS
    REFER -->|AdmissionRequest| IPD_SYS
    COST -->|BillingCode| FINANCE_SYS

    %% Styling
    classDef external fill:#ffebee,stroke:#c62828,stroke-width:2px
    classDef core fill:#e8f5e8,stroke:#2e7d32,stroke-width:3px
    classDef shared fill:#e3f2fd,stroke:#1565c0,stroke-width:3px
    classDef system fill:#fff3e0,stroke:#ef6c00,stroke-width:2px

    class PATIENT_SYS,HISTORY_SYS,EXAM_SYS,PHARMACY_SYS,RIGHT_SYS,LAB_SYS,XRAY_SYS,SURGERY_SYS,IPD_SYS,FINANCE_SYS external
    class EMERGENCY,TRIAGE,TREATMENT,ACCIDENT,EMS,OBSERVE,SURGERY_REQ core
    class DIAGNOSIS,PROCEDURES,MEDICATION,LAB_ORDER,XRAY_ORDER,REFER,CONSULT,APPOINTMENT shared
    class ALLERGY_ALERT,DRUG_CHECK,LAB_RESULT,XRAY_RESULT,NOTES,CERTIFICATE,COST,SHIFT system

2. แผนภาพรายละเอียด (Detailed ERD)

2.1 ตารางหลัก (Core Tables)

erDiagram
    EMERGENCY_CASE {
        varchar EmergencyCaseID PK "รหัสเคสฉุกเฉิน"
        varchar HN FK "รหัสผู้ป่วย"
        varchar VisitID FK "รหัสการเข้ารับบริการ"
        varchar HistoryID FK "รหัสการซักประวัติ (ถ้ามี)"
        varchar TriageID FK "รหัสการคัดกรอง"
        varchar EmergencyRoomID FK "รหัสห้องฉุกเฉิน"
        varchar PatientTypeCode FK "ประเภทผู้ป่วย (อุบัติเหตุ/ฉุกเฉิน/ทั่วไป)"
        varchar ArrivalTypeCode FK "ประเภทการมา (มาเอง/นัด/ส่งต่อ/อื่นๆ)"
        varchar ShiftID FK "รหัสเวร"
        datetime ArrivalDateTime "วันเวลาที่มาถึง"
        datetime StartTreatmentTime "เวลาเริ่มรักษา"
        datetime EndTreatmentTime "เวลาเสร็จสิ้นการรักษา"
        varchar ChiefComplaint "อาการสำคัญที่มาร้องเรียน (CC)"
        varchar PresentIllness "ประวัติการเจ็บป่วยในปัจจุบัน (HPI)"
        varchar PastMedicalHistory "ประวัติการเจ็บป่วยในอดีต (PMH)"
        varchar FamilyHistory "ประวัติการเจ็บป่วยในครอบครัว (FH)"
        varchar SocialHistory "ประวัติเกี่ยวกับการดำเนินชีวิต (SH)"
        bit IsPregnant "กำลังตั้งครรภ์"
        bit IsBreastfeeding "กำลังให้นมบุตร"
        varchar EmergencyStatusCode FK "สถานะเคสฉุกเฉิน"
        varchar PrimaryDoctorID FK "แพทย์หลัก"
        varchar PrimaryNurseID FK "พยาบาลหลัก"
        decimal TotalCost "ค่าใช้จ่ายรวม"
        varchar DischargeTypeCode FK "ประเภทการจำหน่าย"
        varchar DischargeDestination "จุดหมายการจำหน่าย"
        varchar ReferenceHospital "โรงพยาบาลที่ส่งต่อมา (ถ้ามี)"
        varchar RightCheckReferenceID FK "รหัสอ้างอิงตรวจสอบสิทธิ"
        bit IsCompleted "เสร็จสิ้นการรักษา"
        ntext SpecialInstructions "คำแนะนำพิเศษ"
        varchar CreatedBy "ผู้บันทึก"
        datetime CreatedDate "วันที่บันทึก"
        varchar LastModifiedBy "ผู้แก้ไขล่าสุด"
        datetime LastModifiedDate "วันที่แก้ไขล่าสุด"
    }

    TRIAGE_ASSESSMENT {
        varchar TriageID PK "รหัสการคัดกรอง"
        varchar EmergencyCaseID FK "รหัสเคสฉุกเฉิน"
        varchar TriageCategoryCode FK "หมวดหมู่การคัดกรอง (1-5)"
        varchar UrgencyLevel FK "ระดับความเร่งด่วน"
        varchar TriageNurseID FK "พยาบาลคัดกรอง"
        datetime TriageDateTime "วันเวลาการคัดกรอง"
        decimal Weight "น้ำหนัก (kg)"
        decimal Height "ส่วนสูง (cm)"
        decimal Temperature "อุณหภูมิ (°C)"
        varchar PulseRate "อัตราเต้นชีพจร (/นาที)"
        varchar RespiratoryRate "อัตราหายใจ (/นาที)"
        varchar BloodPressureSystolic "ความดันโลหิตตัวบน (mmHg)"
        varchar BloodPressureDiastolic "ความดันโลหิตตัวล่าง (mmHg)"
        decimal OxygenSaturation "ความอิ่มตัวออกซิเจน (%)"
        decimal PainScore "คะแนนความเจ็บปวด (0-10)"
        varchar ConsciousnessLevel "ระดับความรู้สึกตัว"
        decimal BMI "ดัชนีมวลกาย (คำนวณอัตโนมัติ)"
        varchar GlasgowComaScale "Glasgow Coma Scale"
        ntext PrimaryAssessment "การประเมินเบื้องต้น"
        ntext RecommendedAction "การดำเนินการที่แนะนำ"
        varchar EstimatedWaitTime "เวลารอประมาณ (นาที)"
        varchar CreatedBy "ผู้บันทึก"
        datetime CreatedDate "วันที่บันทึก"
    }

    EMERGENCY_TREATMENT {
        varchar TreatmentID PK "รหัสการรักษา"
        varchar EmergencyCaseID FK "รหัสเคสฉุกเฉิน"
        varchar TreatmentTypeCode FK "ประเภทการรักษา"
        varchar DoctorID FK "แพทย์ผู้รักษา"
        varchar NurseID FK "พยาบาลผู้ช่วย"
        datetime StartTime "เวลาเริ่มรักษา"
        datetime EndTime "เวลาเสร็จสิ้นการรักษา"
        ntext TreatmentDescription "คำอธิบายการรักษา"
        ntext PhysicalExamination "การตรวจร่างกาย"
        ntext TreatmentPlan "แผนการรักษา"
        ntext PatientResponse "การตอบสนองของผู้ป่วย"
        varchar TreatmentOutcome "ผลการรักษา"
        varchar ComplicationCode FK "ภาวะแทรกซ้อน (ถ้ามี)"
        ntext TreatmentNotes "หมายเหตุการรักษา"
        varchar CreatedBy "ผู้บันทึก"
        datetime CreatedDate "วันที่บันทึก"
        varchar LastModifiedBy "ผู้แก้ไขล่าสุด"
        datetime LastModifiedDate "วันที่แก้ไขล่าสุด"
    }

    ACCIDENT_RECORD {
        varchar AccidentID PK "รหัสบันทึกอุบัติเหตุ"
        varchar EmergencyCaseID FK "รหัสเคสฉุกเฉิน"
        varchar AccidentTypeCode FK "ประเภทอุบัติเหตุ"
        datetime AccidentDateTime "วันเวลาเกิดอุบัติเหตุ"
        varchar AccidentLocation "สถานที่เกิดอุบัติเหตุ"
        varchar AccidentCause "สาเหตุอุบัติเหตุ"
        varchar InjurySeverityCode FK "ความรุนแรงของการบาดเจ็บ"
        varchar VehicleInvolved "ยานพาหนะที่เกี่ยวข้อง"
        varchar NumberOfVictims "จำนวนผู้ประสบภัย"
        varchar PoliceReportNumber "หมายเลขรายงานตำรวจ"
        varchar InsuranceCompany "บริษัทประกัน"
        varchar InsurancePolicyNumber "หมายเลขกรมธรรม์"
        varchar WitnessName "ชื่อพยาน"
        varchar WitnessContact "ข้อมูลติดต่อพยาน"
        ntext AccidentDescription "รายละเอียดอุบัติเหตุ"
        ntext FirstAidGiven "การปฐมพยาบาลที่ได้รับ"
        varchar CreatedBy "ผู้บันทึก"
        datetime CreatedDate "วันที่บันทึก"
    }

    %% Relationships
    EMERGENCY_CASE ||--|| TRIAGE_ASSESSMENT : "assessed"
    EMERGENCY_CASE ||--o{ EMERGENCY_TREATMENT : "receives"
    EMERGENCY_CASE ||--o| ACCIDENT_RECORD : "may have"
    EMERGENCY_CASE ||--o{ MEDICAL_DIAGNOSIS : "SourceSystem='EMERGENCY'"
    EMERGENCY_CASE ||--o{ MEDICAL_PROCEDURE : "SourceSystem='EMERGENCY'"

2.2 ตาราง EMS และการสังเกต (EMS & Observation Tables)

erDiagram
    EMS_RECORD {
        varchar EMSRecordID PK "รหัสบันทึก EMS"
        varchar EmergencyCaseID FK "รหัสเคสฉุกเฉิน"
        varchar EMSUnitID FK "รหัสหน่วย EMS"
        varchar EMSCallNumber "หมายเลขการเรียก EMS"
        datetime CallDateTime "วันเวลาการเรียก"
        datetime DispatchDateTime "วันเวลาส่งหน่วย"
        datetime ArrivalSceneDateTime "วันเวลาถึงจุดเกิดเหตุ"
        datetime DepartSceneDateTime "วันเวลาออกจากจุดเกิดเหตุ"
        datetime ArrivalHospitalDateTime "วันเวลาถึงโรงพยาบาล"
        varchar EMSPersonnelID FK "เจ้าหน้าที่ EMS"
        varchar EMSDriverID FK "คนขับรถพยาบาล"
        varchar SceneLocation "สถานที่เกิดเหตุ"
        varchar InitialVitalSigns "สัญญาณชีพเบื้องต้น"
        ntext FieldTreatment "การรักษาในสนาม"
        ntext MedicationsGiven "ยาที่ให้ในสนาม"
        ntext ProceduresPerformed "หัตถการที่ทำในสนาม"
        varchar PatientConditionOnScene "สภาพผู้ป่วยที่จุดเกิดเหตุ"
        varchar PatientConditionOnArrival "สภาพผู้ป่วยเมื่อถึงโรงพยาบาล"
        varchar TransportMethod "วิธีการขนส่ง"
        varchar SpecialEquipmentUsed "อุปกรณ์พิเศษที่ใช้"
        ntext HandoverNote "บันทึกการส่งมอบ"
        varchar CreatedBy "ผู้บันทึก"
        datetime CreatedDate "วันที่บันทึก"
    }

    OBSERVATION_RECORD {
        varchar ObservationID PK "รหัสการสังเกต"
        varchar EmergencyCaseID FK "รหัสเคสฉุกเฉิน"
        varchar ObservationTypeCode FK "ประเภทการสังเกต"
        varchar NurseID FK "พยาบาลผู้สังเกต"
        datetime ObservationDateTime "วันเวลาการสังเกต"
        varchar PatientCondition "สภาพผู้ป่วย"
        varchar VitalSigns "สัญญาณชีพ"
        varchar ConsciousnessLevel "ระดับความรู้สึกตัว"
        varchar PainLevel "ระดับความเจ็บปวด"
        varchar ActivityProvided "กิจกรรมที่ให้"
        varchar MedicationGiven "ยาที่ให้"
        varchar LabOrderedDuringObs "Lab ที่สั่งระหว่างสังเกต"
        varchar XRayOrderedDuringObs "X-Ray ที่สั่งระหว่างสังเกต"
        varchar PatientResponse "การตอบสนองของผู้ป่วย"
        varchar NextObservationTime "เวลาสังเกตครั้งต่อไป"
        ntext ObservationNotes "หมายเหตุการสังเกต"
        varchar ObservationOutcome "ผลการสังเกต"
        bit IsDiscontinued "หยุดการสังเกต"
        varchar DiscontinueReason "เหตุผลการหยุดสังเกต"
        varchar CreatedBy "ผู้บันทึก"
        datetime CreatedDate "วันที่บันทึก"
    }

    EMERGENCY_SURGERY_REQUEST {
        varchar SurgeryRequestID PK "รหัสการสั่งผ่าตัด"
        varchar EmergencyCaseID FK "รหัสเคสฉุกเฉิน"
        varchar RequestingDoctorID FK "แพทย์ผู้สั่ง"
        varchar SurgeryTypeCode FK "ประเภทการผ่าตัด"
        varchar UrgencyLevel FK "ระดับความเร่งด่วน"
        datetime RequestDateTime "วันเวลาที่สั่ง"
        datetime PreferredSurgeryDateTime "วันเวลาที่ต้องการผ่าตัด"
        varchar SurgeonID FK "ศัลยแพทย์"
        varchar AnesthesiologistID FK "วิสัญญีแพทย์"
        varchar OperatingRoomID FK "ห้องผ่าตัด"
        ntext PreOpDiagnosis "การวินิจฉัยก่อนผ่าตัด"
        ntext ProposedProcedure "หัตถการที่วางแผน"
        ntext SurgicalIndication "ข้อบ่งชี้การผ่าตัด"
        varchar AnesthesiaType "ประเภทการดมยาสลบ"
        ntext PreOpPreparation "การเตรียมก่อนผ่าตัด"
        varchar ConsentStatus "สถานะการยินยอม"
        varchar BloodGroupRequired "กรุ๊ปเลือดที่ต้องการ"
        int BloodUnitsRequired "จำนวนหน่วยเลือดที่ต้องการ"
        varchar SpecialEquipment "อุปกรณ์พิเศษ"
        varchar SurgeryStatusCode FK "สถานะการผ่าตัด"
        ntext SpecialInstructions "คำแนะนำพิเศษ"
        varchar CreatedBy "ผู้บันทึก"
        datetime CreatedDate "วันที่บันทึก"
        varchar LastModifiedBy "ผู้แก้ไขล่าสุด"
        datetime LastModifiedDate "วันที่แก้ไขล่าสุด"
    }

    %% Relationships
    EMERGENCY_CASE ||--o| EMS_RECORD : "may have"
    EMERGENCY_CASE ||--o{ OBSERVATION_RECORD : "monitors"
    EMERGENCY_CASE ||--o{ EMERGENCY_SURGERY_REQUEST : "may request"

2.3 ตารางการสั่งยาและการตรวจสอบ (Medication & Drug Check Tables)

erDiagram
    MEDICATION_ORDER {
        varchar MedicationOrderID PK "รหัสการสั่งยา"
        varchar SourceSystem FK "ระบบต้นทาง (EMERGENCY)"
        varchar SourceID FK "รหัสอ้างอิงไปยัง EmergencyCaseID"
        varchar HN FK "รหัสผู้ป่วย"
        varchar VisitID FK "รหัสการเข้ารับบริการ"
        varchar DrugCode FK "รหัสยา"
        varchar DrugName "ชื่อยา"
        varchar DrugGenericName "ชื่อสามัญ"
        varchar Strength "ความแรง"
        varchar Dosage "ขนาดยา"
        varchar Route "วิธีการให้ยา"
        varchar Frequency "ความถี่"
        varchar Duration "ระยะเวลา"
        int Quantity "จำนวน"
        varchar Unit "หน่วย"
        varchar PrescribingDoctorID FK "แพทย์ผู้สั่งจ่าย"
        datetime OrderDateTime "วันเวลาสั่งจ่าย"
        varchar UrgencyLevel FK "ระดับความเร่งด่วน (STAT/ASAP/Routine)"
        varchar MedicationTypeCode FK "ประเภทยา (ฉุกเฉิน/ปกติ)"
        varchar TemplateID FK "รหัส Template (ถ้าใช้)"
        bit IsREMED "เป็นการสั่งยาซ้ำ"
        varchar OriginalMedicationID FK "รหัสการสั่งยาต้นฉบับ (สำหรับ RE-MED)"
        varchar AdministrationInstructions "คำแนะนำการใช้ยา"
        varchar ContraIndications "ข้อห้ามใช้"
        varchar SideEffects "ผลข้างเคียง"
        varchar PharmacistVerification "การตรวจสอบของเภสัชกร"
        varchar OrderStatusCode FK "สถานะคำสั่ง"
        decimal UnitCost "ราคาต่อหน่วย"
        decimal TotalCost "ราคารวม"
        varchar FinanceServiceCode "รหัสบริการสำหรับการคิดเงิน"
        varchar CreatedBy "ผู้บันทึก"
        datetime CreatedDate "วันที่บันทึก"
        varchar LastModifiedBy "ผู้แก้ไขล่าสุด"
        datetime LastModifiedDate "วันที่แก้ไขล่าสุด"
    }

    DRUG_ALLERGY_ALERT {
        varchar AllergyAlertID PK "รหัสการเตือนแพ้ยา"
        varchar EmergencyCaseID FK "รหัสเคสฉุกเฉิน"
        varchar HN FK "รหัสผู้ป่วย"
        varchar DrugCode FK "รหัสยาที่แพ้"
        varchar DrugName "ชื่อยาที่แพ้"
        varchar AllergyTypeCode FK "ประเภทการแพ้"
        varchar SeverityLevel FK "ระดับความรุนแรง"
        varchar AllergyReaction "อาการการแพ้"
        datetime OnsetDate "วันที่เริ่มแพ้"
        varchar ReportedBy "ผู้รายงาน"
        varchar VerifiedBy "ผู้ตรวจสอบ"
        datetime AlertDateTime "วันเวลาการเตือน"
        varchar AlertTriggeredBy "สาเหตุการเตือน"
        varchar AlertLevel FK "ระดับการเตือน"
        ntext AlertMessage "ข้อความเตือน"
        varchar AlertAction "การดำเนินการ"
        bit IsOverridden "ข้ามการเตือน"
        varchar OverrideReason "เหตุผลการข้าม"
        varchar OverrideBy "ผู้ข้ามการเตือน"
        datetime OverrideDateTime "วันเวลาการข้าม"
        bit IsActive "ใช้งานอยู่"
        varchar CreatedBy "ผู้บันทึก"
        datetime CreatedDate "วันที่บันทึก"
    }

    DRUG_INTERACTION_CHECK {
        varchar InteractionID PK "รหัสการตรวจสอบ"
        varchar MedicationOrderID FK "รหัสการสั่งยา"
        varchar EmergencyCaseID FK "รหัสเคสฉุกเฉิน"
        varchar DrugCode1 FK "รหัสยาตัวที่ 1"
        varchar DrugName1 "ชื่อยาตัวที่ 1"
        varchar DrugCode2 FK "รหัสยาตัวที่ 2"
        varchar DrugName2 "ชื่อยาตัวที่ 2"
        varchar InteractionType FK "ประเภทอันตกริยา"
        varchar SeverityLevel FK "ระดับความรุนแรง"
        ntext InteractionDescription "คำอธิบายอันตกริยา"
        ntext ClinicalEffect "ผลทางคลินิก"
        ntext RecommendedAction "การดำเนินการที่แนะนำ"
        varchar CheckedBy "ผู้ตรวจสอบ"
        datetime CheckDateTime "วันเวลาตรวจสอบ"
        varchar CheckResult FK "ผลการตรวจสอบ"
        bit IsOverridden "ข้ามการเตือน"
        ntext OverrideReason "เหตุผลการข้าม"
        varchar OverrideBy "ผู้ข้ามการเตือน"
        datetime OverrideDateTime "วันเวลาการข้าม"
        varchar CreatedBy "ผู้บันทึก"
        datetime CreatedDate "วันที่บันทึก"
    }

    %% Relationships
    EMERGENCY_CASE ||--o{ MEDICATION_ORDER : "SourceSystem='EMERGENCY'"
    EMERGENCY_CASE ||--o{ DRUG_ALLERGY_ALERT : "alerts"
    MEDICATION_ORDER ||--o{ DRUG_INTERACTION_CHECK : "validates"

2.4 ตารางการสั่งตรวจ Lab และ X-Ray (Laboratory & Radiology Orders)

erDiagram
    LAB_ORDER {
        varchar LabOrderID PK "รหัสการสั่ง Lab"
        varchar SourceSystem FK "ระบบต้นทาง (EMERGENCY)"
        varchar SourceID FK "รหัสอ้างอิงไปยัง EmergencyCaseID"
        varchar HN FK "รหัสผู้ป่วย"
        varchar VisitID FK "รหัสการเข้ารับบริการ"
        varchar LabItemCode FK "รหัสรายการ Lab"
        varchar LabItemName "ชื่อรายการ Lab"
        varchar LabGroupCode FK "กลุ่มการตรวจ"
        varchar RequestingDoctorID FK "แพทย์ผู้สั่ง"
        datetime OrderDateTime "วันเวลาสั่งตรวจ"
        varchar UrgencyLevel FK "ระดับความเร่งด่วน (STAT/ASAP/Routine)"
        varchar SpecimenType FK "ประเภทสิ่งส่งตรวจ"
        varchar SpecimenCollectionMethod "วิธีการเก็บสิ่งส่งตรวจ"
        datetime CollectionDateTime "วันเวลาเก็บสิ่งส่งตรวจ"
        varchar CollectedBy "ผู้เก็บสิ่งส่งตรวจ"
        varchar FastingRequired "ต้องงดอาหาร (Y/N)"
        varchar SpecialInstructions "คำแนะนำพิเศษ"
        varchar ClinicalInformation "ข้อมูลทางคลินิก"
        varchar OrderStatusCode FK "สถานะคำสั่ง"
        datetime ExpectedResultTime "เวลาที่คาดว่าจะได้ผล"
        varchar LabDepartmentID FK "แผนกห้องปฏิบัติการ"
        varchar BarCodeNumber "หมายเลข Barcode"
        decimal TestCost "ค่าตรวจ"
        varchar ServiceCode "รหัสบริการสำหรับการคิดเงิน"
        varchar CreatedBy "ผู้บันทึก"
        datetime CreatedDate "วันที่บันทึก"
        varchar LastModifiedBy "ผู้แก้ไขล่าสุด"
        datetime LastModifiedDate "วันที่แก้ไขล่าสุด"
    }

    RADIOLOGY_ORDER {
        varchar XRayOrderID PK "รหัสการสั่ง X-Ray"
        varchar SourceSystem FK "ระบบต้นทาง (EMERGENCY)"
        varchar SourceID FK "รหัสอ้างอิงไปยัง EmergencyCaseID"
        varchar HN FK "รหัสผู้ป่วย"
        varchar VisitID FK "รหัสการเข้ารับบริการ"
        varchar XRayItemCode FK "รหัสรายการ X-Ray"
        varchar XRayItemName "ชื่อรายการ X-Ray"
        varchar RadiologyTypeCode FK "ประเภทการตรวจรังสี"
        varchar BodyPartCode FK "ส่วนของร่างกาย"
        varchar RequestingDoctorID FK "แพทย์ผู้สั่ง"
        datetime OrderDateTime "วันเวลาสั่งตรวจ"
        varchar UrgencyLevel FK "ระดับความเร่งด่วน (STAT/ASAP/Routine)"
        varchar ClinicalIndication "ข้อบ่งชี้ทางคลินิก"
        varchar SpecialInstructions "คำแนะนำพิเศษ"
        varchar ContrastAgent "สารทึบแสง"
        varchar PreparationRequired "การเตรียมตัว"
        varchar PatientPosition "ท่าผู้ป่วย"
        varchar ProjectionCode FK "มุมการถ่าย"
        varchar OrderStatusCode FK "สถานะคำสั่ง"
        datetime ScheduledDateTime "วันเวลานัดตรวจ"
        datetime ExpectedResultTime "เวลาที่คาดว่าจะได้ผล"
        varchar RadiologyDepartmentID FK "แผนกรังสี"
        varchar RadiographerID FK "นักรังสีเทคนิค"
        varchar RadiologistID FK "แพทย์รังสี"
        decimal ExamCost "ค่าตรวจ"
        varchar ServiceCode "รหัสบริการสำหรับการคิดเงิน"
        varchar CreatedBy "ผู้บันทึก"
        datetime CreatedDate "วันที่บันทึก"
        varchar LastModifiedBy "ผู้แก้ไขล่าสุด"
        datetime LastModifiedDate "วันที่แก้ไขล่าสุด"
    }

    LAB_RESULT_VIEW {
        varchar LabResultID PK "รหัสผล Lab"
        varchar LabOrderID FK "รหัสการสั่ง Lab"
        varchar EmergencyCaseID FK "รหัสเคสฉุกเฉิน"
        varchar LabItemCode FK "รหัสรายการ Lab"
        varchar Result "ผลการตรวจ"
        varchar Unit "หน่วย"
        varchar ReferenceRange "ค่าปกติ"
        varchar InterpretationCode FK "การแปลผล"
        varchar CriticalValue "ค่าวิกฤต"
        varchar ReportedDateTime "วันเวลารายงานผล"
        varchar ReportedBy "ผู้รายงานผล"
        varchar VerifiedBy "ผู้ตรวจสอบผล"
        datetime ViewedDateTime "วันเวลาดูผล"
        varchar ViewedBy "ผู้ดูผล"
        bit IsSTATResult "ผลเร่งด่วน"
        bit IsCriticalAlert "การเตือนค่าวิกฤต"
        varchar AlertSentTo "ส่งการเตือนถึง"
        datetime AlertDateTime "วันเวลาเตือน"
    }

    XRAY_RESULT_VIEW {
        varchar XRayResultID PK "รหัสผล X-Ray"
        varchar XRayOrderID FK "รหัสการสั่ง X-Ray"
        varchar EmergencyCaseID FK "รหัสเคสฉุกเฉิน"
        varchar XRayItemCode FK "รหัสรายการ X-Ray"
        varchar ImagePath "ที่อยู่ไฟล์รูปภาพ"
        varchar RadiologyReport "รายงานการอ่านฟิล์ม"
        varchar Impression "ความเห็น"
        varchar RecommendedFollowUp "คำแนะนำติดตาม"
        varchar ReportedDateTime "วันเวลารายงานผล"
        varchar RadiologistID FK "แพทย์รังสีผู้อ่านฟิล์ม"
        varchar TechnicianID FK "นักเทคนิคผู้ถ่าย"
        datetime ViewedDateTime "วันเวลาดูผล"
        varchar ViewedBy "ผู้ดูผล"
        bit IsSTATResult "ผลเร่งด่วน"
        bit IsCriticalFinding "พบสิ่งผิดปกติวิกฤต"
        varchar CriticalFindingAlert "การเตือนพบสิ่งผิดปกติ"
        varchar AlertSentTo "ส่งการเตือนถึง"
        datetime AlertDateTime "วันเวลาเตือน"
    }

    %% Relationships
    EMERGENCY_CASE ||--o{ LAB_ORDER : "SourceSystem='EMERGENCY'"
    EMERGENCY_CASE ||--o{ RADIOLOGY_ORDER : "SourceSystem='EMERGENCY'"
    LAB_ORDER ||--o| LAB_RESULT_VIEW : "produces"
    RADIOLOGY_ORDER ||--o| XRAY_RESULT_VIEW : "produces"

2.5 ตารางการส่งต่อ การปรึกษา และการนัดหมาย (Referral, Consultation & Appointment Tables)

erDiagram
    PATIENT_REFERRAL {
        varchar ReferralID PK "รหัสการส่งต่อ"
        varchar SourceSystem FK "ระบบต้นทาง (EMERGENCY)"
        varchar SourceID FK "รหัสอ้างอิงไปยัง EmergencyCaseID"
        varchar HN FK "รหัสผู้ป่วย"
        varchar VisitID FK "รหัสการเข้ารับบริการ"
        varchar ReferralTypeCode FK "ประเภทการส่งต่อ (โรงพยาบาล/แผนก/ผ่าตัด)"
        varchar ReferringDoctorID FK "แพทย์ผู้ส่งต่อ"
        varchar ReferralDestination "จุดหมายการส่งต่อ"
        varchar DestinationHospitalCode FK "รหัสโรงพยาบาลปลายทาง"
        varchar DestinationDepartmentCode FK "รหัสแผนกปลายทาง"
        varchar ReceivingDoctorID FK "แพทย์ผู้รับส่งต่อ"
        datetime ReferralDateTime "วันเวลาส่งต่อ"
        varchar UrgencyLevel FK "ระดับความเร่งด่วน"
        varchar ReasonForReferral "เหตุผลการส่งต่อ"
        varchar ClinicalSummary "สรุปทางคลินิก"
        varchar CurrentDiagnosis "การวินิจฉัยปัจจุบัน"
        varchar TreatmentGiven "การรักษาที่ได้รับ"
        varchar MedicationList "รายการยาที่ใช้"
        varchar VitalSignsAtReferral "สัญญาณชีพขณะส่งต่อ"
        varchar TransportationMethod "วิธีการขนส่ง"
        varchar AccompanyingPersonnel "เจ้าหน้าที่ที่ติดตาม"
        varchar SpecialEquipmentNeeded "อุปกรณ์พิเศษที่ต้องการ"
        varchar ReferralStatusCode FK "สถานะการส่งต่อ"
        datetime AcceptedDateTime "วันเวลาที่รับการส่งต่อ"
        varchar AcceptedBy "ผู้รับการส่งต่อ"
        varchar FeedbackFromDestination "ข้อมูลป้อนกลับ"
        varchar RightCheckReferenceID FK "รหัสอ้างอิงตรวจสอบสิทธิ"
        varchar CreatedBy "ผู้บันทึก"
        datetime CreatedDate "วันที่บันทึก"
        varchar LastModifiedBy "ผู้แก้ไขล่าสุด"
        datetime LastModifiedDate "วันที่แก้ไขล่าสุด"
    }

    PATIENT_CONSULTATION {
        varchar ConsultationID PK "รหัสการปรึกษา"
        varchar SourceSystem FK "ระบบต้นทาง (EMERGENCY)"
        varchar SourceID FK "รหัสอ้างอิงไปยัง EmergencyCaseID"
        varchar HN FK "รหัสผู้ป่วย"
        varchar VisitID FK "รหัสการเข้ารับบริการ"
        varchar RequestingDoctorID FK "แพทย์ผู้ขอปรึกษา"
        varchar ConsultantDoctorID FK "แพทย์ที่ขอปรึกษา"
        varchar ConsultantDepartmentCode FK "แผนกที่ขอปรึกษา"
        datetime RequestDateTime "วันเวลาขอปรึกษา"
        varchar UrgencyLevel FK "ระดับความเร่งด่วน"
        varchar ConsultationTypeCode FK "ประเภทการปรึกษา"
        varchar Question "คำถามที่ปรึกษา"
        varchar ClinicalSummary "สรุปทางคลินิก"
        varchar PatientHistory "ประวัติผู้ป่วย"
        varchar CurrentFindings "ผลการตรวจปัจจุบัน"
        varchar LabResults "ผล Lab"
        varchar RadiologyResults "ผลการตรวจรังสี"
        varchar ConsultationAnswer "คำตอบการปรึกษา"
        varchar Recommendations "คำแนะนำ"
        varchar TreatmentSuggestions "คำแนะนำการรักษา"
        varchar FollowUpInstructions "คำแนะนำการติดตาม"
        datetime ResponseDateTime "วันเวลาตอบกลับ"
        varchar ConsultationStatusCode FK "สถานะการปรึกษา"
        bit RequiresFaceToFace "ต้องการพบตัวจริง"
        varchar ConsultationMethod "วิธีการปรึกษา (โทรศัพท์/พบตัว/อิเล็กทรอนิกส์)"
        varchar CreatedBy "ผู้บันทึก"
        datetime CreatedDate "วันที่บันทึก"
        varchar LastModifiedBy "ผู้แก้ไขล่าสุด"
        datetime LastModifiedDate "วันที่แก้ไขล่าสุด"
    }

    PATIENT_APPOINTMENT {
        varchar AppointmentID PK "รหัสการนัดหมาย"
        varchar SourceSystem FK "ระบบต้นทาง (EMERGENCY)"
        varchar SourceID FK "รหัสอ้างอิงไปยัง EmergencyCaseID"
        varchar HN FK "รหัสผู้ป่วย"
        varchar VisitID FK "รหัสการเข้ารับบริการ"
        varchar AppointmentTypeCode FK "ประเภทการนัด"
        varchar DoctorID FK "แพทย์ที่นัด"
        varchar DepartmentCode FK "แผนกที่นัด"
        varchar RoomID FK "ห้องที่นัด"
        datetime AppointmentDateTime "วันเวลานัด"
        varchar AppointmentTimeSlot "ช่วงเวลานัด"
        varchar Duration "ระยะเวลานัด (นาที)"
        varchar ReasonForAppointment "เหตุผลการนัด"
        varchar SpecialInstructions "คำแนะนำพิเศษ"
        varchar PreparationInstructions "คำแนะนำการเตรียมตัว"
        varchar LabOrderedInAdvance "Lab ที่สั่งล่วงหน้า"
        varchar XRayOrderedInAdvance "X-Ray ที่สั่งล่วงหน้า"
        varchar AppointmentStatusCode FK "สถานะการนัด"
        varchar AppointmentMethod FK "วิธีการนัด (วัน/สัปดาห์/เดือน)"
        int WeeksFromNow "จำนวนสัปดาห์นับจากนี้"
        int MonthsFromNow "จำนวนเดือนนับจากนี้"
        bit IsHolidayConflict "ตรงกับวันหยุด"
        varchar HolidayWarning "คำเตือนวันหยุด"
        varchar ConfirmationStatus "สถานะการยืนยัน"
        datetime ConfirmedDateTime "วันเวลายืนยัน"
        varchar ConfirmedBy "ผู้ยืนยัน"
        varchar PatientContactNumber "เบอร์ติดต่อผู้ป่วย"
        varchar ReminderSent "การส่งการแจ้งเตือน"
        datetime ReminderSentDateTime "วันเวลาส่งแจ้งเตือน"
        varchar CreatedBy "ผู้บันทึก"
        datetime CreatedDate "วันที่บันทึก"
        varchar LastModifiedBy "ผู้แก้ไขล่าสุด"
        datetime LastModifiedDate "วันที่แก้ไขล่าสุด"
    }

    %% Relationships
    EMERGENCY_CASE ||--o{ PATIENT_REFERRAL : "SourceSystem='EMERGENCY'"
    EMERGENCY_CASE ||--o{ PATIENT_CONSULTATION : "SourceSystem='EMERGENCY'"
    EMERGENCY_CASE ||--o{ PATIENT_APPOINTMENT : "SourceSystem='EMERGENCY'"

2.6 ตารางจัดการระบบและใบรับรอง (System Management & Certificate Tables)

erDiagram
    EMERGENCY_NOTES {
        varchar NotesID PK "รหัสหมายเหตุ"
        varchar EmergencyCaseID FK "รหัสเคสฉุกเฉิน"
        varchar NoteTypeCode FK "ประเภทหมายเหตุ"
        varchar AuthorID FK "ผู้เขียน"
        datetime NoteDateTime "วันเวลาบันทึก"
        ntext NoteContent "เนื้อหาหมายเหตุ"
        varchar NoteCategory FK "หมวดหมู่หมายเหตุ"
        varchar VisibilityLevel FK "ระดับการมองเห็น"
        bit IsConfidential "เป็นความลับ"
        varchar RelatedToCode FK "เกี่ยวข้องกับ"
        varchar AttachmentPath "ไฟล์แนบ"
        varchar CreatedBy "ผู้บันทึก"
        datetime CreatedDate "วันที่บันทึก"
        varchar LastModifiedBy "ผู้แก้ไขล่าสุด"
        datetime LastModifiedDate "วันที่แก้ไขล่าสุด"
    }

    EMERGENCY_CERTIFICATE {
        varchar CertificateID PK "รหัสใบรับรอง"
        varchar EmergencyCaseID FK "รหัสเคสฉุกเฉิน"
        varchar HN FK "รหัสผู้ป่วย"
        varchar CertificateTypeCode FK "ประเภทใบรับรอง"
        varchar IssuingDoctorID FK "แพทย์ผู้ออกใบรับรอง"
        datetime IssueDateTime "วันเวลาออกใบรับรอง"
        varchar Language FK "ภาษา (TH/EN)"
        varchar CertificatePurpose "วัตถุประสงค์ใบรับรอง"
        varchar DiagnosisOnCertificate "การวินิจฉัยในใบรับรอง"
        varchar TreatmentDetails "รายละเอียดการรักษา"
        varchar MedicalAdvice "คำแนะนำแพทย์"
        int SickLeaveDays "จำนวนวันลาป่วย"
        datetime SickLeaveStartDate "วันเริ่มลาป่วย"
        datetime SickLeaveEndDate "วันสิ้นสุดลาป่วย"
        varchar WorkRestrictions "ข้อจำกัดการทำงาน"
        varchar FollowUpInstructions "คำแนะนำการติดตาม"
        varchar SpecialConditions "เงื่อนไขพิเศษ"
        varchar CertificateNumber "หมายเลขใบรับรอง"
        varchar TemplateUsed "แม่แบบที่ใช้"
        varchar PrintStatus FK "สถานะการพิมพ์"
        datetime PrintedDateTime "วันเวลาพิมพ์"
        varchar PrintedBy "ผู้พิมพ์"
        int PrintCount "จำนวนครั้งที่พิมพ์"
        varchar DigitalSignature "ลายเซ็นดิจิทัล"
        varchar QRCode "รหัส QR สำหรับตรวจสอบ"
        varchar VerificationCode "รหัสตรวจสอบ"
        varchar CreatedBy "ผู้บันทึก"
        datetime CreatedDate "วันที่บันทึก"
    }

    COST_SUMMARY {
        varchar CostSummaryID PK "รหัสสรุปค่าใช้จ่าย"
        varchar EmergencyCaseID FK "รหัสเคสฉุกเฉิน"
        varchar HN FK "รหัสผู้ป่วย"
        varchar VisitID FK "รหัสการเข้ารับบริการ"
        decimal DoctorConsultationFee "ค่าตรวจแพทย์"
        decimal NursingCareFee "ค่าพยาบาล"
        decimal MedicationCost "ค่ายา"
        decimal LabTestCost "ค่าตรวจ Lab"
        decimal RadiologyCost "ค่าตรวจรังสี"
        decimal ProcedureCost "ค่าหัตถการ"
        decimal EmergencyRoomFee "ค่าห้องฉุกเฉิน"
        decimal ObservationFee "ค่าสังเกตอาการ"
        decimal EMSFee "ค่าบริการ EMS"
        decimal SpecialEquipmentFee "ค่าอุปกรณ์พิเศษ"
        decimal OtherCharges "ค่าใช้จ่ายอื่นๆ"
        decimal SubTotal "รวมย่อย"
        decimal Discount "ส่วนลด"
        decimal TaxAmount "ภาษี"
        decimal GrandTotal "รวมทั้งหมด"
        varchar PaymentMethod FK "วิธีการชำระเงิน"
        varchar InsuranceClaimNumber "หมายเลขเคลมประกัน"
        decimal InsuranceCoverage "จำนวนที่ประกันครอบคลุม"
        decimal PatientPay "ยอดที่ผู้ป่วยต้องจ่าย"
        varchar BillingStatusCode FK "สถานะการเรียกเก็บเงิน"
        varchar FinanceReferenceID FK "รหัสอ้างอิงระบบการเงิน"
        datetime CalculatedDateTime "วันเวลาคำนวณ"
        varchar CalculatedBy "ผู้คำนวณ"
        varchar CreatedBy "ผู้บันทึก"
        datetime CreatedDate "วันที่บันทึก"
    }

    SHIFT_MANAGEMENT {
        varchar ShiftID PK "รหัสเวร"
        date ShiftDate "วันที่เวร"
        varchar ShiftTypeCode FK "ประเภทเวร (เช้า/บ่าย/ดึก)"
        time ShiftStartTime "เวลาเริ่มเวร"
        time ShiftEndTime "เวลาสิ้นสุดเวร"
        varchar EmergencyRoomID FK "รหัสห้องฉุกเฉิน"
        varchar PrimaryDoctorID FK "แพทย์หลัก"
        varchar BackupDoctorID FK "แพทย์สำรอง"
        varchar HeadNurseID FK "หัวหน้าพยาบาล"
        varchar NurseStaff "พยาบาลในเวร (JSON Array)"
        varchar SupportStaff "เจ้าหน้าที่สนับสนุน (JSON Array)"
        int MaxPatientCapacity "ความจุผู้ป่วยสูงสุด"
        int CurrentPatientCount "จำนวนผู้ป่วยปัจจุบัน"
        varchar ShiftStatusCode FK "สถานะเวร"
        varchar SpecialEvents "เหตุการณ์พิเศษ"
        varchar EmergencyProcedures "ขั้นตอนฉุกเฉิน"
        varchar HandoverNotes "หมายเหตุการส่งมอบ"
        varchar PreviousShiftID FK "รหัสเวรก่อนหน้า"
        varchar NextShiftID FK "รหัสเวรถัดไป"
        varchar CreatedBy "ผู้บันทึก"
        datetime CreatedDate "วันที่บันทึก"
        varchar LastModifiedBy "ผู้แก้ไขล่าสุด"
        datetime LastModifiedDate "วันที่แก้ไขล่าสุด"
    }

    SYSTEM_INTEGRATION_LOG {
        varchar LogID PK "รหัส Log"
        varchar SystemName "ชื่อระบบ"
        varchar IntegrationType FK "ประเภทการเชื่อมโยง"
        varchar RequestType FK "ประเภทคำขอ"
        varchar EndpointURL "URL ปลายทาง"
        ntext RequestData "ข้อมูลคำขอ"
        ntext ResponseData "ข้อมูลตอบกลับ"
        varchar StatusCode "รหัสสถานะ"
        varchar ErrorMessage "ข้อความข้อผิดพลาด"
        datetime RequestDateTime "วันเวลาส่งคำขอ"
        datetime ResponseDateTime "วันเวลาได้รับการตอบกลับ"
        int ResponseTime "เวลาตอบสนอง (milliseconds)"
        varchar UserID "รหัสผู้ใช้"
        varchar SessionID "รหัสเซสชัน"
        varchar IPAddress "หมายเลข IP"
    }

    AUDIT_LOG {
        varchar AuditID PK "รหัส Audit"
        varchar TableName "ชื่อตาราง"
        varchar RecordID "รหัสข้อมูล"
        varchar ActionType FK "ประเภทการดำเนินการ"
        varchar UserID FK "รหัสผู้ใช้"
        varchar UserRole "บทบาทผู้ใช้"
        datetime ActionDateTime "วันเวลาดำเนินการ"
        varchar IPAddress "หมายเลข IP"
        varchar SessionID "รหัสเซสชัน"
        ntext OldValues "ค่าเดิม (JSON)"
        ntext NewValues "ค่าใหม่ (JSON)"
        varchar Reason "เหตุผล"
        varchar Module "โมดูล"
        varchar Feature "ฟีเจอร์"
    }

    %% Relationships
    EMERGENCY_CASE ||--o{ EMERGENCY_NOTES : "has"
    EMERGENCY_CASE ||--o{ EMERGENCY_CERTIFICATE : "generates"
    EMERGENCY_CASE ||--o| COST_SUMMARY : "calculates"
    EMERGENCY_CASE ||--o| SHIFT_MANAGEMENT : "during"
    EMERGENCY_CASE ||--o{ SYSTEM_INTEGRATION_LOG : "logs"
    EMERGENCY_CASE ||--o{ AUDIT_LOG : "audits"

3. ตาราง Master Data และการเชื่อมโยง

3.1 ตาราง Master Data ทางการแพทย์ฉุกเฉิน

erDiagram
    ICD_CODES {
        varchar ICDCode PK "รหัส ICD"
        varchar ICDVersion FK "เวอร์ชัน ICD (10/11)"
        varchar ICDType FK "ประเภท (WHO/Thai)"
        varchar ChapterCode "รหัสบท"
        varchar CategoryCode "รหัสหมวด"
        varchar SubCategoryCode "รหัสหมวดย่อย"
        varchar ICDNameTH "ชื่อภาษาไทย"
        varchar ICDNameEN "ชื่อภาษาอังกฤษ"
        varchar Description "คำอธิบาย"
        varchar Inclusion "รวมถึง"
        varchar Exclusion "ไม่รวม"
        varchar Synonym "คำเหมือน"
        varchar Abbreviation "ตัวย่อ"
        bit IsEmergencyRelevant "เกี่ยวข้องกับฉุกเฉิน"
        varchar SeverityLevel FK "ระดับความรุนแรง"
        varchar TriageCategory FK "หมวดหมู่การคัดกรอง"
        varchar UsageFrequency FK "ความถี่การใช้"
        bit IsActive "ใช้งานอยู่"
        varchar CreatedBy "ผู้บันทึก"
        datetime CreatedDate "วันที่บันทึก"
        varchar LastModifiedBy "ผู้แก้ไขล่าสุด"
        datetime LastModifiedDate "วันที่แก้ไขล่าสุด"
    }

    TREATMENT_GROUP {
        varchar TreatmentGroupCode PK "รหัสกลุ่มการรักษา"
        varchar GroupName "ชื่อกลุ่ม"
        varchar Description "คำอธิบาย"
        decimal BasePrice "ราคาพื้นฐาน"
        varchar PriceCategory FK "หมวดราคา"
        varchar ServiceCategory FK "หมวดบริการ"
        bit IsEmergencyTreatment "เป็นการรักษาฉุกเฉิน"
        varchar UrgencyLevel FK "ระดับความเร่งด่วน"
        decimal EmergencyMultiplier "ตัวคูณค่าฉุกเฉิน"
        varchar DurationEstimate "ระยะเวลาประมาณ"
        varchar ResourcesRequired "ทรัพยากรที่ต้องการ"
        bit RequiresSpecialist "ต้องการแพทย์เฉพาะทาง"
        varchar PreparationRequired "การเตรียมที่ต้องการ"
        varchar FollowUpRequired "การติดตามที่ต้องการ"
        bit IsActive "ใช้งานอยู่"
        varchar CreatedBy "ผู้บันทึก"
        datetime CreatedDate "วันที่บันทึก"
    }

    MEDICATION_TEMPLATES {
        varchar TemplateID PK "รหัส Template"
        varchar TemplateName "ชื่อ Template"
        varchar TemplateCategory FK "หมวดหมู่ Template"
        varchar DiagnosisCode FK "รหัสการวินิจฉัยที่เกี่ยวข้อง"
        varchar EmergencyCondition "สภาวะฉุกเฉิน"
        varchar AgeGroup FK "กลุ่มอายุ"
        varchar WeightRange "ช่วงน้ำหนัก"
        varchar SpecialConditions "เงื่อนไขพิเศษ"
        ntext MedicationList "รายการยา (JSON Array)"
        ntext DosageInstructions "คำแนะนำขนาดยา"
        ntext ContraIndications "ข้อห้ามใช้"
        ntext SideEffects "ผลข้างเคียง"
        ntext MonitoringRequired "การติดตามที่ต้องการ"
        varchar CreatedByDoctorID FK "แพทย์ผู้สร้าง"
        varchar ApprovedByDoctorID FK "แพทย์ผู้อนุมัติ"
        datetime ApprovedDate "วันที่อนุมัติ"
        varchar UsageCount "จำนวนครั้งที่ใช้"
        datetime LastUsedDate "วันที่ใช้ล่าสุด"
        bit IsActive "ใช้งานอยู่"
        varchar CreatedBy "ผู้บันทึก"
        datetime CreatedDate "วันที่บันทึก"
    }

    TRIAGE_CATEGORIES {
        varchar TriageCategoryCode PK "รหัสหมวดหมู่คัดกรอง"
        varchar CategoryName "ชื่อหมวดหมู่"
        varchar CategoryNameEN "ชื่อภาษาอังกฤษ"
        int Priority "ลำดับความสำคัญ (1-5)"
        varchar ColorCode "รหัสสี"
        varchar Description "คำอธิบาย"
        varchar Criteria "เกณฑ์การคัดกรอง"
        varchar SymptomKeywords "คำสำคัญอาการ"
        int MaxWaitTime "เวลารอสูงสุด (นาที)"
        varchar ResponseTime "เวลาตอบสนอง"
        varchar RequiredPersonnel "บุคลากรที่ต้องการ"
        varchar EquipmentNeeded "อุปกรณ์ที่ต้องการ"
        varchar MonitoringInterval "ช่วงเวลาติดตาม"
        varchar EscalationCriteria "เกณฑ์การส่งต่อ"
        bit RequiresImmediateAttention "ต้องการความสนใจทันที"
        varchar CreatedBy "ผู้บันทึก"
        datetime CreatedDate "วันที่บันทึก"
        bit IsActive "ใช้งานอยู่"
    }

    ACCIDENT_TYPES {
        varchar AccidentTypeCode PK "รหัสประเภทอุบัติเหตุ"
        varchar TypeName "ชื่อประเภท"
        varchar TypeNameEN "ชื่อภาษาอังกฤษ"
        varchar Category FK "หมวดหมู่"
        varchar Description "คำอธิบาย"
        varchar CommonCauses "สาเหตุที่พบบ่อย"
        varchar TypicalInjuries "การบาดเจ็บที่มักพบ"
        varchar RequiredInformation "ข้อมูลที่ต้องการ"
        varchar LegalRequirements "ข้อกำหนดทางกฎหมาย"
        varchar InsuranceConsiderations "ข้อพิจารณาด้านประกัน"
        varchar PreventionMeasures "มาตรการป้องกัน"
        varchar StatisticalCategory "หมวดหมู่สถิติ"
        bit RequiresPoliceReport "ต้องการรายงานตำรวจ"
        bit RequiresDetailedDocumentation "ต้องการเอกสารรายละเอียด"
        bit IsActive "ใช้งานอยู่"
        varchar CreatedBy "ผู้บันทึก"
        datetime CreatedDate "วันที่บันทึก"
    }

    EMERGENCY_PROCEDURES {
        varchar ProcedureCode PK "รหัสหัตถการ"
        varchar ProcedureName "ชื่อหัตถการ"
        varchar ProcedureNameEN "ชื่อภาษาอังกฤษ"
        varchar ICDProcedureCode FK "รหัสหัตถการ ICD"
        varchar Category FK "หมวดหมู่"
        varchar Complexity FK "ความซับซ้อน"
        varchar Description "คำอธิบาย"
        varchar Indications "ข้อบ่งชี้"
        varchar Contraindications "ข้อห้าม"
        varchar RequiredEquipment "อุปกรณ์ที่ต้องการ"
        varchar RequiredPersonnel "บุคลากรที่ต้องการ"
        varchar PreparationSteps "ขั้นตอนการเตรียม"
        varchar ProcedureSteps "ขั้นตอนการทำ"
        varchar PostProcedureCare "การดูแลหลังทำ"
        varchar Complications "ภาวะแทรกซ้อน"
        int EstimatedDuration "ระยะเวลาประมาณ (นาที)"
        decimal ProcedureCost "ค่าหัตถการ"
        bit RequiresConsent "ต้องการการยินยอม"
        bit IsEmergencyProcedure "เป็นหัตถการฉุกเฉิน"
        varchar CreatedBy "ผู้บันทึก"
        datetime CreatedDate "วันที่บันทึก"
        bit IsActive "ใช้งานอยู่"
    }

3.2 ตารางข้อมูลอ้างอิงจากระบบอื่น

erDiagram
    DOCTORS {
        varchar DoctorID PK "รหัสแพทย์"
        varchar DoctorCode "รหัสแพทย์"
        varchar TitleName "คำนำหน้า"
        varchar FirstName "ชื่อ"
        varchar LastName "นามสกุล"
        varchar FullName "ชื่อ-นามสกุล"
        varchar LicenseNumber "หมายเลขใบประกอบวิชาชีพ"
        varchar Specialization "ความเชี่ยวชาญ"
        varchar DepartmentCode FK "รหัสแผนก"
        varchar Position "ตำแหน่ง"
        varchar EmergencySpecialty "ความเชี่ยวชาญฉุกเฉิน"
        bit IsEmergencyDoctor "เป็นแพทย์ฉุกเฉิน"
        bit IsAvailableForConsult "พร้อมให้คำปรึกษา"
        varchar ContactNumber "หมายเลขติดต่อ"
        varchar EmailAddress "อีเมล"
        varchar WorkSchedule "ตารางการทำงาน"
        bit IsActive "ใช้งานอยู่"
    }

    DEPARTMENTS {
        varchar DepartmentCode PK "รหัสแผนก"
        varchar DepartmentName "ชื่อแผนก"
        varchar DepartmentNameEN "ชื่อภาษาอังกฤษ"
        varchar DepartmentType FK "ประเภทแผนก"
        varchar ParentDepartmentCode FK "แผนกหลัก"
        varchar HeadOfDepartment "หัวหน้าแผนก"
        varchar ContactNumber "หมายเลขติดต่อ"
        varchar Location "สถานที่ตั้ง"
        varchar BuildingCode "รหัสอาคาร"
        varchar FloorNumber "ชั้น"
        varchar OperatingHours "ชั่วโมงการทำงาน"
        bit IsEmergencyDepartment "เป็นแผนกฉุกเฉิน"
        bit AcceptsEmergencyReferrals "รับการส่งต่อฉุกเฉิน"
        bit IsActive "ใช้งานอยู่"
    }

    EMERGENCY_ROOMS {
        varchar EmergencyRoomID PK "รหัสห้องฉุกเฉิน"
        varchar RoomNumber "หมายเลขห้อง"
        varchar RoomName "ชื่อห้อง"
        varchar RoomType FK "ประเภทห้อง"
        varchar BuildingCode FK "รหัสอาคาร"
        varchar FloorNumber "ชั้น"
        varchar Zone "โซน"
        int Capacity "ความจุ"
        varchar Equipment "อุปกรณ์"
        varchar SpecialFeatures "คุณสมบัติพิเศษ"
        bit HasMonitoringEquipment "มีอุปกรณ์ติดตาม"
        bit HasLifeSupportEquipment "มีอุปกรณ์ช่วยชีวิต"
        bit IsTraumaRoom "เป็นห้องอุบัติเหตุ"
        bit IsIsolationCapable "สามารถแยกกักได้"
        varchar CurrentStatus FK "สถานะปัจจุบัน"
        varchar MaintenanceSchedule "ตารางบำรุงรักษา"
        bit IsActive "ใช้งานอยู่"
    }

    LAB_ITEMS {
        varchar LabItemCode PK "รหัสรายการ Lab"
        varchar LabItemName "ชื่อรายการ"
        varchar LabItemNameEN "ชื่อภาษาอังกฤษ"
        varchar LabGroupCode FK "รหัสกลุ่ม"
        varchar LabGroupName "ชื่อกลุ่ม"
        varchar TestMethod "วิธีการตรวจ"
        varchar SpecimenType FK "ประเภทสิ่งส่งตรวจ"
        varchar SpecimenRequirement "ข้อกำหนดสิ่งส่งตรวจ"
        varchar NormalRange "ค่าปกติ"
        varchar Unit "หน่วย"
        varchar CriticalValueLow "ค่าวิกฤตต่ำ"
        varchar CriticalValueHigh "ค่าวิกฤตสูง"
        int TurnaroundTime "เวลาทำผล (นาที)"
        int STATTurnaroundTime "เวลาทำผลแบบเร่งด่วน (นาที)"
        decimal RegularPrice "ราคาปกติ"
        decimal STATPrice "ราคาเร่งด่วน"
        bit IsSTATAvailable "มีบริการเร่งด่วน"
        bit IsEmergencyTest "เป็นการตรวจฉุกเฉิน"
        varchar DepartmentCode FK "แผนกที่ทำการตรวจ"
        bit IsActive "ใช้งานอยู่"
    }

    XRAY_ITEMS {
        varchar XRayItemCode PK "รหัสรายการ X-Ray"
        varchar XRayItemName "ชื่อรายการ"
        varchar XRayItemNameEN "ชื่อภาษาอังกฤษ"
        varchar RadiologyType FK "ประเภทการตรวจรังสี"
        varchar BodyPart "ส่วนของร่างกาย"
        varchar ExamType FK "ประเภทการตรวจ"
        varchar Projection "มุมการถ่าย"
        varchar Technique "เทคนิคการตรวจ"
        varchar ContrastRequired "ต้องการสารทึบแสง"
        varchar PreparationRequired "ต้องการการเตรียมตัว"
        varchar PatientPosition "ท่าผู้ป่วย"
        int ExamDuration "ระยะเวลาตรวจ (นาที)"
        int STATDuration "ระยะเวลาตรวจแบบเร่งด่วน (นาที)"
        decimal RegularPrice "ราคาปกติ"
        decimal STATPrice "ราคาเร่งด่วน"
        decimal ContrastPrice "ราคาสารทึบแสง"
        bit IsSTATAvailable "มีบริการเร่งด่วน"
        bit IsEmergencyExam "เป็นการตรวจฉุกเฉิน"
        bit RequiresRadiologist "ต้องการแพทย์รังสี"
        varchar DepartmentCode FK "แผนกรังสี"
        bit IsActive "ใช้งานอยู่"
    }

    EMS_UNITS {
        varchar EMSUnitID PK "รหัสหน่วย EMS"
        varchar UnitNumber "หมายเลขหน่วย"
        varchar UnitType FK "ประเภทหน่วย"
        varchar VehicleType FK "ประเภทยานพาหนะ"
        varchar LicensePlate "ทะเบียนรถ"
        varchar Equipment "อุปกรณ์"
        varchar MedicalEquipment "อุปกรณ์การแพทย์"
        varchar CommunicationEquipment "อุปกรณ์สื่อสาร"
        varchar BaseStation "สถานีฐาน"
        varchar CoverageArea "พื้นที่รับผิดชอบ"
        varchar CurrentStatus FK "สถานะปัจจุบัน"
        varchar CrewMembers "สมาชิกทีม"
        varchar ContactFrequency "ความถี่สื่อสาร"
        varchar GPSTracking "การติดตาม GPS"
        datetime LastMaintenanceDate "วันที่บำรุงรักษาล่าสุด"
        datetime NextMaintenanceDate "วันที่บำรุงรักษาถัดไป"
        varchar MaintenanceStatus "สถานะการบำรุงรักษา"
        bit IsActive "ใช้งานอยู่"
    }

4. การเชื่อมโยงกับระบบอื่น (System Integration)

4.1 แผนภาพการเชื่อมโยงระบบ

graph TB
    subgraph "🟢 ระบบห้องฉุกเฉิน (1.2.4)"
        EMERGENCY_CORE["🚨 EMERGENCY_CASE<br/>เคสฉุกเฉินหลัก"]
        TRIAGE_CORE["⚡ TRIAGE_ASSESSMENT<br/>การคัดกรอง"]
        TREATMENT_CORE["🏥 EMERGENCY_TREATMENT<br/>การรักษา"]
        EMS_CORE["🚑 EMS_RECORD<br/>บันทึก EMS"]
        OBSERVE_CORE["👁️ OBSERVATION_RECORD<br/>การสังเกต"]
        SURGERY_REQ_CORE["⚕️ EMERGENCY_SURGERY_REQUEST<br/>สั่งผ่าตัด"]
        COST_CORE["💰 COST_SUMMARY<br/>สรุปค่าใช้จ่าย"]
        SHIFT_CORE["⏰ SHIFT_MANAGEMENT<br/>จัดการเวร"]
    end

    subgraph "🔴 External Systems"
        PATIENT_EXT["📋 ระบบเวชระเบียน<br/>(1.2.1)<br/>HN, VisitID, PatientInfo"]
        HISTORY_EXT["📝 ระบบซักประวัติ<br/>(1.2.2)<br/>HistoryID, VitalSigns"]
        EXAM_EXT["🩺 ระบบห้องตรวจแพทย์<br/>(1.2.3)<br/>ExaminationID"]
        PHARMACY_EXT["💊 ระบบเภสัชกรรม<br/>(1.2.13)<br/>Drug Master, Interaction"]
        DRUG_INT_EXT["🔍 Drug Interaction DB<br/>External Service"]
        RIGHT_CHECK["🎫 ระบบตรวจสอบสิทธิ<br/>(1.2.15)<br/>Rights Verification"]
        LAB_EXT["🔬 ระบบงานชันสูตร<br/>(1.2.7)<br/>Lab Orders & Results"]
        LAB_RESULT["📊 Lab Results<br/>STAT Results"]
        XRAY_EXT["📸 ระบบรังสีวิทยา<br/>(1.2.8)<br/>Radiology Orders & Results"]
        XRAY_RESULT["📹 X-Ray Results<br/>STAT Results"]
        SURGERY_EXT["⚕️ ระบบห้องผ่าตัด<br/>(1.2.18)<br/>Surgery Scheduling"]
        IPD_EXT["🏥 ระบบผู้ป่วยใน<br/>(1.2.17)<br/>Admission Requests"]
        FINANCE_EXT["💰 ระบบการเงิน<br/>(1.2.14)<br/>Billing & Payment"]
    end

    %% Input Data Flows
    PATIENT_EXT -->|HN, VisitID| EMERGENCY_CORE
    HISTORY_EXT -->|HistoryID, VitalSigns| EMERGENCY_CORE
    EXAM_EXT -.->|Previous Examination| EMERGENCY_CORE
    RIGHT_CHECK -->|Rights Verification| EMERGENCY_CORE
    EMS_CORE -->|EMS Data| EMERGENCY_CORE

    %% Shared Tables Integration
    EMERGENCY_CORE -->|SourceSystem='EMERGENCY'| DIAGNOSIS_SHARED["🔵 MEDICAL_DIAGNOSIS"]
    EMERGENCY_CORE -->|SourceSystem='EMERGENCY'| PROCEDURES_SHARED["🔵 MEDICAL_PROCEDURE"]
    EMERGENCY_CORE -->|SourceSystem='EMERGENCY'| MEDICATION_SHARED["🔵 MEDICATION_ORDER"]
    EMERGENCY_CORE -->|SourceSystem='EMERGENCY'| LAB_SHARED["🔵 LAB_ORDER"]
    EMERGENCY_CORE -->|SourceSystem='EMERGENCY'| XRAY_SHARED["🔵 RADIOLOGY_ORDER"]
    EMERGENCY_CORE -->|SourceSystem='EMERGENCY'| REFER_SHARED["🔵 PATIENT_REFERRAL"]
    EMERGENCY_CORE -->|SourceSystem='EMERGENCY'| CONSULT_SHARED["🔵 PATIENT_CONSULTATION"]
    EMERGENCY_CORE -->|SourceSystem='EMERGENCY'| APPOINTMENT_SHARED["🔵 PATIENT_APPOINTMENT"]

    %% Output Data Flows
    MEDICATION_SHARED -->|Emergency Medication Orders| PHARMACY_EXT
    MEDICATION_SHARED <-->|Drug Interaction Check| DRUG_INT_EXT
    LAB_SHARED -->|STAT Lab Orders| LAB_EXT
    LAB_EXT -->|STAT Results| LAB_RESULT
    LAB_RESULT -->|Real-time Results| EMERGENCY_CORE
    XRAY_SHARED -->|STAT Radiology Orders| XRAY_EXT
    XRAY_EXT -->|STAT Results| XRAY_RESULT
    XRAY_RESULT -->|Real-time Results| EMERGENCY_CORE
    SURGERY_REQ_CORE -->|Emergency Surgery Request| SURGERY_EXT
    REFER_SHARED -->|Admission Request| IPD_EXT
    COST_CORE -->|Emergency Billing| FINANCE_EXT

    %% Emergency Specific Flows
    TRIAGE_CORE -->|Triage Priority| SHIFT_CORE
    SHIFT_CORE -->|Staff Assignment| TREATMENT_CORE
    OBSERVE_CORE -->|Patient Monitoring| TREATMENT_CORE
    TREATMENT_CORE -->|Treatment Outcome| COST_CORE

    %% Styling
    classDef coreSystem fill:#e8f5e8,stroke:#2e7d32,stroke-width:3px
    classDef externalSystem fill:#ffebee,stroke:#c62828,stroke-width:2px
    classDef sharedTable fill:#e3f2fd,stroke:#1565c0,stroke-width:3px

    class EMERGENCY_CORE,TRIAGE_CORE,TREATMENT_CORE,EMS_CORE,OBSERVE_CORE,SURGERY_REQ_CORE,COST_CORE,SHIFT_CORE coreSystem
    class PATIENT_EXT,HISTORY_EXT,EXAM_EXT,PHARMACY_EXT,DRUG_INT_EXT,RIGHT_CHECK,LAB_EXT,LAB_RESULT,XRAY_EXT,XRAY_RESULT,SURGERY_EXT,IPD_EXT,FINANCE_EXT externalSystem
    class DIAGNOSIS_SHARED,PROCEDURES_SHARED,MEDICATION_SHARED,LAB_SHARED,XRAY_SHARED,REFER_SHARED,CONSULT_SHARED,APPOINTMENT_SHARED sharedTable

4.2 API Integration Points

🔗 การเชื่อมโยงข้อมูลเข้า (Input Integration): - HN และ VisitID จากระบบเวชระเบียน (1.2.1) - HistoryID และ VitalSignsID จากระบบซักประวัติ (1.2.2) - ถ้ามีการซักประวัติก่อน - ข้อมูลการตรวจก่อนหน้าจากระบบห้องตรวจแพทย์ (1.2.3) - ถ้ามี - RightsVerificationID จากระบบตรวจสอบสิทธิ (1.2.15) - ข้อมูล Master Data ยาจากระบบเภสัชกรรม (1.2.13) - ข้อมูล Master Data Lab จากระบบงานชันสูตร (1.2.7) - ข้อมูล Master Data X-Ray จากระบบรังสีวิทยา (1.2.8) - ข้อมูล EMS จากหน่วย EMS ภายนอก

🔗 การเชื่อมโยงข้อมูลออก (Output Integration): - การสั่งยาฉุกเฉินไปยังระบบเภสัชกรรม (1.2.13) พร้อม Priority STAT/ASAP - การสั่ง Lab แบบเร่งด่วน (STAT) ไปยังระบบงานชันสูตร (1.2.7) - การสั่ง X-Ray แบบเร่งด่วน (STAT) ไปยังระบบรังสีวิทยา (1.2.8) - การสั่งผ่าตัดฉุกเฉินไปยังระบบห้องผ่าตัด (1.2.18) - การขอรับเข้าผู้ป่วยในไปยังระบบผู้ป่วยใน (1.2.17) - ข้อมูลค่าบริการฉุกเฉินไปยังระบบการเงิน (1.2.14)

🔗 การเชื่อมโยงสองทาง (Bidirectional Integration): - ผล Lab แบบเร่งด่วนจากระบบงานชันสูตร (1.2.7) - Real-time STAT Results - ผล X-Ray แบบเร่งด่วนจากระบบรังสีวิทยา (1.2.8) - Real-time STAT Results - การตรวจสอบ Drug Interaction กับระบบเภสัชกรรม (1.2.13) และ External Drug Database - การยืนยันการรับส่งต่อจากระบบผู้ป่วยใน (1.2.17) และระบบห้องผ่าตัด (1.2.18)

🚨 Emergency-Specific Features: - Real-time Critical Alerts: การเตือนค่าวิกฤตจาก Lab/X-Ray แบบทันที - STAT Priority Handling: การจัดการคำสั่งแบบเร่งด่วนเป็นพิเศษ - Emergency Drug Override: การข้ามการเตือน Drug Interaction ในสถานการณ์ฉุกเฉิน - Automatic Cost Calculation: การคำนวณค่าใช้จ่ายฉุกเฉินแบบอัตโนมัติ - EMS Data Integration: การรับข้อมูลจากหน่วย EMS โดยตรง - Mass Casualty Support: การรองรับผู้ป่วยฉุกเฉินหมู่


5. Database Relationships Summary

Primary Relationships (ความสัมพันธ์หลัก)

  1. EMERGENCY_CASE เป็นศูนย์กลางของระบบ เชื่อมโยงกับ:
  2. TRIAGE_ASSESSMENT (1:1, mandatory)
  3. EMERGENCY_TREATMENT (1:N)
  4. ACCIDENT_RECORD (1:1, optional)
  5. EMS_RECORD (1:1, optional)
  6. OBSERVATION_RECORD (1:N)
  7. EMERGENCY_SURGERY_REQUEST (1:N)
  8. COST_SUMMARY (1:1)
  9. SHIFT_MANAGEMENT (N:1)
  10. EMERGENCY_NOTES (1:N)
  11. EMERGENCY_CERTIFICATE (1:N)

  12. การสั่งยาและการตรวจสอบ เชื่อมโยงกับ:

  13. MEDICATION_ORDER (1:N) - ใช้ Shared Table
  14. DRUG_ALLERGY_ALERT (1:N)
  15. DRUG_INTERACTION_CHECK (1:N)

  16. การสั่งตรวจและผลการตรวจ เชื่อมโยงกับ:

  17. LAB_ORDER (1:N) - ใช้ Shared Table
  18. RADIOLOGY_ORDER (1:N) - ใช้ Shared Table
  19. LAB_RESULT_VIEW (1:1 per order)
  20. XRAY_RESULT_VIEW (1:1 per order)

  21. การส่งต่อและการปรึกษา เชื่อมโยงกับ:

  22. PATIENT_REFERRAL (1:N) - ใช้ Shared Table
  23. PATIENT_CONSULTATION (1:N) - ใช้ Shared Table
  24. PATIENT_APPOINTMENT (1:N) - ใช้ Shared Table

  25. Master Data ให้ข้อมูลอ้างอิง:

  26. Emergency-specific: ICD_CODES, TREATMENT_GROUP, MEDICATION_TEMPLATES, TRIAGE_CATEGORIES, ACCIDENT_TYPES, EMERGENCY_PROCEDURES
  27. Reference: DOCTORS, DEPARTMENTS, EMERGENCY_ROOMS, LAB_ITEMS, XRAY_ITEMS, EMS_UNITS

Integration Points (จุดเชื่อมโยง)

  • SYSTEM_INTEGRATION_LOG: บันทึกการติดต่อกับระบบอื่น
  • HN, VisitID, HistoryID: เป็น Foreign Key หลักที่อ้างอิงจากระบบอื่น
  • FinanceReferenceID, ServiceCode: เชื่อมโยงการเงิน
  • RightCheckReferenceID: เชื่อมโยงการตรวจสอบสิทธิ
  • Shared Tables: เชื่อมโยงข้อมูลระหว่างระบบ 1.2.2, 1.2.3, และ 1.2.4

Emergency-Specific Relationships

  • Triage Flow: EMERGENCY_CASE → TRIAGE_ASSESSMENT → Priority-based Treatment
  • EMS Integration: EMS_RECORD → EMERGENCY_CASE → การรักษาต่อเนื่อง
  • Observation Flow: EMERGENCY_TREATMENT → OBSERVATION_RECORD → การติดตาม
  • Surgery Request: EMERGENCY_CASE → EMERGENCY_SURGERY_REQUEST → ระบบห้องผ่าตัด
  • Cost Calculation: หลายตาราง → COST_SUMMARY → ระบบการเงิน

6. ข้อมูลสำคัญและข้อจำกัด

6.1 ข้อมูลสำคัญ

  • การจัดการเคสฉุกเฉิน: รองรับการจัดการผู้ป่วยฉุกเฉินและอุบัติเหตุครบถ้วนตาม TOR ข้อ 1.2.4.2
  • การคัดกรอง (Triage): ระบบการคัดกรองแบบมาตรฐานสากลตาม TOR ข้อ 1.2.4.2.2
  • การจัดการ EMS: บันทึกและเชื่อมโยงข้อมูล EMS ตาม TOR ข้อ 1.2.4.2.24
  • การสั่งยาฉุกเฉิน: RE-MED และ Template พร้อมการตรวจสอบ Drug Interaction ตาม TOR ข้อ 1.2.4.2.16
  • การสั่งตรวจแบบเร่งด่วน (STAT): Lab/X-Ray ฉุกเฉินตาม TOR ข้อ 1.2.4.2.12-13
  • การสังเกตอาการ (Observe): บันทึกการสังเกตและติดตามผู้ป่วยตาม TOR ข้อ 1.2.4.2.17
  • การส่งต่อและการปรึกษา: รองรับการส่งต่อหลายรูปแบบตาม TOR ข้อ 1.2.4.2.19-20 และ 1.2.4.4
  • การสั่งผ่าตัดฉุกเฉิน: บันทึกและประสานงานการผ่าตัดตาม TOR ข้อ 1.2.4.2.22
  • การคำนวณค่าใช้จ่าย: สรุปค่าบริการฉุกเฉินตาม TOR ข้อ 1.2.4.2.18
  • การจัดการเวร: บันทึกเวลาเวรและเจ้าหน้าที่ตาม TOR ข้อ 1.2.4.2.1
  • การออกใบรับรองแพทย์: รองรับใบรับรองหลายประเภทและหลายภาษา ตาม TOR ข้อ 1.2.4.5
  • การนัดหมาย: รองรับการนัดหลายรูปแบบตาม TOR ข้อ 1.2.4.3
  • การใช้รหัส ICD: รองรับรหัส WHO และไทยตาม TOR ข้อ 1.2.4.1.1 และ 1.2.4.2.8

6.2 ข้อจำกัดและหมายเหตุ

  • 🔸 Foreign Key Constraints: ตาราง Master Data จากระบบอื่นเป็น Reference เท่านั้น
  • 🔸 Data Synchronization: ต้องมีกลไกซิงค์ข้อมูลกับระบบอื่นๆ เป็นระยะ
  • 🔸 Real-time Requirements: ผล Lab/X-Ray แบบ STAT ต้องได้รับแบบ real-time
  • 🔸 Emergency Override: ต้องมีกลไกข้ามการตรวจสอบในสถานการณ์ฉุกเฉิน
  • 🔸 Template Management: Template การสั่งยาต้องได้รับการอนุมัติก่อนใช้งาน
  • 🔸 Drug Interaction Database: ต้องมีการอัปเดตฐานข้อมูล Drug Interaction สม่ำเสมอ
  • 🔸 EMS Data Integration: ต้องมีมาตรฐานการรับส่งข้อมูลจากหน่วย EMS
  • 🔸 Shift Handover: ต้องมีกลไกการส่งมอบผู้ป่วยระหว่างเวร
  • 🔸 Mass Casualty Handling: ต้องรองรับการจัดการผู้ป่วยจำนวนมากในเวลาเดียวกัน

6.3 Performance Considerations

  • สร้าง Index บน EmergencyCaseID, HN, VisitID, TriageID, DoctorID
  • Partition ตาราง EMERGENCY_CASE และ AUDIT_LOG ตามวันที่
  • Cache Master Data ที่ใช้บ่อย เช่น ICD_CODES, MEDICATION_TEMPLATES, TRIAGE_CATEGORIES
  • Optimize การค้นหา STAT orders และ Critical alerts
  • Archive ข้อมูลเก่าเป็น periodic แต่เก็บข้อมูลฉุกเฉินไว้นานเพื่อการวิเคราะห์

6.4 Security Considerations

  • Encrypt ข้อมูลที่ละเอียดอ่อน เช่น การตรวจร่างกาย, การวินิจฉัย, ข้อมูลอุบัติเหตุ
  • Audit Log ทุกการเข้าถึงข้อมูลผู้ป่วยฉุกเฉิน
  • API Authentication ด้วย JWT Tokens พร้อม Role-based Access
  • Emergency Override Logging - บันทึกทุกการข้ามการตรวจสอบ
  • Digital Signature สำหรับใบรับรองแพทย์

6.5 Integration Best Practices

  • ใช้ Asynchronous API calls สำหรับ non-critical operations
  • Implement Circuit Breaker pattern สำหรับ external services
  • Monitor API performance ผ่าน SYSTEM_INTEGRATION_LOG
  • Retry mechanism สำหรับ failed API calls
  • Priority queue สำหรับ STAT orders
  • Real-time notification สำหรับ critical results

6.6 Emergency-Specific Considerations

  • 24/7 Availability: ระบบต้องทำงานได้ 24 ชั่วโมง 7 วันต่อสัปดาห์
  • High Concurrency: รองรับการใช้งานพร้อมกันจากหลายผู้ใช้
  • Rapid Response: เวลาตอบสนองต้องน้อยกว่า 2 วินาที
  • Data Integrity: ข้อมูลต้องมีความถูกต้องและไม่สูญหาย
  • Backup Strategy: สำรองข้อมูลแบบ real-time
  • Disaster Recovery: แผนการกู้คืนระบบในสถานการณ์ฉุกเฉิน

7. สรุปความสอดคล้องกับ TOR และ SRS

7.1 ความสอดคล้องกับ TOR

TOR ข้อ คำอธิบาย ตารางที่รองรับ
1.2.4.1.1 การเชื่อมโยงข้อมูลการรักษากับรหัสหัตถการ ICD MEDICAL_PROCEDURE (Shared), ICD_CODES
1.2.4.1.2 การกำหนดข้อมูลการรักษาตามกลุ่มค่ารักษาพยาบาล TREATMENT_GROUP
1.2.4.2.1 การบันทึกข้อมูลช่วงเวลาการรักษา (เวร) SHIFT_MANAGEMENT, EMERGENCY_CASE
1.2.4.2.2 การบันทึกประเภทผู้ป่วยและการคัดกรอง TRIAGE_ASSESSMENT, EMERGENCY_CASE
1.2.4.2.3 การระบุประเภทคลินิกและการมา EMERGENCY_CASE
1.2.4.2.4-5 การบันทึกเจ้าหน้าที่และเวลารักษา EMERGENCY_TREATMENT, SHIFT_MANAGEMENT
1.2.4.2.6 การระบุประเภทการมา EMERGENCY_CASE
1.2.4.2.7 การบันทึกหัตถการ ICD พร้อมเวลา MEDICAL_PROCEDURE (Shared)
1.2.4.2.8 การบันทึกรหัสโรค ICD และ Re-diag MEDICAL_DIAGNOSIS (Shared), ICD_CODES
1.2.4.2.9 การบันทึก Screen และ Chief complaint TRIAGE_ASSESSMENT, EMERGENCY_CASE
1.2.4.2.10 การนำข้อมูล Screen เดิมมาใช้ Integration กับระบบซักประวัติ
1.2.4.2.11 การบันทึกช่วงเวลาการรักษา EMERGENCY_TREATMENT
1.2.4.2.12-13 การสั่งและแสดงผล Lab/X-Ray LAB_ORDER, RADIOLOGY_ORDER, LAB_RESULT_VIEW, XRAY_RESULT_VIEW
1.2.4.2.14 การบันทึกข้อมูลอุบัติเหตุ ACCIDENT_RECORD
1.2.4.2.15 การเรียกดูประวัติการตรวจย้อนหลัง Integration กับระบบอื่น
1.2.4.2.16 การสั่งจ่ายยา RE-MED และ Template MEDICATION_ORDER (Shared), MEDICATION_TEMPLATES
1.2.4.2.17 การบันทึก Observe OBSERVATION_RECORD
1.2.4.2.18 การแสดงสรุปค่าใช้จ่าย COST_SUMMARY
1.2.4.2.19-20 การส่งต่อผู้ป่วย PATIENT_REFERRAL (Shared)
1.2.4.2.21 การพิมพ์ OPD CARD และใบสั่งยา EMERGENCY_CERTIFICATE
1.2.4.2.22 การบันทึกการสั่งผ่าตัด EMERGENCY_SURGERY_REQUEST
1.2.4.2.23 การบันทึกผู้ทำหัตถการพร้อมเวลา EMERGENCY_TREATMENT
1.2.4.2.24 การบันทึกการรักษา EMS EMS_RECORD
1.2.4.3 การจัดการนัดหมาย PATIENT_APPOINTMENT (Shared)
1.2.4.4 การขอ Consult PATIENT_CONSULTATION (Shared)
1.2.4.5 การพิมพ์ใบรับรองแพทย์ EMERGENCY_CERTIFICATE

7.2 การครอบคลุม SRS

  • Functional Requirements: ครอบคลุมทุกฟีเจอร์ที่ระบุใน SRS
  • Non-Functional Requirements: รองรับ Performance, Security, Integration, 24/7 Availability
  • Data Requirements: ครอบคลุมข้อมูลที่จำเป็นทั้งหมดรวมถึงข้อมูลฉุกเฉินเฉพาะ
  • Interface Requirements: รองรับ API Integration ครบถ้วน พร้อม Real-time STAT results
  • Emergency Requirements: รองรับข้อกำหนดเฉพาะฉุกเฉิน เช่น Triage, EMS, Mass Casualty

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