ผู้เขียน หัวข้อ: ช่วยดูรายงานสรุปจำนวนผู้ป่วยโรคเรื้อรังให้หน่อยครับ  (อ่าน 9298 ครั้ง)

0 สมาชิก และ 4 บุคคลทั่วไป กำลังดูหัวข้อนี้

ออฟไลน์ pongnk213

  • Full Member
  • ***
  • กระทู้: 146
  • Respect: +1
    • ดูรายละเอียด
อยากได้คำสั่งนับผู้ที่มีโรคประจำตัว 2 โรคคือเป็นทั้งDMและHT ในตารางperson_chronic
 ผมทำได้แต่โรคเดียว ตามรายงานที่postครับ
Mr.ATIPONG  SOOKPEN
HOSxP_PCU สอ.บ้านนาจาน
สสอ.นครไทย  จ.พิษณุโลก
เริ่มใช้ วันที่ 1 ก.ค.2552
mail : Atipong205@gmail.com
MSN : Atipong205@hotmail.com
Server : HP ML110 G5 Ram 2 Gb.
ทดสอบ Centos 4.7 ServerCD, MySQL Percona XtraDB 5.1.45
ขึ้นระบบโดย Mr.Komkrit Noenpoempisute Admin สสอ.นครไทย

ออฟไลน์ เกื้อกูล ครับ..

  • Hero Member
  • *****
  • กระทู้: 12,611
  • Respect: +169
    • ดูรายละเอียด
    • โรงพยาบาลปากท่อ
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

ลองแบบเบื้องต้นครับ..ผมทำได้แค่นี้..
Implement  HOSxP  Start 2548 ---> NOW!
Station : 140 Client   V.3 Version  3.67.7.8
Server  : CENTOS 7 +MySQL maria 10.x.x

ออฟไลน์ Khuad

  • Hero Member
  • *****
  • กระทู้: 3,778
  • .. นางฟ้า ตัวไม่น้อยแล้ว ..
  • Respect: +10
    • ดูรายละเอียด

อยากได้คำสั่งนับผู้ที่มีโรคประจำตัว 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 ....

โรงพยาบาลวังน้อย   พระนครศรีอยุธยา ( รพช.30 เตียง )
Server : ProLiant DL120G6  Xeon X3450  RDIMM 12 Gb  2x256GB SSD Raid 1
OS : CentOS 6.3  DB : Percona 5.5.21

Slave : ProLiant ML110G6  Xeon X3430  UDIMM 8 Gb  2x300GB SAS Raid 1
OS : CentOS 6.3  DB : Percona 5.5.32

HOSxP version  3.57.xx.xx    เริ่มระบบ  เมษายน 2549

ออฟไลน์ Khuad

  • Hero Member
  • *****
  • กระทู้: 3,778
  • .. นางฟ้า ตัวไม่น้อยแล้ว ..
  • Respect: +10
    • ดูรายละเอียด
... ทีนี้ในรายงานตรงส่วนของ 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 ...
โรงพยาบาลวังน้อย   พระนครศรีอยุธยา ( รพช.30 เตียง )
Server : ProLiant DL120G6  Xeon X3450  RDIMM 12 Gb  2x256GB SSD Raid 1
OS : CentOS 6.3  DB : Percona 5.5.21

Slave : ProLiant ML110G6  Xeon X3430  UDIMM 8 Gb  2x300GB SAS Raid 1
OS : CentOS 6.3  DB : Percona 5.5.32

HOSxP version  3.57.xx.xx    เริ่มระบบ  เมษายน 2549

ออฟไลน์ pongnk213

  • Full Member
  • ***
  • กระทู้: 146
  • Respect: +1
    • ดูรายละเอียด
ขอบคุณครับ
จะลองทำดูนะครับ
Mr.ATIPONG  SOOKPEN
HOSxP_PCU สอ.บ้านนาจาน
สสอ.นครไทย  จ.พิษณุโลก
เริ่มใช้ วันที่ 1 ก.ค.2552
mail : Atipong205@gmail.com
MSN : Atipong205@hotmail.com
Server : HP ML110 G5 Ram 2 Gb.
ทดสอบ Centos 4.7 ServerCD, MySQL Percona XtraDB 5.1.45
ขึ้นระบบโดย Mr.Komkrit Noenpoempisute Admin สสอ.นครไทย

ออฟไลน์ bannok

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

ถ้าอยากได้รายงานทั้งหมดในเขตรับผิดชอบของโรงบาลแก้ยังไงครับ
Somchai  Lenyee  Promkiri Hospital  tel 075396123 ต่อ 165
เมล์ arsan_2005@hotmail.com
server IBM SYSTEM x3650M5  ram 32 G.
server IBM SYSTEM x3500M3  ram 16 G.
 Hosxp 3.63.3.10
OS:centos 7 mysql 10.1.10 MariaDB