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

Entity Relationship Diagram (ERD)

ระบบการเงิน (Financial Management System)

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


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


ภาพรวม Entity Relationship Diagram

เอกสารนี้แสดง ERD สำหรับระบบการเงิน ที่จัดการการรับชำระเงิน การออกใบเสร็จ การจัดการสิทธิการรักษาทางการเงิน และการบริหารจัดการการเงินแบบครบวงจร พร้อม API Integration กับระบบอื่นๆ ใน HIS

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

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

  • 🟢 สีเขียว (Core Financial Tables): ตารางหลักของระบบการเงิน ที่เก็บข้อมูลการรับชำระเงินและใบเสร็จ
  • PAYMENT_TRANSACTION - รายการการรับชำระเงิน
  • RECEIPT - ใบเสร็จรับเงิน
  • INVOICE - ใบแจ้งหนี้

  • 🔵 สีน้ำเงิน (Payment Management Tables): ตารางจัดการการชำระเงินและเงินรับฝาก

  • PAYMENT_METHOD, PAYMENT_DETAIL - วิธีการชำระเงินและรายละเอียด
  • DEPOSIT_TRANSACTION, OUTSTANDING_BALANCE - เงินรับฝากและค้างชำระ
  • PAYMENT_APPROVAL, DISCOUNT_EXEMPTION - การอนุมัติและการลดหย่อน

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

  • FINANCIAL_AUDIT_LOG, RECEIPT_CANCEL_LOG - บันทึกการแก้ไขและยกเลิก
  • DAILY_CLOSING, CASHIER_TERMINAL - การปิดรอบและจุดรับชำระเงิน
  • FINANCIAL_INTEGRATION_LOG - การเชื่อมโยงระบบ

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

  • FINANCIAL_RIGHTS, PAYMENT_CHART - สิทธิการรักษาและผังการคิดค่าบริการ
  • FINANCIAL_CATEGORY, DISCOUNT_TYPE - หมวดค่ารักษาและประเภทส่วนลด

  • 🟣 สีม่วง (Master Data - Configuration): ข้อมูลการตั้งค่าระบบ

  • RECEIPT_FORMAT, PAYMENT_CONFIG - รูปแบบใบเสร็จและการตั้งค่า

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

  • EXTERNAL_PAYMENT_API, RIGHTS_VERIFICATION_API - API การชำระเงินและตรวจสอบสิทธิ

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

แผนภาพนี้แสดงความสัมพันธ์ระหว่างกลุ่มตารางหลักๆ และ Master Data

graph TD
    subgraph "🟢 Core Financial System - ระบบการเงินหลัก"
        PT[PAYMENT_TRANSACTION<br/>รายการการรับชำระเงิน]
        R[RECEIPT<br/>ใบเสร็จรับเงิน]
        I[INVOICE<br/>ใบแจ้งหนี้]
    end

    subgraph "🔵 Payment Management Tables - ตารางจัดการการชำระเงิน"
        PM[PAYMENT_METHOD<br/>วิธีการชำระเงิน]
        PD[PAYMENT_DETAIL<br/>รายละเอียดการชำระ]
        DT[DEPOSIT_TRANSACTION<br/>รายการเงินรับฝาก]
        OB[OUTSTANDING_BALANCE<br/>ยอดค้างชำระ]
        PA[PAYMENT_APPROVAL<br/>การอนุมัติการชำระ]
        DE[DISCOUNT_EXEMPTION<br/>การลดหย่อนและยกเว้น]
    end

    subgraph "🔵 Bill Management Tables - ตารางจัดการบิลและรายการ"
        BI[BILL_ITEM<br/>รายการในบิล]
        BC[BILL_CALCULATION<br/>การคำนวณค่าบริการ]
        BR[BILL_REVISION<br/>การแก้ไขบิล]
        MR[MULTIPLE_RIGHTS<br/>การใช้หลายสิทธิ]
    end

    subgraph "🟠 System Management Tables - ตารางจัดการระบบ"
        FAL[FINANCIAL_AUDIT_LOG<br/>บันทึกการแก้ไขทางการเงิน]
        RCL[RECEIPT_CANCEL_LOG<br/>บันทึกการยกเลิกใบเสร็จ]
        DC[DAILY_CLOSING<br/>การปิดรอบรายวัน]
        CT[CASHIER_TERMINAL<br/>จุดรับชำระเงิน]
        FIL[FINANCIAL_INTEGRATION_LOG<br/>บันทึกการเชื่อมต่อระบบ]
        RNS[RECEIPT_NUMBER_SEQUENCE<br/>ลำดับเลขที่ใบเสร็จ]
    end

    subgraph "🟡 Master Data - Financial"
        FR[FINANCIAL_RIGHTS<br/>สิทธิการรักษาทางการเงิน]
        PC[PAYMENT_CHART<br/>ผังการคิดค่าบริการ]
        FC[FINANCIAL_CATEGORY<br/>หมวดค่ารักษา]
        DTC[DISCOUNT_TYPE<br/>ประเภทส่วนลด]
        ET[EXEMPTION_TYPE<br/>ประเภทการยกเว้น]
        SR[SERVICE_RATE<br/>อัตราค่าบริการ]
    end

    subgraph "🟣 Master Data - Configuration"
        RF[RECEIPT_FORMAT<br/>รูปแบบใบเสร็จ]
        PCC[PAYMENT_CONFIG<br/>การตั้งค่าการชำระเงิน]
        CTC[CASHIER_TERMINAL_CONFIG<br/>การตั้งค่าจุดรับชำระ]
        FRP[FINANCIAL_REPORT_PARAM<br/>พารามิเตอร์รายงานการเงิน]
    end

    subgraph "🔴 External Integration - การเชื่อมโยงภายนอก"
        EPA[EXTERNAL_PAYMENT_API<br/>API การชำระเงินภายนอก]
        RVA[RIGHTS_VERIFICATION_API<br/>API ตรวจสอบสิทธิ]
        BRA[BANK_RECONCILIATION_API<br/>API กระทบยอดธนาคาร]
        GSA[GOVERNMENT_SYSTEM_API<br/>API ระบบราชการ]
    end

    %% Core Relationships
    PT --> R
    PT --> I
    PT --> PM
    PT --> PD
    R --> BI
    I --> BI

    %% Payment Management
    PT --> DT
    PT --> OB
    PT --> PA
    PT --> DE
    BI --> BC
    PT --> MR

    %% System Management
    PT --> FAL
    R --> RCL
    CT --> DC
    R --> RNS

    %% Master Data Integration
    PT --> FR
    BC --> PC
    BI --> FC
    DE --> DTC
    DE --> ET
    BC --> SR

    %% Configuration
    R --> RF
    PT --> PCC
    CT --> CTC

    %% External Integration
    PT --> EPA
    PT --> RVA
    DC --> BRA
    PT --> GSA

    %% Styling
    classDef coreTable fill:#90ee90,stroke:#333,stroke-width:2px,color:#000
    classDef supportTable fill:#87ceeb,stroke:#333,stroke-width:2px,color:#000
    classDef systemTable fill:#ffa500,stroke:#333,stroke-width:2px,color:#000
    classDef masterDataFinancial fill:#ffeb3b,stroke:#333,stroke-width:2px,color:#000
    classDef masterDataConfig fill:#da70d6,stroke:#333,stroke-width:2px,color:#000
    classDef externalTable fill:#ff6b6b,stroke:#333,stroke-width:2px,color:#fff

    class PT,R,I coreTable
    class PM,PD,DT,OB,PA,DE,BI,BC,BR,MR supportTable
    class FAL,RCL,DC,CT,FIL,RNS systemTable
    class FR,PC,FC,DTC,ET,SR masterDataFinancial
    class RF,PCC,CTC,FRP masterDataConfig
    class EPA,RVA,BRA,GSA externalTable

2. รายละเอียดตาราง (Table Details)

2.1 🟢 Core Financial Tables - ตารางหลักระบบการเงิน

