BMS-HOSxP Community

HOSxP => แจ้งปัญหา / ขอความช่วยเหลือ => ข้อความที่เริ่มโดย: ToPPer_(thaicharoen_Hosp) ที่ กันยายน 10, 2010, 09:24:00 AM

หัวข้อ: รบกวนอาจารย์ทุกท่านแนะนำ SQL ดึงผู้ป่วยเบาหวานและเป็นความดันร่วมด้วยทีครับ
เริ่มหัวข้อโดย: ToPPer_(thaicharoen_Hosp) ที่ กันยายน 10, 2010, 09:24:00 AM
รบกวนอาจารย์ทุกท่านแนะนำ SQL ดึงผู้ป่วยเบาหวานและเป็นความดันร่วมด้วยทีครับ
ผมดึงข้อมูลจาก ICD10 เพราะคลินิคผมมีข้อมูลไม่ครบถ้วน
ผมใช้คำสั่งแบบนี้ไม่ทราบถูกใหมครับรบกวนแนะนำทีครับ  ผมไม่เก่งทำรายงานเลย ;D ;D
แต่ผู้บริหารอยากได้ รบกวนแนะนำทีครับ ขอบคุณทุกท่านครับ

อันนี้ผมดึง  HT  ถ้า DM ก็เปลี่ยน ICD10
select distinct(hn),icd10

from ovstdiag

where vstdate between "2009-08-01"and now() and icd10 between "I10"and"I15"


***อันนี้ผมดึงผู้ป่วยที่เป็น HT และ DM ด้วย ที่เป็น DM และ HT ร่วมด้วยแต่พอดึงแล้วข้อมูลเพี้ยน ;D ;D
select distinct(o1.hn),o1.icd10 as HT , o2.icd10 as DM

from ovstdiag  o1
left outer join ovstdiag o2 on o2.hn=o1.hn

where o1.vstdate between "2009-08-01"and now()
and o1.icd10 between "I10"and"I159"
and o2.icd10 between "E10" and "E149"

หรือท่านใดมีรายงานแบบนี้รบกวนขอด้วยนะครับ ขอบคุณเอาจารย์ทุกท่านที่แนะนำครับ

หัวข้อ: Re: รบกวนอาจารย์ทุกท่านแนะนำ SQL ดึงผู้ป่วยเบาหวานและเป็นความดันร่วมด้วยทีครับ
เริ่มหัวข้อโดย: mashimaro ที่ สิงหาคม 06, 2011, 16:37:53 PM
ช่วย ๆ กันครับ ผมก็นำลังไล่ดึงอยู่ครับ นำไปประยุกต์ดูครับ

