ER Diagram
ระบบตรวจสอบสิทธิ
โรงพยาบาลค่ายธนรัชน์
เอกสารเลขที่: SRS-1.2.15-ERD
เวอร์ชัน: 1.0
วันที่: 3 ตุลาคม 2568
ผู้จัดทำ: ทีมพัฒนาระบบ
ผู้อนุมัติ: ผู้อำนวยการโรงพยาบาลค่ายธนรัชน์
ER Diagram และความสัมพันธ์ระหว่างตาราง
คำอธิบายสีในแผนภาพ
🎨 คำอธิบายสีในแผนภาพ:
- 🟠 สีส้ม (External Tables): ตารางที่อ้างอิงจากระบบอื่น ไม่ได้อยู่ในฐานข้อมูลของระบบตรวจสอบสิทธิโดยตรง
- PATIENT - จากระบบเวชระเบียน (1.2.1)
- VISIT - จากระบบเวชระเบียน (1.2.1)
- USER - จากระบบจัดการผู้ใช้งานกลาง
- 🟢 สีเขียว (Rights Tables): ตารางหลักของระบบตรวจสอบสิทธิ ที่เก็บข้อมูลและดำเนินการในระบบนี้โดยตรง
RIGHTTYPE- ข้อมูลประเภทสิทธิPATIENTRIGHT- สิทธิของผู้ป่วยแต่ละรายRIGHTSVERIFICATION- บันทึกการยืนยันสิทธิRIGHTSAUDITLOG- บันทึกการแก้ไขเพื่อการตรวจสอบ-
EXTERNALSYSTEM- ข้อมูลระบบภายนอก (สปสช./สนย.) -
🔵 สีน้ำเงิน (Financial Tables): ตารางจากระบบการเงิน (1.2.14) ที่ระบบตรวจสอบสิทธิอ้างอิงเพื่อดึงข้อมูลการคำนวณค่าบริการ
-
RIGHTSFINANCIALDATA- ข้อมูลการเงินของแต่ละประเภทสิทธิ -
🟣 สีม่วง (Future Enhancement Tables): ตารางสำหรับการพัฒนาในอนาคต (ระยะที่ 2-3) ยังไม่มีการเชื่อมโยงกับตารางอื่นในปัจจุบัน
SERVICELEVEL- ระดับบริการ (Basic/Standard/Premium)NETWORKHOSPITAL- โรงพยาบาลเครือข่าย (สำหรับ Cross-Hospital Integration)
แผนภาพแบบง่าย (Simplified Diagram)
graph TD
subgraph "🟠 Other Systems - ระบบอื่นที่เกี่ยวข้อง"
P[PATIENT<br/>ตารางผู้ป่วย]
V[VISIT<br/>ตารางการมารับบริการ]
U[USER_TABLE<br/>ตารางผู้ใช้งาน]
end
subgraph "🟢 Rights System - ระบบตรวจสอบสิทธิ"
RT[RIGHTTYPE<br/>ประเภทสิทธิ]
PR[PATIENTRIGHT<br/>สิทธิผู้ป่วย]
RV[RIGHTSVERIFICATION<br/>การยืนยันสิทธิ]
RA[RIGHTSAUDITLOG<br/>บันทึกการแก้ไข]
ES[EXTERNALSYSTEM<br/>ระบบภายนอก]
VP[VALIDATIONPROVIDER<br/>ผู้ให้บริการตรวจสอบ]
TC[TREATMENTCOVERAGE<br/>ความคุ้มครอง]
VS[VALIDATIONSTATUS<br/>สถานะตรวจสอบ]
RL[RIGHTSLIMITATION<br/>ข้อจำกัดสิทธิ]
%% ตารางการเงินใหม่
RPT[RIGHTSPAYMENTTYPE<br/>ประเภทการชำระเงิน]
RRT[RIGHTSRECEIPTTYPE<br/>ประเภทใบเสร็จ]
RD[RIGHTSDISCOUNT<br/>ส่วนลดในค่าใช้จ่าย]
end
subgraph "🟣 Future Enhancement - การพัฒนาในอนาคต (ยังไม่มีการเชื่อมโยง)"
SL["🔎 SERVICELEVEL<br/>ระดับบริการ<br/><small>สำหรับ Service Level Management</small>"]
NH["🔎 NETWORKHOSPITAL<br/>โรงพยาบาลเครือข่าย<br/><small>สำหรับ Cross-Hospital Integration</small>"]
end
%% ความสัมพันธ์หลัก
P --> PR
V --> RV
U --> RV
U --> RA
RT --> PR
RT --> ES
RT --> TC
RT --> RL
PR --> RV
PR --> RA
VP --> RV
VS --> RV
%% ความสัมพันธ์การเงินใหม่
RT --> RPT
RT --> RRT
RT --> RD
%% Future Enhancement - ความสัมพันธ์ที่จะเพิ่มในอนาคต (เส้นประ)
RT -.-> SL
PR -.-> NH
RV -.-> NH
style P fill:#fff3e0,stroke:#e65100,stroke-width:2px
style V fill:#fff3e0,stroke:#e65100,stroke-width:2px
style U fill:#fff3e0,stroke:#e65100,stroke-width:2px
style RT fill:#e8f5e8,stroke:#2e7d32,stroke-width:2px
style PR fill:#e8f5e8,stroke:#2e7d32,stroke-width:2px
style RV fill:#e8f5e8,stroke:#2e7d32,stroke-width:2px
style RA fill:#e8f5e8,stroke:#2e7d32,stroke-width:2px
style ES fill:#e8f5e8,stroke:#2e7d32,stroke-width:2px
style VP fill:#e8f5e8,stroke:#2e7d32,stroke-width:2px
style TC fill:#e8f5e8,stroke:#2e7d32,stroke-width:2px
style VS fill:#e8f5e8,stroke:#2e7d32,stroke-width:2px
style RL fill:#e8f5e8,stroke:#2e7d32,stroke-width:2px
style RPT fill:#e8f5e8,stroke:#2e7d32,stroke-width:2px
style RRT fill:#e8f5e8,stroke:#2e7d32,stroke-width:2px
style RD fill:#e8f5e8,stroke:#2e7d32,stroke-width:2px
style SL fill:#f3e5f5,stroke:#7b1fa2,stroke-width:3px,stroke-dasharray: 5 5
style NH fill:#f3e5f5,stroke:#7b1fa2,stroke-width:3px,stroke-dasharray: 5 5
ER Diagram แบบละเอียด (Detailed ERD)
erDiagram
PATIENT {
varchar HN PK
varchar CitizenID UK
nvarchar FirstName
nvarchar LastName
date DateOfBirth
char Gender
}
VISIT {
varchar VisitID PK
varchar HN FK
datetime VisitDate
nvarchar Department
nvarchar Doctor
}
USER_TABLE {
varchar UserID PK
varchar Username UK
nvarchar FullName
varchar Role
nvarchar Department
}
RIGHTTYPE {
varchar RightTypeID PK
nvarchar RightTypeName
nvarchar RightTypeNameEng
varchar Category
nvarchar Description
decimal CoveragePercentage
bit RequiresApproval
bit OnlineValidation
bit CopaymentRequired
nvarchar ValidHospitals
int PriorityLevel
varchar ExternalSystemID FK
bit IsActive
}
RIGHTSPAYMENTTYPE {
varchar PaymentTypeID PK
varchar RightTypeID FK
varchar PaymentCode
nvarchar PaymentName
nvarchar PaymentNameEng
bit RequiresPayment
varchar PaymentMethod
decimal DefaultAmount
nvarchar CalculationFormula
bit IsActive
}
RIGHTSRECEIPTTYPE {
varchar ReceiptTypeID PK
varchar RightTypeID FK
varchar ReceiptCode
nvarchar ReceiptName
nvarchar ReceiptNameEng
varchar ReceiptTemplate
ntext ServiceChargeFormula
bit RequiresApproval
int PrintCopies
bit IsActive
}
RIGHTSDISCOUNT {
varchar DiscountID PK
varchar RightTypeID FK
varchar ExpenseCategory
nvarchar ExpenseCategoryName
varchar DiscountType
decimal DiscountValue
decimal MaxDiscountAmount
decimal MinChargeAmount
date EffectiveDate
date ExpiryDate
bit IsActive
}
SERVICELEVEL {
int ServiceLevelID PK "🔮 Future Enhancement - Service Level Management"
varchar LevelCode "BASIC, STANDARD, PREMIUM"
nvarchar LevelName
nvarchar LevelNameEng
ntext IncludedServices "JSON: บริการที่รวม"
ntext ExcludedServices "JSON: บริการที่ไม่รวม"
bit IsActive
}
VALIDATIONPROVIDER {
varchar ProviderID PK
varchar ProviderCode
nvarchar ProviderName
nvarchar ProviderNameEng
varchar APIEndpoint
varchar AuthType
int TimeoutSeconds
int RetryAttempts
nvarchar SupportedSchemes
bit IsActive
datetime LastSync
}
TREATMENTCOVERAGE {
varchar CoverageID PK
varchar RightTypeID FK
varchar TreatmentType
nvarchar TreatmentName
nvarchar TreatmentNameEng
bit IsCovered
decimal CopaymentAmount
decimal LimitPerVisit
bit IsActive
}
VALIDATIONSTATUS {
varchar StatusID PK
varchar StatusCode
nvarchar StatusName
nvarchar StatusNameEng
bit AllowTreatment
bit RequiresCopayment
varchar StatusColor
bit IsActive
}
RIGHTSLIMITATION {
varchar LimitationID PK
varchar RightTypeID FK
varchar LimitationType
nvarchar LimitationDescription
bit IsActive
}
NETWORKHOSPITAL {
varchar NetworkHospitalID PK "🔮 Future Enhancement - Cross-Hospital Integration"
varchar HospitalCode "5-digit hospital code"
nvarchar HospitalName
nvarchar HospitalNameEng
nvarchar Province
varchar HospitalLevel "F1, F2, F3"
nvarchar SupportedSchemes "JSON: สิทธิที่รองรับ"
bit IsMainContractor
date ContractStartDate
date ContractEndDate
bit IsActive
}
PATIENTRIGHT {
varchar PatientRightID PK
varchar HN FK
varchar RightTypeID FK
varchar RightNumber
date StartDate
date EndDate
nvarchar MainHospital
nvarchar SubHospital
varchar Status
datetime CreatedDate
varchar CreatedBy
datetime LastVerified
}
RIGHTSVERIFICATION {
varchar VerificationID PK
varchar PatientRightID FK
varchar VisitID FK
varchar UserID FK
datetime VerificationDate
varchar VerificationMethod
varchar ValidationProviderID FK
varchar ValidationStatusID FK
int ResponseTime
varchar ErrorCode
ntext ExternalResponse
bit IsVerified
nvarchar Notes
}
RIGHTSAUDITLOG {
varchar LogID PK
varchar PatientRightID FK
varchar UserID FK
varchar Action
ntext OldValue
ntext NewValue
datetime ActionDate
varchar IPAddress
nvarchar Reason
}
EXTERNALSYSTEM {
varchar SystemID PK
varchar SystemCode
nvarchar SystemName
nvarchar SystemNameEng
varchar SystemURL
varchar APIVersion
varchar AuthenticationType
int TimeoutSeconds
int MaxRetryAttempts
bit IsActive
datetime LastSync
}
PATIENT ||--o{ PATIENTRIGHT : ""
PATIENT ||--o{ VISIT : ""
RIGHTTYPE ||--o{ PATIENTRIGHT : ""
RIGHTTYPE ||--|| EXTERNALSYSTEM : ""
RIGHTTYPE ||--o{ RIGHTSPAYMENTTYPE : ""
RIGHTTYPE ||--o{ RIGHTSRECEIPTTYPE : ""
RIGHTTYPE ||--o{ RIGHTSDISCOUNT : ""
RIGHTTYPE ||--o{ TREATMENTCOVERAGE : ""
RIGHTTYPE ||--o{ RIGHTSLIMITATION : ""
PATIENTRIGHT ||--o{ RIGHTSVERIFICATION : ""
PATIENTRIGHT ||--o{ RIGHTSAUDITLOG : ""
VISIT ||--o{ RIGHTSVERIFICATION : ""
USER_TABLE ||--o{ RIGHTSVERIFICATION : ""
USER_TABLE ||--o{ RIGHTSAUDITLOG : ""
VALIDATIONPROVIDER ||--o{ RIGHTSVERIFICATION : ""
VALIDATIONSTATUS ||--o{ RIGHTSVERIFICATION : ""
ความสัมพันธ์ระหว่างตาราง (Relationships)
ความสัมพันธ์หลัก (Primary Relationships)
- PATIENT → PATIENTRIGHT (One-to-Many)
- ผู้ป่วย 1 คน สามารถมีสิทธิได้หลายประเภท
-
Foreign Key:
PATIENTRIGHT.HN → PATIENT.HN -
RIGHTTYPE → PATIENTRIGHT (One-to-Many)
- ประเภทสิทธิ 1 ประเภท มีผู้ป่วยได้หลายคน
-
Foreign Key:
PATIENTRIGHT.RightTypeID → RIGHTTYPE.RightTypeID -
PATIENTRIGHT → RIGHTSVERIFICATION (One-to-Many)
- สิทธิผู้ป่วย 1 รายการ สามารถมีการยืนยันได้หลายครั้ง
- Foreign Key:
RIGHTSVERIFICATION.PatientRightID → PATIENTRIGHT.PatientRightID
ความสัมพันธ์การอ้างอิง (Reference Relationships)
- VISIT → RIGHTSVERIFICATION (One-to-Many)
- การมารับบริการ 1 ครั้ง สามารถมีการยืนยันสิทธิได้หลายรายการ
-
Foreign Key:
RIGHTSVERIFICATION.VisitID → VISIT.VisitID -
USER_TABLE → RIGHTSVERIFICATION (One-to-Many)
- ผู้ใช้ 1 คน สามารถทำการยืนยันสิทธิได้หลายครั้ง
-
Foreign Key:
RIGHTSVERIFICATION.UserID → USER_TABLE.UserID -
RIGHTTYPE → EXTERNALSYSTEM (Many-to-One)
- ประเภทสิทธิหลายประเภท อาจใช้ระบบภายนอกเดียวกัน
- Foreign Key:
RIGHTTYPE.ExternalSystemID → EXTERNALSYSTEM.SystemID
ความสัมพันธ์การสนับสนุน (Support Relationships)
- RIGHTTYPE → TREATMENTCOVERAGE (One-to-Many)
- ประเภทสิทธิ 1 ประเภท มีความคุ้มครองการรักษาหลายประเภท
-
Foreign Key:
TREATMENTCOVERAGE.RightTypeID → RIGHTTYPE.RightTypeID -
RIGHTTYPE → RIGHTSLIMITATION (One-to-Many)
- ประเภทสิทธิ 1 ประเภท มีข้อจำกัดหลายข้อ
-
Foreign Key:
RIGHTSLIMITATION.RightTypeID → RIGHTTYPE.RightTypeID -
VALIDATIONPROVIDER → RIGHTSVERIFICATION (One-to-Many)
- ผู้ให้บริการตรวจสอบ 1 แห่ง สามารถทำการตรวจสอบได้หลายครั้ง
-
Foreign Key:
RIGHTSVERIFICATION.ValidationProviderID → VALIDATIONPROVIDER.ProviderID -
VALIDATIONSTATUS → RIGHTSVERIFICATION (One-to-Many)
- สถานะการตรวจสอบ 1 ประเภท สามารถใช้ในการยืนยันได้หลายครั้ง
- Foreign Key:
RIGHTSVERIFICATION.ValidationStatusID → VALIDATIONSTATUS.StatusID
ความสัมพันธ์การติดตาม (Audit Relationships)
-
PATIENTRIGHT → RIGHTSAUDITLOG (One-to-Many)
- สิทธิผู้ป่วย 1 รายการ สามารถมี Audit Log หลายรายการ
- Foreign Key:
RIGHTSAUDITLOG.PatientRightID → PATIENTRIGHT.PatientRightID
-
USER_TABLE → RIGHTSAUDITLOG (One-to-Many)
- ผู้ใช้ 1 คน สามารถทำการแก้ไขได้หลายครั้ง
- Foreign Key:
RIGHTSAUDITLOG.UserID → USER_TABLE.UserID
ความสัมพันธ์ Future Enhancement (สำหรับอนาคต)
⚠️ หมายเหตุสำคัญ: ความสัมพันธ์เหล่านี้แสดงเป็นเส้นประ (Dotted Lines) เพื่อบ่งบอกว่าจะเพิ่มในอนาคต
-
RIGHTTYPE -.-> SERVICELEVEL (Many-to-One - Future)
- ประเภทสิทธิหลายประเภท อาจมีระดับบริการเดียวกัน
- Future Foreign Key:
RIGHTTYPE.ServiceLevelID → SERVICELEVEL.ServiceLevelID - Use Case: UC Premium vs UC Basic มีระดับบริการต่างกัน
-
PATIENTRIGHT -.-> NETWORKHOSPITAL (Many-to-One - Future)
- สิทธิผู้ป่วยหลายรายการ อาจชี้ไปยังโรงพยาบาลเครือข่ายเดียวกัน
- Future Foreign Key:
PATIENTRIGHT.PreferredNetworkHospitalID → NETWORKHOSPITAL.NetworkHospitalID - Use Case: ผู้ป่วยเลือกโรงพยาบาลที่ต้องการใช้สิทธิ
-
RIGHTSVERIFICATION -.-> NETWORKHOSPITAL (Many-to-One - Future)
- การยืนยันสิทธิหลายครั้ง อาจมาจากโรงพยาบาลเครือข่ายเดียวกัน
- Future Foreign Key:
RIGHTSVERIFICATION.SourceHospitalID → NETWORKHOSPITAL.NetworkHospitalID - Use Case: Cross-Hospital Rights Verification
คำอธิบายการออกแบบ
1. การแยกระบบ (System Separation)
- ตารางสีส้ม: อยู่ในระบบอื่น ระบบตรวจสอบสิทธิเพียงอ้างอิง
- ตารางสีเขียว: อยู่ในระบบตรวจสอบสิทธิโดยตรง
- ตารางสีน้ำเงิน: อยู่ในระบบการเงิน มีการ integration ผ่าน reference
- ตารางสีม่วง (เส้นประ): Future Enhancement Tables - ยังไม่ได้เชื่อมโยง
2. การไหลของข้อมูล (Data Flow)
- ผู้ป่วยมารับบริการ → สร้าง Visit
- ตรวจสอบสิทธิผู้ป่วย → สร้าง Verification
- บันทึกผลการตรวจสอบ → เชื่อมโยงกับระบบการเงิน
- Future Flow: Cross-Hospital Verification → Network Hospital Integration
3. การสนับสนุนการตัดสินใจ (Decision Support)
- TREATMENTCOVERAGE: ช่วยตัดสินใจว่าครอบคลุมการรักษาหรือไม่
- RIGHTSLIMITATION: แสดงข้อจำกัดการใช้สิทธิ
- VALIDATIONSTATUS: แสดงสถานะการตรวจสอบแบบ Real-time
4. การควบคุมและตรวจสอบ (Control & Audit)
- RIGHTSAUDITLOG: ติดตามการเปลี่ยนแปลงทั้งหมด
- RIGHTSVERIFICATION: บันทึกการตรวจสอบทุกครั้ง
- Multiple validation providers: รองรับการเชื่อมต่อหลายระบบ
เอกสารนี้จัดทำขึ้นเพื่อใช้ในการพัฒนาระบบตรวจสอบสิทธิสำหรับโรงพยาบาลค่ายธนรัชน์ และต้องได้รับการอนุมัติจากผู้มีอำนาจก่อนนำไปใช้ในการพัฒนาระบบ