2.1.1 PAYMENT_TRANSACTION (รายการการรับชำระเงิน)

ตารางหลักที่เก็บข้อมูลการรับชำระเงินทุกรายการ

Field Name Data Type Length Null Key Description
payment_id VARCHAR 20 NO PK รหัสการรับชำระเงิน (AUTO)
hn VARCHAR 10 NO FK หมายเลขผู้ป่วย
an VARCHAR 15 YES FK หมายเลขผู้ป่วยใน (สำหรับ IPD)
visit_id VARCHAR 20 YES FK รหัสการเข้ารับบริการ
payment_date DATE - NO - วันที่รับชำระเงิน
payment_time TIME - NO - เวลาที่รับชำระเงิน
total_amount DECIMAL 10,2 NO - ยอดรวมทั้งหมด
discount_amount DECIMAL 10,2 YES - ยอดส่วนลด
exemption_amount DECIMAL 10,2 YES - ยอดยกเว้น
copayment DECIMAL 10,2 YES - ยอดที่ผู้ป่วยต้องจ่าย
rights_amount DECIMAL 10,2 YES - ยอดที่สิทธิจ่าย
paid_amount DECIMAL 10,2 NO - ยอดที่ได้รับชำระ
change_amount DECIMAL 10,2 YES - เงินทอน
payment_status ENUM - NO - สถานะ (PAID/PENDING/CANCELLED)
patient_type ENUM - NO - ประเภทผู้ป่วย (OPD/IPD/ER)
cashier_id VARCHAR 10 NO FK รหัสเจ้าหน้าที่การเงิน
terminal_id VARCHAR 10 NO FK รหัสจุดรับชำระเงิน
remarks TEXT - YES - หมายเหตุ
created_at TIMESTAMP - NO - วันเวลาที่สร้าง
updated_at TIMESTAMP - YES - วันเวลาที่แก้ไขล่าสุด

2.1.2 RECEIPT (ใบเสร็จรับเงิน)

ตารางเก็บข้อมูลใบเสร็จรับเงิน

Field Name Data Type Length Null Key Description
receipt_id VARCHAR 20 NO PK รหัสใบเสร็จ
receipt_number VARCHAR 30 NO UK เลขที่ใบเสร็จ
payment_id VARCHAR 20 NO FK รหัสการรับชำระเงิน
receipt_date DATE - NO - วันที่ออกใบเสร็จ
receipt_time TIME - NO - เวลาที่ออกใบเสร็จ
receipt_type ENUM - NO - ประเภท (ORIGINAL/COPY/REPRINT)
print_count INT - NO - จำนวนครั้งที่พิมพ์
format_type VARCHAR 20 NO FK รูปแบบใบเสร็จ
language ENUM - NO - ภาษา (TH/EN)
is_cancelled BOOLEAN - NO - สถานะยกเลิก
cancelled_date TIMESTAMP - YES - วันเวลาที่ยกเลิก
cancelled_by VARCHAR 10 YES FK ผู้ยกเลิก
cancel_reason TEXT - YES - เหตุผลการยกเลิก
new_receipt_id VARCHAR 20 YES FK รหัสใบเสร็จใหม่ (กรณีแก้ไข)
created_at TIMESTAMP - NO - วันเวลาที่สร้าง

2.1.3 INVOICE (ใบแจ้งหนี้)

ตารางเก็บข้อมูลใบแจ้งหนี้

Field Name Data Type Length Null Key Description
invoice_id VARCHAR 20 NO PK รหัสใบแจ้งหนี้
invoice_number VARCHAR 30 NO UK เลขที่ใบแจ้งหนี้
hn VARCHAR 10 NO FK หมายเลขผู้ป่วย
an VARCHAR 15 YES FK หมายเลขผู้ป่วยใน
invoice_date DATE - NO - วันที่ออกใบแจ้งหนี้
due_date DATE - YES - วันที่ครบกำหนด
invoice_type ENUM - NO - ประเภท (OPD/IPD/RIGHTS/INSURANCE)
bill_to_type ENUM - NO - ผู้รับบิล (PATIENT/RIGHTS/INSURANCE)
bill_to_code VARCHAR 20 YES - รหัสผู้รับบิล
bill_to_name VARCHAR 200 YES - ชื่อผู้รับบิล
total_amount DECIMAL 10,2 NO - ยอดรวม
paid_amount DECIMAL 10,2 YES - ยอดที่ชำระแล้ว
balance_amount DECIMAL 10,2 YES - ยอดคงเหลือ
invoice_status ENUM - NO - สถานะ (PENDING/SENT/PAID/OVERDUE)
created_by VARCHAR 10 NO FK ผู้สร้าง
created_at TIMESTAMP - NO - วันเวลาที่สร้าง

2.2 🔵 Payment Management Tables - ตารางจัดการการชำระเงิน

2.2.1 PAYMENT_METHOD (วิธีการชำระเงิน)

ตารางเก็บข้อมูลวิธีการชำระเงินในแต่ละรายการ

Field Name Data Type Length Null Key Description
payment_method_id VARCHAR 20 NO PK รหัสวิธีการชำระ
payment_id VARCHAR 20 NO FK รหัสการรับชำระเงิน
method_type ENUM - NO - ประเภท (CASH/CARD/TRANSFER/QR/DEPOSIT/RIGHTS)
amount DECIMAL 10,2 NO - จำนวนเงิน
sequence_no INT - NO - ลำดับที่ (สำหรับการชำระแบบผสม)
reference_number VARCHAR 50 YES - หมายเลขอ้างอิง
bank_code VARCHAR 10 YES - รหัสธนาคาร
card_number VARCHAR 20 YES - หมายเลขบัตร (4 หลักสุดท้าย)
approval_code VARCHAR 20 YES - รหัสอนุมัติ
terminal_id VARCHAR 20 YES - หมายเลขเครื่อง EDC
slip_number VARCHAR 30 YES - หมายเลขสลิป
created_at TIMESTAMP - NO - วันเวลาที่สร้าง

2.2.2 PAYMENT_DETAIL (รายละเอียดการชำระเงิน)

ตารางเก็บรายละเอียดการชำระเงินแยกตามหมวดค่ารักษา

Field Name Data Type Length Null Key Description
payment_detail_id VARCHAR 20 NO PK รหัสรายละเอียดการชำระ
payment_id VARCHAR 20 NO FK รหัสการรับชำระเงิน
category_code VARCHAR 10 NO FK รหัสหมวดค่ารักษา
service_code VARCHAR 20 YES - รหัสบริการ
service_name VARCHAR 200 NO - ชื่อบริการ
quantity DECIMAL 8,2 NO - จำนวน
unit_price DECIMAL 10,2 NO - ราคาต่อหน่วย
total_price DECIMAL 10,2 NO - ราคารวม
discount_percent DECIMAL 5,2 YES - เปอร์เซ็นต์ส่วนลด
discount_amount DECIMAL 10,2 YES - จำนวนเงินส่วนลด
net_amount DECIMAL 10,2 NO - ราคาสุทธิ
department_code VARCHAR 10 YES - รหัสแผนก
service_date DATE - NO - วันที่ให้บริการ
created_at TIMESTAMP - NO - วันเวลาที่สร้าง

2.2.3 DEPOSIT_TRANSACTION (รายการเงินรับฝาก)

ตารางเก็บข้อมูลการทำรายการเงินรับฝาก