select v.hn,v.vn,v.vstdate,concat(p.pname,' ',p.fname,' ',p.lname) as fullname,lo.lab_items_name_ref,lo.lab_order_result,v.pdx,
if (lo.lab_items_name_ref='Glucose',lo.lab_order_result,' ') as Gllab,
if (lo.lab_items_name_ref='Bun',lo.lab_order_result,' ') as Bunlab,
if (lo.lab_items_name_ref='Chol Total',lo.lab_order_result,' ') as Cholab,
if (lo.lab_items_name_ref='Chol HDL',lo.lab_order_result,' ') as Chol_HDL,
if (lo.lab_items_name_ref='Triglyceride',lo.lab_order_result,' ') as Triglyceride_HDL,
if (lo.lab_items_name_ref='Uric acid',lo.lab_order_result,' ') as Uric_acid,
if (lo.lab_items_name_ref='Hb A1c',lo.lab_order_result,' ') as Hb_A1c,
if (lo.lab_items_name_ref='Microalbumin',lo.lab_order_result,' ') as Microalbumin,
if (lo.lab_items_name_ref='Electrolyte',lo.lab_order_result,' ') as Electrolyte,
if (lo.lab_items_name_ref='Na',lo.lab_order_result,' ') as Na,
if (lo.lab_items_name_ref='K',lo.lab_order_result,' ') as K,
if (lo.lab_items_name_ref='CI',lo.lab_order_result,' ') as CI,
if (lo.lab_items_name_ref='tCO2',lo.lab_order_result,' ') as tCO2,
if (lo.lab_items_name_ref='Protein Strip',lo.lab_order_result,' ') as Protein_Strip,
if (lo.lab_items_name_ref='Mialbumin strip',lo.lab_order_result,' ') as Mialbumin_Strip,
os.cc
,bp.bps,bp.bpd,os.height,bmi
from vn_stat v
left outer join opdscreen os on os.vn=v.vn
left outer join opdscreen_bp bp on bp.vn=v.vn
left outer join patient p on v.hn=p.hn
left outer join lab_head lh on lh.vn=v.vn
left outer join lab_order lo on lo.lab_order_number=lh.lab_order_number
left outer join lab_items li on li.lab_items_code=lo.lab_items_code
where ((v.pdx like 'E10%') or (v.pdx like 'E11%') or (v.pdx like 'E12%') or (v.pdx like 'E13%')
or (v.pdx like 'E14%')) and (v.vstdate between '2011-04-01' and '2011-04-30')
and (lo.lab_items_name_ref in ('Glucose','Bun','Chol Total','Chol HDL','Triglyceride','Uric acid','Hb A1c''Microalbumin','Electrolyte','Na',
'K','CI','tCO2','Protein Strip','Mialbumin strip')) and lo.confirm='Y' and lo.lab_order_result<>'Negative'
group by v.vn
order by v.vn,v.vstdate,lo.lab_items_name_ref
หัวข้อ: Re: รบกวนอาจารย์ทุกท่านแนะนำ SQL ดึงผู้ป่วยเบาหวานและเป็นความดันร่วมด้วยทีครับ
เริ่มหัวข้อโดย: เกื้อกูล ครับ.. ที่ สิงหาคม 07, 2011, 10:27:37 AM
ได้หลายแนวคิด...นับโรคหลัก หรือ นับโรคร่วมด้วย  นับผู้รับบริการ

หรือ นับสมาชิกคลินิคโรคเรื้อรัง...
นับรายเก่าของหน่วยบริการ หรือรายใหม่ของหน่วยบริการ
นับจากเก่าในปี หรือใหม่ในปี
นับจากการเป็น 2 โรคร่วมกันแสดงว่า hn นั้นต้องเป็นทั้ง E10-E149 และต้องอยู่ในกลุ่ม I1O ด้วย...
หัวข้อ: Re: รบกวนอาจารย์ทุกท่านแนะนำ SQL ดึงผู้ป่วยเบาหวานและเป็นความดันร่วมด้วยทีครับ
เริ่มหัวข้อโดย: mashimaro ที่ สิงหาคม 07, 2011, 13:52:21 PM
อันนี้ผมดึง  HT  ถ้า DM ก็เปลี่ยน ICD10
select distinct(hn),icd10

from ovstdiag

where vstdate between "2009-08-01"and now() and icd10 between "I10"and"I15"

select distinct(o1.hn),o1.icd10 as HT , o2.icd10 as DM

from ovstdiag  o1
left outer join ovstdiag o2 on o2.hn=o1.hn

where o1.vstdate between "2009-08-01"and now()
and o1.icd10 between "I10"and"I159"
and o2.icd10 between "E10" and "E149"


1. อย่าดึงโดยการใช้คำสั่ง Distinct เพราะจะทำให้ได้ แค่หนึ่ง แต่มีการเปิด visit หลายครั้งครับใช้คำสั่ง Group by จะถูกต้องกว่าน่ะครับ

2. ผมไม่แน่ใจว่าถ้าใช้คำสั่ง Between กับข้อมูลที่เป็น String จะ ถูกต้องหรือเปล่าผมไม่แน่ใจนะครับ แต่ผมขอแน่ะนำว่าให้ใช้ คำสั่ง Like แทนครับ

