BMS-HOSxP Community
HOSxP => แจ้งปัญหา / ขอความช่วยเหลือ => ข้อความที่เริ่มโดย: jam10 ที่ เมษายน 23, 2012, 10:59:05 AM
-
ใช้ Valiable คับ เกี่ยวกับระดับเกรดของ bps,bpd แต่มันผลออกมาคลาดเคลื่อนคับ ขอคำแนะนำด้วยคับ
Valiable ( bps,bpd )
Value :=GetSQLSubQueryData('select concat(FORMAT(o.bps,000) ,"/",FORMAT(o.bpd,000))from opdscreen o '+
'where hn="'+DBPipeline['name3']+'" order by vstdate desc limit 1');
*****************************************************************
ส่วนการแบ่งระดับเกรดของ ( bps,bpd )
ใช้คำสั่งแบบนี้ครับ
Value:=GetSQLDoubleData('select bps,bpd from opdscreen where hn="'+DBPipeline['name3']+'" and '+
' vstdate between "'+ds1+'" and "'+ds2+'"');
if Value < 140 then
Value := ' »¡µÔ'
else if (Value >= 140) and (Value <= 159) then
Value := '1'
else if (Value >= 160) and (Value <= 179) then
Value := '2'
else if Value >= 183 then
Value := '3';
รบกวนอาจาร์ยแนะนำด้วยครับ.. :D :D
-
ดันคับ ใกล้จะตกแล้ว... ;D
-
เออคือ จะนับบนหรือล่างอ่าครับ :) :) :)
-
ถ้าเงื่อนไขเขาต้องการแบบนี้ครับ
bps bpd
140-159 90-99 = grade 1
160-179 100-109 = grade 2
>= 180 >=110 = grade 3
แบบนี้ครับ ผมเขียนไม่ถูกครับ
เออคือ จะนับบนหรือล่างอ่าครับ :) :) :)
-
ได้ลองแยก bps กับ bpd กันคนลง variable หรือยังครับ อาจจะพอได้นะครับ
-
พอจะเขียนให้ดูได้ไหมคับ ผมมึนไปหมดแล้วคับ.. ???
ได้ลองแยก bps กับ bpd กันคนลง variable หรือยังครับ อาจจะพอได้นะครับ
-
ไม่รู้ว่าตรงตามความต้องการหรือเปล่านะครับ ลองๆดู
สำหรับตัวบน ---- Value:=GetSQLDoubleData('select bps from opdscreen where hn="'+DBPipeline['hn']+'" and '+
' vstdate between "'+ds1+'" and "'+ds2+'"');
if Value < 140 then
Value := ' »¡µÔ'
else if (Value >= 140) and (Value <= 159) then
Value := 'Grade1'
else if (Value >= 170) and (Value <= 179) then
Value := 'Grade2'
else if Value >= 183 then
Value := 'Grade3';
สำหรับตัวล่าง
Value:=GetSQLDoubleData('select bpd from opdscreen where hn="'+DBPipeline['hn']+'" and '+
' vstdate between "'+ds1+'" and "'+ds2+'"');
if Value < 90 then
Value := ' »¡µÔ'
else if (Value >= 90) and (Value <= 99) then
Value := 'G1'
else if (Value >= 100) and (Value <= 109) then
Value := 'G2'
else if Value >= 110 then
Value := 'G3';
-
ขอบคุณคับ ขอลองดูก่อนคับ :D
ไม่รู้ว่าตรงตามความต้องการหรือเปล่านะครับ ลองๆดู
สำหรับตัวบน ---- Value:=GetSQLDoubleData('select bps from opdscreen where hn="'+DBPipeline['hn']+'" and '+
' vstdate between "'+ds1+'" and "'+ds2+'"');
if Value < 140 then
Value := ' »¡µÔ'
else if (Value >= 140) and (Value <= 159) then
Value := 'Grade1'
else if (Value >= 170) and (Value <= 179) then
Value := 'Grade2'
else if Value >= 183 then
Value := 'Grade3';
สำหรับตัวล่าง
Value:=GetSQLDoubleData('select bpd from opdscreen where hn="'+DBPipeline['hn']+'" and '+
' vstdate between "'+ds1+'" and "'+ds2+'"');
if Value < 90 then
Value := ' »¡µÔ'
else if (Value >= 90) and (Value <= 99) then
Value := 'G1'
else if (Value >= 100) and (Value <= 109) then
Value := 'G2'
else if Value >= 110 then
Value := 'G3';
-
คลาดเคลื่อนอยู่คับ 163/88 ปกติ ตามจริงต้องเป็น เกรด 2 ถ้าตัวหน้าหรือตัวหลังมีค่าสูงตามที่กำหนด จะต้องเลือกค่าใดค่าหนึ่ง แล้วแปลผลออกมาเป็นเกรดอ่ะคับ
-
ส่งตัวรายงานมาให้ ท่าน เทพ ๆ ช่วยดูครับ
-
อ.ยม ขั้นเทพ แล้ว ;D :D
-
อ.ยม ขั้นเทพ แล้ว ;D :D
อ เทพ กิจ ก้อ ว่า ไปครับ ได้ความรู้ จาก อ อ อ ใน บอร์ด นี้แหล่ะครับ
-
ลองดูนะครับ ไม่รู้ว่าจะถูกใจหรือเปล่าครับ
procedure Variable4OnCalc(var Value: Variant);
begin
if (DBPipeline['bps']>= 140) and (DBPipeline['bps']<=159)
and (DBPipeline['bpd']>=90) and (DBPipeline['bpd']<=99) then
Value := 'Grade 1'
else if (DBPipeline['bps']>= 160) and (DBPipeline['bps']<=179)
and (DBPipeline['bpd']>=100) and (DBPipeline['bpd']<=109) then
Value := 'Grade 2'
else if (DBPipeline['bps']>= 180) and (DBPipeline['bpd']>=110) then
Value := 'Grade 3';
end;
-
ขอบคุณค้าบ คุณ pasin ขอลองก่อนน่ะคับ :D
ลองดูนะครับ ไม่รู้ว่าจะถูกใจหรือเปล่าครับ
procedure Variable4OnCalc(var Value: Variant);
begin
if (DBPipeline['bps']>= 140) and (DBPipeline['bps']<=159)
and (DBPipeline['bpd']>=90) and (DBPipeline['bpd']<=99) then
Value := 'Grade 1'
else if (DBPipeline['bps']>= 160) and (DBPipeline['bps']<=179)
and (DBPipeline['bpd']>=100) and (DBPipeline['bpd']<=109) then
Value := 'Grade 2'
else if (DBPipeline['bps']>= 180) and (DBPipeline['bpd']>=110) then
Value := 'Grade 3';
end;
-
รบกวนด้วยครับ ใส่ variable ไปแล้วผลตรงเกรดออกมาเพี้ยนๆไม่ตรงครับ ทั้ง bps และ fbs เลยคับ :'(
-
ดันหน่อยครับ... ;D
รบกวนด้วยครับ ใส่ variable ไปแล้วผลตรงเกรดออกมาเพี้ยนๆไม่ตรงครับ ทั้ง bps และ fbs เลยคับ :'(
-
ลองคำสั่งนี้ดู
select o.vn,o.hn,c.number,concat(p.pname,p.fname," ",p.lname) as ptname
,o.vstdate,o.vsttime,s.bw,s.height,s.bmi,s.bps,s.bpd
,if(s.bps between 140 and 159 or s.bpd between 90 and 99,'1'
,if(s.bps between 160 and 179 or s.bpd between 100 and 109,'2'
,if(s.bps>=180 or s.bpd>=110,'3'
,if(s.bps is null or s.bpd is null,'Error',' ')))) 'BP_Grade'
,if(s.bps between 140 and 159 or s.bpd between 90 and 99,1,0) 'BP_Grade1'
,if(s.bps between 160 and 179 or s.bpd between 100 and 109,1,0) 'BP_Grade2'
,if(s.bps>=180 or s.bpd>=110,1,0) 'BP_Grade3'
,s.tg,s.ldl,s.hdl,s.hbA1c,s.creatinine,s.ua
,s.fbs
,if(s.fbs is null,'Error'
,if(s.fbs<=125,'Normal',if(s.fbs<=154,'1',if(s.fbs<=182,'2','3')))) 'FBS_Grade'
,if(s.fbs between 126 and 154,1,0) 'FBS_Grade1'
,if(s.fbs between 155 and 182,1,0) 'FBS_Grade2'
,if(s.fbs>=183,1,0) 'FBS_Grade3'
from ovst o
left join patient p on p.hn=o.hn
left join opdscreen s on o.vn=s.vn
left join clinicmember c on c.hn=o.hn
where o.vstdate between '2012-01-01' and '2012-06-30'
and c.clinic ="001"
order by o.hn,o.vn
-
ได้แล้วครับ ท่าน woravet สุดยอดมากคับ ขอบคุณมากๆคับ
ถ้าเสร็จสมบูรณ์จะได้นำมาโพสต์ให้ใช้ต่อไปครับ :D
ป.ล. ถ้าผ่านมาแถวนี้อย่าลืมแวะมาทักทายกันน่ะคับ ยินดีต้อนรับคับผม
ลองคำสั่งนี้ดู
select o.vn,o.hn,c.number,concat(p.pname,p.fname," ",p.lname) as ptname
,o.vstdate,o.vsttime,s.bw,s.height,s.bmi,s.bps,s.bpd
,if(s.bps between 140 and 159 or s.bpd between 90 and 99,'1'
,if(s.bps between 160 and 179 or s.bpd between 100 and 109,'2'
,if(s.bps>=180 or s.bpd>=110,'3'
,if(s.bps is null or s.bpd is null,'Error',' ')))) 'BP_Grade'
,if(s.bps between 140 and 159 or s.bpd between 90 and 99,1,0) 'BP_Grade1'
,if(s.bps between 160 and 179 or s.bpd between 100 and 109,1,0) 'BP_Grade2'
,if(s.bps>=180 or s.bpd>=110,1,0) 'BP_Grade3'
,s.tg,s.ldl,s.hdl,s.hbA1c,s.creatinine,s.ua
,s.fbs
,if(s.fbs is null,'Error'
,if(s.fbs<=125,'Normal',if(s.fbs<=154,'1',if(s.fbs<=182,'2','3')))) 'FBS_Grade'
,if(s.fbs between 126 and 154,1,0) 'FBS_Grade1'
,if(s.fbs between 155 and 182,1,0) 'FBS_Grade2'
,if(s.fbs>=183,1,0) 'FBS_Grade3'
from ovst o
left join patient p on p.hn=o.hn
left join opdscreen s on o.vn=s.vn
left join clinicmember c on c.hn=o.hn
where o.vstdate between '2012-01-01' and '2012-06-30'
and c.clinic ="001"
order by o.hn,o.vn
-
พอจะมีรายตัวเต็มเปล่าครับ ขอหน่อยครับผม พอดีเค้าให้หา
BP <120/80,
120-139/80-89,
140-159/90-99
,160-179/100-109
>180/110 ในผู้ป่วยโรคความดันโลหิตสูง
และ FBS <100,
100-125
126-154
155-182
>=183 ในผู้ป่วยโรคเบาหวาน ครับ รบกวนหน่อยครับผม
-
ลองดูแนวนี้ครับ..ได้รับมาจากเครือข่าย อีกที...จ.เลย..และ...เทพอีกหลายคน..ปล่อยให้ ลองเอาไปดูคร่าว ๆ ครับ..ปรับแก้ไขรหัสคลินิกตามต้องการ..ก็ได้ถ้าไม่แสดงผลของรายงาน
-
ลองคำสั่งนี้ดู
select o.vn,o.hn,c.number,concat(p.pname,p.fname," ",p.lname) as ptname
,o.vstdate,o.vsttime,s.bw,s.height,s.bmi,s.bps,s.bpd
,if(s.bps between 140 and 159 or s.bpd between 90 and 99,'1'
,if(s.bps between 160 and 179 or s.bpd between 100 and 109,'2'
,if(s.bps>=180 or s.bpd>=110,'3'
,if(s.bps is null or s.bpd is null,'Error',' ')))) 'BP_Grade'
,if(s.bps between 140 and 159 or s.bpd between 90 and 99,1,0) 'BP_Grade1'
,if(s.bps between 160 and 179 or s.bpd between 100 and 109,1,0) 'BP_Grade2'
,if(s.bps>=180 or s.bpd>=110,1,0) 'BP_Grade3'
,s.tg,s.ldl,s.hdl,s.hbA1c,s.creatinine,s.ua
,s.fbs
,if(s.fbs is null,'Error'
,if(s.fbs<=125,'Normal',if(s.fbs<=154,'1',if(s.fbs<=182,'2','3')))) 'FBS_Grade'
,if(s.fbs between 126 and 154,1,0) 'FBS_Grade1'
,if(s.fbs between 155 and 182,1,0) 'FBS_Grade2'
,if(s.fbs>=183,1,0) 'FBS_Grade3'
from ovst o
left join patient p on p.hn=o.hn
left join opdscreen s on o.vn=s.vn
left join clinicmember c on c.hn=o.hn
where o.vstdate between '2012-01-01' and '2012-06-30'
and c.clinic ="001"
order by o.hn,o.vn
แนะนำให้คำนวนจากBP สูงก่อนครับเพราะถ้า bp 181/90 จะกลายเป็น grade 1 เท่านั้นครับ