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

Database Schema Design

ระบบห้องตรวจแพทย์ (Examination Room System)

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


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


Database Schema Design

ER Diagram: รายละเอียด Entity-Relationship Diagram และความสัมพันธ์ระหว่างตารางแบบละเอียด ดูได้ในไฟล์ ER Diagram.md

ระบบห้องตรวจแพทย์เป็นระบบที่รองรับการตรวจรักษาผู้ป่วยในห้องตรวจ การบันทึกผลการตรวจ การสั่งยา การสั่งตรวจ Lab/X-Ray และการนัดหมาย โดยเชื่อมโยงกับระบบอื่นผ่าน API Integration:

  • ระบบเวชระเบียน (1.2.1): ข้อมูลผู้ป่วยหลักและ Visit
  • ระบบซักประวัติ (1.2.2): ข้อมูลประวัติการรักษาและสัญญาณชีพ
  • ระบบตรวจสอบสิทธิ (1.2.15): การตรวจสอบสิทธิก่อนตรวจรักษา
  • ระบบเภสัชกรรม (1.2.13): การสั่งจ่ายยาและตรวจสอบ Drug Interaction
  • ระบบการเงิน (1.2.14): การคำนวณค่าบริการและค่ารักษาพยาบาล
  • ระบบงานชันสูตร (1.2.7): การสั่งและรับผล Lab
  • ระบบรังสีวิทยา (1.2.8): การสั่งและรับผล X-Ray

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

หมายเหตุ: ตาราง PATIENT, VISIT, HISTORY_TAKING, VITAL_SIGNS จะอยู่ในระบบอื่นๆ ระบบห้องตรวจแพทย์จะอ้างอิงผ่าน Foreign Key เท่านั้น

8.2.1.1 ข้อมูลการตรวจรักษาหลัก

Table: EXAMINATION_SESSION (เซสชันการตรวจรักษา)

วัตถุประสงค์: เก็บข้อมูลเซสชันการตรวจรักษาในห้องตรวจแพทย์แต่ละครั้ง เชื่อมโยงกับข้อมูลผู้ป่วยและการเข้ารับบริการ ตาม TOR ข้อ 1.2.3.2

Field Type Key Description
ExaminationID VARCHAR(20) PK รหัสการตรวจรักษา
VisitID VARCHAR(20) FK รหัส Visit (อ้างอิงจาก ระบบเวชระเบียน 1.2.1)
HN VARCHAR(10) FK Hospital Number
HistoryID VARCHAR(20) FK รหัสการซักประวัติ (อ้างอิงจาก ระบบซักประวัติ 1.2.2)
ExaminationRoomCode VARCHAR(10) FK รหัสห้องตรวจ (อ้างอิง EXAMINATION_ROOM)
DoctorID VARCHAR(20) FK รหัสแพทย์ผู้ตรวจ
StartTime DATETIME เวลาเริ่มตรวจ
EndTime DATETIME เวลาสิ้นสุดตรวจ
ExaminationStatus VARCHAR(20) สถานะการตรวจ (WAITING/IN_PROGRESS/COMPLETED/CANCELLED)
ChiefComplaint NTEXT อาการสำคัญ (CC)
IllnessDuration VARCHAR(50) เป็นมากี่วันแล้ว
IsPregnant BIT กำลังตั้งครรภ์
IsBreastfeeding BIT กำลังให้นมบุตร
RightsVerificationID VARCHAR(20) FK รหัสการยืนยันสิทธิ (อ้างอิงจาก ระบบตรวจสอบสิทธิ 1.2.15)
FinanceReferenceID VARCHAR(20) FK รหัสอ้างอิงระบบการเงิน (1.2.14)
CreatedDate DATETIME วันที่บันทึก
CreatedBy VARCHAR(50) ผู้บันทึก
CompletedDate DATETIME วันที่เสร็จสิ้นการตรวจ
Notes NTEXT หมายเหตุเพิ่มเติม

Table: PHYSICAL_EXAMINATION (การตรวจร่างกาย)

วัตถุประสงค์: เก็บข้อมูลการตรวจร่างกายโดยละเอียด รวมถึงการวาดรูปและการถ่ายรูป ตาม TOR ข้อ 1.2.3.2.2

Field Type Key Description
PhysicalExamID VARCHAR(20) PK รหัสการตรวจร่างกาย
ExaminationID VARCHAR(20) FK รหัสการตรวจรักษา
GeneralAppearance NTEXT ลักษณะทั่วไป/ความรู้สึกตัว (GA)
HEENT NTEXT การตรวจศีรษะ ตา หู คอ จมูก
ChestHeart NTEXT การตรวจหัวใจและทรวงอก
Abdomen NTEXT การตรวจช่องท้อง
PelvicExam NTEXT การตรวจภายใน (PV)
RectalExam NTEXT การตรวจทางทวารหนัก (PR)
Genitalia NTEXT การตรวจอวัยวะสืบพันธุ์
Neurological NTEXT การตรวจระบบประสาท
Extremities NTEXT การเคลื่อนไหวร่างกาย/การตรวจประเมินรยางค์
PhysicalExamText NTEXT บันทึกการตรวจร่างกาย (PE Text)
DrawingImagePath VARCHAR(255) path รูปวาด
PhotoImagePath VARCHAR(255) path รูปถ่าย
ExaminationDate DATETIME วันที่ตรวจ
ExaminedBy VARCHAR(50) ผู้ตรวจ

8.2.1.2 การวินิจฉัยและหัตถการ

Table: MEDICAL_DIAGNOSIS (การวินิจฉัยทางการแพทย์ - Shared Table)

วัตถุประสงค์: เก็บข้อมูลการวินิจฉัยโรคจากทั้งระบบซักประวัติ (1.2.2) และระบบห้องตรวจแพทย์ (1.2.3) ด้วยรหัส ICD และการใช้ Template หรือ Re-diag ตาม TOR ข้อ 1.2.2.1.2, 1.2.2.2.7 และ 1.2.3.1.2, 1.2.3.2.7