Field Name Data Type Length Null Key Description
deposit_transaction_id VARCHAR 20 NO PK รหัสรายการเงินรับฝาก
hn VARCHAR 10 NO FK หมายเลขผู้ป่วย
an VARCHAR 15 YES FK หมายเลขผู้ป่วยใน
transaction_type ENUM - NO - ประเภท (DEPOSIT/WITHDRAW/REFUND)
amount DECIMAL 10,2 NO - จำนวนเงิน
balance_before DECIMAL 10,2 NO - ยอดคงเหลือก่อนทำรายการ
balance_after DECIMAL 10,2 NO - ยอดคงเหลือหลังทำรายการ
deposit_date DATE - NO - วันที่ทำรายการ
deposit_time TIME - NO - เวลาที่ทำรายการ
depositor_name VARCHAR 200 YES - ชื่อผู้ฝากเงิน
payment_method ENUM - NO - วิธีการ (CASH/TRANSFER)
reference_number VARCHAR 50 YES - หมายเลขอ้างอิง
receipt_number VARCHAR 30 YES - เลขที่ใบรับฝากเงิน
remarks TEXT - YES - หมายเหตุ
cashier_id VARCHAR 10 NO FK รหัสเจ้าหน้าที่
terminal_id VARCHAR 10 NO FK รหัสจุดรับชำระเงิน
created_at TIMESTAMP - NO - วันเวลาที่สร้าง

2.2.4 OUTSTANDING_BALANCE (ยอดค้างชำระ)

ตารางเก็บข้อมูลยอดค้างชำระของผู้ป่วย

Field Name Data Type Length Null Key Description
outstanding_id VARCHAR 20 NO PK รหัสยอดค้างชำระ
hn VARCHAR 10 NO FK หมายเลขผู้ป่วย
visit_id VARCHAR 20 YES FK รหัสการเข้ารับบริการ
service_date DATE - NO - วันที่ใช้บริการ
total_amount DECIMAL 10,2 NO - ยอดรวม
paid_amount DECIMAL 10,2 YES - ยอดที่ชำระแล้ว
balance_amount DECIMAL 10,2 NO - ยอดคงเหลือ
due_date DATE - YES - วันที่ครบกำหนด
overdue_days INT - YES - จำนวนวันค้างชำระ
status ENUM - NO - สถานะ (PENDING/PARTIAL/PAID/WRITTEN_OFF)
alert_sent BOOLEAN - NO - ส่งการแจ้งเตือนแล้ว
last_alert_date DATE - YES - วันที่แจ้งเตือนครั้งสุดท้าย
remarks TEXT - YES - หมายเหตุ
created_at TIMESTAMP - NO - วันเวลาที่สร้าง
updated_at TIMESTAMP - YES - วันเวลาที่แก้ไขล่าสุด

2.2.5 PAYMENT_APPROVAL (การอนุมัติการชำระ)

ตารางเก็บข้อมูลการขออนุมัติการชำระเงิน

Field Name Data Type Length Null Key Description
approval_id VARCHAR 20 NO PK รหัสการขออนุมัติ
payment_id VARCHAR 20 NO FK รหัสการรับชำระเงิน
approval_type ENUM - NO - ประเภท (DISCOUNT/EXEMPTION/INSTALLMENT)
requested_amount DECIMAL 10,2 NO - จำนวนเงินที่ขออนุมัติ
approved_amount DECIMAL 10,2 YES - จำนวนเงินที่อนุมัติ
reason TEXT - NO - เหตุผลการขออนุมัติ
supporting_document VARCHAR 255 YES - เอกสารประกอบ
requested_by VARCHAR 10 NO FK ผู้ขออนุมัติ
requested_date TIMESTAMP - NO - วันเวลาที่ขออนุมัติ
approval_level INT - NO - ระดับการอนุมัติ
approver_id VARCHAR 10 YES FK ผู้อนุมัติ
approval_date TIMESTAMP - YES - วันเวลาที่อนุมัติ
approval_status ENUM - NO - สถานะ (PENDING/APPROVED/REJECTED)
approval_remarks TEXT - YES - หมายเหตุการอนุมัติ

2.2.6 DISCOUNT_EXEMPTION (การลดหย่อนและยกเว้น)

ตารางเก็บข้อมูลการลดหย่อนและยกเว้นค่ารักษา

Field Name Data Type Length Null Key Description
discount_exemption_id VARCHAR 20 NO PK รหัสการลดหย่อนและยกเว้น
payment_id VARCHAR 20 NO FK รหัสการรับชำระเงิน
type ENUM - NO - ประเภท (DISCOUNT/EXEMPTION)
discount_type_code VARCHAR 10 YES FK รหัสประเภทส่วนลด
exemption_type_code VARCHAR 10 YES FK รหัสประเภทยกเว้น
category_code VARCHAR 10 YES FK รหัสหมวดค่ารักษา (ถ้าเฉพาะหมวด)
calculation_method ENUM - NO - วิธีคำนวณ (PERCENTAGE/FIXED_AMOUNT)
discount_percent DECIMAL 5,2 YES - เปอร์เซ็นต์ส่วนลด
discount_amount DECIMAL 10,2 YES - จำนวนเงินส่วนลด
original_amount DECIMAL 10,2 NO - ยอดเงินเดิม
discounted_amount DECIMAL 10,2 NO - ยอดเงินหลังลด
approval_id VARCHAR 20 YES FK รหัสการอนุมัติ
effective_date DATE - NO - วันที่มีผล
expiry_date DATE - YES - วันที่หมดอายุ
created_by VARCHAR 10 NO FK ผู้สร้าง
created_at TIMESTAMP - NO - วันเวลาที่สร้าง

2.3 🔵 Bill Management Tables - ตารางจัดการบิลและรายการ

2.3.1 BILL_ITEM (รายการในบิล)

ตารางเก็บรายการค่าบริการในบิล

Field Name Data Type Length Null Key Description
bill_item_id VARCHAR 20 NO PK รหัสรายการในบิล
hn VARCHAR 10 NO FK หมายเลขผู้ป่วย
visit_id VARCHAR 20 YES FK รหัสการเข้ารับบริการ
an VARCHAR 15 YES FK หมายเลขผู้ป่วยใน
item_type ENUM - NO - ประเภท (SERVICE/MEDICATION/SUPPLY/ROOM)
category_code VARCHAR 10 NO FK รหัสหมวดค่ารักษา
service_code VARCHAR 20 NO - รหัสบริการ
service_name VARCHAR 200 NO - ชื่อบริการ
quantity DECIMAL 8,2 NO - จำนวน
unit VARCHAR 20 NO - หน่วย
unit_price DECIMAL 10,2 NO - ราคาต่อหน่วย
total_price DECIMAL 10,2 NO - ราคารวม
service_date DATE - NO - วันที่ให้บริการ
service_time TIME - YES - เวลาที่ให้บริการ
department_code VARCHAR 10 YES - รหัสแผนก
provider_id VARCHAR 10 YES - รหัสผู้ให้บริการ
is_billable BOOLEAN - NO - สามารถเรียกเก็บได้
is_billed BOOLEAN - NO - ออกบิลแล้ว
billing_status ENUM - NO - สถานะ (PENDING/BILLED/PAID/CANCELLED)
created_at TIMESTAMP - NO - วันเวลาที่สร้าง
updated_at TIMESTAMP - YES - วันเวลาที่แก้ไขล่าสุด

2.3.2 BILL_CALCULATION (การคำนวณค่าบริการ)

ตารางเก็บผลการคำนวณค่าบริการตามสิทธิ

Field Name Data Type Length Null Key Description
calculation_id VARCHAR 20 NO PK รหัสการคำนวณ
bill_item_id VARCHAR 20 NO FK รหัสรายการในบิล
rights_code VARCHAR 10 NO FK รหัสสิทธิการรักษา
payment_chart_id VARCHAR 20 NO FK รหัสผังการคิดค่าบริการ
calculation_method ENUM - NO - วิธีคำนวณ (FFS/DRG/GLOBAL/CAPITATION/MIXED)
original_amount DECIMAL 10,2 NO - ยอดเงินเดิม
rights_coverage DECIMAL 10,2 YES - ยอดที่สิทธิครอบคลุม
copayment DECIMAL 10,2 YES - ยอดที่ผู้ป่วยต้องจ่าย
deductible DECIMAL 10,2 YES - ยอดหักได้
max_limit DECIMAL 10,2 YES - ยอดสูงสุดที่ครอบคลุม
calculated_amount DECIMAL 10,2 NO - ยอดหลังคำนวณ
calculation_date TIMESTAMP - NO - วันเวลาที่คำนวณ
calculation_rules TEXT - YES - กฎการคำนวณที่ใช้
created_at TIMESTAMP - NO - วันเวลาที่สร้าง

