คู่มือ HOSxP X-Ray Worklist

ดึงรายการสั่ง X-Ray จาก HOSxP ส่งต่อให้เครื่อง console หรือระบบอื่น — rev 2

1. ภาพรวม

ระบบเชื่อมต่อฐานข้อมูล HOSxP (MySQL/MariaDB หรือ PostgreSQL) จากตาราง xray_report แล้วแปลงเป็น Worklist ให้:

  • ดูรายการบนหน้าเว็บ /worklist/xray
  • ดึงผ่าน JSON/CSV API
  • เขียนไฟล์ล่าสุดให้ระบบอื่น polling
  • ส่งให้เครื่อง X-Ray Console ผ่าน DICOM Modality Worklist (C-FIND)

2. ตั้งค่าใน Admin

ไปที่ จัดการระบบ → ส่วน HOSxP X-Ray Worklist

รายการ คำอธิบาย
เปิดใช้งาน HOSxPต้องเปิดก่อนจึงจะดึง worklist ได้
Database Type / Host / PortMySQL port 3306, PostgreSQL port 5432 — แนะนำใช้ user อ่านอย่างเดียว
CharsetMySQL ใช้ tis620 หรือ utf8mb4
ดึงย้อนหลัง (วัน)0 = วันนี้, 1 = รวมเมื่อวาน — ใช้เมื่อ API/Export ไม่ระบุวันที่ (หน้าเว็บค่าเริ่มต้นเป็นวันนี้เสมอ)
ดึงทั้งหมดภายในวันรวมรายการที่รายงานแล้ว (มี report_date) ไม่ใช่แค่ค้างตรวจ
รวม HN เดียวกันรวมหลายรายการ X-Ray ครั้งเดียวกันเป็นแถวเดียว ชื่อรายการคั่นด้วย comma เช่น Skull AP,Skull Lat,Knee Rt Lat
Worklist Tokenไม่บังคับ — ตั้งแล้ว API ต้องส่ง ?token=... หรือ Bearer header
DICOM MWL SCPเปิด SCP รับ C-FIND จากเครื่อง console — แนะนำ port 11112 บน Windows

Checkbox ดึงทั้งหมด/รวม HN บันทึกอัตโนมัติเมื่อติ๊ก — ไม่ต้องกดบันทึกหลัก

3. หน้า Worklist บนเว็บ

URL: /worklist/xray

  • ค่าเริ่มต้นแสดง วันนี้เท่านั้น (ไม่ดึงเมื่อวาน)
  • ตาราง: เวลา, HN, ชื่อผู้ป่วย, รายการ X-Ray, แพทย์/แผนก, Accession
  • กรองได้ด้วย Start/End Date, HN, Limit, เฉพาะค้างตรวจ
  • โหมดรวม HN: รวมเฉพาะคอลัมน์รายการ X-Ray ตารางยังเป็นแบบเดิม

4. API สำหรับระบบอื่น

JSON

GET /api/worklist/xray

พารามิเตอร์ (ไม่บังคับ):

  • date หรือ start_date + end_date — ไม่ใส่ = วันนี้
  • hn — ค้นหา HN
  • pending=1 เฉพาะค้างตรวจ / pending=0 ทั้งหมดในวัน
  • limit — สูงสุด 1000 (ค่าเริ่มต้น 200)
  • token — ถ้าตั้ง Worklist Token

CSV

GET /api/worklist/xray.csv?date=2026-06-17

Export ไฟล์ล่าสุด (Admin)

กด Export Worklist File ใน Admin หรือ POST /api/worklist/export-file

ไฟล์: data/worklist/xray_worklist_latest.json และ xray_worklist_latest.csv

สถานะ

GET /api/worklist/status

5. DICOM Modality Worklist (MWL)

ตั้งค่าที่เครื่อง X-Ray Console:

  • Server IP = IP เครื่องที่รัน XRAY PACS
  • Port = MWL Port จาก Admin (ค่าเริ่มต้น 11112)
  • Called AE Title = MWL AE Title (ค่าเริ่มต้น XRAYPACS_MWL)
  • Query วันที่ปัจจุบัน — ระบบดึงรายการจาก HOSxP ตามวันที่ที่ console ขอ

ทดสอบได้จาก Admin → ปุ่ม ทดสอบ DICOM MWL

6. การรวมรายการ HN

เมื่อเปิด รวมรายการ HN เดียวกัน ระบบจับกลุ่มตาม:

  • HN + วันที่สั่ง + VN (ถ้ามี VN)
  • HN + วันที่สั่ง + เวลาสั่ง (ถ้าไม่มี VN)

ชื่อรายการ X-Ray หลายรายการจะรวมในฟิลด์ procedure_name คั่นด้วย comma ไม่มีช่องว่าง

หมายเหตุ: ไม่ได้กรองเฉพาะรายการบางประเภท — แสดงทุกรายการ X-Ray ที่สั่งในช่วงวันที่ที่เลือก

7. แก้ปัญหาเบื้องต้น

อาการ แนวทาง
ยังเห็นข้อมูลเมื่อวาน รีสตาร์ทโปรแกรมให้เห็น worklist rev 2 ใน console — ถ้าใช้ .exe ต้อง build ใหม่
Checkbox ไม่จำค่า ตรวจว่ารันโปรแกรมตัวเดียวบนพอร์ต 5000 และ config อยู่ที่ C:\XRAY_PACS\app_config.json
เชื่อมต่อ HOSxP ไม่ได้ กดทดสอบ HOSxP ใน Admin — ตรวจ firewall, user/password, db_type และ port
Console ดึง MWL ไม่ได้ ตรวจ MWL เปิดอยู่, port 11112 ไม่ถูกบล็อก, AE Title ตรงกัน, ทดสอบจาก Admin

8. ตัวอย่าง JSON response

{
  "success": true,
  "count": 1,
  "items": [{
    "hn": "0030887",
    "patient_name": "ชื่อผู้ป่วย",
    "procedure_name": "Skull AP,Skull Lat,Knee Rt Lat,Knee Rt AP",
    "scheduled_datetime": "2026-06-13 09:30:00",
    "accession_number": "123456",
    "status": "pending",
    "grouped": true,
    "order_count": 4
  }]
}