Field Type Key Description
DiagnosisID VARCHAR(20) PK รหัสการวินิจฉัย
SourceSystem VARCHAR(20) ระบบที่สร้าง (HISTORY_TAKING/EXAMINATION)
SourceID VARCHAR(20) FK รหัสอ้างอิงต้นทาง (HistoryID หรือ ExaminationID)
VisitID VARCHAR(20) FK รหัส Visit
HN VARCHAR(10) FK Hospital Number
ICDCode VARCHAR(10) รหัส ICD (WHO)
ICDCodeThai VARCHAR(10) รหัส ICD ไทย
DiseaseName NVARCHAR(200) ชื่อโรค
DiseaseNameEng NVARCHAR(200) ชื่อโรค (อังกฤษ)
DiagnosisType VARCHAR(20) ประเภทการวินิจฉัย (PRIMARY/SECONDARY/PROVISIONAL)
CertaintyLevel VARCHAR(20) ระดับความแน่นอน (CONFIRMED/SUSPECTED/RULE_OUT)
OnsetType VARCHAR(20) ลักษณะการเกิด (ACUTE/CHRONIC/SUBACUTE)
DiagnosisText NTEXT การวินิจฉัยแบบข้อความ (Diag Text)
TreatmentGroupCode VARCHAR(20) FK รหัสกลุ่มค่ารักษาพยาบาล (อ้างอิง TREATMENT_GROUP)
DRGCode VARCHAR(10) รหัส DRG
DRGWeight DECIMAL(5,3) น้ำหนัก DRG
ComplicationCode VARCHAR(10) รหัสภาวะแทรกซ้อน
IsFromTemplate BIT มาจาก Template
IsFromReDiag BIT มาจาก Re-diag
TemplateID VARCHAR(20) รหัส Template
OriginalDiagnosisID VARCHAR(20) รหัสการวินิจฉัยต้นฉบับ (สำหรับ Re-diag)
DiagnosisDate DATETIME วันที่วินิจฉัย
DiagnosedBy VARCHAR(50) แพทย์ผู้วินิจฉัย
CreatedDate DATETIME วันที่บันทึก
CreatedBy VARCHAR(50) ผู้บันทึก
FinanceServiceCode VARCHAR(20) รหัสบริการสำหรับการคิดเงิน (อ้างอิงไปยัง 1.2.14)

Table: MEDICAL_PROCEDURE (หัตถการทางการแพทย์ - Shared Table)

วัตถุประสงค์: เก็บข้อมูลหัตถการที่ทำจากทั้งระบบซักประวัติ (1.2.2) และระบบห้องตรวจแพทย์ (1.2.3) โดยใช้รหัส ICD ตาม TOR ข้อ 1.2.2.1.1, 1.2.2.2.8 และ 1.2.3.1.1, 1.2.3.2.8

Field Type Key Description
ProcedureID VARCHAR(20) PK รหัสหัตถการ
SourceSystem VARCHAR(20) ระบบที่สร้าง (HISTORY_TAKING/EXAMINATION)
SourceID VARCHAR(20) FK รหัสอ้างอิงต้นทาง (HistoryID หรือ ExaminationID)
VisitID VARCHAR(20) FK รหัส Visit
HN VARCHAR(10) FK Hospital Number
ICDProcedureCode VARCHAR(10) รหัสหัตถการ ICD (WHO)
ProcedureName NVARCHAR(200) ชื่อหัตถการ
ProcedureNameEng NVARCHAR(200) ชื่อหัตถการ (อังกฤษ)
TreatmentGroupCode VARCHAR(20) FK รหัสกลุ่มค่ารักษาพยาบาล
PerformerID VARCHAR(20) FK รหัสแพทย์/เจ้าหน้าที่ผู้ทำ
PerformerName NVARCHAR(100) ชื่อผู้ทำหัตถการ
StartTime DATETIME เวลาเริ่ม
EndTime DATETIME เวลาสิ้นสุด
Duration INT ระยะเวลา (นาที)
ProcedureLocation NVARCHAR(100) สถานที่ทำหัตถการ
ProcedureNotes NTEXT หมายเหตุหัตถการ
Complications NTEXT ภาวะแทรกซ้อน
ProcedureDate DATETIME วันที่ทำหัตถการ
CreatedDate DATETIME วันที่บันทึก
CreatedBy VARCHAR(50) ผู้บันทึก
FinanceServiceCode VARCHAR(20) รหัสบริการสำหรับการคิดเงิน (อ้างอิงไปยัง 1.2.14)

8.2.1.3 การสั่งยาและเวชภัณฑ์

Table: MEDICATION_ORDER (การสั่งยาและเวชภัณฑ์ - Shared Table)

วัตถุประสงค์: เก็บข้อมูลการสั่งจ่ายยาและเวชภัณฑ์จากทั้งระบบซักประวัติ (1.2.2) และระบบห้องตรวจแพทย์ (1.2.3) รองรับ RE-MED, Template และการตรวจสอบ Drug Interaction ตาม TOR ข้อ 1.2.2.2.5, 1.2.2.2.6 และ 1.2.3.2.5, 1.2.3.2.6

Field Type Key Description
MedicationOrderID VARCHAR(20) PK รหัสการสั่งยา
SourceSystem VARCHAR(20) ระบบที่สร้าง (HISTORY_TAKING/EXAMINATION)
SourceID VARCHAR(20) FK รหัสอ้างอิงต้นทาง (HistoryID หรือ ExaminationID)
VisitID VARCHAR(20) FK รหัส Visit
HN VARCHAR(10) FK Hospital Number
DrugCode VARCHAR(20) FK รหัสยา (อ้างอิงจาก ระบบเภสัชกรรม 1.2.13)
DrugName NVARCHAR(200) ชื่อยา
GenericName NVARCHAR(200) ชื่อสามัญยา
Strength VARCHAR(50) ความแรง
DosageForm VARCHAR(50) รูปแบบยา
Quantity DECIMAL(10,2) จำนวน
Unit VARCHAR(20) หน่วย
Frequency VARCHAR(50) ความถี่การใช้
Duration INT จำนวนวันใช้ยา
Instructions NTEXT วิธีการใช้
Route VARCHAR(50) วิธีให้ยา
IsFromTemplate BIT มาจาก Template
TemplateID VARCHAR(20) รหัส Template
IsFromReMed BIT มาจาก RE-MED
OriginalMedicationID VARCHAR(20) รหัสการสั่งยาต้นฉบับ (สำหรับ RE-MED)
IsChronicDisease BIT ยาโรคเรื้อรัง
TotalAmount DECIMAL(10,2) จำนวนรวม (คำนวณจากวันใช้)
OrderDate DATETIME วันที่สั่งยา
OrderedBy VARCHAR(50) แพทย์ผู้สั่งยา
PharmacyStatus VARCHAR(20) สถานะเภสัชกรรม (ORDERED/DISPENSED/CANCELLED)
AllergyChecked BIT ตรวจสอบการแพ้ยาแล้ว
DrugInteractionChecked BIT ตรวจสอบ Drug Interaction แล้ว
FinanceReferenceID VARCHAR(20) FK รหัสอ้างอิงระบบการเงิน (1.2.14)
FinanceServiceCode VARCHAR(20) รหัสบริการสำหรับการคิดเงิน