2.3.3 BILL_REVISION (การแก้ไขบิล)

ตารางเก็บประวัติการแก้ไขบิลและรายการ

Field Name Data Type Length Null Key Description
revision_id VARCHAR 20 NO PK รหัสการแก้ไข
bill_item_id VARCHAR 20 NO FK รหัสรายการในบิลเดิม
revision_type ENUM - NO - ประเภท (UPDATE/DELETE/ADD)
old_value TEXT - YES - ค่าเดิม (JSON)
new_value TEXT - YES - ค่าใหม่ (JSON)
reason TEXT - NO - เหตุผลการแก้ไข
revised_by VARCHAR 10 NO FK ผู้แก้ไข
revised_date TIMESTAMP - NO - วันเวลาที่แก้ไข
approved_by VARCHAR 10 YES FK ผู้อนุมัติการแก้ไข
approval_date TIMESTAMP - YES - วันเวลาที่อนุมัติ
impact_amount DECIMAL 10,2 YES - ยอดเงินที่เปลี่ยนแปลง

2.3.4 MULTIPLE_RIGHTS (การใช้หลายสิทธิ)

ตารางเก็บข้อมูลการใช้หลายสิทธิในการรับบริการครั้งเดียว

Field Name Data Type Length Null Key Description
multiple_rights_id VARCHAR 20 NO PK รหัสการใช้หลายสิทธิ
payment_id VARCHAR 20 NO FK รหัสการรับชำระเงิน
rights_code VARCHAR 10 NO FK รหัสสิทธิการรักษา
priority INT - NO - ลำดับความสำคัญ (1=หลัก)
allocation_method ENUM - NO - วิธีการแบ่ง (AUTO/MANUAL/CATEGORY)
allocated_amount DECIMAL 10,2 NO - ยอดที่แบ่งให้สิทธินี้
rights_payment DECIMAL 10,2 YES - ยอดที่สิทธิจ่าย
patient_payment DECIMAL 10,2 YES - ยอดที่ผู้ป่วยจ่าย
category_filter TEXT - YES - หมวดค่ารักษาที่ใช้สิทธินี้
effective_date DATE - NO - วันที่มีผล
created_at TIMESTAMP - NO - วันเวลาที่สร้าง

2.4 🟠 System Management Tables - ตารางจัดการระบบ

2.4.1 FINANCIAL_AUDIT_LOG (บันทึกการแก้ไขทางการเงิน)

ตารางเก็บบันทึกการแก้ไขข้อมูลทางการเงินทุกรายการ

Field Name Data Type Length Null Key Description
audit_log_id VARCHAR 20 NO PK รหัสบันทึกการแก้ไข
table_name VARCHAR 50 NO - ชื่อตารางที่แก้ไข
record_id VARCHAR 20 NO - รหัสของ record ที่แก้ไข
action_type ENUM - NO - ประเภทการกระทำ (INSERT/UPDATE/DELETE)
field_name VARCHAR 50 YES - ชื่อ field ที่แก้ไข
old_value TEXT - YES - ค่าเดิม
new_value TEXT - YES - ค่าใหม่
user_id VARCHAR 10 NO FK รหัสผู้ใช้งาน
ip_address VARCHAR 45 YES - IP Address
user_agent TEXT - YES - User Agent
session_id VARCHAR 50 YES - Session ID
action_timestamp TIMESTAMP - NO - วันเวลาที่ทำการแก้ไข
reason TEXT - YES - เหตุผลการแก้ไข

2.4.2 RECEIPT_CANCEL_LOG (บันทึกการยกเลิกใบเสร็จ)

ตารางเก็บบันทึกการยกเลิกใบเสร็จอย่างละเอียด

Field Name Data Type Length Null Key Description
cancel_log_id VARCHAR 20 NO PK รหัสบันทึกการยกเลิก
receipt_id VARCHAR 20 NO FK รหัสใบเสร็จที่ยกเลิก
original_receipt_number VARCHAR 30 NO - เลขที่ใบเสร็จเดิม
new_receipt_id VARCHAR 20 YES FK รหัสใบเสร็จใหม่
new_receipt_number VARCHAR 30 YES - เลขที่ใบเสร็จใหม่
cancel_type ENUM - NO - ประเภท (VOID/REFUND/CORRECTION)
cancel_reason TEXT - NO - เหตุผลการยกเลิก
original_amount DECIMAL 10,2 NO - ยอดเงินเดิม
refund_amount DECIMAL 10,2 YES - ยอดเงินที่คืน
difference_amount DECIMAL 10,2 YES - ยอดต่างที่เกิดขึ้น
cancelled_by VARCHAR 10 NO FK ผู้ยกเลิก
cancelled_date TIMESTAMP - NO - วันเวลาที่ยกเลิก
approved_by VARCHAR 10 YES FK ผู้อนุมัติการยกเลิก
approval_date TIMESTAMP - YES - วันเวลาที่อนุมัติ
supporting_document VARCHAR 255 YES - เอกสารประกอบ

2.4.3 DAILY_CLOSING (การปิดรอบรายวัน)

ตารางเก็บข้อมูลการปิดรอบการเงินรายวัน

Field Name Data Type Length Null Key Description
closing_id VARCHAR 20 NO PK รหัสการปิดรอบ
closing_date DATE - NO UK วันที่ปิดรอบ
terminal_id VARCHAR 10 NO FK รหัสจุดรับชำระเงิน
opening_time TIME - NO - เวลาเริ่มงาน
closing_time TIME - NO - เวลาปิดงาน
opening_balance DECIMAL 10,2 NO - ยอดเงินสดเริ่มต้น
total_receipts INT - NO - จำนวนใบเสร็จทั้งหมด
total_cash DECIMAL 10,2 NO - ยอดเงินสดรวม
total_card DECIMAL 10,2 NO - ยอดบัตรเครดิตรวม
total_transfer DECIMAL 10,2 NO - ยอดเงินโอนรวม
total_other DECIMAL 10,2 NO - ยอดวิธีอื่นๆ รวม
total_amount DECIMAL 10,2 NO - ยอดรวมทั้งหมด
cash_count DECIMAL 10,2 YES - ยอดเงินสดที่นับได้
cash_difference DECIMAL 10,2 YES - ยอดต่างเงินสด
deposit_amount DECIMAL 10,2 YES - ยอดเงินที่นำส่ง
closing_balance DECIMAL 10,2 NO - ยอดเงินสดคงเหลือ
closed_by VARCHAR 10 NO FK ผู้ปิดรอบ
closing_timestamp TIMESTAMP - NO - วันเวลาที่ปิดรอบ
verified_by VARCHAR 10 YES FK ผู้ตรวจสอบ
verification_timestamp TIMESTAMP - YES - วันเวลาที่ตรวจสอบ
remarks TEXT - YES - หมายเหตุ

2.4.4 CASHIER_TERMINAL (จุดรับชำระเงิน)

ตารางเก็บข้อมูลจุดรับชำระเงินต่างๆ

Field Name Data Type Length Null Key Description
terminal_id VARCHAR 10 NO PK รหัสจุดรับชำระเงิน
terminal_name VARCHAR 100 NO - ชื่อจุดรับชำระเงิน
terminal_type ENUM - NO - ประเภท (MAIN/DEPARTMENT/EMERGENCY/MOBILE)
location VARCHAR 100 NO - ที่ตั้ง
department_code VARCHAR 10 YES FK รหัสแผนก
ip_address VARCHAR 45 YES - IP Address
printer_name VARCHAR 100 YES - ชื่อเครื่องพิมพ์
cash_drawer_enabled BOOLEAN - NO - มีลิ้นชักเก็บเงิน
max_cash_limit DECIMAL 10,2 YES - ยอดเงินสดสูงสุดที่เก็บได้
operating_hours VARCHAR 50 YES - เวลาทำการ
is_active BOOLEAN - NO - สถานะใช้งาน
created_date DATE - NO - วันที่สร้าง
last_updated TIMESTAMP - YES - วันเวลาที่แก้ไขล่าสุด