ลองทำดูครับ ยังไงได้ผลอะไรก็มาบอกด้วยครับ เพราะผมก็กำลังทำข้อมูลเกี่ยวกับตัวนี้อยู่ครับ
หัวข้อ: Re: รบกวนอาจารย์ทุกท่านแนะนำ SQL ดึงผู้ป่วยเบาหวานและเป็นความดันร่วมด้วยทีครับ
เริ่มหัวข้อโดย: pongnk213 ที่ สิงหาคม 07, 2011, 16:30:38 PM
ลองศึกษาจากคำสั่งนี้ดูนะครับ เป็นคำสั่งให้นับผู้ป่วยที่เป็นทั้งความดันและเบาหวาน
ผมได้คำสั่งนี้จากบอร์ดครับ
Value := GetSQLIntegerData('select count(pc1.person_id) as cc '+
  ' from person_chronic pc1,person p '+
  ' where pc1.clinic = "001" '+
  ' and pc1.person_id = p.person_id '+
  ' and p.village_id = "'+DBPipeline['village_id']+'" '+
  ' and p.house_regist_type_id in ("1","3")' +
  ' and p.death = "N" '+
  ' and pc1.person_id in ('+GetSQLSubQueryData('select pc2.person_id '+
  ' from person_chronic pc2 where pc2.clinic = "002" ')+') ');
หัวข้อ: Re: รบกวนอาจารย์ทุกท่านแนะนำ SQL ดึงผู้ป่วยเบาหวานและเป็นความดันร่วมด้วยทีครับ
เริ่มหัวข้อโดย: เกื้อกูล ครับ.. ที่ สิงหาคม 07, 2011, 22:27:53 PM
ลองศึกษาจากคำสั่งนี้ดูนะครับ เป็นคำสั่งให้นับผู้ป่วยที่เป็นทั้งความดันและเบาหวาน
ผมได้คำสั่งนี้จากบอร์ดครับ
Value := GetSQLIntegerData('select count(pc1.person_id) as cc '+
  ' from person_chronic pc1,person p '+
  ' where pc1.clinic = "001" '+
  ' and pc1.person_id = p.person_id '+
  ' and p.village_id = "'+DBPipeline['village_id']+'" '+
  ' and p.house_regist_type_id in ("1","3")' +
  ' and p.death = "N" '+
  ' and pc1.person_id in ('+GetSQLSubQueryData('select pc2.person_id '+
  ' from person_chronic pc2 where pc2.clinic = "002" ')+') ');

อันนี้เป็น ในหมู่บ้านรับผิดชอบ..และต้องเป็นสมาชิกคลินิกโรคความดันและเบาหวาน...แต่ไม่ใช่ยอดผู้รับบริการประจำวัน..ของหน่วยบริการ มากกว่า...
หัวข้อ: Re: รบกวนอาจารย์ทุกท่านแนะนำ SQL ดึงผู้ป่วยเบาหวานและเป็นความดันร่วมด้วยทีครับ
เริ่มหัวข้อโดย: waradmin01 ที่ สิงหาคม 08, 2011, 01:01:24 AM
;D ;Dอันดับแรกต้องขอบคุณสำหรับโจษ ยากๆนี้ก่อนนะครับ ;D ;D
หลังจากได้โจษแล้วคิดสูตรออกมาได้แบบนี้ ไม่รู้ว่าถูกใจหรือถูกต้องตามคำถามหรือเปล่านะครับ ถ้าอาจาร์ยท่านใดดูแล้วไม่ถูกช่วยแนะนำด้วยครับ จะได้เอาไว้พัฒนาฝีมือต่อไป

select ov.hn,sum(if(icd10 Like "E10%" or icd10 Like "E11%" or icd10 Like "E12%" or icd10 Like "E13%" or icd10 Like "E14%",1,0)) as DM,
sum(if(icd10 Like "I10%" or icd10 Like "I11%" or icd10 Like "I12%" or icd10 Like "I13%" or icd10 Like "I14%" or icd10 Like "I15%",1,0)) as HT,
concat(pt.pname,pt.fname," ",pt.lname) as pt_name
from ovstdiag ov
left join patient pt on pt.hn=ov.hn
where ov.vstdate between "2011-01-01" and "2011-12-31"
group by ov.hn HAVING DM>0 and HT>0

แนวคิดให้ รวมจำนวนที่มีการ Dx ด้วยทั้ง 2 โรค ถ้ามีทั้ง  2 แสดงว่าเป็นร่วมกันหรือเปล่านา ????