Table: DRUG_ALLERGY_ALERT (การเตือนการแพ้ยา)

วัตถุประสงค์: เก็บข้อมูลการเตือนการแพ้ยาและข้อมูลผลข้างเคียง ตาม TOR ข้อ 1.2.3.2.4

Field Type Key Description
AllergyAlertID VARCHAR(20) PK รหัสการเตือนการแพ้ยา
ExamMedicationID VARCHAR(20) FK รหัสการสั่งยาในห้องตรวจ
HN VARCHAR(10) FK รหัสผู้ป่วย
DrugCode VARCHAR(20) รหัสยาที่แพ้
DrugName NVARCHAR(200) ชื่อยาที่แพ้
AllergyType VARCHAR(20) ประเภทการแพ้ (DRUG/FOOD/G6PD)
AllergySymptoms NTEXT อาการที่แพ้
SeverityLevel VARCHAR(20) ระดับความรุนแรง (MILD/MODERATE/SEVERE)
AlertStatus VARCHAR(20) สถานะการเตือน (ACTIVE/OVERRIDDEN/RESOLVED)
OverrideReason NTEXT เหตุผลการข้ามการเตือน
OverriddenBy VARCHAR(50) ผู้ข้ามการเตือน
AlertDate DATETIME วันที่เตือน
IsG6PDRelated BIT เกี่ยวข้องกับ G-6-PD

Table: DRUG_INTERACTION_CHECK (การตรวจสอบอันตกริยาของยา)

วัตถุประสงค์: เก็บข้อมูลการตรวจสอบอันตกริยาของยาในใบสั่งยาเดียวกัน ตาม TOR ข้อ 1.2.3.2.6

Field Type Key Description
InteractionCheckID VARCHAR(20) PK รหัสการตรวจสอบอันตกริยา
ExaminationID VARCHAR(20) FK รหัสการตรวจรักษา
DrugCode1 VARCHAR(20) รหัสยาที่ 1
DrugCode2 VARCHAR(20) รหัสยาที่ 2
DrugName1 NVARCHAR(200) ชื่อยาที่ 1
DrugName2 NVARCHAR(200) ชื่อยาที่ 2
InteractionLevel VARCHAR(20) ระดับอันตกริยา (MINOR/MODERATE/MAJOR/CONTRAINDICATED)
InteractionDescription NTEXT รายละเอียดอันตกริยา
ClinicalEffect NTEXT ผลทางคลินิก
RecommendedAction NTEXT คำแนะนำ
CheckDate DATETIME วันที่ตรวจสอบ
CheckedBy VARCHAR(50) ผู้ตรวจสอบ
IsOverridden BIT ข้ามการเตือน
OverrideReason NTEXT เหตุผลการข้าม
OverriddenBy VARCHAR(50) ผู้ข้ามการเตือน

8.2.1.4 การสั่งตรวจทางห้องปฏิบัติการและรังสี

Table: LAB_ORDER (การสั่ง Lab - Shared Table)

วัตถุประสงค์: เก็บข้อมูลการสั่งตรวจทางห้องปฏิบัติการจากทั้งระบบซักประวัติ (1.2.2) และระบบห้องตรวจแพทย์ (1.2.3) รวมถึงการสั่งล่วงหน้า ตาม TOR ข้อ 1.2.2.2.9 และ 1.2.3.2.9, 1.2.3.3.4

Field Type Key Description
LabOrderID VARCHAR(20) PK รหัสการสั่ง Lab
SourceSystem VARCHAR(20) ระบบที่สร้าง (HISTORY_TAKING/EXAMINATION)
SourceID VARCHAR(20) FK รหัสอ้างอิงต้นทาง (HistoryID หรือ ExaminationID)
VisitID VARCHAR(20) FK รหัส Visit
HN VARCHAR(10) FK Hospital Number
LabCode VARCHAR(20) FK รหัสรายการ Lab (อ้างอิงจาก ระบบงานชันสูตร 1.2.7)
LabName NVARCHAR(200) ชื่อรายการตรวจ
LabGroupCode VARCHAR(20) รหัสกลุ่มการตรวจ
OrderingDoctorID VARCHAR(20) FK รหัสแพทย์ผู้สั่ง
LabRoomCode VARCHAR(10) FK รหัสห้อง Lab
ResultNotifyRoom VARCHAR(10) FK ห้องที่ต้องการให้เตือนผล
UrgencyLevel VARCHAR(20) ความเร่งด่วน (ROUTINE/URGENT/STAT)
SpecimenType VARCHAR(50) ประเภทสิ่งส่งตรวจ
ClinicalInfo NTEXT ข้อมูลทางคลินิก
IsAdvanceOrder BIT การสั่งล่วงหน้า
AdvanceOrderDate DATETIME วันที่สั่งล่วงหน้า
ExpectedCollectionDate DATETIME วันที่คาดว่าจะเก็บสิ่งส่งตรวจ
CollectionDate DATETIME วันที่เก็บสิ่งส่งตรวจ
CollectedBy VARCHAR(50) ผู้เก็บสิ่งส่งตรวจ
OrderDate DATETIME วันที่สั่ง
OrderedBy VARCHAR(50) ผู้สั่ง
LabStatus VARCHAR(20) สถานะ Lab (ORDERED/COLLECTED/COMPLETED/CANCELLED)
ResultAvailableDate DATETIME วันที่มีผลตรวจ
NotificationSent BIT ส่งการแจ้งเตือนแล้ว
FinanceServiceCode VARCHAR(20) รหัสบริการสำหรับการคิดเงิน

Table: RADIOLOGY_ORDER (การสั่ง X-Ray - Shared Table)

วัตถุประสงค์: เก็บข้อมูลการสั่งตรวจรังสีจากทั้งระบบซักประวัติ (1.2.2) และระบบห้องตรวจแพทย์ (1.2.3) รวมถึงการสั่งล่วงหน้า ตาม TOR ข้อ 1.2.2.2.13, 1.2.2.2.14 และ 1.2.3.2.9, 1.2.3.3.4

