BMS-HOSxP Community

HOSxP => Report Exchange => ข้อความที่เริ่มโดย: pongnk213 ที่ พฤศจิกายน 21, 2010, 23:18:23 PM

หัวข้อ: ช่วยดูรายงานสรุปจำนวนผู้ป่วยโรคเรื้อรังให้หน่อยครับ
เริ่มหัวข้อโดย: pongnk213 ที่ พฤศจิกายน 21, 2010, 23:18:23 PM
อยากได้คำสั่งนับผู้ที่มีโรคประจำตัว 2 โรคคือเป็นทั้งDMและHT ในตารางperson_chronic
 ผมทำได้แต่โรคเดียว ตามรายงานที่postครับ
หัวข้อ: Re: ช่วยดูรายงานสรุปจำนวนผู้ป่วยโรคเรื้อรังให้หน่อยครับ
เริ่มหัวข้อโดย: เกื้อกูล ครับ.. ที่ พฤศจิกายน 22, 2010, 08:35:41 AM
select p.person_id ,p.clinic,p2.person_id,p2.clinic  from person_chronic  p
left outer join person_chronic p2 on p.person_id=p2.person_id
where p.clinic<>p2.clinic
order by p.person_id

ลองแบบเบื้องต้นครับ..ผมทำได้แค่นี้..
หัวข้อ: Re: ช่วยดูรายงานสรุปจำนวนผู้ป่วยโรคเรื้อรังให้หน่อยครับ
เริ่มหัวข้อโดย: Khuad ที่ พฤศจิกายน 22, 2010, 14:26:07 PM

อยากได้คำสั่งนับผู้ที่มีโรคประจำตัว 2 โรคคือเป็นทั้งDMและHT ในตารางperson_chronic
 ผมทำได้แต่โรคเดียว ตามรายงานที่postครับ


... ดูจากรายงานที่คุณ pongnk213 แนบมาให้นะครับ ...



   คำสั่งในรายงานที่จะนับลองใช้เป็น

  Value := GetSQLIntegerData('select count(pc1.person_id) as cc '+
  ' from person_chronic pc1,person_chronic pc2,person p '+
  ' where pc1.person_id = pc2.person_id '+
  ' and pc1.clinic = "001" and pc2.clinic = "002" '+
  ' 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" ');




   หรือจะใช้แบบข้างล่างนี้ก็ได้ครับ

  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" ')+') ');

  ส่วนคำสั่งที่จะเป็นผลรวมก็ตัดตรง
  ' and p.village_id = "'+DBPipeline['village_id']+'" '+
  ออกไปครับ

  โดยที่ รหัสคลีนิค DM คือ 001 ส่วน HT คือ 002 นะครับ ...  :D ....

หัวข้อ: Re: ช่วยดูรายงานสรุปจำนวนผู้ป่วยโรคเรื้อรังให้หน่อยครับ
เริ่มหัวข้อโดย: Khuad ที่ พฤศจิกายน 22, 2010, 14:53:09 PM
... ทีนี้ในรายงานตรงส่วนของ DM อย่างเดียว   
    ถ้าหมายถึงคนที่เป็นเบาหวานอย่างเดียว ไม่ได้เป็นความดันร่วมด้วย คงใช้คำสั่งแบบในรายงานที่แนบไว้ไม่ได้ครับ ข้อมูลจะผิดพลาด เพราะจะนับคนที่เป็นทั้งเบาหวานและความดันมารวมด้วย ในกรณีของ HT อย่างเดียว ก็เป็นไปในทางเดียวกันครับ ...


  ในส่วนของ DM อย่างเดียว  ลองใช้คำสั่งเป็น

  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 not in ('+GetSQLSubQueryData('select pc2.person_id '+
  ' from person_chronic pc2 where pc2.clinic = "002" ')+') ');

    และในส่วนของ HT อย่างเดียว  ลองใช้คำสั่งเป็น

  Value := GetSQLIntegerData('select count(pc1.person_id) as cc '+
  ' from person_chronic pc1,person p '+
  ' where pc1.clinic = "002" '+
  ' 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 not in ('+GetSQLSubQueryData('select pc2.person_id '+
  ' from person_chronic pc2 where pc2.clinic = "001" ')+') ');


  ตรงผลรวมก็ตัดตรง
  ' and p.village_id = "'+DBPipeline['village_id']+'" '+
  ออกไปเช่นกันครับ


... ลองทดสอบดูนะครับ ....  :D ...
หัวข้อ: Re: ช่วยดูรายงานสรุปจำนวนผู้ป่วยโรคเรื้อรังให้หน่อยครับ
เริ่มหัวข้อโดย: pongnk213 ที่ พฤศจิกายน 22, 2010, 17:54:52 PM
ขอบคุณครับ
จะลองทำดูนะครับ
หัวข้อ: Re: ช่วยดูรายงานสรุปจำนวนผู้ป่วยโรคเรื้อรังให้หน่อยครับ
เริ่มหัวข้อโดย: bannok ที่ มกราคม 05, 2011, 15:55:23 PM
อยากได้คำสั่งนับผู้ที่มีโรคประจำตัว 2 โรคคือเป็นทั้งDMและHT ในตารางperson_chronic
 ผมทำได้แต่โรคเดียว ตามรายงานที่postครับ

ถ้าอยากได้รายงานทั้งหมดในเขตรับผิดชอบของโรงบาลแก้ยังไงครับ