BMS-HOSxP Community

HOSxP => การเขียน SQL Script => ข้อความที่เริ่มโดย: white ที่ กันยายน 24, 2008, 06:24:37 AM

หัวข้อ: ดูผล lab ล่าสุด
เริ่มหัวข้อโดย: white ที่ กันยายน 24, 2008, 06:24:37 AM
ไม่ทราบว่าเขียน report ยังไงให้ได้ผล lab ล่าสุด 3 ครั้งสุดท้ายครับ
เช่น FBS, Cr, LDL, BP ล่าสุด 3 ครั้งสุดท้าย
ซึ่งมักจะไม่ใช่จาก visit เดียวกัน เลยเขียนไม่ถูกครับ

แล้วสามารถคำนวณประมาณนี้ได้ไหมครับ (หรือต้อง pascal เท่านั้น)
คิด creatinine clearance
สูตร {[140 - age(year)] x BW x 0.85 (if sex=female)} / (72 x creatinine)

ขอบคุณมากๆครับ
ผมจะสร้างฟอร์มสรุปภาวะแทรกซ้อน ของโรคไต เบาหวานครับ

ไม่รู้ยากไหม แต่ถ้าได้จะได้พัฒนามาแจก หรือถ้ามีคนทำไว้แล้วช่วยแนะนำด้วยครับ ;D
หัวข้อ: Re: ดูผล lab ล่าสุด
เริ่มหัวข้อโดย: anukul ที่ กันยายน 24, 2008, 18:19:07 PM
ลองปรับใช้ดูครับ
หัวข้อ: Re: ดูผล lab ล่าสุด
เริ่มหัวข้อโดย: white ที่ กันยายน 24, 2008, 18:59:03 PM
ลองปรับใช้ดูครับ


จะเอาไปลองทดสอบดูครับ
หัวข้อ: Re: ดูผล lab ล่าสุด
เริ่มหัวข้อโดย: jdadmin1 ที่ กันยายน 24, 2008, 19:03:39 PM
 ;D ;D ;D ขอบคุณครับ รบกวนขอรายงาน PCU ของมะการักษ์หน่อยนะครับ ทำ Datacenter แล้วน่าจะมีฟอร์มรายงานเยอะ  ;D ;D ;D
หัวข้อ: Re: ดูผล lab ล่าสุด
เริ่มหัวข้อโดย: golf_win ที่ กันยายน 24, 2008, 19:23:27 PM
ผมยกมือขอด้วยคนนะครับ ขอต่อแถวต่อจากพี่สันทัดครับ ;D ;D
หัวข้อ: Re: ดูผล lab ล่าสุด
เริ่มหัวข้อโดย: white ที่ กันยายน 24, 2008, 20:04:10 PM
;D ;D ;D ขอบคุณครับ รบกวนขอรายงาน PCU ของมะการักษ์หน่อยนะครับ ทำ Datacenter แล้วน่าจะมีฟอร์มรายงานเยอะ  ;D ;D ;D

555 หมอ เจอรุมขอซะแล้ว
ยังไม่ได้ลองเลย คงต้องคืนนี้ อยากรู้จัง ใส่สูตรคำนวณยังไง  ;)
หัวข้อ: Re: ดูผล lab ล่าสุด
เริ่มหัวข้อโดย: anukul ที่ กันยายน 24, 2008, 21:54:13 PM
อยากรู้จัง ใส่สูตรคำนวณยังไง 
.....แค่ผล lab ย้อนหลัง (คุณ srwood ช่วยแก้ sql ให้) ครับ ไม่ได้คำนวนอะไร เพราะเป็นแบบฟอร์มที่ให้ หมอ med พิมพ์ให้ผป.ที่จะส่งต่อให้ไปรับยา DM HT ต่อที่ PCU   ;D