Field Type Key Description
RadiologyOrderID VARCHAR(20) PK รหัสการสั่ง X-Ray
SourceSystem VARCHAR(20) ระบบที่สร้าง (HISTORY_TAKING/EXAMINATION)
SourceID VARCHAR(20) FK รหัสอ้างอิงต้นทาง (HistoryID หรือ ExaminationID)
VisitID VARCHAR(20) FK รหัส Visit
HN VARCHAR(10) FK Hospital Number
XRayCode VARCHAR(20) FK รหัสรายการ X-Ray (อ้างอิงจาก ระบบรังสีวิทยา 1.2.8)
XRayName NVARCHAR(200) ชื่อรายการตรวจ
XRayGroupCode VARCHAR(20) รหัสกลุ่มการตรวจ
OrderingDoctorID VARCHAR(20) FK รหัสแพทย์ผู้สั่ง
BodyPart VARCHAR(100) ส่วนของร่างกายที่ตรวจ
Position VARCHAR(50) ท่า
Side VARCHAR(20) ด้าน
XRayRoomCode VARCHAR(10) FK ห้องตรวจ (กรณีมีหลายห้อง)
PatientCondition VARCHAR(100) สภาพผู้ป่วย
UrgencyLevel VARCHAR(20) ความเร่งด่วน (ROUTINE/URGENT/STAT)
ClinicalInfo NTEXT ข้อมูลทางคลินิก (Clinical Information)
ClinicalDiagnosis NTEXT การวินิจฉัยทางคลินิก (Clinical Diagnosis)
IsAdvanceOrder BIT การสั่งล่วงหน้า
AdvanceOrderDate DATETIME วันที่สั่งล่วงหน้า
ExpectedExamDate DATETIME วันที่คาดว่าจะตรวจ
OrderDate DATETIME วันที่สั่ง
OrderedBy VARCHAR(50) ผู้สั่ง
RadiologyStatus VARCHAR(20) สถานะ X-Ray (ORDERED/COMPLETED/CANCELLED)
ResultAvailableDate DATETIME วันที่มีผลตรวจ
NotificationSent BIT ส่งการแจ้งเตือนแล้ว
OrderNotes NTEXT หมายเหตุ
FinanceServiceCode VARCHAR(20) รหัสบริการสำหรับการคิดเงิน
Field Type Key Description
ExamXrayOrderID VARCHAR(20) PK รหัสการสั่ง X-Ray ในห้องตรวจ
ExaminationID VARCHAR(20) FK รหัสการตรวจรักษา
XrayCode VARCHAR(20) FK รหัสรายการ X-Ray (อ้างอิงจาก ระบบรังสีวิทยา 1.2.8)
XrayName NVARCHAR(200) ชื่อรายการตรวจ
XrayGroupCode VARCHAR(20) รหัสกลุ่มการตรวจ
OrderingDoctorID VARCHAR(20) FK รหัสแพทย์ผู้สั่ง
UrgencyLevel VARCHAR(20) ความเร่งด่วน (ROUTINE/URGENT/STAT)
BodyPart VARCHAR(100) ส่วนของร่างกายที่ตรวจ
ClinicalInfo NTEXT ข้อมูลทางคลินิก
IsAdvanceOrder BIT การสั่งล่วงหน้า
AdvanceOrderDate DATETIME วันที่สั่งล่วงหน้า
ExpectedExamDate DATETIME วันที่คาดว่าจะตรวจ
OrderDate DATETIME วันที่สั่ง
OrderedBy VARCHAR(50) ผู้สั่ง
XrayStatus VARCHAR(20) สถานะ X-Ray (ORDERED/COMPLETED/CANCELLED)
ResultAvailableDate DATETIME วันที่มีผลตรวจ
FinanceServiceCode VARCHAR(20) รหัสบริการสำหรับการคิดเงิน
NotificationSent BIT ส่งการแจ้งเตือนแล้ว

Table: LAB_RESULT_VIEW (การแสดงผล Lab)

วัตถุประสงค์: เก็บข้อมูลการแสดงผล Lab ในปัจจุบันและการเปรียบเทียบ ตาม TOR ข้อ 1.2.3.2.10, 1.2.3.2.11, 1.2.3.2.12

Field Type Key Description
LabResultViewID VARCHAR(20) PK รหัสการแสดงผล Lab
ExaminationID VARCHAR(20) FK รหัสการตรวจรักษา
LabOrderID VARCHAR(20) FK รหัสการสั่ง Lab (อ้างอิงจาก ระบบงานชันสูตร 1.2.7)
LabCode VARCHAR(20) รหัสรายการ Lab
LabName NVARCHAR(200) ชื่อรายการตรวจ
ResultValue NVARCHAR(100) ผลตรวจ
Unit VARCHAR(20) หน่วย
ReferenceRange VARCHAR(100) ค่าปกติ
IsAbnormal BIT ผลผิดปกติ
ResultFlag VARCHAR(20) สถานะผล (NORMAL/HIGH/LOW/CRITICAL)
ResultDate DATETIME วันที่มีผล
ComparedWithPrevious BIT เปรียบเทียบกับครั้งก่อน
PreviousResultValue NVARCHAR(100) ผลตรวจครั้งก่อน
PreviousResultDate DATETIME วันที่ตรวจครั้งก่อน
ViewedDate DATETIME วันที่ดูผล
ViewedBy VARCHAR(50) ผู้ดูผล

Table: XRAY_RESULT_VIEW (การแสดงผล X-Ray)

วัตถุประสงค์: เก็บข้อมูลการแสดงผล X-Ray ในปัจจุบันและประวัติย้อนหลัง ตาม TOR ข้อ 1.2.3.2.10, 1.2.3.2.12

Field Type Key Description
XrayResultViewID VARCHAR(20) PK รหัสการแสดงผล X-Ray
ExaminationID VARCHAR(20) FK รหัสการตรวจรักษา
XrayOrderID VARCHAR(20) FK รหัสการสั่ง X-Ray (อ้างอิงจาก ระบบรังสีวิทยา 1.2.8)
XrayCode VARCHAR(20) รหัสรายการ X-Ray
XrayName NVARCHAR(200) ชื่อรายการตรวจ
ResultText NTEXT ผลการอ่าน
Impression NTEXT สรุปผล
ImagePath VARCHAR(500) path รูป X-Ray
IsAbnormal BIT ผลผิดปกติ
ResultDate DATETIME วันที่มีผล
ReportedBy VARCHAR(50) แพทย์ผู้อ่าน
ViewedDate DATETIME วันที่ดูผล
ViewedBy VARCHAR(50) ผู้ดูผล

8.2.2 ตารางรองรับการทำงาน (Support Tables)

8.2.2.1 การนัดหมาย

Table: EXAMINATION_APPOINTMENT (การนัดหมาย)

วัตถุประสงค์: เก็บข้อมูลการนัดหมายของผู้ป่วย รองรับการนัดหลายแผนกและการสั่งตรวจล่วงหน้า ตาม TOR ข้อ 1.2.3.3