2.4.5 FINANCIAL_INTEGRATION_LOG (บันทึกการเชื่อมต่อระบบ)

ตารางเก็บบันทึกการเชื่อมต่อกับระบบอื่นๆ

Field Name Data Type Length Null Key Description
integration_log_id VARCHAR 20 NO PK รหัสบันทึกการเชื่อมต่อ
integration_type ENUM - NO - ประเภท (API_CALL/DATA_SYNC/REPORT_SEND)
target_system VARCHAR 50 NO - ระบบปลายทาง
endpoint_url VARCHAR 255 YES - URL ของ API
request_method VARCHAR 10 YES - HTTP Method
request_data TEXT - YES - ข้อมูลที่ส่ง
response_data TEXT - YES - ข้อมูลที่ได้รับ
response_code VARCHAR 10 YES - HTTP Response Code
execution_time INT - YES - เวลาในการประมวลผล (ms)
status ENUM - NO - สถานะ (SUCCESS/FAILED/TIMEOUT)
error_message TEXT - YES - ข้อความ Error
retry_count INT - NO - จำนวนครั้งที่ Retry
created_timestamp TIMESTAMP - NO - วันเวลาที่สร้าง

2.4.6 RECEIPT_NUMBER_SEQUENCE (ลำดับเลขที่ใบเสร็จ)

ตารางควบคุมลำดับเลขที่ใบเสร็จ

Field Name Data Type Length Null Key Description
sequence_id VARCHAR 20 NO PK รหัสลำดับ
terminal_id VARCHAR 10 NO FK รหัสจุดรับชำระเงิน
sequence_type ENUM - NO - ประเภท (DAILY/MONTHLY/YEARLY)
prefix VARCHAR 10 YES - คำนำหน้า
current_number INT - NO - เลขล่าสุด
max_number INT - YES - เลขสูงสุด
reset_period ENUM - NO - รอบการรีเซ็ต (DAILY/MONTHLY/YEARLY)
last_reset_date DATE - YES - วันที่รีเซ็ตล่าสุด
next_reset_date DATE - YES - วันที่รีเซ็ตครั้งต่อไป
format_pattern VARCHAR 50 NO - รูปแบบการแสดงผล
is_active BOOLEAN - NO - สถานะใช้งาน
created_date DATE - NO - วันที่สร้าง
updated_at TIMESTAMP - YES - วันเวลาที่แก้ไขล่าสุด

2.5 🟡 Master Data - Financial

2.5.1 FINANCIAL_RIGHTS (สิทธิการรักษาทางการเงิน)

ตารางเก็บข้อมูลสิทธิการรักษาพยาบาลทางการเงิน

Field Name Data Type Length Null Key Description
rights_code VARCHAR 10 NO PK รหัสสิทธิการรักษา
rights_name VARCHAR 200 NO - ชื่อสิทธิการรักษา
rights_name_en VARCHAR 200 YES - ชื่อสิทธิ (ภาษาอังกฤษ)
rights_type ENUM - NO - ประเภท (GOVERNMENT/SOCIAL/PRIVATE/SELF_PAY)
payment_type ENUM - NO - ประเภทการชำระ (CASH/ACCOUNT/MIXED)
nhso_code VARCHAR 10 YES - รหัสสิทธิตาม สนย. (43 แฟ้ม)
nhso_name VARCHAR 200 YES - ชื่อสิทธิมาตรฐาน สปสช.
copayment_fee DECIMAL 10,2 YES - ค่าธรรมเนียมสิทธิที่ต้องชำระเอง
coverage_limit DECIMAL 12,2 YES - วงเงินความคุ้มครอง
annual_limit DECIMAL 12,2 YES - วงเงินรายปี
is_active BOOLEAN - NO - สถานะใช้งาน
effective_date DATE - NO - วันที่มีผล
expiry_date DATE - YES - วันที่หมดอายุ
created_at TIMESTAMP - NO - วันเวลาที่สร้าง
updated_at TIMESTAMP - YES - วันเวลาที่แก้ไขล่าสุด

2.5.2 PAYMENT_CHART (ผังการคิดค่าบริการ)

ตารางเก็บผังการคิดค่าบริการสำหรับแต่ละสิทธิ

Field Name Data Type Length Null Key Description
payment_chart_id VARCHAR 20 NO PK รหัสผังการคิดค่าบริการ
rights_code VARCHAR 10 NO FK รหัสสิทธิการรักษา
chart_name VARCHAR 200 NO - ชื่อผังการคิดค่าบริการ
calculation_method ENUM - NO - วิธีคำนวณ (FFS/DRG/GLOBAL/CAPITATION/MIXED)
service_category VARCHAR 10 YES FK หมวดบริการที่ใช้
coverage_percent DECIMAL 5,2 YES - เปอร์เซ็นต์ความคุ้มครอง
copayment_percent DECIMAL 5,2 YES - เปอร์เซ็นต์ที่ผู้ป่วยจ่าย
deductible_amount DECIMAL 10,2 YES - ยอดหักได้
max_coverage DECIMAL 10,2 YES - ยอดสูงสุดที่ครอบคลุม
calculation_formula TEXT - YES - สูตรการคำนวณ
special_conditions TEXT - YES - เงื่อนไขพิเศษ
is_active BOOLEAN - NO - สถานะใช้งาน
effective_date DATE - NO - วันที่มีผล
expiry_date DATE - YES - วันที่หมดอายุ
created_by VARCHAR 10 NO FK ผู้สร้าง
created_at TIMESTAMP - NO - วันเวลาที่สร้าง

2.5.3 FINANCIAL_CATEGORY (หมวดค่ารักษา)

ตารางเก็บหมวดค่ารักษาพยาบาลต่างๆ

Field Name Data Type Length Null Key Description
category_code VARCHAR 10 NO PK รหัสหมวดค่ารักษา
category_name VARCHAR 200 NO - ชื่อหมวดค่ารักษา
category_name_en VARCHAR 200 YES - ชื่อหมวด (ภาษาอังกฤษ)
category_type ENUM - NO - ประเภท (OPD/IPD/BOTH)
parent_category VARCHAR 10 YES FK หมวดหลัก
sort_order INT - NO - ลำดับการแสดงผล
is_billable BOOLEAN - NO - สามารถเรียกเก็บเงินได้
tax_applicable BOOLEAN - NO - คิดภาษี
description TEXT - YES - คำอธิบาย
is_active BOOLEAN - NO - สถานะใช้งาน
created_at TIMESTAMP - NO - วันเวลาที่สร้าง

2.5.4 DISCOUNT_TYPE (ประเภทส่วนลด)

ตารางเก็บประเภทส่วนลดต่างๆ

Field Name Data Type Length Null Key Description
discount_type_code VARCHAR 10 NO PK รหัสประเภทส่วนลด
discount_name VARCHAR 100 NO - ชื่อประเภทส่วนลด
discount_description TEXT - YES - คำอธิบายส่วนลด
calculation_method ENUM - NO - วิธีคำนวณ (PERCENTAGE/FIXED_AMOUNT)
default_percent DECIMAL 5,2 YES - เปอร์เซ็นต์เริ่มต้น
default_amount DECIMAL 10,2 YES - จำนวนเงินเริ่มต้น
max_percent DECIMAL 5,2 YES - เปอร์เซ็นต์สูงสุด
max_amount DECIMAL 10,2 YES - จำนวนเงินสูงสุด
applicable_category TEXT - YES - หมวดค่ารักษาที่ใช้ได้
requires_approval BOOLEAN - NO - ต้องการอนุมัติ
approval_level INT - YES - ระดับการอนุมัติ
is_active BOOLEAN - NO - สถานะใช้งาน
created_at TIMESTAMP - NO - วันเวลาที่สร้าง

