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_SESSION→VISIT(ระบบเวชระเบียน 1.2.1)EXAMINATION_SESSION→HISTORY_TAKING(ระบบซักประวัติ 1.2.2)EXAMINATION_SESSION→RIGHTSVERIFICATION(ระบบตรวจสอบสิทธิ 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
- Patient Registration → ระบบเวชระเบียน → ระบบห้องตรวจ
- Rights Verification → ระบบตรวจสอบสิทธิ → ระบบห้องตรวจ
- Medication Orders → ระบบห้องตรวจ → ระบบเภสัชกรรม
- Lab/X-Ray Orders → ระบบห้องตรวจ → ระบบชันสูตร/รังสี
- 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
หมายเหตุ: เอกสารนี้จัดทำขึ้นเพื่อใช้ในการพัฒนาระบบห้องตรวจแพทย์สำหรับโรงพยาบาลค่ายธนรัชน์ และต้องได้รับการอนุมัติจากผู้มีอำนาจก่อนนำไปใช้ในการพัฒนาระบบ