Field Type Key Description
AppointmentID VARCHAR(20) PK รหัสการนัดหมาย
ExaminationID VARCHAR(20) FK รหัสการตรวจรักษา
HN VARCHAR(10) FK รหัสผู้ป่วย
AppointmentDate DATE วันที่นัดหมาย
AppointmentTime TIME เวลานัดหมาย
AppointmentType VARCHAR(20) ประเภทการนัด (DAYS/WEEKS/MONTHS)
AppointmentValue INT จำนวน (วัน/สัปดาห์/เดือน)
DepartmentCode VARCHAR(10) FK รหัสแผนกที่นัด
DoctorID VARCHAR(20) FK รหัสแพทย์ที่นัด
AppointmentReason NVARCHAR(200) เหตุผลการนัด
AppointmentNote NTEXT หมายเหตุการนัด
IsHolidayConflict BIT ตรงกับวันหยุด
HolidayWarning NVARCHAR(200) การเตือนวันหยุด
Status VARCHAR(20) สถานะ (SCHEDULED/COMPLETED/CANCELLED/NO_SHOW)
CreatedDate DATETIME วันที่สร้างนัด
CreatedBy VARCHAR(50) ผู้สร้างนัด
ReminderSent BIT ส่งการเตือนแล้ว
PrintLanguage VARCHAR(10) ภาษาในการพิมพ์ (TH/EN)

Table: MULTI_DEPARTMENT_APPOINTMENT (การนัดหลายแผนก)

วัตถุประสงค์: เก็บข้อมูลการนัดหลายแผนกในการมา visit 1 ครั้ง ตาม TOR ข้อ 1.2.3.3.2

Field Type Key Description
MultiAppointmentID VARCHAR(20) PK รหัสการนัดหลายแผนก
AppointmentID VARCHAR(20) FK รหัสการนัดหมายหลัก
HN VARCHAR(10) FK รหัสผู้ป่วย
VisitDate DATE วันที่มา visit
DepartmentCode VARCHAR(10) FK รหัสแผนก
AppointmentTime TIME เวลานัดแผนกนี้
AppointmentOrder INT ลำดับการนัด
EstimatedDuration INT เวลาโดยประมาณ (นาที)
SpecialInstruction NTEXT คำแนะนำพิเศษ
Status VARCHAR(20) สถานะแผนกนี้

8.2.2.2 การ Consult และการส่งต่อ

Table: EXAMINATION_CONSULT (การขอ Consult)

วัตถุประสงค์: เก็บข้อมูลการขอ Consult แพทย์หรือแผนกอื่น ตาม TOR ข้อ 1.2.3.4

Field Type Key Description
ConsultID VARCHAR(20) PK รหัสการ Consult
ExaminationID VARCHAR(20) FK รหัสการตรวจรักษา
HN VARCHAR(10) FK รหัสผู้ป่วย
ConsultType VARCHAR(20) ประเภท (DOCTOR/DEPARTMENT)
ConsultDoctorID VARCHAR(20) FK รหัสแพทย์ที่ขอ Consult
ConsultDepartmentCode VARCHAR(10) FK รหัสแผนกที่ขอ Consult
RequestingDoctorID VARCHAR(20) FK รหัสแพทย์ผู้ขอ
UrgencyLevel VARCHAR(20) ความเร่งด่วน (ROUTINE/URGENT/STAT)
ConsultQuestion NTEXT คำถามสำหรับการ Consult
ClinicalInfo NTEXT ข้อมูลทางคลินิก
RequestDate DATETIME วันที่ขอ
RequestedBy VARCHAR(50) ผู้ขอ
ConsultAnswer NTEXT คำตอบจากการ Consult
ConsultRecommendation NTEXT คำแนะนำ
AnswerDate DATETIME วันที่ตอบ
AnsweredBy VARCHAR(50) ผู้ตอบ
ConsultStatus VARCHAR(20) สถานะ (REQUESTED/ANSWERED/COMPLETED)

Table: EXAMINATION_REFER (การส่งต่อ)

วัตถุประสงค์: เก็บข้อมูลการส่งต่อผู้ป่วยไปแผนกอื่นหรือโรงพยาบาลอื่น ตาม TOR ข้อ 1.2.3.2.13 และ 1.2.3.2.14

Field Type Key Description
ReferID VARCHAR(20) PK รหัสการส่งต่อ
ExaminationID VARCHAR(20) FK รหัสการตรวจรักษา
HN VARCHAR(10) FK รหัสผู้ป่วย
ReferType VARCHAR(20) ประเภท (INTERNAL/EXTERNAL/SURGERY)
ReferToDepartmentCode VARCHAR(10) FK รหัสแผนกที่ส่งต่อ (ภายใน)
ReferToHospital NVARCHAR(100) โรงพยาบาลที่ส่งต่อ (ภายนอก)
ReferToDoctor NVARCHAR(100) แพทย์ที่ส่งต่อ
ReferReason NTEXT เหตุผลการส่งต่อ
ClinicalSummary NTEXT สรุปทางคลินิก
TreatmentGiven NTEXT การรักษาที่ให้แล้ว
RecommendedTreatment NTEXT การรักษาที่แนะนำ
UrgencyLevel VARCHAR(20) ความเร่งด่วน
ReferDate DATETIME วันที่ส่งต่อ
ReferredBy VARCHAR(50) แพทย์ผู้ส่งต่อ
ReferDocument VARCHAR(255) เอกสารการส่งต่อ
AcceptanceStatus VARCHAR(20) สถานะการรับ (PENDING/ACCEPTED/REJECTED)
ReferStatus VARCHAR(20) สถานะการส่งต่อ (REFERRED/COMPLETED)

Table: SURGERY_REFER (การส่งผู้ป่วยผ่าตัด)

วัตถุประสงค์: เก็บข้อมูลการส่งผู้ป่วยไปผ่าตัด ตาม TOR ข้อ 1.2.3.2.15

Field Type Key Description
SurgeryReferID VARCHAR(20) PK รหัสการส่งผ่าตัด
ExaminationID VARCHAR(20) FK รหัสการตรวจรักษา
HN VARCHAR(10) FK รหัสผู้ป่วย
SurgeryType VARCHAR(50) ประเภทการผ่าตัด
ProposedProcedure NTEXT หัตถการที่เสนอ
SurgeryUrgency VARCHAR(20) ความเร่งด่วน (ELECTIVE/URGENT/EMERGENCY)
PreOpDiagnosis NTEXT การวินิจฉัยก่อนผ่าตัด
IndicationForSurgery NTEXT ข้อบ่งชี้การผ่าตัด
SurgeonRequested NVARCHAR(100) ศัลยแพทย์ที่ขอ
AnesthesiaType VARCHAR(50) ประเภทการระงับความรู้สึก
SpecialRequirements NTEXT ข้อกำหนดพิเศษ
PreOpInstructions NTEXT คำแนะนำก่อนผ่าตัด
RequestDate DATETIME วันที่ขอ
RequestedBy VARCHAR(50) แพทย์ผู้ขอ
ScheduledDate DATETIME วันที่นัดผ่าตัด
OperatingRoom VARCHAR(20) ห้องผ่าตัด
SurgeryStatus VARCHAR(20) สถานะ (REQUESTED/SCHEDULED/COMPLETED)