2.5.5 EXEMPTION_TYPE (ประเภทการยกเว้น)

ตารางเก็บประเภทการยกเว้นค่ารักษา

Field Name Data Type Length Null Key Description
exemption_type_code VARCHAR 10 NO PK รหัสประเภทยกเว้น
exemption_name VARCHAR 100 NO - ชื่อประเภทยกเว้น
exemption_description TEXT - YES - คำอธิบายการยกเว้น
exemption_scope ENUM - NO - ขอบเขต (FULL/PARTIAL/CATEGORY)
default_percent DECIMAL 5,2 YES - เปอร์เซ็นต์เริ่มต้น
applicable_category TEXT - YES - หมวดค่ารักษาที่ใช้ได้
eligibility_criteria TEXT - YES - เกณฑ์การมีสิทธิ
required_documents TEXT - YES - เอกสารที่ต้องใช้
requires_approval BOOLEAN - NO - ต้องการอนุมัติ
approval_level INT - YES - ระดับการอนุมัติ
max_times_per_year INT - YES - จำนวนครั้งสูงสุดต่อปี
is_active BOOLEAN - NO - สถานะใช้งาน
created_at TIMESTAMP - NO - วันเวลาที่สร้าง

2.5.6 SERVICE_RATE (อัตราค่าบริการ)

ตารางเก็บอัตราค่าบริการต่างๆ

Field Name Data Type Length Null Key Description
service_rate_id VARCHAR 20 NO PK รหัสอัตราค่าบริการ
service_code VARCHAR 20 NO - รหัสบริการ
service_name VARCHAR 200 NO - ชื่อบริการ
category_code VARCHAR 10 NO FK รหัสหมวดค่ารักษา
unit_price DECIMAL 10,2 NO - ราคาต่อหน่วย
unit VARCHAR 20 NO - หน่วย
special_rate DECIMAL 10,2 YES - ราคาพิเศษ
government_rate DECIMAL 10,2 YES - ราคาข้าราชการ
foreign_rate DECIMAL 10,2 YES - ราคาต่างชาติ
effective_date DATE - NO - วันที่มีผล
expiry_date DATE - YES - วันที่หมดอายุ
is_active BOOLEAN - NO - สถานะใช้งาน
created_by VARCHAR 10 NO FK ผู้สร้าง
created_at TIMESTAMP - NO - วันเวลาที่สร้าง
updated_at TIMESTAMP - YES - วันเวลาที่แก้ไขล่าสุด

2.6 🟣 Master Data - Configuration

2.6.1 RECEIPT_FORMAT (รูปแบบใบเสร็จ)

ตารางเก็บรูปแบบการออกใบเสร็จ

Field Name Data Type Length Null Key Description
format_id VARCHAR 20 NO PK รหัสรูปแบบ
format_name VARCHAR 100 NO - ชื่อรูปแบบ
format_type ENUM - NO - ประเภท (STANDARD/THERMAL/LASER/CUSTOM)
paper_size VARCHAR 20 NO - ขนาดกระดาษ (A4/80MM/58MM)
orientation ENUM - NO - การวาง (PORTRAIT/LANDSCAPE)
language ENUM - NO - ภาษา (TH/EN/BOTH)
template_file VARCHAR 255 YES - ไฟล์เทมเพลต
header_template TEXT - YES - เทมเพลตส่วนหัว
body_template TEXT - YES - เทมเพลตส่วนเนื้อหา
footer_template TEXT - YES - เทมเพลตส่วนท้าย
font_family VARCHAR 50 YES - ฟอนต์
font_size INT - YES - ขนาดฟอนต์
margin_top DECIMAL 5,2 YES - ขอบบน (cm)
margin_bottom DECIMAL 5,2 YES - ขอบล่าง (cm)
margin_left DECIMAL 5,2 YES - ขอบซ้าย (cm)
margin_right DECIMAL 5,2 YES - ขอบขวา (cm)
is_default BOOLEAN - NO - รูปแบบเริ่มต้น
is_active BOOLEAN - NO - สถานะใช้งาน
created_at TIMESTAMP - NO - วันเวลาที่สร้าง

2.6.2 PAYMENT_CONFIG (การตั้งค่าการชำระเงิน)

ตารางเก็บการตั้งค่าระบบการชำระเงิน

Field Name Data Type Length Null Key Description
config_id VARCHAR 20 NO PK รหัสการตั้งค่า
config_key VARCHAR 100 NO UK คีย์การตั้งค่า
config_value TEXT - NO - ค่าที่ตั้ง
config_type ENUM - NO - ประเภท (STRING/INTEGER/DECIMAL/BOOLEAN/JSON)
config_group VARCHAR 50 NO - กลุ่มการตั้งค่า
description TEXT - YES - คำอธิบาย
default_value TEXT - YES - ค่าเริ่มต้น
validation_rule TEXT - YES - กฎการตรวจสอบ
is_system_config BOOLEAN - NO - การตั้งค่าระบบ
requires_restart BOOLEAN - NO - ต้องรีสตาร์ทระบบ
is_encrypted BOOLEAN - NO - เข้ารหัสข้อมูล
created_by VARCHAR 10 NO FK ผู้สร้าง
created_at TIMESTAMP - NO - วันเวลาที่สร้าง
updated_by VARCHAR 10 YES FK ผู้แก้ไข
updated_at TIMESTAMP - YES - วันเวลาที่แก้ไขล่าสุด

2.6.3 CASHIER_TERMINAL_CONFIG (การตั้งค่าจุดรับชำระ)

ตารางเก็บการตั้งค่าเฉพาะของแต่ละจุดรับชำระเงิน

Field Name Data Type Length Null Key Description
terminal_config_id VARCHAR 20 NO PK รหัสการตั้งค่า
terminal_id VARCHAR 10 NO FK รหัสจุดรับชำระเงิน
config_key VARCHAR 100 NO - คีย์การตั้งค่า
config_value TEXT - NO - ค่าที่ตั้ง
is_active BOOLEAN - NO - สถานะใช้งาน
created_at TIMESTAMP - NO - วันเวลาที่สร้าง
updated_at TIMESTAMP - YES - วันเวลาที่แก้ไขล่าสุด

2.6.4 FINANCIAL_REPORT_PARAM (พารามิเตอร์รายงานการเงิน)

ตารางเก็บพารามิเตอร์สำหรับรายงานการเงิน

Field Name Data Type Length Null Key Description
param_id VARCHAR 20 NO PK รหัสพารามิเตอร์
report_type VARCHAR 50 NO - ประเภทรายงาน
param_name VARCHAR 100 NO - ชื่อพารามิเตอร์
param_label VARCHAR 200 NO - ป้ายกำกับ
param_type ENUM - NO - ประเภท (DATE/STRING/NUMBER/LIST/BOOLEAN)
default_value TEXT - YES - ค่าเริ่มต้น
is_required BOOLEAN - NO - จำเป็นต้องใส่
validation_rule TEXT - YES - กฎการตรวจสอบ
list_values TEXT - YES - ค่าตัวเลือก (JSON)
sort_order INT - NO - ลำดับการแสดงผล
is_active BOOLEAN - NO - สถานะใช้งาน
created_at TIMESTAMP - NO - วันเวลาที่สร้าง

2.7 🔴 External Integration - การเชื่อมโยงภายนอก

2.7.1 EXTERNAL_PAYMENT_API (API การชำระเงินภายนอก)

ตารางเก็บข้อมูลการเชื่อมต่อ API การชำระเงินภายนอก

