BMS-HOSxP Community
HOSxP => Report Exchange => ข้อความที่เริ่มโดย: Apiruk_Jbhos ที่ พฤศจิกายน 23, 2008, 17:01:30 PM
-
สวัสดีครับ ขอถามพี่หน่อยครับ คือจิง ๆ อยากได้ รายงานหา ค่า FBS ที่ระบุค่าได้ครับ เหมือนใน รูป แต่ผลออกมามันน้อยเกินไปครับ ไม่รู้เป็นเพราะอะไร ก็แค่เลือกวัน เป้น ปีงบประมาณ มันออมาแค่ 54 คนเองครับ
ก็เลยมาเขียน Code เองก็ออกมาเยอะเป็น พันครับ แต่ติดตรง ที่ Code ครับ
select ov.vn,oa.hn,oa.nextdate,concat(pt.pname,pt.fname," ",pt.lname) as pt_name,pt.addrpart,
pt.moopart,pt.tmbpart,ta.full_name,lh.lab_order_number,lo.lab_items_code,lo.lab_items_name_ref,lo.lab_order_result
from oapp oa
left outer join ovst ov on ov.vn=oa.vn
left outer join patient pt on pt.hn=oa.hn
left outer join thaiaddress ta on ta.addressid=concat(pt.chwpart,pt.amppart,pt.tmbpart)
left outer join lab_head lh on lh.vn=ov.vn
left outer join lab_order lo on lo.lab_order_number=lh.lab_order_number
where oa.nextdate between '2007-09-01' and '2008-10-31'
and lab_items_name_ref in ('FBS')
and lo.lab_order_result between 'xxx' and 'xxx'
order by lo.lab_order_result desc
ถ้าผมกำหนด
เป็นเช่น 80 - 90 ออกเรืยงถูกต้องครับ
ถ้าเป็น 80 - 120 ไม่ออกอะไรเลยครับ
ถ้าเป็น 200 - 300 ออกเรืยงถูกต้องครับ
ถ้าเป็น 200 - 400 ออกมาแบนี้ครับ รูปล่างสุด มีค่า น้อย ๆ ติดออกมาด้วย กดเรียงแล้วก็ไม่เรียงไปดูใน lab_order
ค่าก็ตรงครับ มันมีอะไรผิดไหมครับ ยัง งง อยู่ครับ แล้วค่าที่ หาจากรูปแรก ทำไมมันออกมาน้อยมากครับ
v.ที่ใช้ครับ 3.51.8.6 ครับ
-
ลองดูว่าที่หน้าห้อง lab ได้ยืนยันผล lab หรือยังครับ ??? ???
-
ห้อง lab ตอนลง จะยืนยันทุกครั้งครับ แต่ที่ออกมาจากโปรแกรมน้อย อาจจะมาจาก คลินิคเบาหวาน เพราะที่ รพ.ยังไม่ค่อยได้ลง ครับ เลยต้องมาเอาจาก Lab_order แทน ครับ เขียน code ดิบ ดึงเลยครับ แต่มันมีปัญหาคือบางช่วงไม่ออก หรือออกมาแล้วแต่ มันเรียง เพี้ยน มีค่าน้อย ๆแจมออกมาด้วย แล้วไม่มั่นใจว่าผลถูกไหม เลยยังไม่กล้าเอาจำนวนไปให้พี่เขา ครับ เขาอยากได้ < 60 กับ > 350 แต่ผมเขียน 80 - 120 มันไม่ออก หรือมันไม่ใช่ตัวเลข ดู ๆ แล้ว ค่ามันจะเก็บเป็น text หรือเปล่า ...
ปล. สงสัย ต้อง รบกวน คุณ Golf ช่วยที แล้วครับ โทรก็คุยกัน ไม่เห็นภาพ สงสัยว่าง ๆ ต้องนัดเจอซะหน่อยแล้วครับ ยังไม่เข้าเข้าใจ การเรียก การเก็บข้อมูลมากนัก กลัว เขียน ออกมาได้ก้จริง แต่กลัว ผลที่ได้มันจะ ไม่ถูกต้องกับความเป็นจริง ครับ
-
ลองใช้ตาราง opdscreen เป็นตารางหลัก แล้วค่อยกรองหาช่วง FBS ครับ ;D ;D
-
สาเหตุน่าจะมาจาก ชนิดของข้อมูล
`lab_order_result` varchar(250) DEFAULT NULL,
เห็นว่า lab_order_result เป็น varchar ไม่ใช่ตัวเลข ==> การใช้ between จึงได้ผลอย่างที่เห็น
80-90 น่าจะถูกต้องแน่นอน ยกเว้นถ้า FBS 800-900 ก็จะผิดช่วงนี้อีกที
80-120 ไม่ออกเลย เพราะ between 80 -120 ซึ่ง 80 ในความหมายของตัวอักษร มันมากกว่า120 ซึ่งคือเลข 1 ที่มีค่าน้อยกว่า 8
200-300 ออกมาถูกต้อง แต่ก็ไม่แน่ครับ ถ้ามีคนไข้ที่ FBS 20 กว่าๆ ก็จะแสดงด้วยเช่นกัน
200-400 เหตุผลเดียวกับข้างบน
;)
-
ลองแก้เป็น
and round(lo.lab_order_result) between 111 and 222
ดูนะครับ
-
สวัสดีครับ ขอถามพี่หน่อยครับ คือจิง ๆ อยากได้ รายงานหา ค่า FBS ที่ระบุค่าได้ครับ เหมือนใน รูป แต่ผลออกมามันน้อยเกินไปครับ ไม่รู้เป็นเพราะอะไร ก็แค่เลือกวัน เป้น ปีงบประมาณ มันออมาแค่ 54 คนเองครับ
ก็เลยมาเขียน Code เองก็ออกมาเยอะเป็น พันครับ แต่ติดตรง ที่ Code ครับ
....เรื่อง ผลของคำสั่งที่ Apiruk_Jbhos เขียนไว้ ก็แบบที่คุณหมอ anukul บอกไว้น่ะครับ ลองใช้ที่ อ.mn บอกไว้ดูนะครับ แต่ถ้าให้มีการเรียงลำดับ ก็จะเรียงตามอักษรตัวแรกนะครับ
...เช่น ถ้ามากไปน้อยก็จะได้เป็น 90 => 66 => 60 => 350 => 121 => 100 เป็นต้น ครับ....
....ส่วนที่ใช้จาก Custom Search นั้น ตรง ระบุ FBS ตามรูปที่แนบไว้ จะไปเอาข้อมูลในส่วนของ fbs มาจากตาราง opdscreen ครับ ไม่ได้มาจาก lab_order...
....ถ้าผลที่ได้มีน้อย แสดงว่า ข้อมูลที่บันทึกใน fbs ของตาราง opdscreen มีอยู่น้อยครับ... :D .....
-
...ถ้าผลที่ได้จาก Custom Search น้อยกว่าผลจากคำสั่งที่ดูมาจากตาราง lab_order คิดว่าคงยังไม่ได้มีการกำหนดในส่วนของ Lab Link ไว้ (ใน System Setting ตามรูปที่แนบไว้) ....
...ถ้าเรากำหนดค่าในส่วนของ Lab Link ไว้ เวลามีการรายงานผล Lab ที่เราตั้งค่าไว้ ก็จะมีการบันทึกข้อมูลลงในตาราง opdscreen ด้วยครับ และข้อมูลที่บันทึกใน opdscreen ก็จะเป็นข้อมูลประเภทตัวเลข(Double)ด้วยครับ ซึ่งจะมีประโยชน์มากกับการที่จะดูข้อมูลหรือทำรายงานในลักษณะที่คุณ Apiruk_Jbhos ต้องการ... :D...