Database Schema Design
ระบบรังสีวิทยา (Radiology Information System)
โรงพยาบาลค่ายธนรัชน์
เอกสารเลขที่: SRS-1.2.8-SCHEMA
เวอร์ชัน: 1.0
วันที่: 23 ตุลาคม 2568
ผู้จัดทำ: ทีมพัฒนาระบบ
ผู้อนุมัติ: ผู้อำนวยการโรงพยาบาลค่ายธนรัชน์
Database Schema Design
ER Diagram: รายละเอียด Entity-Relationship Diagram และความสัมพันธ์ระหว่างตารางแบบละเอียด ดูได้ในไฟล์ ER Diagram.md
ระบบรังสีวิทยาเป็นระบบที่ทำหน้าที่เป็นศูนย์กลางการจัดการงานห้องเอกซเรย์ รองรับการสั่งตรวจ การรายงานผล การจัดการฟิล์ม และการออก XN โดยเชื่อมโยงกับระบบอื่นผ่าน API Integration:
- ระบบเวชระเบียน (1.2.1): ข้อมูลผู้ป่วยหลักและ Visit
- ระบบซักประวัติ (1.2.2): การสั่งตรวจจากการซักประวัติ
- ระบบห้องตรวจแพทย์ (1.2.3): การสั่งตรวจจากห้องตรวจ
- ระบบห้องฉุกเฉิน (1.2.4): การสั่งตรวจแบบ STAT จากห้องฉุกเฉิน
- ระบบนัดหมายและตารางเวรแพทย์ (1.2.6): การสั่งตรวจล่วงหน้าตามนัด
- ระบบงานชันสูตร (1.2.7): การทำงานร่วมกันในการตรวจวินิจฉัย
- ระบบตรวจสอบสิทธิ (1.2.15): การตรวจสอบสิทธิสำหรับการตรวจรังสี
- ระบบการเงิน (1.2.14): การคำนวณค่าบริการตรวจรังสี
- ระบบผู้ดูแลระบบ (1.2.21): การจัดการข้อมูลพื้นฐานและตั้งค่า
8.2.8 ตารางหลัก (Core Tables)
หมายเหตุ: ตาราง PATIENT, VISIT จะอยู่ในระบบเวชระเบียน (1.2.1) ระบบรังสีวิทยาจะอ้างอิงผ่าน Foreign Key เท่านั้น
8.2.8.1 ข้อมูลพื้นฐาน (Master Data)
Table: RADIOLOGY_TEST_MASTER (ข้อมูลรายการตรวจรังสี)
วัตถุประสงค์: เก็บข้อมูลรายการตรวจรังสีทั้งหมด รวมถึงค่าบริการ การใช้ฟิล์ม และการตั้งค่าต่างๆ ตาม TOR ข้อ 1.2.8.1.1
| Field | Type | Key | Description |
|---|---|---|---|
| XRayCode | VARCHAR(20) | PK | รหัสรายการตรวจรังสี |
| XRayName | NVARCHAR(200) | ชื่อรายการตรวจ | |
| XRayNameEng | NVARCHAR(200) | ชื่อรายการตรวจ (อังกฤษ) | |
| XRayNameShort | NVARCHAR(50) | ชื่อรายการตรวจ (ย่อ) | |
| CategoryCode | VARCHAR(10) | FK | รหัสหมวดการตรวจ (อ้างอิง RADIOLOGY_CATEGORY) |
| GroupCode | VARCHAR(10) | FK | รหัสกลุ่มการตรวจ (อ้างอิง RADIOLOGY_GROUP) |
| ModalityCode | VARCHAR(10) | FK | รหัสประเภทเครื่อง (อ้างอิง MODALITY_TYPE) |
| BodyPartCode | VARCHAR(10) | FK | รหัสส่วนของร่างกาย (อ้างอิง BODY_PART) |
| ServiceCost | DECIMAL(10,2) | อัตราค่าบริการ | |
| ChargingMethod | ENUM('PER_FILM','PER_PROCEDURE','PER_VIEW') | รูปแบบการคิดค่าบริการ (ตาม TOR ข้อ 1.2.8.1.3) | |
| FilmRequired | BIT | ต้องใช้ฟิล์ม | |
| DefaultFilmSize | VARCHAR(10) | ขนาดฟิล์มมาตรฐาน | |
| DefaultFilmQty | INT | จำนวนฟิล์มมาตรฐาน | |
| DefaultViewCount | INT | จำนวน View มาตรฐาน | |
| TAT_Normal | INT | เวลาออกผลปกติ (นาที) | |
| TAT_STAT | INT | เวลาออกผล STAT (นาที) | |
| TAT_ASAP | INT | เวลาออกผล ASAP (นาที) | |
| IsSTAT | BIT | สามารถสั่งแบบ STAT ได้ | |
| RequiresContrast | BIT | ต้องใช้สารทึบรังสี | |
| ContrastType | NVARCHAR(100) | ชนิดสารทึบรังสี | |
| RequiresPreparation | BIT | ต้องเตรียมตัว | |
| PreparationInstructions | NTEXT | คำแนะนำการเตรียมตัว | |
| RequiresFasting | BIT | ต้องงดอาหาร | |
| FastingHours | INT | จำนวนชั่วโมงงดอาหาร | |
| TreatmentGroupCode | VARCHAR(20) | FK | รหัสกลุ่มค่ารักษาพยาบาล (อ้างอิง TREATMENT_GROUP, ตาม TOR ข้อ 1.2.8.1.2) |
| RadiationDose | DECIMAL(10,4) | ปริมาณรังสี (mGy) | |
| IsActive | BIT | ใช้งานอยู่ | |
| CreatedDate | DATETIME | วันที่สร้าง | |
| CreatedBy | VARCHAR(50) | ผู้สร้าง | |
| LastModified | DATETIME | วันที่แก้ไขล่าสุด | |
| ModifiedBy | VARCHAR(50) | ผู้แก้ไขล่าสุด |
Table: RADIOLOGY_CATEGORY (หมวดการตรวจรังสี)
วัตถุประสงค์: เก็บข้อมูลหมวดหมู่การตรวจทางรังสีวิทยา เช่น X-Ray ทั่วไป, CT Scan, MRI, Ultrasound
| Field | Type | Key | Description |
|---|---|---|---|
| CategoryCode | VARCHAR(10) | PK | รหัสหมวดการตรวจ |
| CategoryName | NVARCHAR(100) | ชื่อหมวดการตรวจ | |
| CategoryNameEng | NVARCHAR(100) | ชื่อหมวดการตรวจ (อังกฤษ) | |
| CategoryDescription | NTEXT | คำอธิบายหมวดการตรวจ | |
| DisplayOrder | INT | ลำดับการแสดง | |
| IsActive | BIT | ใช้งานอยู่ | |
| CreatedDate | DATETIME | วันที่สร้าง | |
| CreatedBy | VARCHAR(50) | ผู้สร้าง |
Table: RADIOLOGY_GROUP (กลุ่มการตรวจรังสี)
วัตถุประสงค์: เก็บข้อมูลกลุ่มการตรวจรังสี สำหรับการสั่งแบบเป็นกลุ่ม
| Field | Type | Key | Description |
|---|---|---|---|
| GroupCode | VARCHAR(10) | PK | รหัสกลุ่มการตรวจ |
| GroupName | NVARCHAR(100) | ชื่อกลุ่มการตรวจ | |
| GroupNameEng | NVARCHAR(100) | ชื่อกลุ่มการตรวจ (อังกฤษ) | |
| GroupDescription | NTEXT | คำอธิบายกลุ่มการตรวจ | |
| CategoryCode | VARCHAR(10) | FK | รหัสหมวดการตรวจ |
| GroupCost | DECIMAL(10,2) | ราคากลุ่ม | |
| DiscountPercent | DECIMAL(5,2) | เปอร์เซ็นต์ส่วนลด | |
| IsPackage | BIT | เป็นแพ็คเกจ | |
| IsActive | BIT | ใช้งานอยู่ | |
| DisplayOrder | INT | ลำดับการแสดง | |
| CreatedDate | DATETIME | วันที่สร้าง | |
| CreatedBy | VARCHAR(50) | ผู้สร้าง |
Table: RADIOLOGY_GROUP_TESTS (รายการตรวจในกลุ่ม)
วัตถุประสงค์: เก็บข้อมูลรายการตรวจรังสีที่อยู่ในแต่ละกลุ่ม
| Field | Type | Key | Description |
|---|---|---|---|
| GroupTestID | VARCHAR(20) | PK | รหัสรายการในกลุ่ม |
| GroupCode | VARCHAR(10) | FK | รหัสกลุ่มการตรวจ |
| XRayCode | VARCHAR(20) | FK | รหัสรายการตรวจ |
| IsRequired | BIT | จำเป็นต้องมี | |
| DisplayOrder | INT | ลำดับการแสดง |
Table: MODALITY_TYPE (ประเภทเครื่องตรวจรังสี)
วัตถุประสงค์: เก็บข้อมูลประเภทเครื่องมือตรวจทางรังสีวิทยา
| Field | Type | Key | Description |
|---|---|---|---|
| ModalityCode | VARCHAR(10) | PK | รหัสประเภทเครื่อง |
| ModalityName | NVARCHAR(100) | ชื่อประเภทเครื่อง (X-Ray, CT, MRI, US, etc.) | |
| ModalityNameEng | NVARCHAR(100) | ชื่อประเภทเครื่อง (อังกฤษ) | |
| ModalityDescription | NTEXT | คำอธิบาย | |
| IsActive | BIT | ใช้งานอยู่ |
Table: BODY_PART (ส่วนของร่างกาย)
วัตถุประสงค์: เก็บข้อมูลส่วนของร่างกายที่ตรวจ
| Field | Type | Key | Description |
|---|---|---|---|
| BodyPartCode | VARCHAR(10) | PK | รหัสส่วนของร่างกาย |
| BodyPartName | NVARCHAR(100) | ชื่อส่วนของร่างกาย | |
| BodyPartNameEng | NVARCHAR(100) | ชื่อส่วนของร่างกาย (อังกฤษ) | |
| ParentBodyPartCode | VARCHAR(10) | FK | รหัสส่วนหลัก |
| DisplayOrder | INT | ลำดับการแสดง | |
| IsActive | BIT | ใช้งานอยู่ |
Table: RADIOLOGY_POSITION (ท่าถ่ายรังสี)
วัตถุประสงค์: เก็บข้อมูลท่าที่ใช้ในการถ่ายรังสี (AP, PA, Lateral, Oblique, etc.)
| Field | Type | Key | Description |
|---|---|---|---|
| PositionCode | VARCHAR(10) | PK | รหัสท่าถ่าย |
| PositionName | NVARCHAR(100) | ชื่อท่าถ่าย | |
| PositionNameEng | NVARCHAR(100) | ชื่อท่าถ่าย (อังกฤษ) | |
| PositionAbbr | VARCHAR(10) | ตัวย่อ (AP, PA, LAT, etc.) | |
| PositionDescription | NTEXT | คำอธิบายท่าถ่าย | |
| IsActive | BIT | ใช้งานอยู่ |
Table: RADIOLOGY_ROOM (ห้องตรวจรังสี)
วัตถุประสงค์: เก็บข้อมูลห้องตรวจทางรังสีวิทยา
| Field | Type | Key | Description |
|---|---|---|---|
| RoomCode | VARCHAR(10) | PK | รหัสห้องตรวจ |
| RoomName | NVARCHAR(100) | ชื่อห้องตรวจ | |
| RoomType | VARCHAR(20) | ประเภทห้อง | |
| DepartmentCode | VARCHAR(10) | FK | รหัสแผนก |
| ModalityCode | VARCHAR(10) | FK | รหัสประเภทเครื่อง |
| FloorLevel | VARCHAR(10) | ชั้น | |
| BuildingCode | VARCHAR(10) | รหัสอาคาร | |
| Capacity | INT | จำนวนผู้ป่วยที่รองรับ | |
| IsActive | BIT | ใช้งานอยู่ | |
| CreatedDate | DATETIME | วันที่สร้าง | |
| CreatedBy | VARCHAR(50) | ผู้สร้าง |
Table: FILM_SIZE (ขนาดฟิล์ม)
วัตถุประสงค์: เก็บข้อมูลขนาดฟิล์มที่ใช้ในการถ่ายรังสี
| Field | Type | Key | Description |
|---|---|---|---|
| FilmSizeCode | VARCHAR(10) | PK | รหัสขนาดฟิล์ม |
| FilmSizeName | NVARCHAR(50) | ชื่อขนาดฟิล์ม (8x10, 10x12, 14x17, etc.) | |
| Width | DECIMAL(5,2) | ความกว้าง (นิ้ว) | |
| Height | DECIMAL(5,2) | ความยาว (นิ้ว) | |
| FilmCost | DECIMAL(10,2) | ราคาฟิล์ม | |
| IsActive | BIT | ใช้งานอยู่ |
8.2.8.2 ข้อมูลการสั่งตรวจรังสี (Radiology Orders)
Table: RADIOLOGY_ORDER (การสั่งตรวจรังสี)
วัตถุประสงค์: เก็บข้อมูลการสั่งตรวจรังสีจากแพทย์ รองรับการสั่งจากหลายจุด (OPD, IPD, ER) แบบ Online ตาม TOR ข้อ 1.2.8.2.1, 1.2.8.2.3
| Field | Type | Key | Description |
|---|---|---|---|
| OrderID | VARCHAR(20) | PK | รหัสการสั่งตรวจ (AUTO) |
| VisitID | VARCHAR(20) | FK | รหัส Visit (อ้างอิงจาก VISIT) |
| HN | VARCHAR(10) | FK | รหัสผู้ป่วย (อ้างอิงจาก PATIENT) |
| AN | VARCHAR(15) | FK | รหัสผู้ป่วยใน (สำหรับ IPD) |
| OrderDateTime | DATETIME | วันเวลาที่สั่ง | |
| OrderingDoctorID | VARCHAR(20) | FK | แพทย์ผู้สั่ง (อ้างอิง DOCTORS) |
| OrderDepartmentCode | VARCHAR(10) | FK | แผนกที่สั่ง (อ้างอิง DEPARTMENT) |
| OrderSourceSystem | VARCHAR(20) | ระบบที่สั่ง (HISTORY_TAKING/EXAMINATION/EMERGENCY/IPD/APPOINTMENT) | |
| OrderSourceID | VARCHAR(20) | รหัสอ้างอิงต้นทาง | |
| OrderType | VARCHAR(20) | ประเภทคำสั่ง (NEW/REPEAT/FOLLOW_UP) | |
| UrgencyLevel | ENUM('ROUTINE','ASAP','STAT','URGENT') | ความเร่งด่วน (ตาม TOR ข้อ 1.2.8.2.1) | |
| ClinicalIndication | NTEXT | อาการหรือเหตุผลทางคลินิก | |
| ClinicalDiagnosis | NTEXT | การวินิจฉัยเบื้องต้น | |
| PatientCondition | ENUM('WALK','CARRY','WHEELCHAIR','BED','STRETCHER') | สภาพผู้ป่วย (ตาม TOR ข้อ 1.2.8.2.1) | |
| RightsVerificationID | VARCHAR(20) | FK | รหัสการยืนยันสิทธิ (อ้างอิงจาก ระบบตรวจสอบสิทธิ 1.2.15) |
| OrderStatus | VARCHAR(20) | สถานะคำสั่ง (PENDING/CONFIRMED/CANCELLED/COMPLETED) | |
| ScheduledDateTime | DATETIME | วันเวลานัด | |
| IsScheduled | BIT | เป็นการสั่งล่วงหน้า | |
| TotalCost | DECIMAL(10,2) | ค่าใช้จ่ายรวม | |
| PaymentStatus | VARCHAR(20) | สถานะการชำระเงิน | |
| SpecialInstructions | NTEXT | คำแนะนำพิเศษ | |
| IsContrast | BIT | ใช้สารทึบรังสี | |
| ContrastType | NVARCHAR(100) | ชนิดสารทึบรังสี | |
| ContrastVolume | DECIMAL(10,2) | ปริมาณสารทึบรังสี (ml) | |
| AllergicHistory | NTEXT | ประวัติการแพ้ | |
| IsPrinted | BIT | พิมพ์ใบ Request แล้ว | |
| PrintedDateTime | DATETIME | เวลาที่พิมพ์ | |
| PrintedBy | VARCHAR(50) | ผู้พิมพ์ | |
| CreatedDate | DATETIME | วันที่สร้าง | |
| CreatedBy | VARCHAR(50) | ผู้สร้าง | |
| LastModified | DATETIME | วันที่แก้ไขล่าสุด | |
| ModifiedBy | VARCHAR(50) | ผู้แก้ไขล่าสุด | |
| CancelledDateTime | DATETIME | วันเวลาที่ยกเลิก | |
| CancelledBy | VARCHAR(50) | ผู้ยกเลิก | |
| CancelReason | NTEXT | เหตุผลการยกเลิก |
Table: RADIOLOGY_ORDER_DETAIL (รายละเอียดการสั่งตรวจ)
วัตถุประสงค์: เก็บรายละเอียดแต่ละรายการตรวจที่สั่ง รวมถึงท่า ด้าน และห้องตรวจ ตาม TOR ข้อ 1.2.8.2.1
| Field | Type | Key | Description |
|---|---|---|---|
| OrderDetailID | VARCHAR(20) | PK | รหัสรายละเอียดคำสั่ง |
| OrderID | VARCHAR(20) | FK | รหัสการสั่งตรวจ |
| XRayCode | VARCHAR(20) | FK | รหัสรายการตรวจ (อ้างอิง RADIOLOGY_TEST_MASTER) |
| XRayName | NVARCHAR(200) | ชื่อรายการตรวจ | |
| BodyPartCode | VARCHAR(10) | FK | รหัสส่วนของร่างกาย (อ้างอิง BODY_PART) |
| BodySide | ENUM('LEFT','RIGHT','BOTH','NA') | ด้าน (ซ้าย/ขวา/ทั้งสองด้าน) ตาม TOR ข้อ 1.2.8.2.1 | |
| RoomCode | VARCHAR(10) | FK | รหัสห้องตรวจ (อ้างอิง RADIOLOGY_ROOM, ตาม TOR ข้อ 1.2.8.2.1) |
| ItemCost | DECIMAL(10,2) | ค่าบริการรายการ | |
| DiscountAmount | DECIMAL(10,2) | ส่วนลด | |
| NetCost | DECIMAL(10,2) | ค่าใช้จ่ายสุทธิ | |
| Quantity | INT | จำนวน | |
| DetailStatus | VARCHAR(20) | สถานะรายการ (PENDING/REGISTERED/IN_PROGRESS/COMPLETED/CANCELLED) | |
| SpecialRequest | NTEXT | คำขอพิเศษ | |
| CreatedDate | DATETIME | วันที่สร้าง | |
| CreatedBy | VARCHAR(50) | ผู้สร้าง |
Table: RADIOLOGY_ORDER_POSITION (ท่าถ่ายรังสีที่สั่ง)
วัตถุประสงค์: เก็บข้อมูลท่าที่ระบุในการสั่งตรวจ สามารถมีได้หลายท่าต่อ 1 รายการ ตาม TOR ข้อ 1.2.8.2.1
| Field | Type | Key | Description |
|---|---|---|---|
| OrderPositionID | VARCHAR(20) | PK | รหัสท่าที่สั่ง |
| OrderDetailID | VARCHAR(20) | FK | รหัสรายละเอียดคำสั่ง |
| PositionCode | VARCHAR(10) | FK | รหัสท่าถ่าย (อ้างอิง RADIOLOGY_POSITION) |
| PositionName | NVARCHAR(100) | ชื่อท่าถ่าย | |
| PositionOrder | INT | ลำดับท่า | |
| IsRequired | BIT | ท่าที่จำเป็น | |
| Notes | NTEXT | หมายเหตุ |
8.2.8.3 ข้อมูลการลงทะเบียนและ XN (Registration & XN)
Table: RADIOLOGY_REGISTRATION (การลงทะเบียนตรวจรังสี)
วัตถุประสงค์: เก็บข้อมูลการลงทะเบียนและออกเลข XN ให้กับผู้ป่วย ตาม TOR ข้อ 1.2.8.3.5
| Field | Type | Key | Description |
|---|---|---|---|
| RegistrationID | VARCHAR(20) | PK | รหัสการลงทะเบียน |
| XN | VARCHAR(15) | UK | หมายเลข X-Ray Number (XN-YYYYMMDD-XXXXX) |
| OrderID | VARCHAR(20) | FK | รหัสการสั่งตรวจ |
| HN | VARCHAR(10) | FK | รหัสผู้ป่วย |
| VisitID | VARCHAR(20) | FK | รหัส Visit |
| RegistrationDateTime | DATETIME | วันเวลาลงทะเบียน | |
| RegisteredBy | VARCHAR(50) | ผู้ลงทะเบียน | |
| RoomCode | VARCHAR(10) | FK | รหัสห้องตรวจ |
| TechnicianID | VARCHAR(20) | FK | รหัสนักรังสีเทคนิค |
| ScheduledDateTime | DATETIME | วันเวลานัด | |
| StartDateTime | DATETIME | เวลาเริ่มตรวจ | |
| EndDateTime | DATETIME | เวลาเสร็จสิ้น | |
| PatientArrivalTime | DATETIME | เวลาที่ผู้ป่วยมาถึง | |
| PatientCondition | VARCHAR(20) | สภาพผู้ป่วย | |
| RegistrationStatus | VARCHAR(20) | สถานะ (REGISTERED/WAITING/IN_PROGRESS/COMPLETED/CANCELLED/NO_SHOW) | |
| IsEmergency | BIT | เป็นกรณีฉุกเฉิน | |
| QueueNumber | VARCHAR(10) | หมายเลขคิว | |
| WaitingTime | INT | เวลารอคอย (นาที) | |
| ServiceTime | INT | เวลาให้บริการ (นาที) | |
| CompletedDateTime | DATETIME | วันเวลาที่เสร็จสิ้น | |
| CreatedDate | DATETIME | วันที่สร้าง | |
| CreatedBy | VARCHAR(50) | ผู้สร้าง |
Table: RADIOLOGY_EXAMINATION (การตรวจรังสี)
วัตถุประสงค์: เก็บข้อมูลการตรวจรังสีแต่ละครั้ง รวมถึงการใช้ฟิล์ม
| Field | Type | Key | Description |
|---|---|---|---|
| ExaminationID | VARCHAR(20) | PK | รหัสการตรวจ |
| RegistrationID | VARCHAR(20) | FK | รหัสการลงทะเบียน |
| XN | VARCHAR(15) | FK | หมายเลข XN |
| OrderDetailID | VARCHAR(20) | FK | รหัสรายละเอียดคำสั่ง |
| XRayCode | VARCHAR(20) | FK | รหัสรายการตรวจ |
| ExaminationDateTime | DATETIME | วันเวลาตรวจ | |
| TechnicianID | VARCHAR(20) | FK | นักรังสีเทคนิคผู้ทำ |
| RoomCode | VARCHAR(10) | FK | รหัสห้องตรวจ |
| ModalityCode | VARCHAR(10) | FK | รหัสประเภทเครื่อง |
| TechniqueUsed | NVARCHAR(200) | เทคนิคที่ใช้ | |
| KVP | DECIMAL(5,1) | ค่า kVp | |
| MAS | DECIMAL(6,2) | ค่า mAs | |
| ExposureTime | DECIMAL(5,3) | เวลาในการฉายรังสี (วินาที) | |
| RadiationDose | DECIMAL(10,4) | ปริมาณรังสีที่ได้รับ (mGy) | |
| ExaminationQuality | VARCHAR(20) | คุณภาพการตรวจ (EXCELLENT/GOOD/ACCEPTABLE/POOR) | |
| IsContrast | BIT | ใช้สารทึบรังสี | |
| ContrastType | NVARCHAR(100) | ชนิดสารทึบรังสี | |
| ContrastVolume | DECIMAL(10,2) | ปริมาณสารทึบรังสี (ml) | |
| ContrastReaction | NTEXT | อาการแพ้สารทึบรังสี (ถ้ามี) | |
| TechnicianNotes | NTEXT | หมายเหตุของเทคนิค | |
| ExaminationStatus | VARCHAR(20) | สถานะ (IN_PROGRESS/COMPLETED/FAILED/REPEATED) | |
| CompletedDateTime | DATETIME | วันเวลาที่เสร็จสิ้น | |
| CreatedDate | DATETIME | วันที่สร้าง | |
| CreatedBy | VARCHAR(50) | ผู้สร้าง |
Table: RADIOLOGY_FILM_USAGE (การใช้ฟิล์ม)
วัตถุประสงค์: เก็บข้อมูลการใช้ฟิล์มในการตรวจแต่ละครั้ง ตาม TOR ข้อ 1.2.8.3.6
| Field | Type | Key | Description |
|---|---|---|---|
| FilmUsageID | VARCHAR(20) | PK | รหัสการใช้ฟิล์ม |
| ExaminationID | VARCHAR(20) | FK | รหัสการตรวจ |
| XN | VARCHAR(15) | FK | หมายเลข XN |
| FilmSizeCode | VARCHAR(10) | FK | รหัสขนาดฟิล์ม (อ้างอิง FILM_SIZE) |
| FilmQuantity | INT | จำนวนฟิล์มที่ใช้ (ตาม TOR ข้อ 1.2.8.3.6) | |
| ViewCount | INT | จำนวน View | |
| FilmCost | DECIMAL(10,2) | ค่าฟิล์ม | |
| TotalFilmCost | DECIMAL(10,2) | ค่าฟิล์มรวม | |
| RecordedDateTime | DATETIME | วันเวลาที่บันทึก | |
| RecordedBy | VARCHAR(50) | ผู้บันทึก |
Table: RADIOLOGY_DAMAGED_FILM (ฟิล์มเสีย)
วัตถุประสงค์: เก็บข้อมูลฟิล์มที่เสียพร้อมสาเหตุ ตาม TOR ข้อ 1.2.8.3.7
| Field | Type | Key | Description |
|---|---|---|---|
| DamagedFilmID | VARCHAR(20) | PK | รหัสฟิล์มเสีย |
| ExaminationID | VARCHAR(20) | FK | รหัสการตรวจ |
| XN | VARCHAR(15) | FK | หมายเลข XN |
| FilmSizeCode | VARCHAR(10) | FK | รหัสขนาดฟิล์ม |
| DamagedQuantity | INT | จำนวนฟิล์มที่เสีย | |
| DamageReason | NVARCHAR(200) | สาเหตุของการเสีย (ตาม TOR ข้อ 1.2.8.3.7) | |
| DamageType | VARCHAR(50) | ประเภทความเสียหาย (OVEREXPOSED/UNDEREXPOSED/FOGGED/ARTIFACT/POSITIONING_ERROR/OTHER) | |
| ResponsiblePerson | VARCHAR(50) | ผู้รับผิดชอบ | |
| DamageDateTime | DATETIME | วันเวลาที่เสีย | |
| RecordedBy | VARCHAR(50) | ผู้บันทึก | |
| IsReimbursed | BIT | เบิกชดเชยแล้ว | |
| Notes | NTEXT | หมายเหตุ | |
| CreatedDate | DATETIME | วันที่บันทึก |
8.2.8.4 ข้อมูลรายงานผลและการอ่านฟิล์ม (Reporting & Film Reading)
Table: RADIOLOGY_RESULT (ผลการตรวจรังสี)
วัตถุประสงค์: เก็บข้อมูลผลการตรวจรังสีจากนักรังสีเทคนิคและรังสีแพทย์ ตาม TOR ข้อ 1.2.8.3.10-15
| Field | Type | Key | Description |
|---|---|---|---|
| ResultID | VARCHAR(20) | PK | รหัสผลการตรวจ |
| ExaminationID | VARCHAR(20) | FK | รหัสการตรวจ |
| XN | VARCHAR(15) | FK | หมายเลข XN |
| OrderDetailID | VARCHAR(20) | FK | รหัสรายละเอียดคำสั่ง |
| HN | VARCHAR(10) | FK | รหัสผู้ป่วย |
| PreliminaryFindings | NTEXT | ผลเบื้องต้นจากเทคนิค | |
| PreliminaryReportedBy | VARCHAR(50) | ผู้รายงานเบื้องต้น | |
| PreliminaryReportDateTime | DATETIME | วันเวลารายงานเบื้องต้น | |
| RadiologistID | VARCHAR(20) | FK | รหัสรังสีแพทย์ผู้อ่านฟิล์ม (ตาม TOR ข้อ 1.2.8.3.10) |
| FilmReadingDateTime | DATETIME | วันเวลาอ่านฟิล์ม | |
| Findings | NTEXT | ผลการอ่านฟิล์ม/รายงานผล (ตาม TOR ข้อ 1.2.8.3.10) | |
| Impression | NTEXT | ความเห็นสรุป | |
| Recommendation | NTEXT | ข้อแนะนำ | |
| ComparisonStudy | NTEXT | เปรียบเทียบกับการตรวจครั้งก่อน | |
| TechnicalQuality | VARCHAR(20) | คุณภาพทางเทคนิค (EXCELLENT/GOOD/ADEQUATE/LIMITED/POOR) | |
| LimitationNotes | NTEXT | ข้อจำกัดในการตีความ | |
| CriticalFindings | NTEXT | ผลที่สำคัญเร่งด่วน | |
| IsCritical | BIT | เป็นผลวิกฤต | |
| CriticalNotifiedDateTime | DATETIME | วันเวลาแจ้งผลวิกฤต | |
| CriticalNotifiedTo | VARCHAR(50) | แจ้งผลวิกฤตให้ | |
| ResultStatus | VARCHAR(20) | สถานะผล (DRAFT/PRELIMINARY/FINAL/CORRECTED/CANCELLED) | |
| IsLocked | BIT | ล็อกผลแล้ว (ตาม TOR ข้อ 1.2.8.3.13) | |
| LockedDateTime | DATETIME | วันเวลาล็อกผล | |
| LockedBy | VARCHAR(50) | ผู้ล็อกผล | |
| ApprovedDateTime | DATETIME | วันเวลาอนุมัติผล | |
| ApprovedBy | VARCHAR(50) | ผู้อนุมัติผล | |
| ReportedDateTime | DATETIME | วันเวลารายงานผล | |
| VerifiedDateTime | DATETIME | วันเวลายืนยันผล | |
| VerifiedBy | VARCHAR(50) | ผู้ยืนยันผล | |
| IsViewedByOrderer | BIT | แพทย์ผู้สั่งดูผลแล้ว (ตาม TOR ข้อ 1.2.8.3.15) | |
| ViewedDateTime | DATETIME | วันเวลาที่ดูผล | |
| ViewedBy | VARCHAR(50) | ผู้ดูผล | |
| TATMinutes | INT | ระยะเวลาออกผล (นาที) | |
| CreatedDate | DATETIME | วันที่สร้าง | |
| CreatedBy | VARCHAR(50) | ผู้สร้าง | |
| LastModified | DATETIME | วันที่แก้ไขล่าสุด | |
| ModifiedBy | VARCHAR(50) | ผู้แก้ไขล่าสุด |
Table: RADIOLOGY_REPORT_TEMPLATE (Template รายงานผล)
วัตถุประสงค์: เก็บชุดข้อความสำเร็จรูปสำหรับการรายงานผล ตาม TOR ข้อ 1.2.8.3.11
| Field | Type | Key | Description |
|---|---|---|---|
| TemplateID | VARCHAR(20) | PK | รหัส Template |
| TemplateName | NVARCHAR(200) | ชื่อ Template | |
| TemplateCategory | VARCHAR(50) | หมวด Template (NORMAL/ABNORMAL/FINDINGS/IMPRESSION) | |
| XRayCode | VARCHAR(20) | FK | รหัสรายการตรวจ (ถ้าเฉพาะรายการ) |
| BodyPartCode | VARCHAR(10) | FK | รหัสส่วนของร่างกาย |
| TemplateText | NTEXT | ข้อความ Template (ตาม TOR ข้อ 1.2.8.3.11) | |
| Keywords | NVARCHAR(500) | คำสำคัญสำหรับค้นหา | |
| UsageCount | INT | จำนวนครั้งที่ใช้ | |
| IsActive | BIT | ใช้งานอยู่ | |
| IsPublic | BIT | ใช้ร่วมกันได้ | |
| CreatedBy | VARCHAR(50) | ผู้สร้าง | |
| CreatedDate | DATETIME | วันที่สร้าง | |
| LastUsed | DATETIME | ใช้ล่าสุด |
Table: RADIOLOGY_IMAGE (ภาพรังสี)
วัตถุประสงค์: เก็บข้อมูลภาพรังสีดิจิทัล (DICOM Images)
| Field | Type | Key | Description |
|---|---|---|---|
| ImageID | VARCHAR(20) | PK | รหัสภาพ |
| ExaminationID | VARCHAR(20) | FK | รหัสการตรวจ |
| XN | VARCHAR(15) | FK | หมายเลข XN |
| SeriesNumber | INT | หมายเลข Series | |
| ImageNumber | INT | หมายเลขภาพ | |
| PositionCode | VARCHAR(10) | FK | รหัสท่าถ่าย |
| ImageType | VARCHAR(20) | ประเภทภาพ (PRIMARY/SECONDARY/SCOUT) | |
| ImageFormat | VARCHAR(10) | รูปแบบไฟล์ (DICOM/JPEG/PNG) | |
| ImagePath | VARCHAR(500) | Path ของไฟล์ภาพ | |
| ThumbnailPath | VARCHAR(500) | Path ของภาพขนาดย่อ | |
| ImageSize | BIGINT | ขนาดไฟล์ (bytes) | |
| Width | INT | ความกว้างภาพ (pixels) | |
| Height | INT | ความสูงภาพ (pixels) | |
| SOPInstanceUID | VARCHAR(100) | DICOM SOP Instance UID | |
| StudyInstanceUID | VARCHAR(100) | DICOM Study Instance UID | |
| SeriesInstanceUID | VARCHAR(100) | DICOM Series Instance UID | |
| AcquisitionDateTime | DATETIME | วันเวลาที่ได้ภาพ | |
| UploadedDateTime | DATETIME | วันเวลาที่อัพโหลด | |
| UploadedBy | VARCHAR(50) | ผู้อัพโหลด | |
| IsDeleted | BIT | ถูกลบแล้ว |
Table: RADIOLOGY_FILM_STORAGE (การจัดเก็บฟิล์ม)
วัตถุประสงค์: เก็บข้อมูลตำแหน่งการจัดเก็บฟิล์มจริง
| Field | Type | Key | Description |
|---|---|---|---|
| FilmStorageID | VARCHAR(20) | PK | รหัสการจัดเก็บ |
| XN | VARCHAR(15) | FK | หมายเลข XN |
| ExaminationID | VARCHAR(20) | FK | รหัสการตรวจ |
| FilmLocation | NVARCHAR(200) | ตำแหน่งจัดเก็บ | |
| ShelfNumber | VARCHAR(20) | เลขชั้น | |
| RowNumber | VARCHAR(20) | เลขแถว | |
| SlotNumber | VARCHAR(20) | เลขช่อง | |
| FilmEnvelopeNumber | VARCHAR(20) | หมายเลขซอง | |
| TotalFilmCount | INT | จำนวนฟิล์มทั้งหมด | |
| StorageDateTime | DATETIME | วันเวลาจัดเก็บ | |
| StoredBy | VARCHAR(50) | ผู้จัดเก็บ | |
| FilmStatus | VARCHAR(20) | สถานะฟิล์ม (IN_STORAGE/BORROWED/LOST/DESTROYED) | |
| Notes | NTEXT | หมายเหตุ |
8.2.8.5 ข้อมูลการยืม-คืนฟิล์ม (Film Borrowing)
Table: RADIOLOGY_FILM_BORROWING (การยืมฟิล์ม)
วัตถุประสงค์: เก็บข้อมูลการยืม-คืนฟิล์ม X-Ray ตาม TOR ข้อ 1.2.8.4.1-3
| Field | Type | Key | Description |
|---|---|---|---|
| BorrowingID | VARCHAR(20) | PK | รหัสการยืม |
| XN | VARCHAR(15) | FK | หมายเลข XN |
| HN | VARCHAR(10) | FK | รหัสผู้ป่วย |
| BorrowerID | VARCHAR(20) | FK | รหัสผู้ยืม (อาจเป็น DoctorID หรือ UserID, ตาม TOR ข้อ 1.2.8.4.2) |
| BorrowerName | NVARCHAR(100) | ชื่อผู้ยืม | |
| BorrowerType | VARCHAR(20) | ประเภทผู้ยืม (DOCTOR/STAFF/STUDENT/EXTERNAL) | |
| DepartmentCode | VARCHAR(10) | FK | แผนกที่ยืม (ตาม TOR ข้อ 1.2.8.4.2) |
| BorrowDateTime | DATETIME | วันเวลาที่ยืม | |
| BorrowReason | NVARCHAR(500) | สาเหตุการยืม (ตาม TOR ข้อ 1.2.8.4.2) | |
| ExpectedReturnDate | DATE | วันที่คาดว่าจะคืน | |
| ActualReturnDateTime | DATETIME | วันเวลาที่คืนจริง | |
| ReturnCondition | VARCHAR(20) | สภาพเมื่อคืน (COMPLETE/INCOMPLETE/DAMAGED) | |
| FilmQuantityBorrowed | INT | จำนวนฟิล์มที่ยืม | |
| FilmQuantityReturned | INT | จำนวนฟิล์มที่คืน | |
| ContactPhone | VARCHAR(20) | เบอร์โทรผู้ยืม (ตาม TOR ข้อ 1.2.8.4.2) | |
| BorrowingStatus | VARCHAR(20) | สถานะ (BORROWED/RETURNED/OVERDUE/LOST) | |
| IsOverdue | BIT | เกินกำหนดคืน | |
| OverdueDays | INT | จำนวนวันเกินกำหนด | |
| BorrowedBy | VARCHAR(50) | ผู้ทำรายการยืม | |
| ReturnedBy | VARCHAR(50) | ผู้รับคืน | |
| Notes | NTEXT | หมายเหตุเพิ่มเติม (ตาม TOR ข้อ 1.2.8.4.2) | |
| CreatedDate | DATETIME | วันที่สร้าง | |
| CreatedBy | VARCHAR(50) | ผู้สร้าง |
Table: RADIOLOGY_FILM_BORROWING_DETAIL (รายละเอียดฟิล์มที่ยืม)
วัตถุประสงค์: เก็บรายละเอียดแต่ละแผ่นฟิล์มที่ยืม
| Field | Type | Key | Description |
|---|---|---|---|
| BorrowingDetailID | VARCHAR(20) | PK | รหัสรายละเอียดการยืม |
| BorrowingID | VARCHAR(20) | FK | รหัสการยืม |
| FilmNumber | VARCHAR(20) | หมายเลขฟิล์ม | |
| FilmDescription | NVARCHAR(200) | รายละเอียดฟิล์ม | |
| IsBorrowed | BIT | ยืมไปแล้ว | |
| IsReturned | BIT | คืนแล้ว | |
| ReturnCondition | VARCHAR(20) | สภาพเมื่อคืน | |
| Notes | NTEXT | หมายเหตุ |
8.2.8.6 ข้อมูลการนัดหมาย (Appointment)
Table: RADIOLOGY_APPOINTMENT (การนัดตรวจรังสี)
วัตถุประสงค์: เก็บข้อมูลการนัดหมายเพื่อฟังผลหรือมาตรวจซ้ำ ตาม TOR ข้อ 1.2.8.3.8
| Field | Type | Key | Description |
|---|---|---|---|
| AppointmentID | VARCHAR(20) | PK | รหัสนัดหมาย |
| XN | VARCHAR(15) | FK | หมายเลข XN (ถ้ามีผลเดิม) |
| HN | VARCHAR(10) | FK | รหัสผู้ป่วย |
| VisitID | VARCHAR(20) | FK | รหัส Visit |
| OrderID | VARCHAR(20) | FK | รหัสการสั่งตรวจ (ถ้านัดล่วงหน้า) |
| AppointmentDateTime | DATETIME | วันเวลานัด (ตาม TOR ข้อ 1.2.8.3.8) | |
| AppointmentType | VARCHAR(20) | ประเภทนัด (RESULT_CONSULTATION/FOLLOW_UP/REPEAT_EXAM) | |
| AppointmentReason | NTEXT | เหตุผลการนัด | |
| XRayCode | VARCHAR(20) | FK | รหัสรายการตรวจ (สำหรับนัดตรวจซ้ำ) |
| RoomCode | VARCHAR(10) | FK | รหัสห้องตรวจ |
| RadiologistID | VARCHAR(20) | FK | รังสีแพทย์ที่นัด |
| CreatedBy | VARCHAR(50) | ผู้สร้างนัด | |
| CreatedDate | DATETIME | วันที่สร้างนัด | |
| AppointmentStatus | VARCHAR(20) | สถานะนัด (SCHEDULED/CONFIRMED/ARRIVED/COMPLETED/CANCELLED/NO_SHOW) | |
| ConfirmedDateTime | DATETIME | วันเวลายืนยันนัด | |
| ConfirmedBy | VARCHAR(50) | ผู้ยืนยันนัด | |
| ArrivalDateTime | DATETIME | วันเวลามาถึง | |
| CompletedDateTime | DATETIME | วันเวลาเสร็จสิ้น | |
| CancelledDateTime | DATETIME | วันเวลายกเลิก | |
| CancelReason | NTEXT | เหตุผลยกเลิก | |
| ReminderSent | BIT | ส่งการแจ้งเตือนแล้ว | |
| ReminderSentDateTime | DATETIME | วันเวลาส่งแจ้งเตือน | |
| Notes | NTEXT | หมายเหตุ |
8.2.8.7 ตารางรองรับการทำงาน (Supporting Tables)
Table: RADIOLOGY_PATIENT_REFERRAL (การส่งต่อผู้ป่วย)
วัตถุประสงค์: เก็บข้อมูลการส่งผู้ป่วยไปตามห้องตรวจต่างๆ ตาม TOR ข้อ 1.2.8.3.14
| Field | Type | Key | Description |
|---|---|---|---|
| ReferralID | VARCHAR(20) | PK | รหัสการส่งต่อ |
| XN | VARCHAR(15) | FK | หมายเลข XN |
| ResultID | VARCHAR(20) | FK | รหัสผลการตรวจ |
| HN | VARCHAR(10) | FK | รหัสผู้ป่วย |
| ReferralDateTime | DATETIME | วันเวลาส่งต่อ | |
| ReferredBy | VARCHAR(50) | ผู้ส่งต่อ (รังสีแพทย์) | |
| ReferredToDepartment | VARCHAR(10) | FK | แผนกที่ส่งต่อไป (ตาม TOR ข้อ 1.2.8.3.14) |
| ReferredToDoctor | VARCHAR(20) | FK | แพทย์ที่ส่งต่อไป |
| ReferralReason | NTEXT | เหตุผลการส่งต่อ | |
| UrgencyLevel | VARCHAR(20) | ความเร่งด่วน | |
| ReferralStatus | VARCHAR(20) | สถานะ (PENDING/ACCEPTED/REJECTED/COMPLETED) | |
| AcceptedDateTime | DATETIME | วันเวลาที่รับ | |
| AcceptedBy | VARCHAR(50) | ผู้รับ | |
| Notes | NTEXT | หมายเหตุ | |
| CreatedDate | DATETIME | วันที่สร้าง |
Table: RADIOLOGY_QUALITY_CONTROL (การควบคุมคุณภาพ)
วัตถุประสงค์: เก็บข้อมูลการตรวจสอบคุณภาพของเครื่องมือและกระบวนการ
| Field | Type | Key | Description |
|---|---|---|---|
| QualityControlID | VARCHAR(20) | PK | รหัสการควบคุมคุณภาพ |
| RoomCode | VARCHAR(10) | FK | รหัสห้องตรวจ |
| ModalityCode | VARCHAR(10) | FK | รหัสประเภทเครื่อง |
| EquipmentID | VARCHAR(20) | FK | รหัสเครื่องมือ |
| QCDate | DATE | วันที่ตรวจสอบ | |
| QCType | VARCHAR(50) | ประเภทการตรวจสอบ (DAILY/WEEKLY/MONTHLY/ANNUAL) | |
| TestPerformed | NVARCHAR(200) | การทดสอบที่ทำ | |
| TestResult | VARCHAR(20) | ผลการทดสอบ (PASS/FAIL/WARNING) | |
| MeasuredValue | DECIMAL(10,4) | ค่าที่วัดได้ | |
| AcceptableRange | NVARCHAR(100) | ช่วงค่าที่ยอมรับได้ | |
| TestedBy | VARCHAR(50) | ผู้ทดสอบ | |
| VerifiedBy | VARCHAR(50) | ผู้ตรวจสอบ | |
| CorrectiveAction | NTEXT | การแก้ไข (ถ้ามี) | |
| NextQCDate | DATE | วันที่ตรวจสอบครั้งต่อไป | |
| IsCompliant | BIT | เป็นไปตามมาตรฐาน | |
| Notes | NTEXT | หมายเหตุ | |
| CreatedDate | DATETIME | วันที่บันทึก |
Table: RADIOLOGY_EQUIPMENT (เครื่องมือรังสี)
วัตถุประสงค์: เก็บข้อมูลเครื่องมือและอุปกรณ์ทางรังสีวิทยา
| Field | Type | Key | Description |
|---|---|---|---|
| EquipmentID | VARCHAR(20) | PK | รหัสเครื่องมือ |
| EquipmentName | NVARCHAR(200) | ชื่อเครื่องมือ | |
| EquipmentType | VARCHAR(50) | ประเภทเครื่องมือ | |
| ModalityCode | VARCHAR(10) | FK | รหัสประเภทเครื่อง |
| Manufacturer | NVARCHAR(100) | ผู้ผลิต | |
| ModelNumber | VARCHAR(50) | รุ่น | |
| SerialNumber | VARCHAR(50) | หมายเลขเครื่อง | |
| RoomCode | VARCHAR(10) | FK | รหัสห้องที่ติดตั้ง |
| InstallationDate | DATE | วันที่ติดตั้ง | |
| WarrantyExpiryDate | DATE | วันหมดประกัน | |
| LastMaintenanceDate | DATE | วันบำรุงรักษาล่าสุด | |
| NextMaintenanceDate | DATE | วันบำรุงรักษาครั้งต่อไป | |
| EquipmentStatus | VARCHAR(20) | สถานะ (OPERATIONAL/MAINTENANCE/OUT_OF_SERVICE/RETIRED) | |
| IsActive | BIT | ใช้งานได้ | |
| Notes | NTEXT | หมายเหตุ |
Table: RADIOLOGY_PROTOCOL (โปรโตคอลการตรวจ)
วัตถุประสงค์: เก็บข้อมูลโปรโตคอลการตรวจมาตรฐานสำหรับแต่ละรายการ
| Field | Type | Key | Description |
|---|---|---|---|
| ProtocolID | VARCHAR(20) | PK | รหัสโปรโตคอล |
| ProtocolName | NVARCHAR(200) | ชื่อโปรโตคอล | |
| XRayCode | VARCHAR(20) | FK | รหัสรายการตรวจ |
| ModalityCode | VARCHAR(10) | FK | รหัสประเภทเครื่อง |
| BodyPartCode | VARCHAR(10) | FK | รหัสส่วนของร่างกาย |
| ProtocolDescription | NTEXT | คำอธิบายโปรโตคอล | |
| TechniqueParameters | NTEXT | พารามิเตอร์ทางเทคนิค (JSON Format) | |
| StandardPositions | NVARCHAR(500) | ท่ามาตรฐาน | |
| StandardViews | NVARCHAR(500) | View มาตรฐาน | |
| PreparationRequired | NTEXT | การเตรียมตัวที่ต้องการ | |
| SafetyPrecautions | NTEXT | ข้อควรระวังด้านความปลอดภัย | |
| EstimatedDuration | INT | เวลาโดยประมาณ (นาที) | |
| IsActive | BIT | ใช้งานอยู่ | |
| EffectiveDate | DATE | วันที่เริ่มใช้ | |
| CreatedBy | VARCHAR(50) | ผู้สร้าง | |
| CreatedDate | DATETIME | วันที่สร้าง |
Table: RADIOLOGY_CONTRAST_AGENT (สารทึบรังสี)
วัตถุประสงค์: เก็บข้อมูลสารทึบรังสีที่ใช้
| Field | Type | Key | Description |
|---|---|---|---|
| ContrastID | VARCHAR(20) | PK | รหัสสารทึบรังสี |
| ContrastName | NVARCHAR(200) | ชื่อสารทึบรังสี | |
| GenericName | NVARCHAR(200) | ชื่อสามัญ | |
| ContrastType | VARCHAR(50) | ประเภท (IODINATED/BARIUM/GADOLINIUM/OTHER) | |
| Concentration | VARCHAR(50) | ความเข้มข้น | |
| RouteOfAdministration | VARCHAR(50) | วิธีให้ (IV/ORAL/RECTAL/OTHER) | |
| Manufacturer | NVARCHAR(100) | ผู้ผลิต | |
| StandardDose | DECIMAL(10,2) | ขนาดมาตรฐาน (ml) | |
| MaxDose | DECIMAL(10,2) | ขนาดสูงสุด (ml) | |
| Contraindications | NTEXT | ข้อห้ามใช้ | |
| SideEffects | NTEXT | ผลข้างเคียง | |
| PrecautionWarnings | NTEXT | คำเตือน | |
| IsActive | BIT | ใช้งานอยู่ |
Table: RADIOLOGY_WORKLOAD (ภาระงาน)
วัตถุประสงค์: เก็บข้อมูลภาระงานเพื่อการวิเคราะห์และวางแผน
| Field | Type | Key | Description |
|---|---|---|---|
| WorkloadID | VARCHAR(20) | PK | รหัสภาระงาน |
| WorkDate | DATE | วันที่ | |
| ShiftType | VARCHAR(20) | กะการทำงาน (MORNING/AFTERNOON/NIGHT) | |
| RoomCode | VARCHAR(10) | FK | รหัสห้องตรวจ |
| ModalityCode | VARCHAR(10) | FK | รหัสประเภทเครื่อง |
| TechnicianID | VARCHAR(20) | FK | รหัสนักรังสีเทคนิค |
| TotalExaminations | INT | จำนวนการตรวจทั้งหมด | |
| RoutineCount | INT | จำนวนแบบปกติ | |
| StatCount | INT | จำนวนแบบ STAT | |
| TotalFilmsUsed | INT | จำนวนฟิล์มที่ใช้ | |
| DamagedFilmCount | INT | จำนวนฟิล์มเสีย | |
| AverageServiceTime | INT | เวลาให้บริการเฉลี่ย (นาที) | |
| EquipmentDowntime | INT | เวลาเครื่องเสีย (นาที) | |
| CreatedDate | DATETIME | วันที่บันทึก |
8.2.8.8 ตาราง Audit Trail และประวัติการเปลี่ยนแปลง
Table: RADIOLOGY_RESULT_HISTORY (ประวัติการแก้ไขผล)
วัตถุประสงค์: เก็บประวัติการแก้ไขผลการตรวจเพื่อ Audit Trail
| Field | Type | Key | Description |
|---|---|---|---|
| HistoryID | VARCHAR(20) | PK | รหัสประวัติ |
| ResultID | VARCHAR(20) | FK | รหัสผลการตรวจ |
| ChangeDateTime | DATETIME | วันเวลาที่แก้ไข | |
| ChangedBy | VARCHAR(50) | ผู้แก้ไข | |
| ChangeType | VARCHAR(20) | ประเภทการเปลี่ยนแปลง (CREATE/UPDATE/DELETE/LOCK/UNLOCK) | |
| FieldChanged | VARCHAR(100) | ฟิลด์ที่เปลี่ยน | |
| OldValue | NTEXT | ค่าเดิม | |
| NewValue | NTEXT | ค่าใหม่ | |
| ChangeReason | NTEXT | เหตุผลการเปลี่ยนแปลง | |
| IPAddress | VARCHAR(50) | IP Address | |
| UserAgent | VARCHAR(500) | User Agent |
Table: RADIOLOGY_ORDER_HISTORY (ประวัติการแก้ไขคำสั่ง)
วัตถุประสงค์: เก็บประวัติการแก้ไขคำสั่งตรวจเพื่อ Audit Trail
| Field | Type | Key | Description |
|---|---|---|---|
| HistoryID | VARCHAR(20) | PK | รหัสประวัติ |
| OrderID | VARCHAR(20) | FK | รหัสการสั่งตรวจ |
| ChangeDateTime | DATETIME | วันเวลาที่แก้ไข | |
| ChangedBy | VARCHAR(50) | ผู้แก้ไข | |
| ChangeType | VARCHAR(20) | ประเภทการเปลี่ยนแปลง | |
| FieldChanged | VARCHAR(100) | ฟิลด์ที่เปลี่ยน | |
| OldValue | NTEXT | ค่าเดิม | |
| NewValue | NTEXT | ค่าใหม่ | |
| ChangeReason | NTEXT | เหตุผลการเปลี่ยนแปลง | |
| IPAddress | VARCHAR(50) | IP Address |
Table: RADIOLOGY_ACTIVITY_LOG (บันทึกกิจกรรม)
วัตถุประสงค์: เก็บบันทึกกิจกรรมทั้งหมดในระบบเพื่อ Security Audit
| Field | Type | Key | Description |
|---|---|---|---|
| LogID | VARCHAR(20) | PK | รหัสบันทึก |
| ActivityDateTime | DATETIME | วันเวลา | |
| UserID | VARCHAR(50) | รหัสผู้ใช้ | |
| ActivityType | VARCHAR(50) | ประเภทกิจกรรม (LOGIN/LOGOUT/VIEW/CREATE/UPDATE/DELETE/PRINT) | |
| ModuleName | VARCHAR(50) | ชื่อโมดูล | |
| RecordType | VARCHAR(50) | ประเภทข้อมูล (ORDER/RESULT/APPOINTMENT/etc.) | |
| RecordID | VARCHAR(20) | รหัสข้อมูล | |
| HN | VARCHAR(10) | รหัสผู้ป่วย (ถ้ามี) | |
| ActionDescription | NTEXT | รายละเอียดกิจกรรม | |
| IPAddress | VARCHAR(50) | IP Address | |
| UserAgent | VARCHAR(500) | User Agent | |
| SessionID | VARCHAR(100) | Session ID | |
| IsSuccess | BIT | สำเร็จหรือไม่ | |
| ErrorMessage | NTEXT | ข้อความ Error (ถ้ามี) |
8.2.8.9 ตารางรายงานและสถิติ (Reports & Statistics)
Table: RADIOLOGY_STATISTICS_DAILY (สถิติรายวัน)
วัตถุประสงค์: เก็บสถิติการใช้บริการรายวันสำหรับการวิเคราะห์
| Field | Type | Key | Description |
|---|---|---|---|
| StatID | VARCHAR(20) | PK | รหัสสถิติ |
| StatDate | DATE | วันที่ | |
| DepartmentCode | VARCHAR(10) | FK | รหัสแผนก |
| RoomCode | VARCHAR(10) | FK | รหัสห้องตรวจ |
| ModalityCode | VARCHAR(10) | FK | รหัสประเภทเครื่อง |
| TotalOrders | INT | จำนวนคำสั่งทั้งหมด | |
| TotalExaminations | INT | จำนวนการตรวจทั้งหมด | |
| CompletedExaminations | INT | จำนวนที่เสร็จสิ้น | |
| CancelledOrders | INT | จำนวนที่ยกเลิก | |
| StatOrders | INT | จำนวนแบบ STAT | |
| RoutineOrders | INT | จำนวนแบบปกติ | |
| TotalPatients | INT | จำนวนผู้ป่วย | |
| NewPatients | INT | ผู้ป่วยใหม่ | |
| FollowUpPatients | INT | ผู้ป่วยติดตาม | |
| OPDPatients | INT | ผู้ป่วยนอก | |
| IPDPatients | INT | ผู้ป่วยใน | |
| ERPatients | INT | ผู้ป่วยฉุกเฉิน | |
| TotalFilmsUsed | INT | ฟิล์มที่ใช้ทั้งหมด | |
| DamagedFilms | INT | ฟิล์มเสีย | |
| TotalRevenue | DECIMAL(15,2) | รายได้รวม | |
| AverageTAT | INT | TAT เฉลี่ย (นาที) | |
| AverageWaitingTime | INT | เวลารอเฉลี่ย (นาที) | |
| CreatedDate | DATETIME | วันที่สร้าง |
Table: RADIOLOGY_PERFORMANCE_METRICS (ตัวชี้วัดประสิทธิภาพ)
วัตถุประสงค์: เก็บตัวชี้วัดประสิทธิภาพของระบบและบุคลากร
| Field | Type | Key | Description |
|---|---|---|---|
| MetricID | VARCHAR(20) | PK | รหัสตัวชี้วัด |
| MetricDate | DATE | วันที่ | |
| MetricType | VARCHAR(50) | ประเภทตัวชี้วัด | |
| TechnicianID | VARCHAR(20) | FK | รหัสนักรังสีเทคนิค (ถ้ามี) |
| RadiologistID | VARCHAR(20) | FK | รหัสรังสีแพทย์ (ถ้ามี) |
| RoomCode | VARCHAR(10) | FK | รหัสห้องตรวจ (ถ้ามี) |
| TotalCases | INT | จำนวนเคสทั้งหมด | |
| CompletedCases | INT | จำนวนเคสที่เสร็จ | |
| PendingCases | INT | จำนวนเคสค้าง | |
| OverdueCases | INT | จำนวนเคสเกิน TAT | |
| AverageTAT | INT | TAT เฉลี่ย (นาที) | |
| TATCompliance | DECIMAL(5,2) | % การทำตาม TAT | |
| QualityScore | DECIMAL(5,2) | คะแนนคุณภาพ | |
| RepeatRate | DECIMAL(5,2) | % การตรวจซ้ำ | |
| FilmWasteRate | DECIMAL(5,2) | % ฟิล์มเสีย | |
| PatientSatisfaction | DECIMAL(5,2) | คะแนนความพึงพอใจ | |
| CreatedDate | DATETIME | วันที่สร้าง |
8.2.9 ตารางอ้างอิงระบบอื่น (External System References)
หมายเหตุ: ตารางเหล่านี้อยู่ในระบบอื่นๆ แต่ระบบรังสีวิทยาจะอ้างอิงผ่าน Foreign Key
8.2.9.1 จากระบบเวชระเบียน (1.2.1)
PATIENT- ข้อมูลผู้ป่วยหลักVISIT- ข้อมูลการเข้ารับบริการDOCTORS- ข้อมูลแพทย์DEPARTMENT- ข้อมูลแผนก
8.2.9.2 จากระบบตรวจสอบสิทธิ (1.2.15)
RIGHTTYPE- ประเภทสิทธิการรักษาPATIENTRIGHT- สิทธิของผู้ป่วยRIGHTSVERIFICATION- การยืนยันสิทธิ
8.2.9.3 จากระบบการเงิน (1.2.14)
TREATMENT_GROUP- กลุ่มค่ารักษาพยาบาลFINANCIAL_CATEGORY- หมวดค่ารักษาPAYMENT_TRANSACTION- รายการรับชำระเงิน
8.2.9.4 จากระบบผู้ดูแลระบบ (1.2.21)
USERS- ข้อมูลผู้ใช้งานระบบROLES- บทบาทผู้ใช้งานPERMISSIONS- สิทธิการใช้งาน
8.2.10 Indexes และ Performance Optimization
8.2.10.1 Primary Keys (สร้างอัตโนมัติ)
ทุกตารางมี Primary Key ที่กำหนดไว้แล้ว
8.2.10.2 Foreign Keys (สำคัญต่อ Data Integrity)
-- RADIOLOGY_ORDER
ALTER TABLE RADIOLOGY_ORDER ADD CONSTRAINT FK_RadOrder_Visit
FOREIGN KEY (VisitID) REFERENCES VISIT(VisitID);
ALTER TABLE RADIOLOGY_ORDER ADD CONSTRAINT FK_RadOrder_Patient
FOREIGN KEY (HN) REFERENCES PATIENT(HN);
ALTER TABLE RADIOLOGY_ORDER ADD CONSTRAINT FK_RadOrder_Doctor
FOREIGN KEY (OrderingDoctorID) REFERENCES DOCTORS(DoctorID);
-- RADIOLOGY_ORDER_DETAIL
ALTER TABLE RADIOLOGY_ORDER_DETAIL ADD CONSTRAINT FK_RadOrderDetail_Order
FOREIGN KEY (OrderID) REFERENCES RADIOLOGY_ORDER(OrderID);
ALTER TABLE RADIOLOGY_ORDER_DETAIL ADD CONSTRAINT FK_RadOrderDetail_Test
FOREIGN KEY (XRayCode) REFERENCES RADIOLOGY_TEST_MASTER(XRayCode);
-- RADIOLOGY_REGISTRATION
ALTER TABLE RADIOLOGY_REGISTRATION ADD CONSTRAINT FK_RadReg_Order
FOREIGN KEY (OrderID) REFERENCES RADIOLOGY_ORDER(OrderID);
ALTER TABLE RADIOLOGY_REGISTRATION ADD CONSTRAINT FK_RadReg_Patient
FOREIGN KEY (HN) REFERENCES PATIENT(HN);
-- RADIOLOGY_RESULT
ALTER TABLE RADIOLOGY_RESULT ADD CONSTRAINT FK_RadResult_Exam
FOREIGN KEY (ExaminationID) REFERENCES RADIOLOGY_EXAMINATION(ExaminationID);
ALTER TABLE RADIOLOGY_RESULT ADD CONSTRAINT FK_RadResult_Patient
FOREIGN KEY (HN) REFERENCES PATIENT(HN);
8.2.10.3 Indexes (สำหรับ Performance)
-- Indexes สำหรับการค้นหา
CREATE INDEX IDX_RadOrder_HN ON RADIOLOGY_ORDER(HN);
CREATE INDEX IDX_RadOrder_DateTime ON RADIOLOGY_ORDER(OrderDateTime);
CREATE INDEX IDX_RadOrder_Status ON RADIOLOGY_ORDER(OrderStatus);
CREATE INDEX IDX_RadOrder_Urgency ON RADIOLOGY_ORDER(UrgencyLevel);
CREATE INDEX IDX_RadReg_XN ON RADIOLOGY_REGISTRATION(XN);
CREATE INDEX IDX_RadReg_HN ON RADIOLOGY_REGISTRATION(HN);
CREATE INDEX IDX_RadReg_Date ON RADIOLOGY_REGISTRATION(RegistrationDateTime);
CREATE INDEX IDX_RadReg_Status ON RADIOLOGY_REGISTRATION(RegistrationStatus);
CREATE INDEX IDX_RadResult_XN ON RADIOLOGY_RESULT(XN);
CREATE INDEX IDX_RadResult_HN ON RADIOLOGY_RESULT(HN);
CREATE INDEX IDX_RadResult_Status ON RADIOLOGY_RESULT(ResultStatus);
CREATE INDEX IDX_RadResult_DateTime ON RADIOLOGY_RESULT(ReportedDateTime);
CREATE INDEX IDX_RadBorrow_XN ON RADIOLOGY_FILM_BORROWING(XN);
CREATE INDEX IDX_RadBorrow_Status ON RADIOLOGY_FILM_BORROWING(BorrowingStatus);
CREATE INDEX IDX_RadBorrow_Overdue ON RADIOLOGY_FILM_BORROWING(IsOverdue);
-- Composite Indexes
CREATE INDEX IDX_RadOrder_Composite ON RADIOLOGY_ORDER(HN, OrderDateTime, OrderStatus);
CREATE INDEX IDX_RadReg_Composite ON RADIOLOGY_REGISTRATION(XN, RegistrationDateTime, RegistrationStatus);
8.2.10.4 Unique Constraints
-- XN ต้องไม่ซ้ำ
ALTER TABLE RADIOLOGY_REGISTRATION ADD CONSTRAINT UK_XN UNIQUE(XN);
-- ป้องกันการสั่งซ้ำในเวลาเดียวกัน
ALTER TABLE RADIOLOGY_ORDER ADD CONSTRAINT UK_Order_Visit_DateTime
UNIQUE(VisitID, OrderDateTime, OrderingDoctorID);
8.2.11 Business Rules และ Triggers
8.2.11.1 Auto-generate XN
-- Trigger สำหรับสร้าง XN อัตโนมัติ
CREATE TRIGGER TRG_Generate_XN
ON RADIOLOGY_REGISTRATION
AFTER INSERT
AS
BEGIN
UPDATE RADIOLOGY_REGISTRATION
SET XN = 'XN-' + FORMAT(GETDATE(), 'yyyyMMdd') + '-' +
RIGHT('00000' + CAST(IDENT_CURRENT('RADIOLOGY_REGISTRATION') AS VARCHAR), 5)
WHERE RegistrationID IN (SELECT RegistrationID FROM inserted);
END;
8.2.11.2 Calculate TAT
-- Trigger คำนวณ TAT เมื่อออกผล
CREATE TRIGGER TRG_Calculate_TAT
ON RADIOLOGY_RESULT
AFTER UPDATE
AS
BEGIN
UPDATE r
SET r.TATMinutes = DATEDIFF(MINUTE, o.OrderDateTime, r.ReportedDateTime)
FROM RADIOLOGY_RESULT r
INNER JOIN inserted i ON r.ResultID = i.ResultID
INNER JOIN RADIOLOGY_EXAMINATION e ON r.ExaminationID = e.ExaminationID
INNER JOIN RADIOLOGY_ORDER o ON e.OrderDetailID IN (
SELECT OrderDetailID FROM RADIOLOGY_ORDER_DETAIL WHERE OrderID = o.OrderID
)
WHERE i.ResultStatus = 'FINAL' AND i.ReportedDateTime IS NOT NULL;
END;
8.2.11.3 Check Overdue Film Borrowing
-- Trigger ตรวจสอบการยืมฟิล์มเกินกำหนด
CREATE TRIGGER TRG_Check_Overdue_Borrowing
ON RADIOLOGY_FILM_BORROWING
AFTER INSERT, UPDATE
AS
BEGIN
UPDATE RADIOLOGY_FILM_BORROWING
SET IsOverdue = 1,
OverdueDays = DATEDIFF(DAY, ExpectedReturnDate, GETDATE())
WHERE BorrowingStatus = 'BORROWED'
AND ExpectedReturnDate < GETDATE()
AND ActualReturnDateTime IS NULL;
END;
8.2.12 Views สำหรับรายงาน
8.2.12.1 View: Pending Orders
CREATE VIEW VW_RADIOLOGY_PENDING_ORDERS AS
SELECT
o.OrderID,
o.HN,
p.FirstName + ' ' + p.LastName AS PatientName,
o.OrderDateTime,
o.UrgencyLevel,
od.XRayName,
d.DoctorName AS OrderingDoctor,
dept.DepartmentName,
o.OrderStatus
FROM RADIOLOGY_ORDER o
INNER JOIN PATIENT p ON o.HN = p.HN
INNER JOIN RADIOLOGY_ORDER_DETAIL od ON o.OrderID = od.OrderID
LEFT JOIN DOCTORS d ON o.OrderingDoctorID = d.DoctorID
LEFT JOIN DEPARTMENT dept ON o.OrderDepartmentCode = dept.DepartmentCode
WHERE o.OrderStatus IN ('PENDING', 'CONFIRMED')
ORDER BY o.UrgencyLevel DESC, o.OrderDateTime;
8.2.12.2 View: Today's Examinations
CREATE VIEW VW_RADIOLOGY_TODAY_EXAMS AS
SELECT
r.XN,
r.HN,
p.FirstName + ' ' + p.LastName AS PatientName,
r.RegistrationDateTime,
r.RoomCode,
room.RoomName,
e.XRayCode,
tm.XRayName,
r.RegistrationStatus,
res.ResultStatus
FROM RADIOLOGY_REGISTRATION r
INNER JOIN PATIENT p ON r.HN = p.HN
LEFT JOIN RADIOLOGY_ROOM room ON r.RoomCode = room.RoomCode
LEFT JOIN RADIOLOGY_EXAMINATION e ON r.RegistrationID = e.RegistrationID
LEFT JOIN RADIOLOGY_TEST_MASTER tm ON e.XRayCode = tm.XRayCode
LEFT JOIN RADIOLOGY_RESULT res ON e.ExaminationID = res.ExaminationID
WHERE CAST(r.RegistrationDateTime AS DATE) = CAST(GETDATE() AS DATE)
ORDER BY r.RegistrationDateTime;
8.2.12.3 View: Film Borrowing Report
CREATE VIEW VW_RADIOLOGY_FILM_BORROWING_REPORT AS
SELECT
b.BorrowingID,
b.XN,
b.HN,
p.FirstName + ' ' + p.LastName AS PatientName,
b.BorrowerName,
dept.DepartmentName,
b.BorrowDateTime,
b.ExpectedReturnDate,
b.ActualReturnDateTime,
b.BorrowingStatus,
b.IsOverdue,
b.OverdueDays,
b.BorrowReason
FROM RADIOLOGY_FILM_BORROWING b
INNER JOIN PATIENT p ON b.HN = p.HN
LEFT JOIN DEPARTMENT dept ON b.DepartmentCode = dept.DepartmentCode
WHERE b.BorrowingStatus <> 'RETURNED'
ORDER BY b.IsOverdue DESC, b.BorrowDateTime;
8.2.13 Stored Procedures
8.2.13.1 SP: Create Radiology Order
CREATE PROCEDURE SP_CREATE_RADIOLOGY_ORDER
@VisitID VARCHAR(20),
@HN VARCHAR(10),
@OrderingDoctorID VARCHAR(20),
@UrgencyLevel VARCHAR(20),
@XRayCodes VARCHAR(MAX), -- JSON Array
@ClinicalIndication NTEXT,
@CreatedBy VARCHAR(50)
AS
BEGIN
-- สร้างคำสั่งตรวจและรายละเอียด
-- Implementation here
END;
8.2.13.2 SP: Register Patient
CREATE PROCEDURE SP_REGISTER_RADIOLOGY_PATIENT
@OrderID VARCHAR(20),
@RoomCode VARCHAR(10),
@TechnicianID VARCHAR(20),
@RegisteredBy VARCHAR(50),
@XN VARCHAR(15) OUTPUT
AS
BEGIN
-- ลงทะเบียนและออก XN
-- Implementation here
END;
8.2.13.3 SP: Report Result
CREATE PROCEDURE SP_REPORT_RADIOLOGY_RESULT
@ExaminationID VARCHAR(20),
@RadiologistID VARCHAR(20),
@Findings NTEXT,
@Impression NTEXT,
@ResultStatus VARCHAR(20),
@ReportedBy VARCHAR(50)
AS
BEGIN
-- บันทึกผลการตรวจ
-- Implementation here
END;
9. การเชื่อมโยงระบบ (System Integration)
9.1 API Endpoints
9.1.1 รับคำสั่งตรวจจากระบบอื่น
POST /api/radiology/orders- สร้างคำสั่งตรวจใหม่GET /api/radiology/orders/{orderId}- ดึงข้อมูลคำสั่งตรวจPUT /api/radiology/orders/{orderId}- แก้ไขคำสั่งตรวจDELETE /api/radiology/orders/{orderId}- ยกเลิกคำสั่งตรวจ
9.1.2 ส่งผลกลับไปยังระบบที่สั่ง
POST /api/radiology/results/notify- แจ้งผลการตรวจGET /api/radiology/results/{xn}- ดึงผลการตรวจGET /api/radiology/images/{xn}- ดึงภาพรังสี
9.1.3 ตรวจสอบสิทธิ
POST /api/radiology/rights/verify- ตรวจสอบสิทธิก่อนตรวจGET /api/radiology/rights/{hn}- ดึงข้อมูลสิทธิผู้ป่วย
9.1.4 คำนวณค่าบริการ
POST /api/radiology/billing/calculate- คำนวณค่าบริการPOST /api/radiology/billing/charge- คิดค่าบริการ
9.2 Data Flow Integration
ระบบห้องตรวจ (1.2.3)
↓ [สั่งตรวจ X-Ray]
ระบบรังสีวิทยา (1.2.8) → ระบบตรวจสอบสิทธิ (1.2.15) [ตรวจสอบสิทธิ]
↓ [ลงทะเบียน + ออก XN]
ระบบการเงิน (1.2.14) ← [คิดค่าบริการ]
↓ [ตรวจและรายงานผล]
ระบบห้องตรวจ (1.2.3) ← [ส่งผลกลับ]
9.3 Real-time Notifications
- แจ้งเตือนเมื่อมีคำสั่งใหม่แบบ STAT
- แจ้งเตือนเมื่อผลพร้อม (ส่งไปยังแพทย์ผู้สั่ง)
- แจ้งเตือนผลวิกฤต (Critical Findings)
- แจ้งเตือนการนัดหมาย
10. Security และ Privacy
10.1 Data Encryption
- เข้ารหัสข้อมูลผู้ป่วยที่ sensitive (HN, CitizenID)
- เข้ารหัสภาพรังสีที่จัดเก็บ
10.2 Access Control
- กำหนดสิทธิการเข้าถึงตามบทบาท (Role-based)
- บันทึก Audit Trail ทุกการเข้าถึงข้อมูล
10.3 PDPA Compliance
- ปกป้องข้อมูลส่วนบุคคลตาม พ.ร.บ. คุ้มครองข้อมูลส่วนบุคคล
- มีระบบการลบข้อมูลตามกำหนดเวลา (Data Retention)
11. Backup และ Disaster Recovery
11.1 Database Backup
- Full Backup: ทุกวัน เวลา 02:00 น.
- Differential Backup: ทุก 6 ชั่วโมง
- Transaction Log Backup: ทุก 30 นาที
11.2 Image Backup
- สำรองภาพรังสีทั้งหมดไปยัง Secondary Storage
- เก็บสำเนาที่ Offsite Location
11.3 Recovery Plan
- RTO (Recovery Time Objective): 4 ชั่วโมง
- RPO (Recovery Point Objective): 30 นาที
12. สรุป
เอกสาร Schema ระบบรังสีวิทยานี้ครอบคลุม:
✅ ข้อมูลพื้นฐาน (Master Data) - รายการตรวจ, หมวดหมู่, ห้องตรวจ, อุปกรณ์
✅ การสั่งตรวจ (Ordering) - รองรับการสั่งจากหลายจุด, ระบุท่า-ด้าน, ความเร่งด่วน
✅ การลงทะเบียนและ XN - ออกเลข XN อัตโนมัติ, จัดการคิว
✅ การรายงานผล - รองรับ Template, การล็อกผล, การอนุมัติ
✅ การจัดการฟิล์ม - บันทึกการใช้ฟิล์ม, ฟิล์มเสีย, การยืม-คืน
✅ การนัดหมาย - นัดฟังผลหรือตรวจซ้ำ
✅ การเชื่อมโยงระบบ - API Integration กับระบบอื่น
✅ Security & Audit - Audit Trail, Data Privacy
✅ Performance - Indexes, Views, Stored Procedures
การปฏิบัติตาม TOR: - ✅ TOR ข้อ 1.2.8.1: ข้อมูลพื้นฐานและการเชื่อมโยงหมวดค่าบริการ - ✅ TOR ข้อ 1.2.8.2: การส่งตรวจรังสีวิทยา รองรับ Online - ✅ TOR ข้อ 1.2.8.3: การรายงานผลทางห้องรังสีวิทยา ครบทุกฟีเจอร์ - ✅ TOR ข้อ 1.2.8.4: การยืม-คืนฟิล์ม X-Ray - ✅ TOR ข้อ 1.2.8.5: รองรับการพิมพ์ทุกแบบฟอร์ม
ความสอดคล้องกับระบบอื่น: - เชื่อมโยงกับระบบเวชระเบียน (1.2.1), ซักประวัติ (1.2.2), ห้องตรวจ (1.2.3), ฉุกเฉิน (1.2.4) - เชื่อมโยงกับระบบนัดหมาย (1.2.6), งานชันสูตร (1.2.7) - เชื่อมโยงกับระบบตรวจสอบสิทธิ (1.2.15), การเงิน (1.2.14)
เอกสารนี้จัดทำขึ้นเพื่อใช้เป็นแนวทางในการพัฒนาระบบรังสีวิทยาที่เชื่อมโยงกับระบบอื่นๆ ในโรงพยาบาล และจะได้รับการปรับปรุงตามความต้องการที่เปลี่ยนแปลง