8.2.2.3 Template และ Master Data

Table: EXAMINATION_TEMPLATE (Template การตรวจ)

วัตถุประสงค์: เก็บข้อมูล Template สำหรับการตรวจรักษา การวินิจฉัย และการสั่งยา ตาม TOR ข้อ 1.2.3.2.5 และ 1.2.3.2.7

Field Type Key Description
TemplateID VARCHAR(20) PK รหัส Template
TemplateName NVARCHAR(100) ชื่อ Template
TemplateType VARCHAR(20) ประเภท (DIAGNOSIS/MEDICATION/EXAMINATION)
DepartmentCode VARCHAR(10) FK รหัสแผนกที่ใช้
DoctorID VARCHAR(20) FK รหัสแพทย์เจ้าของ Template
TemplateContent NTEXT เนื้อหา Template (JSON format)
IsPublic BIT Template สาธารณะ
UsageCount INT จำนวนครั้งที่ใช้
CreatedDate DATETIME วันที่สร้าง
CreatedBy VARCHAR(50) ผู้สร้าง
LastUsed DATETIME ใช้ล่าสุด
IsActive BIT ใช้งานได้

Table: TREATMENT_GROUP (กลุ่มค่ารักษาพยาบาล)

วัตถุประสงค์: เก็บข้อมูลกลุ่มค่ารักษาพยาบาลพร้อมค่าบริการ ตาม TOR ข้อ 1.2.3.1.3

Field Type Key Description
TreatmentGroupCode VARCHAR(20) PK รหัสกลุ่มค่ารักษาพยาบาล
GroupName NVARCHAR(100) ชื่อกลุ่มค่ารักษาพยาบาล
GroupNameEng NVARCHAR(100) ชื่อกลุ่มค่ารักษาพยาบาล (อังกฤษ)
Category VARCHAR(50) หมวดหมู่ (OPD/IPD/ER/PROCEDURE)
BasePrice DECIMAL(10,2) ราคาพื้นฐาน
ServiceCharge DECIMAL(10,2) ค่าบริการ
DoctorFee DECIMAL(10,2) ค่าตรวจแพทย์
HospitalFee DECIMAL(10,2) ค่าโรงพยาบาล
MaterialCost DECIMAL(10,2) ค่าวัสดุ
TotalPrice DECIMAL(10,2) ราคารวม
FinanceServiceCode VARCHAR(20) รหัสบริการสำหรับระบบการเงิน (1.2.14)
EffectiveDate DATE วันที่เริ่มใช้
ExpiryDate DATE วันที่สิ้นสุด
IsActive BIT ใช้งานได้

Table: EXAMINATION_ROOM (ห้องตรวจ)

วัตถุประสงค์: เก็บข้อมูลห้องตรวจและอุปกรณ์การตรวจ

Field Type Key Description
ExaminationRoomCode VARCHAR(10) PK รหัสห้องตรวจ
RoomName NVARCHAR(50) ชื่อห้องตรวจ
RoomType VARCHAR(20) ประเภทห้อง (GENERAL/SPECIALIST/VIP)
DepartmentCode VARCHAR(10) FK รหัสแผนกที่สังกัด
Location NVARCHAR(100) ที่ตั้ง
Capacity INT ความจุ
EquipmentList NTEXT รายการอุปกรณ์ (JSON format)
RoomStatus VARCHAR(20) สถานะห้อง (AVAILABLE/OCCUPIED/MAINTENANCE)
IsActive BIT ใช้งานได้

Table: PATIENT_NOTES_EXAMINATION (หมายเหตุผู้ป่วยในห้องตรวจ)

วัตถุประสงค์: เก็บหมายเหตุเกี่ยวกับผู้ป่วยเฉพาะในห้องตรวจ ตาม TOR ข้อ 1.2.3.2.17

Field Type Key Description
NoteID VARCHAR(20) PK รหัสหมายเหตุ
ExaminationID VARCHAR(20) FK รหัสการตรวจรักษา
HN VARCHAR(10) FK รหัสผู้ป่วย
NoteType VARCHAR(20) ประเภทหมายเหตุ (CLINICAL/PERSONAL/REMINDER)
NoteText NTEXT ข้อความหมายเหตุ
NoteCategory VARCHAR(20) หมวดหมู่ (ALLERGY/SPECIAL_CARE/PRECAUTION)
Priority VARCHAR(10) ระดับความสำคัญ (HIGH/MEDIUM/LOW)
CreatedDate DATETIME วันที่บันทึก
CreatedBy VARCHAR(50) ผู้บันทึก
IsPrivate BIT หมายเหตุส่วนตัว

8.2.2.4 การติดตามและการดูประวัติ

Table: EXAMINATION_HISTORY_VIEW (การดูประวัติการตรวจ)

วัตถุประสงค์: เก็บข้อมูลการดูประวัติการตรวจย้อนหลัง ตาม TOR ข้อ 1.2.3.2.3

Field Type Key Description
HistoryViewID VARCHAR(20) PK รหัสการดูประวัติ
ExaminationID VARCHAR(20) FK รหัสการตรวจรักษาปัจจุบัน
HN VARCHAR(10) FK รหัสผู้ป่วย
ViewedHistoryType VARCHAR(20) ประเภทประวัติที่ดู (VISIT/DIAGNOSIS/MEDICATION/LAB/XRAY/PHYSICAL_EXAM/APPOINTMENT/ADMIT)
ViewedRecordID VARCHAR(20) รหัสเรคอร์ดที่ดู
ViewedRecordDate DATETIME วันที่ของเรคอร์ดที่ดู
ViewedDate DATETIME วันที่ดูประวัติ
ViewedBy VARCHAR(50) ผู้ดูประวัติ
ViewDuration INT เวลาที่ใช้ดู (วินาที)
ViewReason NVARCHAR(200) เหตุผลการดู

Table: PATIENT_PHOTO (รูปถ่ายผู้ป่วย)

วัตถุประสงค์: เก็บข้อมูลรูปถ่ายผู้ป่วยในห้องตรวจ ตาม TOR ข้อ 1.2.3.2.16

