ที่ OPD Card ผมใช้ประมาณนี้ครับ
select o.vn,concat(if((d.name is null or d.name = ""),"- ",d.name)," ",
if(d.strength is null,"",d.strength)," ",d.units) as drug_name,
concat("# ",if(o.qty is null,"",o.qty)) as drug_qty,
concat(if(opn.presc_reason <> "" and opn.presc_reason_2 <> "",concat("[",left(opn.presc_reason,1),", ",left(opn.presc_reason_2,1),"]"),
if(opn.presc_reason <> "",concat("[",left(opn.presc_reason,1),"]"),""))) as drug_reason,
concat(if((o.drugusage <> "" and o.sp_use = ""),du.code,if((o.drugusage = "" and o.sp_use <> ""),
concat(">",su.name1," ",su.name2," ",su.name3),""))) as drug_usage
from opitemrece o
left outer join drugitems d on d.icode = o.icode
left outer join drugusage du on du.drugusage = o.drugusage
left outer join sp_use su on su.sp_use = o.sp_use
left outer join ovst_presc_ned opn on opn.icode = o.icode and opn.vn = o.vn
where o.vn = "550921011512" and (o.icode like "1%" or o.icode in ("3008187","3007587"))
group by o.icode
order by d.therapeuticgroup,d.name
ipiam ดูตรงที่เป็นสีแดงครับ
หมายเหตุ: icode "3008187","3007587" เป็น icode กรณีที่แพทย์ไม่ได้สั่งยา (PE by Doctor) และ Admit by Doctor นะครับ อาจไม่เหมือนที่อื่น กรณีแพทย์ต้องการพิมพ์ OPD Card ในกรณีดังกล่าวครับ
ส่วน substring ของ อ.กอล์ฟ ก็ได้ครับ
ลองเอาอันนี้ไปดูนะครับ ผมทำให้ รพ. ชุมชน ไปใช้ก่อน แต่ OPD Card ทั้งระบบซักประวัติ และ ห้องตรวจแพทย์ ไม่ยอมขึ้นหน้า 2 ให้ กำลังปรับแก้ของใหม่ที่ได้จาก อ. ขวด อยู่ครับ แต่ใบสั่งยาสำหรับบริบทของที่ รพ. ก็ใช้ได้ไม่มีปัญหาครับ (ทั้งใบสั่งยาและ OPD Card เป็นของเก่าที่ใช้อยู่ปัจจุบันนี้นะครับ แต่ในอนาคตจะเปลี่ยนไปดึงจากตาราง opitemrece เป็นหลัก ซึ่งของเก่าดึงจาก doctor_order_print เป็นหลัก)