Field Name Data Type Length Null Key Description
api_id VARCHAR 20 NO PK รหัส API
api_name VARCHAR 100 NO - ชื่อ API
provider_name VARCHAR 100 NO - ชื่อผู้ให้บริการ
api_type ENUM - NO - ประเภท (PAYMENT_GATEWAY/BANK_API/QR_CODE)
endpoint_url VARCHAR 255 NO - URL ของ API
authentication_type ENUM - NO - ประเภทการยืนยัน (API_KEY/OAUTH/BASIC_AUTH)
api_key VARCHAR 255 YES - API Key (เข้ารหัส)
secret_key VARCHAR 255 YES - Secret Key (เข้ารหัส)
timeout_seconds INT - NO - Timeout (วินาที)
retry_attempts INT - NO - จำนวนครั้งที่ Retry
is_test_mode BOOLEAN - NO - โหมดทดสอบ
is_active BOOLEAN - NO - สถานะใช้งาน
created_at TIMESTAMP - NO - วันเวลาที่สร้าง

2.7.2 RIGHTS_VERIFICATION_API (API ตรวจสอบสิทธิ)

ตารางเก็บข้อมูลการเชื่อมต่อ API ตรวจสอบสิทธิ

Field Name Data Type Length Null Key Description
verification_api_id VARCHAR 20 NO PK รหัส API ตรวจสอบสิทธิ
rights_code VARCHAR 10 NO FK รหัสสิทธิการรักษา
api_name VARCHAR 100 NO - ชื่อ API
provider_organization VARCHAR 100 NO - หน่วยงานผู้ให้บริการ
endpoint_url VARCHAR 255 NO - URL ของ API
authentication_method VARCHAR 50 NO - วิธีการยืนยันตัวตน
hospital_code VARCHAR 20 YES - รหัสโรงพยาบาลในระบบ
username VARCHAR 100 YES - Username (เข้ารหัส)
password VARCHAR 255 YES - Password (เข้ารหัส)
certificate_file VARCHAR 255 YES - ไฟล์ Certificate
request_format ENUM - NO - รูปแบบ Request (JSON/XML/SOAP)
response_format ENUM - NO - รูปแบบ Response (JSON/XML/SOAP)
cache_duration INT - YES - ระยะเวลา Cache (นาที)
is_active BOOLEAN - NO - สถานะใช้งาน
created_at TIMESTAMP - NO - วันเวลาที่สร้าง

2.7.3 BANK_RECONCILIATION_API (API กระทบยอดธนาคาร)

ตารางเก็บข้อมูลการเชื่อมต่อ API กระทบยอดธนาคาร

Field Name Data Type Length Null Key Description
bank_api_id VARCHAR 20 NO PK รหัส API ธนาคาร
bank_code VARCHAR 10 NO - รหัสธนาคาร
bank_name VARCHAR 100 NO - ชื่อธนาคาร
account_number VARCHAR 20 NO - หมายเลขบัญชี
api_endpoint VARCHAR 255 NO - URL ของ API
client_id VARCHAR 100 YES - Client ID (เข้ารหัส)
client_secret VARCHAR 255 YES - Client Secret (เข้ารหัส)
access_token TEXT - YES - Access Token (เข้ารหัส)
token_expiry TIMESTAMP - YES - วันหมดอายุ Token
last_reconciliation TIMESTAMP - YES - วันเวลากระทบยอดล่าสุด
auto_reconcile BOOLEAN - NO - กระทบยอดอัตโนมัติ
reconcile_frequency ENUM - NO - ความถี่ (HOURLY/DAILY/WEEKLY)
is_active BOOLEAN - NO - สถานะใช้งาน
created_at TIMESTAMP - NO - วันเวลาที่สร้าง

2.7.4 GOVERNMENT_SYSTEM_API (API ระบบราชการ)

ตารางเก็บข้อมูลการเชื่อมต่อ API ระบบราชการ

Field Name Data Type Length Null Key Description
gov_api_id VARCHAR 20 NO PK รหัส API ราชการ
system_name VARCHAR 100 NO - ชื่อระบบราชการ
ministry VARCHAR 100 YES - กระทรวง
department VARCHAR 100 YES - กรม
api_purpose ENUM - NO - วัตถุประสงค์ (DATA_SUBMIT/CLAIM/REPORT)
endpoint_url VARCHAR 255 NO - URL ของ API
api_version VARCHAR 10 YES - เวอร์ชัน API
authentication_type VARCHAR 50 NO - ประเภทการยืนยันตัวตน
organization_code VARCHAR 20 YES - รหัสหน่วยงาน
username VARCHAR 100 YES - Username (เข้ารหัส)
password VARCHAR 255 YES - Password (เข้ารหัส)
submit_frequency ENUM - NO - ความถี่การส่ง (REALTIME/DAILY/MONTHLY)
data_format ENUM - NO - รูปแบบข้อมูล (JSON/XML/FIXED_LENGTH)
last_submit_date TIMESTAMP - YES - วันเวลาส่งข้อมูลล่าสุด
is_active BOOLEAN - NO - สถานะใช้งาน
created_at TIMESTAMP - NO - วันเวลาที่สร้าง

3. ความสัมพันธ์ของตาราง (Table Relationships)

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

3.1.1 Core Financial Flow

PATIENT (ระบบเวชระเบียน) 
    ↓ 1:N
PAYMENT_TRANSACTION 
    ↓ 1:1
RECEIPT
    ↓ 1:N
PAYMENT_METHOD

3.1.2 Bill Management Flow

VISIT/AN (ระบบเวชระเบียน/ผู้ป่วยใน)
    ↓ 1:N
BILL_ITEM
    ↓ 1:1
BILL_CALCULATION
    ↓ N:1
PAYMENT_TRANSACTION

3.1.3 Rights and Payment Chart

FINANCIAL_RIGHTS
    ↓ 1:N
PAYMENT_CHART
    ↓ 1:N
BILL_CALCULATION

3.2 ความสัมพันธ์สนับสนุน (Supporting Relationships)

3.2.1 Deposit Management

PATIENT
    ↓ 1:N
DEPOSIT_TRANSACTION
    ↓ N:1
PAYMENT_TRANSACTION

3.2.2 Outstanding Balance

PATIENT
    ↓ 1:N
OUTSTANDING_BALANCE
    ↓ N:1
PAYMENT_TRANSACTION

3.2.3 Multiple Rights Usage

PAYMENT_TRANSACTION
    ↓ 1:N
MULTIPLE_RIGHTS
    ↓ N:1
FINANCIAL_RIGHTS

3.3 ความสัมพันธ์การตั้งค่า (Configuration Relationships)

3.3.1 Terminal Configuration

CASHIER_TERMINAL
    ↓ 1:N
CASHIER_TERMINAL_CONFIG

CASHIER_TERMINAL
    ↓ 1:N
RECEIPT_NUMBER_SEQUENCE

3.3.2 Format and Template

RECEIPT_FORMAT
    ↓ 1:N
RECEIPT

PAYMENT_CONFIG
    ↓ Global Settings
PAYMENT_TRANSACTION

4. ดัชนี (Indexes) และข้อจำกัด (Constraints)

4.1 Primary Keys และ Unique Constraints

-- Primary Keys (ตามที่กำหนดในแต่ละตาราง)
ALTER TABLE PAYMENT_TRANSACTION ADD CONSTRAINT PK_PAYMENT_TRANSACTION 
PRIMARY KEY (payment_id);

ALTER TABLE RECEIPT ADD CONSTRAINT PK_RECEIPT 
PRIMARY KEY (receipt_id);

ALTER TABLE RECEIPT ADD CONSTRAINT UK_RECEIPT_NUMBER 
UNIQUE (receipt_number);

-- Composite Unique Constraints
ALTER TABLE DAILY_CLOSING ADD CONSTRAINT UK_DAILY_CLOSING 
UNIQUE (closing_date, terminal_id);

ALTER TABLE RECEIPT_NUMBER_SEQUENCE ADD CONSTRAINT UK_SEQUENCE 
UNIQUE (terminal_id, sequence_type);

4.2 Foreign Key Constraints

-- ความสัมพันธ์กับระบบเวชระเบียน
ALTER TABLE PAYMENT_TRANSACTION ADD CONSTRAINT FK_PAYMENT_PATIENT 
FOREIGN KEY (hn) REFERENCES PATIENT(hn);

