BMS-HOSxP Community
HOSxP => แจ้งปัญหา / ขอความช่วยเหลือ => ข้อความที่เริ่มโดย: Auing ที่ มิถุนายน 03, 2010, 10:52:02 AM
-
สอบถามการดึงผล lab ทั้งหมดของผู้ป่วยคนเดียวให้ออกมาใน 1 บรรทัด(ดังรูปครับ)แต่ code ที่ผมได้คือคนไข้ 1 คนจะแยกผล lab ออกมาเป็นอย่างล่ะบรรทัด อ. ทุกท่านแนะนำด้วยครับ ขอบคุณครับ
จาก code
select
concat(pt.pname,pt.fname,' ',pt.lname) as ptname,pt.cid,v.age_y as age,op.bw,pt.sex,pt.informaddr,oh.cc_persist_disease as history_ill,
l.lab_items_name,
o.lab_order_result,
h.hn,v.vstdate
from
lab_order o
left outer join lab_head h on o.lab_order_number = h.lab_order_number
left outer join ovst o1 on h.vn = o1.vn
left outer join patient pt on h.hn = pt.hn
inner join lab_items l on l.lab_items_code = o.lab_items_code and o.lab_items_code in ('199','100','109','155')
inner join opdscreen op on op.vn = o1.vn
inner join vn_stat v on v.vn = o1.vn
left outer join opd_ill_history oh on oh.hn=op.hn
where h.order_date between "2009-10-01" and "2010-04-30"
-
อยากได้เหมือนกันครับ
-
สงสัยเหมือนกันครับ
-
ลองเข้าไปกระทู้นี้ดูครับว่าถูกใจหรือป่าว...พี่เอกทำไว้ครับ
http://hosxp.net/index.php?option=com_smf&Itemid=28&topic=14542.0
-
ลองเข้าไปกระทู้นี้ดูครับว่าถูกใจหรือป่าว...พี่เอกทำไว้ครับ
http://hosxp.net/index.php?option=com_smf&Itemid=28&topic=14542.0
มีคำสั่งแบบไม่ใช้ตัวแปรไม๊ครับ ที่ดึง 1 คน มีหลายผล lab ในแถวเดียวกัน โดยดึงผ่านตัว sql น่ะครับ เผื่อไว้จะไปประยุกต์ใช้กับงานอื่นด้วยครับ
ขอบคุณครับ
-
มีคำสั่งแบบไม่ใช้ตัวแปรไม๊ครับ ที่ดึง 1 คน มีหลายผล lab ในแถวเดียวกัน โดยดึงผ่านตัว sql น่ะครับ เผื่อไว้จะไปประยุกต์ใช้กับงานอื่นด้วยครับ
ขอบคุณครับ
ดึงผ่าน sql query ได้เลยครับ
แก้เฉพาะตัวแปรข้างบน
@a=วันที่เริ่มต้น
@b=วันที่สิ้นสุด
@c="ชื่อแลบ%" หรือ ถ้าเป็น "ncdlab%" หมายถึง ผลแลปตามคอลัม ncd ทั้งหมดมี fbs+chol+tri+...
@d=min ของผลแลปที่แสดง ถ้ากำหนด 0 หมายถึงไม่ระบุค่า min หรือ มากกว่า 0
@e=max ของผลแลปที่แสดง ถ้ากำหนด 0 หมายถึงไม่ระบุค่า max
@f="dm" หรือ "ht" หรือ "all" dm หมายถึง เบาหวาน ht หมายถึงความดัน all หมายถึง ไม่ระบุโรค
ลองดูครับนำไปประยุกต์ได้ครับ
set @a="2010-10-01";
set @b="2011-03-31";
set @c="ncdlab%";
set @d=6;
set @e=10;
set @f="all";
SELECT ovst.vstdate,month(ovst.vstdate) as mx,ovst.hn, concat(patient.pname,
patient.fname, " ", patient.lname) as ptname,patient.moopart,
concat(patient.chwpart,patient.amppart,patient.tmbpart) as tbc,
if(@f="all","ไม่ระบุโรค",concat(@f,"==",
ovstdiag.icd10)) as icd10,
if(@c <>"ncdlab%",lab_items_name_ref,"ncdlab") as labset,if(@c <>"ncdlab%",r.lab_order_result,"ncdlab") as lab,
max(if(lab_items_name_ref like "fbs%",r.lab_order_result,0)) as fbs,
max(if(lab_items_name_ref like "choles%",r.lab_order_result,0)) as `Cholesterol`,
max(if(lab_items_name_ref like "trigly%",r.lab_order_result,0)) as `Triglyceride`,
max(if(lab_items_name_ref like "hdl%",r.lab_order_result,0)) as HDL,
max(if(lab_items_name_ref like "ldl%",r.lab_order_result,0)) as LDL,
max(if(lab_items_name_ref like "Urine albumin%",r.lab_order_result,0)) as `Urine albumin`,
max(if(lab_items_name_ref like "Micro Albumin Urine%",r.lab_order_result,0)) as `Micro Albumin`,
max(if(lab_items_name_ref like "hba1%",r.lab_order_result,0)) as Hba1c,
max(if(lab_items_name_ref like "bun%",r.lab_order_result,0)) as Bun,
max(if(lab_items_name_ref like "Creatinine%",r.lab_order_result,0)) as Creatinine
FROM ovst left outer join ovstdiag ON ovst.vn = ovstdiag.vn
left outer join lab_head l on l.vn=ovst.vn
left outer join lab_order r on l.lab_order_number=r.lab_order_number
left outer join patient ON patient.hn = ovst.hn
WHERE ovst.vstdate Between @a And @b
AND ((@f="dm" and ovstdiag.icd10 Like "E1%") or (@f="ht" and ovstdiag.icd10 Like "I10%") or (@f="all")) and
((@c="ncdlab%" and (lab_items_name_ref like "fbs%"
or lab_items_name_ref like "chol%"
or lab_items_name_ref like "tri%"
or lab_items_name_ref like "hdl%"
or lab_items_name_ref like "ldl%"
or lab_items_name_ref like "urine%"
or lab_items_name_ref like "micro%"
or lab_items_name_ref like "%micro%"
or lab_items_name_ref like "hba1%"
or lab_items_name_ref like "creati%"
or lab_items_name_ref like "bun%"
) )
or (@c <>"ncdlab%" and lab_items_name_ref like @c) )
and
r.lab_order_result > 0 and ((@d=0 or r.lab_order_result >= @d) and (@e=0 or r.lab_order_result <= @e))
group by tbc,moopart,hn,ovst.vn
order by tbc,moopart,mx,hn,ovst.vn
-
โรงพยาบาลเมืองปาน (ขนาด 30 เตียง) จังหวัดลำปาง โทร 054-276345-6
Server : ประกอบเอง Pentium D 3.0 GHz Ram 1 GB HDDSATA 160 GB Fedora 8.0 Linux MySQL 5.0.45
Client : windows XP Sp2
ขึ้นระบบ 1 มิ.ย.50
ท่าน chitvivhai ไม่ Update MySQL สักหน่อยเหรอครับ
-
โรงพยาบาลเมืองปาน (ขนาด 30 เตียง) จังหวัดลำปาง โทร 054-276345-6
Server : ประกอบเอง Pentium D 3.0 GHz Ram 1 GB HDDSATA 160 GB Fedora 8.0 Linux MySQL 5.0.45
Client : windows XP Sp2
ขึ้นระบบ 1 มิ.ย.50
ท่าน chitvichai ไม่ Update MySQL สักหน่อยเหรอครับ
ปล.เปลื่ยนแล้วครับ :)
-
ปล.เปลื่ยนแล้วครับ :)
;D ;D ;D ;D ;D
เปลี่ยนนานแล้วสิเนี่ย แต่ลืมเปลี่ยนที่ลายเซ็นต์หรือเปล่า
-
ขอบคุณมากครับ
ช่วยได้มากเลย
ที่ผ่านมา left join ทีละ lab เวลาต้องการหลายๆ lab โหลดช้ามากมายเลย
-
ที่ผมทำใว้ จะเป็น รายงาน มาตราฐาน ไม่ต้องแก้ตัวรายงานใด ๆ เพียงแค่ ทำ lab link ใน main setting เท่านั้น
ทำให้ง่ายต่อการนำไปใช้งาน
รหัส จังหวัด อำเภอ ตำบล ผมอ้างจาก ตาราง opdconfig เป็นตัวหลัก ไม่ได้ใช้แบบเดิมแล้ว
แบบ เดิม chwpart="50"
แบบใหม่ chwpart=( select chwpart from hospcode where hospcode =(select hospitalcode from opdconfig limit 1))
ทุกรายงานผมจะทำแบบนี้หมดทุกตัวแล้ว ตอนนี้กำลังแก้ ได้ ราว 20 เปอร์เซนต์