รบกวนขอรายงาน PCU ของมะการักษ์หน่อยนะครับ ทำ Datacenter แล้วน่าจะมีฟอร์มรายงานเยอะ 
.....เรื่องรายงานของ PCU ยังไม่เริ่มจริงๆจังๆ ครับ เพราะช่วงนี้ เน้นการอบรม จนท.สอ PCU ของจังหวัดกาญจนบุรี และการใช้งาน  สำหรับรายงาน PCU ตอนนี้มีชุดที่ อ.MN เคยวางไว้ และได้รับอนุเคราะห์จากทีม 101 อีกชุด ประมาณ เกือบ 20 ตัว   ประมาณอาทิตย์หน้า มีการอบรม HOSxP PCU ที่อำเภอไทรโยค โดยอ.อ๊อด อ.กิต  เห็นว่า กลางวันสอน กลางคืนวิเคราะห์รายงานที่ต้องการของสอ. น่าจะได้เห็นอีกบ้างครับ  อ.อ๊อด คงกำลังหาทางกระจายส่งต่อ (ปกติจะวางไว้ที่ report browser) พอดีช่วงนี้เข้ายากครับ
 ;)
หัวข้อ: Re: ดูผล lab ล่าสุด
เริ่มหัวข้อโดย: white ที่ กันยายน 25, 2008, 05:36:34 AM
ผมลองดู form ของหมออนุกูลแล้ว
คล้ายๆที่ผมคิดจะทำเลย ขอบคุณมากครับ