Field Type Key Description
PhotoID VARCHAR(20) PK รหัสรูปถ่าย
ExaminationID VARCHAR(20) FK รหัสการตรวจรักษา
HN VARCHAR(10) FK รหัสผู้ป่วย
PhotoType VARCHAR(20) ประเภทรูป (PORTRAIT/WOUND/BODY_PART/DIAGNOSTIC)
PhotoPath VARCHAR(255) path รูปถ่าย
ThumbnailPath VARCHAR(255) path รูปย่อ
PhotoDescription NVARCHAR(200) คำอธิบายรูป
BodyPart VARCHAR(50) ส่วนของร่างกาย
PhotoDate DATETIME วันที่ถ่าย
PhotoBy VARCHAR(50) ผู้ถ่าย
PhotoSize INT ขนาดไฟล์ (bytes)
PhotoFormat VARCHAR(10) รูปแบบไฟล์ (JPG/PNG)
IsDeleted BIT ถูกลบแล้ว

Table: APPOINTMENT_CHECKING (การตรวจสอบการนัดหมาย)

วัตถุประสงค์: เก็บข้อมูลการตรวจสอบการนัดหมายของแพทย์ ตาม TOR ข้อ 1.2.3.2.18

Field Type Key Description
CheckingID VARCHAR(20) PK รหัสการตรวจสอบ
DoctorID VARCHAR(20) FK รหัสแพทย์
CheckingDate DATE วันที่ตรวจสอบ
AppointmentCount INT จำนวนการนัดทั้งหมด
TodayAppointmentCount INT จำนวนนัดวันนี้
TomorrowAppointmentCount INT จำนวนนัดพรุ่งนี้
WeekAppointmentCount INT จำนวนนัดสัปดาห์นี้
CheckedBy VARCHAR(50) ผู้ตรวจสอบ
CheckingTime DATETIME เวลาที่ตรวจสอบ

8.2.3 ตารางจัดการระบบ (System Tables)

8.2.3.1 บันทึกการพิมพ์

Table: EXAMINATION_PRINT_LOG (บันทึกการพิมพ์)

วัตถุประสงค์: เก็บข้อมูลการพิมพ์เอกสารต่างๆ ตาม TOR ข้อ 1.2.3.5

Field Type Key Description
PrintLogID VARCHAR(20) PK รหัสการพิมพ์
ExaminationID VARCHAR(20) FK รหัสการตรวจรักษา
HN VARCHAR(10) FK รหัสผู้ป่วย
DocumentType VARCHAR(50) ประเภทเอกสาร (MEDICAL_CERT/OPD_CARD/PRESCRIPTION/REFER/APPOINTMENT/NON_LISTED_DRUG_CERT)
DocumentLanguage VARCHAR(10) ภาษา (TH/EN)
CertificateType VARCHAR(50) ประเภทใบรับรอง (สำหรับใบรับรองแพทย์)
PrintDate DATETIME วันที่พิมพ์
PrintedBy VARCHAR(50) ผู้พิมพ์
PrinterName VARCHAR(100) ชื่อเครื่องพิมพ์
Copies INT จำนวนฉบับ
DocumentPath VARCHAR(255) path เอกสาร
PrintStatus VARCHAR(20) สถานะการพิมพ์ (SUCCESS/FAILED)
PrintReason NVARCHAR(200) เหตุผลการพิมพ์

8.2.3.2 Audit Trail

Table: EXAMINATION_AUDIT_LOG (บันทึกการแก้ไข)

วัตถุประสงค์: เก็บบันทึก Log การเปลี่ยนแปลงข้อมูลการตรวจรักษา เพื่อการตรวจสอบย้อนหลัง

Field Type Key Description
AuditLogID VARCHAR(20) PK รหัส Log
ExaminationID VARCHAR(20) FK รหัสการตรวจรักษา
TableName VARCHAR(50) ชื่อตารางที่แก้ไข
RecordID VARCHAR(20) รหัสเรคอร์ดที่แก้ไข
ActionType VARCHAR(20) ประเภทการกระทำ (INSERT/UPDATE/DELETE)
FieldName VARCHAR(50) ชื่อฟิลด์ที่แก้ไข
OldValue NTEXT ค่าเดิม
NewValue NTEXT ค่าใหม่
ChangeReason NVARCHAR(200) เหตุผลการแก้ไข
ChangeDate DATETIME วันที่แก้ไข
ChangedBy VARCHAR(50) ผู้แก้ไข
IPAddress VARCHAR(45) IP Address
UserAgent VARCHAR(500) User Agent

8.3 Integration Points กับระบบอื่น

8.3.1 API Endpoints สำหรับการเชื่อมต่อ

{
  "api_endpoints": [
    {
      "system": "ระบบเวชระเบียน (1.2.1)",
      "endpoint": "/api/patient/{hn}/visits",
      "method": "GET",
      "description": "ดึงข้อมูลการเข้ารับบริการของผู้ป่วย"
    },
    {
      "system": "ระบบซักประวัติ (1.2.2)",
      "endpoint": "/api/history/{historyId}",
      "method": "GET", 
      "description": "ดึงข้อมูลการซักประวัติและสัญญาณชีพ"
    },
    {
      "system": "ระบบตรวจสอบสิทธิ (1.2.15)",
      "endpoint": "/api/rights/verify",
      "method": "POST",
      "description": "ตรวจสอบสิทธิก่อนตรวจรักษา"
    },
    {
      "system": "ระบบเภสัชกรรม (1.2.13)",
      "endpoint": "/api/medication/order",
      "method": "POST",
      "description": "ส่งใบสั่งยาไปเภสัชกรรม"
    },
    {
      "system": "ระบบเภสัชกรรม (1.2.13)",
      "endpoint": "/api/drug/interaction/check",
      "method": "POST",
      "description": "ตรวจสอบอันตกริยาของยา"
    },
    {
      "system": "ระบบเภสัชกรรม (1.2.13)",
      "endpoint": "/api/drug/allergy/check",
      "method": "POST",
      "description": "ตรวจสอบการแพ้ยา"
    },
    {
      "system": "ระบบงานชันสูตร (1.2.7)",
      "endpoint": "/api/lab/order",
      "method": "POST",
      "description": "ส่งใบสั่งตรวจแล็บ"
    },
    {
      "system": "ระบบงานชันสูตร (1.2.7)",
      "endpoint": "/api/lab/results/{patientId}",
      "method": "GET",
      "description": "ดึงผลแล็บของผู้ป่วย"
    },
    {
      "system": "ระบบรังสีวิทยา (1.2.8)",
      "endpoint": "/api/xray/order",
      "method": "POST",
      "description": "ส่งใบสั่งตรวจรังสี"
    },
    {
      "system": "ระบบรังสีวิทยา (1.2.8)",
      "endpoint": "/api/xray/results/{patientId}",
      "method": "GET",
      "description": "ดึงผล X-Ray ของผู้ป่วย"
    },
    {
      "system": "ระบบการเงิน (1.2.14)",
      "endpoint": "/api/finance/calculate",
      "method": "POST",
      "description": "คำนวณค่าบริการตามกลุ่มค่ารักษาพยาบาล"
    },
    {
      "system": "ระบบการเงิน (1.2.14)",
      "endpoint": "/api/finance/service/charge",
      "method": "POST",
      "description": "บันทึกค่าบริการการตรวจรักษา"
    }
  ]
}

