query diag opd และแสดงหัตถการ

query OPD

SELECT
ovst.hn,
CONCAT(pt.pname,pt.fname," ",pt.lname) as "fullname",
-- เพิ่มส่วนคำนวณอายุตรงนี้
TIMESTAMPDIFF(YEAR, pt.birthday, ovst.vstdate) AS age_y,
CONCAT(
IFNULL(pt.addrpart, ''),
' ม.', IFNULL(pt.moopart, ''),
' ', IFNULL(t3.name, ''),
' ', IFNULL(t2.name, ''),
' ', IFNULL(t1.name, '')
) AS fulladdressname,
ovst.vstdate,
dx.icd10 AS main_diag,
GROUP_CONCAT(DISTINCT dx_all.icd10 ORDER BY dx_all.icd10 SEPARATOR ', ') AS other_diagnoses,
(select GROUP_CONCAT(b.name) from opitemrece a INNER JOIN er_oper_code b ON b.icode = a.icode where a.vn = ovst.vn) as 'หัตถการ'
FROM
ovst
JOIN patient pt ON pt.hn = ovst.hn
-- Join สำหรับหา visit ที่มี diag หลัก
JOIN ovstdiag dx ON dx.vn = ovst.vn
-- Join เพื่อหาโรคอื่นๆ ที่ "ไม่ใช่" โรคหลัก
LEFT JOIN ovstdiag dx_all ON dx_all.vn = ovst.vn AND dx_all.icd10 <> dx.icd10
-- Joins สำหรับที่อยู่
LEFT JOIN thaiaddress t1 ON t1.chwpart = pt.chwpart AND t1.amppart = '00' AND t1.tmbpart = '00'
LEFT JOIN thaiaddress t2 ON t2.chwpart = pt.chwpart AND t2.amppart = pt.amppart AND t2.tmbpart = '00'
LEFT JOIN thaiaddress t3 ON t3.chwpart = pt.chwpart AND t3.amppart = pt.amppart AND t3.tmbpart = pt.tmbpart
WHERE
ovst.vstdate BETWEEN '2025-06-01' AND '2025-07-31'
AND dx.icd10 = 'E115'
AND ovst.main_dep = '004'
GROUP BY
ovst.vn
ORDER BY
ovst.hn;