ALTER TABLE PAYMENT_TRANSACTION ADD CONSTRAINT FK_PAYMENT_VISIT 
FOREIGN KEY (visit_id) REFERENCES VISIT(visit_id);

-- ความสัมพันธ์ภายในระบบการเงิน
ALTER TABLE RECEIPT ADD CONSTRAINT FK_RECEIPT_PAYMENT 
FOREIGN KEY (payment_id) REFERENCES PAYMENT_TRANSACTION(payment_id);

ALTER TABLE PAYMENT_METHOD ADD CONSTRAINT FK_METHOD_PAYMENT 
FOREIGN KEY (payment_id) REFERENCES PAYMENT_TRANSACTION(payment_id);

-- ความสัมพันธ์กับ Master Data
ALTER TABLE PAYMENT_TRANSACTION ADD CONSTRAINT FK_PAYMENT_TERMINAL 
FOREIGN KEY (terminal_id) REFERENCES CASHIER_TERMINAL(terminal_id);

ALTER TABLE BILL_CALCULATION ADD CONSTRAINT FK_CALC_RIGHTS 
FOREIGN KEY (rights_code) REFERENCES FINANCIAL_RIGHTS(rights_code);

4.3 Performance Indexes

-- Indexes สำหรับการค้นหาที่ใช้บ่อย
CREATE INDEX IDX_PAYMENT_DATE ON PAYMENT_TRANSACTION(payment_date);
CREATE INDEX IDX_PAYMENT_HN ON PAYMENT_TRANSACTION(hn);
CREATE INDEX IDX_PAYMENT_STATUS ON PAYMENT_TRANSACTION(payment_status);
CREATE INDEX IDX_PAYMENT_TERMINAL_DATE ON PAYMENT_TRANSACTION(terminal_id, payment_date);

CREATE INDEX IDX_RECEIPT_DATE ON RECEIPT(receipt_date);
CREATE INDEX IDX_RECEIPT_CANCELLED ON RECEIPT(is_cancelled);

CREATE INDEX IDX_BILL_ITEM_HN_DATE ON BILL_ITEM(hn, service_date);
CREATE INDEX IDX_BILL_ITEM_STATUS ON BILL_ITEM(billing_status);

CREATE INDEX IDX_OUTSTANDING_HN ON OUTSTANDING_BALANCE(hn);
CREATE INDEX IDX_OUTSTANDING_STATUS ON OUTSTANDING_BALANCE(status);

CREATE INDEX IDX_DEPOSIT_HN ON DEPOSIT_TRANSACTION(hn);
CREATE INDEX IDX_DEPOSIT_DATE ON DEPOSIT_TRANSACTION(deposit_date);

4.4 Check Constraints

-- ตรวจสอบข้อมูลทางการเงิน
ALTER TABLE PAYMENT_TRANSACTION ADD CONSTRAINT CHK_PAYMENT_AMOUNTS 
CHECK (total_amount >= 0 AND paid_amount >= 0 AND change_amount >= 0);

ALTER TABLE DEPOSIT_TRANSACTION ADD CONSTRAINT CHK_DEPOSIT_AMOUNT 
CHECK (amount > 0);

ALTER TABLE OUTSTANDING_BALANCE ADD CONSTRAINT CHK_OUTSTANDING_BALANCE 
CHECK (balance_amount >= 0);

-- ตรวจสอบเปอร์เซ็นต์
ALTER TABLE DISCOUNT_TYPE ADD CONSTRAINT CHK_DISCOUNT_PERCENT 
CHECK (default_percent >= 0 AND default_percent <= 100);

-- ตรวจสอบสถานะ
ALTER TABLE PAYMENT_TRANSACTION ADD CONSTRAINT CHK_PAYMENT_STATUS 
CHECK (payment_status IN ('PAID', 'PENDING', 'CANCELLED'));

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

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

5.1.1 ระบบเวชระเบียน (1.2.1)

PATIENT.hn ← PAYMENT_TRANSACTION.hn
VISIT.visit_id ← PAYMENT_TRANSACTION.visit_id
VISIT.hn ← BILL_ITEM.hn

5.1.2 ระบบตรวจสอบสิทธิ (1.2.15)

RIGHTS_MASTER.rights_code ← FINANCIAL_RIGHTS.rights_code
PATIENT_RIGHTS.rights_code ← MULTIPLE_RIGHTS.rights_code

5.1.3 ระบบห้องตรวจแพทย์ (1.2.3)

DOCTOR_ORDER → BILL_ITEM (ค่าตรวจรักษา)
LAB_ORDER → BILL_ITEM (ค่าตรวจทางห้องปฏิบัติการ)

5.1.4 ระบบเภสัชกรรม (1.2.13)

MEDICATION_DISPENSE → BILL_ITEM (ค่ายา)
SUPPLY_USAGE → BILL_ITEM (ค่าเวชภัณฑ์)

5.1.5 ระบบผู้ป่วยใน (1.2.17)

ADMISSION.an ← PAYMENT_TRANSACTION.an
ADMISSION.an ← BILL_ITEM.an
IPD_SERVICE → BILL_ITEM (ค่าห้องและบริการ)

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

5.2.1 สำนักงานหลักประกันสุขภาพแห่งชาติ (สปสช.)

API: สิทธิ UC และการส่งข้อมูล 43 แฟ้ม
Table: GOVERNMENT_SYSTEM_API
Data: FINANCIAL_RIGHTS, BILL_ITEM, PAYMENT_TRANSACTION

5.2.2 สำนักงานประกันสังคม (สนย.)

API: สิทธิประกันสังคม
Table: RIGHTS_VERIFICATION_API
Data: FINANCIAL_RIGHTS, PAYMENT_TRANSACTION

5.2.3 กรมบัญชีกลาง (สำหรับข้าราชการ)

API: สิทธิข้าราชการและลูกจ้าง
Table: GOVERNMENT_SYSTEM_API
Data: FINANCIAL_RIGHTS, PAYMENT_TRANSACTION

5.2.4 ระบบธนาคาร

API: การชำระเงินและกระทบยอด
Table: EXTERNAL_PAYMENT_API, BANK_RECONCILIATION_API
Data: PAYMENT_METHOD, DAILY_CLOSING

6. สรุป

6.1 ภาพรวมฐานข้อมูล

ระบบการเงินประกอบด้วย 40 ตาราง แบ่งเป็น: - 3 ตาราง หลัก (Core Financial Tables) 🟢 - 10 ตาราง จัดการการชำระเงิน (Payment Management) 🔵
- 6 ตาราง จัดการระบบ (System Management) 🟠 - 6 ตาราง Master Data ทางการเงิน 🟡 - 4 ตาราง การตั้งค่า (Configuration) 🟣 - 4 ตาราง การเชื่อมโยงภายนอก (External Integration) 🔴

6.2 จุดเด่นของการออกแบบ

  1. ครอบคลุมครบถ้วน: รองรับทุก TOR ที่กำหนด
  2. ยืดหยุ่นสูง: รองรับการใช้หลายสิทธิและการชำระแบบผสม
  3. Audit Trail สมบูรณ์: บันทึกการเปลี่ยนแปลงทุกรายการ
  4. API Ready: พร้อมเชื่อมต่อระบบภายนอก
  5. Scalable: ออกแบบรองรับการขยายตัว

6.3 การรักษาความปลอดภัย

  • เข้ารหัสข้อมูลสำคัญ (API Keys, Passwords)
  • Audit Logging ครบถ้วน
  • Access Control ตาม Role
  • Data Validation และ Constraints

6.4 Performance Considerations

  • Indexing ที่เหมาะสม
  • Partitioning สำหรับข้อมูลขนาดใหญ่
  • Caching สำหรับข้อมูลที่ใช้บ่อย
  • Archive Strategy สำหรับข้อมูลเก่า

หมายเหตุ: ERD นี้จัดทำตามมาตรฐาน SRS และครอบคลุม TOR ทั้งหมด การปรับปรุงอาจจำเป็นตามการเปลี่ยนแปลงของกฎระเบียบและความต้องการใช้งาน