สวัสดีหลังสงกรานต์คับ
ผมลองใช้คำสั่ง timestampdiff() คำนวณอายุของผู้ป่วยเพื่อใช้แสดงในใบ MAR ตามภาพด้านล่าง แล้วปรากฎว่าอายุของผู้ป่วยทีเกิดในเดือนกุมภาพันธ์ในใบ MAR จะแตกต่างกับอายุของผู้ป่วยในใบสั่งยาผู้ป่วยใน คือว่าอยากให้อายุมันตรงกับความเป็นจริงน่ะคับ คือสั่งพิมพ์ใบ MAR วันนี้อายุก็ต้องคำนวณออกมาวันนี้ ตอนแรกผมใช้คำสั่ง timestampdiff() คิดว่าชัวร์แล้ว แต่พอดี User มาแจ้งว่าทำไมผู้ป่วยที่เกิดเดือนกุมภาพันธ์ แล้วคำนวณออกมาคลาดเคลื่อน ดังนั้นควรใช้คำสั่งอะไรดีครับ
ผมใช้ SQL นี้ในใบ MAR ครับ
select r.an,r.icode,r.mar_time,r.mar_date,concat(dr.name,' ',dr.strength ) as drname,dr.units,a.hn,
concat(pt.pname,' ',pt.fname,' ',pt.lname) as ptname,a.ward,w.name as wname,b.bedno
,r.drugusage,pty.name as pttype,r.med_rx_number,du.name1,concat(du.name2,' ',du.name3) as duname
,r.qty,r.med_interval_type_id,met.interval_name as inname,r.orderstatus,sp.name1 as spname,concat(sp.name2,' ',sp.name3) as spname1
,pt.drugallergy,dr.units , i.entry_staff , doc.name as stname, a.age_y, a.age_m, a.age_d, k.prediag
,os.bw ,os.height,if(sp.name1 is not null,sp.name1,du.name1) as drugusename1 ,if(concat(sp.name2,sp.name3) is not null ,concat(sp.name2,' ',sp.name3)
,concat(du.name2,' ',du.name3)) as drugusename2,(k.bw/1000) as bw_1 ,
pt.birthday,now()as today,
timestampdiff(year,pt.birthday,curdate()) as count_year,
timestampdiff(month,pt.birthday,curdate())-(timestampdiff(year,pt.birthday,curdate())*12) as count_month,
timestampdiff(day,date_add(pt.birthday,interval (timestampdiff(month,pt.birthday,curdate())) month),curdate()) as count_day
from ipd_mar r
left outer join drugitems dr on dr.icode=r.icode
left outer join drugusage du on du.drugusage=r.drugusage
left outer join an_stat a on a.an=r.an
left outer join patient pt on pt.hn=a.hn
left outer join ward w on w.ward=a.ward
left outer join iptadm b on b.an=r.an
left outer join pttype pty on pty.pttype=a.pttype
left outer join med_interval_type met on met.med_interval_type_id=r.med_interval_type_id
left outer join sp_use sp on sp.sp_use=r.sp_use
left outer join ipt_order_no i on i.order_no = r.med_rx_number
left outer join doctor doc on doc.code = i.entry_staff
left outer join ipt k on k.an=r.an
left outer join opdscreen os on os.vn=k.vn
where r.med_rx_number=544791 and r.icode <'2000000'
order by r.orderstatus