8.3.2 Data Exchange Format

{
  "medication_order": {
    "examination_id": "EX2024100501",
    "medications": [
      {
        "drug_code": "PARA500",
        "quantity": 20,
        "duration": 7,
        "instructions": "รับประทานครั้งละ 1 เม็ด วันละ 3 ครั้ง หลังอาหาร",
        "is_chronic": false,
        "template_id": "TPL001"
      }
    ],
    "doctor_id": "DOC001",
    "order_date": "2024-10-05T10:30:00"
  },

  "lab_order": {
    "examination_id": "EX2024100501",
    "lab_tests": [
      {
        "lab_code": "CBC",
        "urgency": "ROUTINE",
        "specimen_type": "BLOOD",
        "clinical_info": "ตรวจ CBC เพื่อดูภาวะโลหิตจาง"
      }
    ],
    "doctor_id": "DOC001",
    "order_date": "2024-10-05T10:30:00"
  },

  "finance_calculation": {
    "examination_id": "EX2024100501",
    "treatment_groups": [
      {
        "group_code": "OPD_GENERAL",
        "quantity": 1,
        "service_date": "2024-10-05"
      }
    ],
    "right_type_id": "UC",
    "patient_type": "GENERAL"
  }
}

8.3.3 การแจ้งเตือนและการสื่อสาร

{
  "notification_templates": [
    {
      "type": "drug_allergy_alert",
      "template_th": "ผู้ป่วย {patient_name} แพ้ยา {drug_name} อาการ: {symptoms}",
      "template_en": "Patient {patient_name} is allergic to {drug_name}. Symptoms: {symptoms}",
      "priority": "HIGH",
      "auto_popup": true
    },
    {
      "type": "drug_interaction_warning",
      "template_th": "พบอันตกริยาของยา {drug1} กับ {drug2} ระดับ {level}",
      "template_en": "Drug interaction found between {drug1} and {drug2}, Level: {level}",
      "priority": "MEDIUM",
      "auto_popup": true
    },
    {
      "type": "lab_result_available",
      "template_th": "ผลแล็บของผู้ป่วย {patient_name} พร้อมแล้ว: {lab_name}",
      "template_en": "Lab result available for {patient_name}: {lab_name}",
      "priority": "LOW",
      "auto_popup": false
    },
    {
      "type": "appointment_reminder",
      "template_th": "ผู้ป่วย {patient_name} มีนัดวันที่ {appointment_date}",
      "template_en": "Patient {patient_name} has appointment on {appointment_date}",
      "priority": "LOW",
      "auto_popup": false
    }
  ]
}

8.3.4 Business Rules และ Validation

{
  "business_rules": [
    {
      "rule_name": "drug_allergy_validation",
      "description": "ตรวจสอบการแพ้ยาก่อนสั่งยา",
      "trigger": "before_medication_order",
      "validation_api": "/api/drug/allergy/validate",
      "blocking": true
    },
    {
      "rule_name": "rights_verification",
      "description": "ตรวจสอบสิทธิก่อนตรวจรักษา",
      "trigger": "before_examination_start",
      "validation_api": "/api/rights/verify",
      "blocking": true
    },
    {
      "rule_name": "chronic_medication_duration",
      "description": "คำนวณจำนวนยาสำหรับโรคเรื้อรัง",
      "trigger": "on_chronic_medication_order",
      "calculation_rule": "quantity = daily_dose * duration_days",
      "blocking": false
    },
    {
      "rule_name": "holiday_appointment_warning",
      "description": "เตือนเมื่อนัดตรงวันหยุด",
      "trigger": "on_appointment_create",
      "validation_api": "/api/calendar/holiday/check",
      "blocking": false
    }
  ]
}

8.4 การเชื่อมโยงข้อมูล (Data Relationships)

8.4.1 Primary Relationships

  • EXAMINATION_SESSIONVISIT (ระบบเวชระเบียน 1.2.1)
  • EXAMINATION_SESSIONHISTORY_TAKING (ระบบซักประวัติ 1.2.2)
  • EXAMINATION_SESSIONRIGHTSVERIFICATION (ระบบตรวจสอบสิทธิ 1.2.15)
  • EXAMINATION_MEDICATION → Drug Master (ระบบเภสัชกรรม 1.2.13)
  • EXAMINATION_LAB_ORDER → Lab Master (ระบบงานชันสูตร 1.2.7)
  • EXAMINATION_XRAY_ORDER → X-Ray Master (ระบบรังสีวิทยา 1.2.8)

8.4.2 Cross-System Data Flow

  1. Patient Registration → ระบบเวชระเบียน → ระบบห้องตรวจ
  2. Rights Verification → ระบบตรวจสอบสิทธิ → ระบบห้องตรวจ
  3. Medication Orders → ระบบห้องตรวจ → ระบบเภสัชกรรม
  4. Lab/X-Ray Orders → ระบบห้องตรวจ → ระบบชันสูตร/รังสี
  5. Service Charges → ระบบห้องตรวจ → ระบบการเงิน

8.5 Performance Considerations

8.5.1 Indexing Strategy

-- Primary Indexes (already covered by PK/FK)
-- Additional Performance Indexes
CREATE INDEX IX_EXAMINATION_SESSION_VISIT_DATE ON EXAMINATION_SESSION (VisitID, StartTime);
CREATE INDEX IX_EXAMINATION_SESSION_DOCTOR_DATE ON EXAMINATION_SESSION (DoctorID, StartTime);
CREATE INDEX IX_EXAMINATION_MEDICATION_DRUG ON EXAMINATION_MEDICATION (DrugCode, OrderDate);
CREATE INDEX IX_EXAMINATION_LAB_ORDER_STATUS ON EXAMINATION_LAB_ORDER (LabStatus, OrderDate);
CREATE INDEX IX_EXAMINATION_APPOINTMENT_DATE ON EXAMINATION_APPOINTMENT (AppointmentDate, DepartmentCode);
CREATE INDEX IX_DRUG_ALLERGY_ALERT_PATIENT ON DRUG_ALLERGY_ALERT (HN, AlertStatus);

8.5.2 Data Archiving

-- Archive strategy for old examination records
-- Move records older than 2 years to archive tables
-- Keep indexes for recent data (last 6 months) in memory

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