การสั่ง LAB ล่วงหน้าในหน้านัด เดิมใช้ SQL แบบนี้ สามารถพิมพ์ออกได้ตามปกติ
select ls.*,lh.*,concat(pt.pname,pt.fname," ",pt.lname) as ptname, pt.birthday, d.name as doctor_name, k.department as order_dept, o.nextdate,o.nexttime
from lab_app_order_service ls
left outer join lab_app_head lh on lh.lab_app_order_number=ls.lab_app_order_number
left outer join oapp o on o.vn = ls.vn
left outer join patient pt on pt.hn = o.hn
left outer join doctor d on d.code = lh.doctor_code
left outer join kskdepartment k on k.depcode = o.depcode
where ls.lab_app_order_number = 15790
order by ls.lab_app_order_service_id
ต่อมาได้รับแจ้งว่า ใบรายการนัด lab ล่วงหน้าตาม SQL ข้างต้น ไม่แสดงชื่อผู้ป่วย และอายุ (ที่ใช้ function GetThaiAge ของรายงาน...ที่คำนวณจาก pt.birthday) แสดงเป็น 109 ปี ก็หาอยู่นานว่าเกิดจากอะไร สุดท้ายลองแก้ SQL ใหม่
select ls.*,lh.*,concat(pt.pname,pt.fname," ",pt.lname) as ptname, pt.birthday, d.name as doctor_name
from lab_app_order_service ls
left outer join lab_app_head lh on lh.lab_app_order_number=ls.lab_app_order_number
left outer join patient pt on pt.hn = lh.hn
left outer join doctor d on d.code = lh.doctor_code
where ls.lab_app_order_number = 20248
order by ls.lab_app_order_service_id
สามารถแสดงชื่อและอายุได้
ก็เลยคิดว่าตอนที่พิมพ์ใบรายการ LAB ล่วงหน้านั้นข้อมูลยังไม่ได้ save ลง table oapp ทำให้ SQL เดิม ไม่สามารถแสดงได้อย่างถูกต้อง
ตอนออกแบบเลือกรายการที่มีการ save ใบนัดเรียบร้อยแล้ว ใช้ SQL แรกก็เลยไม่มีปัญหา
ฝาก อ.mn ช่วยตรวจสอบหน่อยครับ
อีกอย่างครับ ชื่อแพทย์ และความเร่งด่วน ฯลฯ ที่อยู่ส่วนบนของหน้ารายการ LAB (ตามแบบฟอร์มที่ออกแบบไว้) หลังจากบันทึกข้อมูลแล้วเก็บไว้ที่ table ไหนครับ หาไม่เจอจริง ๆ ตอนนี้เลยต้องอนุโลมเอา doctor_code จาก table oapp มาใช้ก่อน แต่ความเร่งด่วนไม่รู้จะเอาจากไหนมาใส่