SELECT
p.pid AS 'HN',
CONCAT(c.titlename,p.fname,' ',p.lname) AS `ชื่อ - สกุล`,
getAgeYearNum (p.birth,CURDATE()) AS 'อายุ',
p.rightno AS 'เลขบัตร',
concat(substr(p.birth,9,2),'/',substr(p.birth,6,2),'/',substr(p.birth,1,4)+543) AS `วันเกิด`,
GROUP_CONCAT(p1.chroniccode) AS 'โรคเรื้อรัง',
concat(substr(p1.datefirstdiag ,9,2),'/',substr(p1.datefirstdiag ,6,2),'/',substr(p1.datefirstdiag ,1,4)+543) AS 'วินิจฉัยครั้งแรก',
concat(substr(p1.datedxfirst ,9,2),'/',substr(p1.datedxfirst ,6,2),'/',substr(p1.datedxfirst ,1,4)+543) AS 'วันที่ติดตามล่าสุด',
concat(substr(p1.datedischart ,9,2),'/',substr(p1.datedischart ,6,2),'/',substr(p1.datedischart ,1,4)+543) AS 'วันที่จำหน่าย',
CASE WHEN p1.typedischart = '01' THEN 'หาย'
WHEN p1.typedischart = '02' THEN 'ตาย'
WHEN p1.typedischart = '03' THEN 'ยังรักษาอยู่'
WHEN p1.typedischart = '04' THEN 'ไม่ทราบ'
WHEN p1.typedischart = '05' THEN 'รอการจำหน่าย'
WHEN p1.typedischart = '06' THEN 'ขาดการรักษา'
WHEN p1.typedischart = '07' THEN 'ครบการรักษา'
WHEN p1.typedischart = '08' THEN 'โรคอยู่ในภาวะสงบ'
WHEN p1.typedischart = '09' THEN 'ปฏิเสธการรักษา'
WHEN p1.typedischart = '10' THEN 'ออกจากพื้นที่' ELSE NULL END AS 'สาเหตุที่จำหน่าย',
c1.hosname AS 'รพ.ประจำ',
d.hosname AS 'รพ.วินิจฉัยครั้งแรก',
concat(substr(p1.dateupdate ,9,2),'/',substr(p1.dateupdate ,6,2),'/',substr(p1.dateupdate ,1,4)+543) AS 'D_Update'
FROM
person AS p
INNER JOIN personchronic AS p1 ON p.pcucodeperson = p1.pcucodeperson AND p.pid = p1.pid
INNER JOIN ctitle AS c ON p.prename = c.titlecode
INNER JOIN chospital AS c1 ON p1.cup = c1.hoscode
LEFT JOIN (SELECT
personchronic.pid,
chospital.hosname
FROM
personchronic
INNER JOIN chospital ON personchronic.hospfirstdiag = chospital.hoscode) AS d ON p.pid = d.pid
GROUP BY
p.pid;