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 จุดเด่นของการออกแบบ
- ครอบคลุมครบถ้วน: รองรับทุก TOR ที่กำหนด
- ยืดหยุ่นสูง: รองรับการใช้หลายสิทธิและการชำระแบบผสม
- Audit Trail สมบูรณ์: บันทึกการเปลี่ยนแปลงทุกรายการ
- API Ready: พร้อมเชื่อมต่อระบบภายนอก
- 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 ทั้งหมด การปรับปรุงอาจจำเป็นตามการเปลี่ยนแปลงของกฎระเบียบและความต้องการใช้งาน