วันที่รายงานใช้
Value := GetListFromQuery( 'select concat(date_format(lh.report_date,''%e %b %Y'')) 
from lab_order lo
left outer join lab_head lh on lh.lab_order_number=lo.lab_order_number 
where lh.hn='''+ DBPipeline['hn'] + '''and lo.lab_items_code=76
order by report_date desc,report_time desc limit 0,1');


ผลที่รายงานใช้
Value := GetListFromQuery('select lo.lab_order_result from lab_order lo 
left outer join lab_head lh on lh.lab_order_number=lo.lab_order_number 
where lh.hn='''+ DBPipeline['hn'] + ''' and lo.lab_items_code=76
order by lh.report_date desc,lh.report_time desc limit 0,1');


โดยเปลี่ยน lo.lab_items_code ตาม code lab แต่ละรพ.
แล้วเลือกบรรทัดจาก limit [แถวเริ่มต้น], [จำนวนแถวที่ต้องการ]

ขออนุญาตเอาไปปรับเพิ่มนะครับ  ;D

เหลือแต่ใส่ script คำนวณ ทำยังไงดีครับ
อาจารย์ผู้เชี่ยวชาญ ช่วยหน่อยครับ
หัวข้อ: Re: ดูผล lab ล่าสุด
เริ่มหัวข้อโดย: white ที่ กันยายน 25, 2008, 06:17:56 AM
เช่น คิด creatinine clearance
สูตร {[140 - age(year)] x BW} / (72 x creatinine)
โดย age มาจาก ?
bw จาก opdscreen.bw
cr จาก opdscreen.creatinine
sex จาก patient.sex ถ้า sex = 2 ต้องคูณทั้งหมดด้วย 0.85 อีกที

ยากไปไหมครับ  ;D
หัวข้อ: Re: ดูผล lab ล่าสุด
เริ่มหัวข้อโดย: SrWooD ที่ กันยายน 25, 2008, 13:37:05 PM
จริงๆ แล้วการคำนวณจาก MySQL ทำได้ง่ายมากครับ

ก็คือหาค่ามาให้คำนวณให้ได้ให้หมดทุกค่าครับ

แต่ยังงงๆ ของคุณหมอ white ครับตรง

สูตร {[140 - age(year)] x BW x 0.85 (if sex=female)} / (72 x creatinine)

กับ

สูตร {[140 - age(year)] x BW} / (72 x creatinine)
โดย age มาจาก ?
bw จาก opdscreen.bw
cr จาก opdscreen.creatinine
sex จาก patient.sex ถ้า sex = 2 ต้องคูณทั้งหมดด้วย 0.85 อีกที

ตกลงว่า 0.85 ต้องคูณตรงไหนกันแน่ครับ

แต่ยังไงก็ลองเอา SQL แบบนี้ไปปรับใช้ดูครับ

คุณหมอลองตรวจสอบอีกครั้งนะครับว่าถูกต้องหรือป่าวครับ

โค๊ด: SQL
  1. SELECT p.hn,o.vn,o.bw,o.creatinine,v.age_y,p.sex,
  2. (((140-v.age_y)*o.bw)/(72*o.creatinine)*IF(p.sex='1',1,0.85)) AS crcl
  3. FROM opdscreen o,vn_stat v,patient p
  4. WHERE o.vn=v.vn AND p.hn=o.hn AND o.bw>0 AND o.creatinine>0 LIMIT 100
  5.  

ลองดูครับ

 ;D ;D ;D
หัวข้อ: Re: ดูผล lab ล่าสุด
เริ่มหัวข้อโดย: udomchok ที่ กันยายน 25, 2008, 21:37:39 PM
อ้างจาก: SrWoOd link=topic=7239.msg37429#msg37429 date=1222324625
[code=sql
select p.hn,o.vn,o.bw,o.creatinine,v.age_y,p.sex,
(((140-v.age_y)*o.bw)/(72*o.creatinine)*if(p.sex='1',1,0.85)) as crcl
from opdscreen o,vn_stat v,patient p
where o.vn=v.vn and p.hn=o.hn and o.bw>0 and o.creatinine>0 limit 100
[/code]
ลองดูครับ
 ;D ;D ;D

ยอดเยี่ยมครับ
หัวข้อ: Re: ดูผล lab ล่าสุด
เริ่มหัวข้อโดย: white ที่ กันยายน 26, 2008, 04:09:31 AM
จริงๆ แล้วการคำนวณจาก MySQL ทำได้ง่ายมากครับ

ก็คือหาค่ามาให้คำนวณให้ได้ให้หมดทุกค่าครับ

แต่ยังงงๆ ของคุณหมอ white ครับตรง

ตกลงว่า 0.85 ต้องคูณตรงไหนกันแน่ครับ

แต่ยังไงก็ลองเอา SQL แบบนี้ไปปรับใช้ดูครับ

คุณหมอลองตรวจสอบอีกครั้งนะครับว่าถูกต้องหรือป่าวครับ


ถ้าอย่างนั้นก็ต้องเป็นอย่างนี้ครับ

โค๊ด: SQL
  1. SELECT p.hn,o.vn,o.bw,o.creatinine,v.age_y,p.sex,
  2. ((140-v.age_y) * o.bw * IF(p.sex='1',1,0.85)) / (72*o.creatinine) AS crcl
  3. FROM opdscreen o,vn_stat v,patient p
  4. WHERE o.vn=v.vn AND p.hn=o.hn AND o.bw>0 AND o.creatinine>0 LIMIT 100
  5.  

ขอบคุณครับ
ไม่รู้เลยนะเนี่ยกว่า MySQL ใช้ function if และ / ได้เลย
หัวข้อ: Re: ดูผล lab ล่าสุด
เริ่มหัวข้อโดย: udomchok ที่ กันยายน 26, 2008, 20:22:25 PM
โค๊ด: SQL
  1. SELECT p.hn,o.vn,o.bw,o.creatinine,v.age_y,p.sex,
  2. ((140-v.age_y) * o.bw * IF(p.sex='1',1,0.85)) / (72*o.creatinine) AS crcl
  3. FROM opdscreen o,vn_stat v,patient p
  4. WHERE o.vn=v.vn AND p.hn=o.hn AND o.bw>0 AND o.creatinine>0 LIMIT 100
  5.  

โค๊ด: SQL
  1. SELECT p.hn,o.vn,o.bw,o.creatinine,v.age_y,p.sex,
  2. (((140-v.age_y)*o.bw)/(72*o.creatinine)*IF(p.sex='1',1,0.85)) AS crcl
  3. FROM opdscreen o,vn_stat v,patient p
  4. WHERE o.vn=v.vn AND p.hn=o.hn AND o.bw>0 AND o.creatinine>0 LIMIT 100
  5.  

ได้เท่ากันแหละครับ จะคูณก่อนหรือคูณหลัง เพาะไม่มีวงเล็บกำกับ ก็ทำจากซ้ายไปขวา เพราะฉะนั้นจะคูณก่อนหาร หรือหารก่อนคูณก็ได้เท่ากันครับ
หัวข้อ: Re: ดูผล lab ล่าสุด
เริ่มหัวข้อโดย: white ที่ กันยายน 30, 2008, 07:01:32 AM
ถามเพิ่มครับ
การใส่ script เกี่ยวกับ font style ยังไงหรือครับ
เช่น ถ้า BP เช่น SBP >140 ให้เปลี่ยนตัวเลขเป็นตัวหนา

ขอบคุณครับ
หัวข้อ: Re: ดูผล lab ล่าสุด
เริ่มหัวข้อโดย: SrWooD ที่ กันยายน 30, 2008, 08:23:00 AM
อ.naj เคยให้ความรู้เรื่อง font style ไว้ครับ

ว่าให้ทำเป็น DBText 2 อันครับแล้วเขียน code ให้ Visible ตามเงื่อนไขครับ

เพราะผมเคยลองเขียน code ให้ไปกำหนดที่ font style โดยตรงแล้วไม่ได้

ลองดูครับ

 ;D ;D ;D
หัวข้อ: Re: ดูผล lab ล่าสุด
เริ่มหัวข้อโดย: bannok ที่ ธันวาคม 11, 2008, 15:37:58 PM
ถามเพิ่มหน่อยครับ รายงานนี้ถ้าหากต้องการเพิ่มรายการยา เป็น 3 ครั้งล่าสุดเหมือนกับ lab ด้วยนะครับ และอีกอย่างครับจะนำมาใช้กับคนไข้โรคเรื้อรัง เช่น เบาหวานอย่างนี้ครับ โดยที่เราไม่ด้องใส่เลข vn แต่กลับเป็นเลือกคลีนิคแทน จะได้ไหมครับ เหมือนตัวอย่างข้างล่างที่แนบมาคับ
หัวข้อ: Re: ดูผล lab ล่าสุด
เริ่มหัวข้อโดย: atit ที่ ธันวาคม 11, 2008, 18:48:22 PM
ขอคุณทุกคำตอบเลยครับได้ความรู้เพิ่มมากมายเลย
หัวข้อ: Re: ดูผล lab ล่าสุด
เริ่มหัวข้อโดย: white ที่ ธันวาคม 12, 2008, 21:48:04 PM
ถามเพิ่มหน่อยครับ รายงานนี้ถ้าหากต้องการเพิ่มรายการยา เป็น 3 ครั้งล่าสุดเหมือนกับ lab ด้วยนะครับ และอีกอย่างครับจะนำมาใช้กับคนไข้โรคเรื้อรัง เช่น เบาหวานอย่างนี้ครับ โดยที่เราไม่ด้องใส่เลข vn แต่กลับเป็นเลือกคลีนิคแทน จะได้ไหมครับ เหมือนตัวอย่างข้างล่างที่แนบมาคับ

ถ้าเป็นรายการยา 3 ครั้งสุดท้ายไม่เยอะไปหรือครับ ตาลาย
แล้วถ้าจะไม่เอา dose ยาด้วยคิดว่าไม่มีประโยชน์ครับ (ความเห็นส่วนตัว)
ส่วนเลือกคลินิกแทนนี่ ขอคำอธิบายเพิ่มหน่อยครับ  ;)
หัวข้อ: Re: ดูผล lab ล่าสุด
เริ่มหัวข้อโดย: bannok ที่ ธันวาคม 15, 2008, 11:12:13 AM
ตามนี่ครับ

select ov.vn,ov.hn,ov.vstdate,concat(pt.pname,' ',pt.fname,' ',pt.lname) as ptname,pt.cid,ptty.name,pttyno.pttypeno,op.icode,
concat(d.name,' ',d.strength) as drugname,concat(du.name1,' ',du.name2,' ',du.name3) as drugusage,os.bps,os.bpd,os.bmi,os.bw,os.cc,os.pe,os.height
from ovst ov  left outer join patient pt on pt.hn=ov.hn
left outer join pttypeno pttyno on pttyno.hn=ov.hn
left outer join pttype ptty on ptty.pttype=pttyno.pttype
left outer join opitemrece op on op.vn=ov.vn
left outer join drugitems d on d.icode=op.icode
left outer join drugusage du on du.drugusage=op.drugusage
left outer join opdscreen os  on os.vn=ov.vn
 where ov.vn='511209080120'  and op.icode like '1%'

คือว่ารายงานนี้จะออกตาม เลข vn =XXXXXXXXXXXXX นี้ครับ ถ้าต้องการที่จะดึงรายการทั้งหมดของผู้ป่วยในคลีนิคเบาหวานต้องแก้คำสั่งยังไงครับ
หัวข้อ: Re: ดูผล lab ล่าสุด
เริ่มหัวข้อโดย: white ที่ ธันวาคม 15, 2008, 23:00:02 PM
รายชื่อคนไข้ของคลินิกทั้งหมดอยู่ในตาราง clinicmember
ส่วนรหัส clinic อยู่ในตาราง clinic
ก็แค่เอา hn ทั้งหมดที่อยู่ใน clinicmember โดยมีรหัสคลินิกเท่ากับรหัสคลินิกที่ต้องการ

แต่ว่าจะพิมพ์ยังไงนี่สิ
เพราะพิมพ์ทีนึงจะเป็นรายการของทุกคนเลย ไม่ได้ออกเป็นรายคน
ต้องมา select เฉพาะกลุ่มอีก ไม่งั้นก็พิมพ์ออกมายาวเป็นหางว่าง ไปถึงดวงจันทร์
หัวข้อ: Re: ดูผล lab ล่าสุด
เริ่มหัวข้อโดย: bannok ที่ ธันวาคม 16, 2008, 08:00:26 AM
 ??? ??? ???
หัวข้อ: Re: ดูผล lab ล่าสุด
เริ่มหัวข้อโดย: thannawe ที่ ธันวาคม 16, 2008, 09:13:46 AM
รายชื่อคนไข้ของคลินิกทั้งหมดอยู่ในตาราง clinicmember
ส่วนรหัส clinic อยู่ในตาราง clinic
ก็แค่เอา hn ทั้งหมดที่อยู่ใน clinicmember โดยมีรหัสคลินิกเท่ากับรหัสคลินิกที่ต้องการ

แต่ว่าจะพิมพ์ยังไงนี่สิ
เพราะพิมพ์ทีนึงจะเป็นรายการของทุกคนเลย ไม่ได้ออกเป็นรายคน
ต้องมา select เฉพาะกลุ่มอีก ไม่งั้นก็พิมพ์ออกมายาวเป็นหางว่าง ไปถึงดวงจันทร์

ถูกครับ   ;D
ต้องการข้อมูลคนไข้ทุกคนที่อยู่ในคลีนิกเหรอคับ
มันจะมาทั้งคลีนิกเลยนะครับ
เลือกเป็น visit อ่ะดีแล้วครับ แล้วก็โชว์ คลีนิกว่าเป็นคลีนิกอะไร แบบนี้ไม่ได้เหรอคับ
ถ้าจะเอารายงานคนไข้อยู่ในคลีนิก นั้นๆ ลิสมาเป็นรายชื่อ อีกรายงานดีกว่าไหมคับ
แต่ถ้าจะทำทุกคนก็ต้องตามนั้นครับ มันจะเยอะนะคับ
หัวข้อ: Re: ดูผล lab ล่าสุด
เริ่มหัวข้อโดย: bannok ที่ ธันวาคม 16, 2008, 11:30:42 AM
รู้ว่าเยอะครับแต่ว่าเจ้าหน้าที่เขาต้องการข้อมูลทั้งหมดในคลีนิคครับ เห็นว่าต้องการเก็บข้อมูลเอาไว้ครับ
 :P :-[ :-X :-\ :-* :'(
หัวข้อ: Re: ดูผล lab ล่าสุด
เริ่มหัวข้อโดย: atit ที่ ธันวาคม 18, 2008, 20:07:09 PM
รายชื่อคนไข้ของคลินิกทั้งหมดอยู่ในตาราง clinicmember
ส่วนรหัส clinic อยู่ในตาราง clinic
ก็แค่เอา hn ทั้งหมดที่อยู่ใน clinicmember โดยมีรหัสคลินิกเท่ากับรหัสคลินิกที่ต้องการ

แต่ว่าจะพิมพ์ยังไงนี่สิ
เพราะพิมพ์ทีนึงจะเป็นรายการของทุกคนเลย ไม่ได้ออกเป็นรายคน
ต้องมา select เฉพาะกลุ่มอีก ไม่งั้นก็พิมพ์ออกมายาวเป็นหางว่าง ไปถึงดวงจันทร์

ถูกครับ   ;D
ต้องการข้อมูลคนไข้ทุกคนที่อยู่ในคลีนิกเหรอคับ
มันจะมาทั้งคลีนิกเลยนะครับ
เลือกเป็น visit อ่ะดีแล้วครับ แล้วก็โชว์ คลีนิกว่าเป็นคลีนิกอะไร แบบนี้ไม่ได้เหรอคับ
ถ้าจะเอารายงานคนไข้อยู่ในคลีนิก นั้นๆ ลิสมาเป็นรายชื่อ อีกรายงานดีกว่าไหมคับ
แต่ถ้าจะทำทุกคนก็ต้องตามนั้นครับ มันจะเยอะนะคับ

ถ้าจะเอารายงานคนไข้อยู่ในคลีนิก นั้นๆ ลิสมาเป็นรายชื่อ อีกรายงานดีกว่าไหมคับ
หัวข้อ: Re: ดูผล lab ล่าสุด
เริ่มหัวข้อโดย: มนตรี บอยรักยุ้ยคนเดียว ที่ ธันวาคม 18, 2008, 20:19:04 PM
ถ้าจะเอารายงานคนไข้อยู่ในคลีนิก นั้นๆ ลิสมาเป็นรายชื่อ อีกรายงานดีกว่าไหมคับ
อีกรายงานดีกว่าไหมคับ
หัวข้อ: Re: ดูผล lab ล่าสุด
เริ่มหัวข้อโดย: bannok ที่ ธันวาคม 19, 2008, 11:13:38 AM
แล้วผมควรแก้ไขยังไงดีครับ เพราะว่าเจ้าหน้าที่เขาต้องการแบบนี้นะครับ
 ??? ??? ??? ??? ???
หัวข้อ: Re: ดูผล lab ล่าสุด
เริ่มหัวข้อโดย: bannok ที่ ธันวาคม 19, 2008, 13:07:14 PM
แล้วถ้าเอารายงานตัวนี้ โดยถ้าเราต้องการคนไข้รายอื่นให้มันขึ้น popup คล้ายๆกับ popup วันที่ได้ไหมครับ แต่เปลี่ยนเป็นเราใส่หมายเลข vn แทนโดยเราไม่ต้องเข้าไปแก้ในโค้ดทุกครั้งที่ต้องการคนไข้รายอื่นเพียงแค่เรารู้ vn ก็ได้