ผู้เขียน หัวข้อ: ดูรายงานให้หน่อยคับ ถูกต้องไม? และประมวลผลช้ามาก แก้ไขอย่างไร  (อ่าน 6913 ครั้ง)

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

ออฟไลน์ golf_pk

  • Jr. Member
  • **
  • กระทู้: 72
  • ขอบคุณสังคมแห่งการแบ่งปัน สังคม hosxp
  • Respect: 0
    • ดูรายละเอียด
    • https://www.pkhos.moph.go.th
A =  ผู้สูงอายุ >= 60  ที่มารับบริการ
    โค้ด คือ 

     select count(distinct(hn))
     from vn_stat                                           
     where vstdate between "'+d1+'"and "'+d2+'"  and age_y>=60'

B = ผู้ป่วย NCD  ได้แก่  คลินิกเบาหวาน,ความดัน,หอบหืด,ไต,หัวใจ  ทั้งหมดกี่คนทุกอายุ
     โค้ดคือ
     
      select count(distinct(vn.hn))
      from depression_screen d1 
      left outer join depression_screen_evaluate d2 on d2.depression_screen_evaluate_id = d1.depression_screen_evaluate_id   
      left outer join suicide_screen_evaluate d3 on d3.suicide_screen_evaluate_id = d1.suicide_screen_evaluate_id           
      left outer join vn_stat vn on vn.vn = d1.vn       
      left outer join person p1 on p1.patient_hn=vn.hn   
     left outer join house h1 on h1.house_id=p1.house_id   
     left outer join village v1 on v1.village_id=h1.village_id
      left outer join thaiaddress t1 on t1.addressid=v1.address_id 
     left outer join patient p on p.hn=vn.hn                       
    LEFT OUTER JOIN clinicmember c ON p.hn=c.hn                 
    where vn.vstdate  between "'+d1+'" and "'+d2+'" and c.clinic in("1","10","2","9","13")


C = ผู้มารับบริการตั้งแต่ อายุ 60 ปีขึ้นไป ได้รับการคัดกรองภาวะซึมเศร้า 9Q มีกี่คน

    โค้ดคือ

     select count(distinct(vn.hn))
     from vn_stat vn                                               
     left outer join depression_screen d1 ON vn.vn=d1.vn           
     left outer join depression_screen_evaluate d2 on d2.depression_screen_evaluate_id = d1.depression_screen_evaluate_id 
     left outer join suicide_screen_evaluate d3 on d3.suicide_screen_evaluate_id = d1.suicide_screen_evaluate_id           
     left outer join patient p ON p.hn=vn.hn                       
     where vn.vstdate between "'+d1+'" and "'+d2+'" and vn.age_y>=60

D = ผู้ป่วย NCD  ได้แก่  คลินิกเบาหวาน,ความดัน,หอบหืด,ไต,หัวใจ  ทั้งหมดที่ได้รับการคัดกรองภาวะซึมเศร้า 9Q มีกี่คน

    โค้ดคือ
     select count(distinct(vn.hn))
     from depression_screen d1
     LEFT OUTER JOIN depression_screen_evaluate d2 ON d2.depression_screen_evaluate_id = d1.depression_screen_evaluate_id   
     LEFT OUTER JOIN suicide_screen_evaluate d3 ON d3.suicide_screen_evaluate_id = d1.suicide_screen_evaluate_id           
     LEFT OUTER JOIN vn_stat vn ON vn.vn = d1.vn       
     LEFT OUTER JOIN person p1 ON p1.patient_hn=vn.hn   
     LEFT OUTER JOIN house h1 ON h1.house_id=p1.house_id   
     LEFT OUTER JOIN village v1ON v1.village_id=h1.village_id 
     LEFT OUTER JOIN thaiaddress t1 ON t1.addressid=v1.address_id
    LEFT OUTER JOIN patient p ON p.hn=vn.hn                       
    LEFT OUTER JOIN clinicmember c ON p.hn=c.hn                 
    where vn.vstdate  between "'+d1+'" and "'+d2+'" and c.clinic in("1","10","2","9","13")

E =  ผู้มารับบริการตั้งแต่ อายุ 60 ปีขึ้นไป  ที่มีผลการคัดกรอง >= 7  มีกี่คน
    โค้ดคือ

     select count(distinct(vn.hn))   
     from vn_stat vn                                             
     left outer join depression_screen d1 ON vn.vn=d1.vn         
     left outer join depression_screen_evaluate d2 on d2.depression_screen_evaluate_id = d1.depression_screen_evaluate_id 
     left outer join suicide_screen_evaluate d3 on d3.suicide_screen_evaluate_id = d1.suicide_screen_evaluate_id         
     left outer join patient p ON p.hn=vn.hn                       
     where vn.vstdate between "'+d1+'" and "'+d2+'" and vn.age_y>=60 and d1.depression_score>=7

F =  ผู้ป่วย NCD  ได้แก่  คลินิกเบาหวาน,ความดัน,หอบหืด,ไต,หัวใจ  ทั้งหมดที่มีผลการคัดกรอง >= 7  มีกี่คน

   โค้ดคือ

      select count(distinct(vn.hn))
    from depression_screen d1
    left outer join depression_screen_evaluate d2 on d2.depression_screen_evaluate_id = d1.depression_screen_evaluate_id 
    left outer join suicide_screen_evaluate d3 on d3.suicide_screen_evaluate_id = d1.suicide_screen_evaluate_id             
    left outer join vn_stat vn on vn.vn = d1.vn     
    left outer join person p1 on p1.patient_hn=vn.hn   
    left outer join house h1 on h1.house_id=p1.house_id   
     left outer join village v1 on v1.village_id=h1.village_id 
    left outer join thaiaddress t1 on t1.addressid=v1.address_id   
    left outer join patient p ON p.hn=vn.hn                       
    LEFT OUTER JOIN clinicmember c ON p.hn=c.hn                   
    where vn.vstdate  between "'+d1+'" and "'+d2+'" and c.clinic in("1","10","2","9","13") and d1.depression_score>=7



 ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ???    อยากทราบว่าผมเขียนโค้ดได้ถูกต้องวัดถุประสงค์ของโจทย์หรือไม่  และลดรูป code ได้บ้างใหม่  เพราะประมวลผลช้ามากครับ  ??? ??? ??? ??? ??? ??? ??? ???

- วิรัตน์  ศรีวิโรจน์
- โรงพยาบาลปากคาด อ.ปากคาด จ.บึงกาฬ
- https://www.pkhos.moph.go.th
- ขนาด 30 เตียง 
- ขึ้นระบบ HOSxP เดือน เมษายน 2552
กำลังศึกษา ขอคำชี้แนะหน่อยนะครับ

กำลังศึกษาระบบฐานข้อมูล  ต้องการคำชีแนะจากอาจารย์ครับ  ขอรบกวนหน่อยนะครับ

ออฟไลน์ golf_pk

  • Jr. Member
  • **
  • กระทู้: 72
  • ขอบคุณสังคมแห่งการแบ่งปัน สังคม hosxp
  • Respect: 0
    • ดูรายละเอียด
    • https://www.pkhos.moph.go.th
ดันตัวเองคัฟ
- วิรัตน์  ศรีวิโรจน์
- โรงพยาบาลปากคาด อ.ปากคาด จ.บึงกาฬ
- https://www.pkhos.moph.go.th
- ขนาด 30 เตียง 
- ขึ้นระบบ HOSxP เดือน เมษายน 2552
กำลังศึกษา ขอคำชี้แนะหน่อยนะครับ

กำลังศึกษาระบบฐานข้อมูล  ต้องการคำชีแนะจากอาจารย์ครับ  ขอรบกวนหน่อยนะครับ

ออฟไลน์ บิ๊กเบิร์ด

  • Full Member
  • ***
  • กระทู้: 203
  • ศรัทธา
  • Respect: +11
    • ดูรายละเอียด
    • http://lo.moph.go.th
กำลังมึนกับคำถาม ขอแกล้งตายแปป  :o :o :o
กัมปนาท  บุตรจันทร์  (bigbird)
นวก.คอมพิวเตอร์ @สสจ.เลย
mybigbird1983@gmail.com
blog : http://bigbird1983.blogspot.com/
---------------------------------------------------
วิธีใส่ลายเซ็น เพื่อแนะนำตัวเอง

ขอบคุณ ที่ก

ออฟไลน์ udomchok

  • Hero Member
  • *****
  • กระทู้: 8,347
  • Respect: +589
    • ดูรายละเอียด
    • ร.พ.สมเด็จพระสังฆราช องค์ที่ 17
ข้อ D กับ F ทำไมต้อง join หลายตาราง ทั้ง ๆ ที่ไม่ได้ใช้ครับ
ทำด้วยหัวใจร.พ.สมเด็จพระสังฆราช องค์ที่ 17 อ.สองพี่น้อง จ.สุพรรณบุรี
อบรมโดย BMS Team เมื่อ พ.ย. 49 ขึ้นระบบห้องบัตรเมื่อ X'Mas 2007
2008 : X-Ray กายภาพบำบัด แพทย์แผนไทย กิจกรรมบำบัด OPD ตา
2009 : ทันตกรรม ห้องตรวจตา OPD (พยาบาลและห้องตรวจแพทย์บางห้อง)

ออฟไลน์ golf_pk

  • Jr. Member
  • **
  • กระทู้: 72
  • ขอบคุณสังคมแห่งการแบ่งปัน สังคม hosxp
  • Respect: 0
    • ดูรายละเอียด
    • https://www.pkhos.moph.go.th
ข้อ D กับ F ทำไมต้อง join หลายตาราง ทั้ง ๆ ที่ไม่ได้ใช้ครับ

คือผมก็ไม่แน่ใจอ่ะครับ ว่าจะใช้ตารางไหนบ้าง  ผมได้โค๊ดที่มีในเครื่องเลยยกมาทั้งหมดเลยครับ  อาจารย์ชีแนะด้วยครับ 
- วิรัตน์  ศรีวิโรจน์
- โรงพยาบาลปากคาด อ.ปากคาด จ.บึงกาฬ
- https://www.pkhos.moph.go.th
- ขนาด 30 เตียง 
- ขึ้นระบบ HOSxP เดือน เมษายน 2552
กำลังศึกษา ขอคำชี้แนะหน่อยนะครับ

กำลังศึกษาระบบฐานข้อมูล  ต้องการคำชีแนะจากอาจารย์ครับ  ขอรบกวนหน่อยนะครับ

ออฟไลน์ golf_pk

  • Jr. Member
  • **
  • กระทู้: 72
  • ขอบคุณสังคมแห่งการแบ่งปัน สังคม hosxp
  • Respect: 0
    • ดูรายละเอียด
    • https://www.pkhos.moph.go.th
กำลังมึนกับคำถาม ขอแกล้งตายแปป  :o :o :o

555+  อ.บิ๊กเบิร์ด  ครับ  คือผมก็ได้โจทย์มาอย่างนี้ครับ  ตามแบบฟอร์มเลยครับ
- วิรัตน์  ศรีวิโรจน์
- โรงพยาบาลปากคาด อ.ปากคาด จ.บึงกาฬ
- https://www.pkhos.moph.go.th
- ขนาด 30 เตียง 
- ขึ้นระบบ HOSxP เดือน เมษายน 2552
กำลังศึกษา ขอคำชี้แนะหน่อยนะครับ

กำลังศึกษาระบบฐานข้อมูล  ต้องการคำชีแนะจากอาจารย์ครับ  ขอรบกวนหน่อยนะครับ

ออฟไลน์ golf_pk

  • Jr. Member
  • **
  • กระทู้: 72
  • ขอบคุณสังคมแห่งการแบ่งปัน สังคม hosxp
  • Respect: 0
    • ดูรายละเอียด
    • https://www.pkhos.moph.go.th
ตกลง A-F  ผมถูกซักข้อบ้างไมครับ :o :o :o :o
- วิรัตน์  ศรีวิโรจน์
- โรงพยาบาลปากคาด อ.ปากคาด จ.บึงกาฬ
- https://www.pkhos.moph.go.th
- ขนาด 30 เตียง 
- ขึ้นระบบ HOSxP เดือน เมษายน 2552
กำลังศึกษา ขอคำชี้แนะหน่อยนะครับ

กำลังศึกษาระบบฐานข้อมูล  ต้องการคำชีแนะจากอาจารย์ครับ  ขอรบกวนหน่อยนะครับ

ออฟไลน์ บิ๊กเบิร์ด

  • Full Member
  • ***
  • กระทู้: 203
  • ศรัทธา
  • Respect: +11
    • ดูรายละเอียด
    • http://lo.moph.go.th
A =  ผู้สูงอายุ >= 60  ที่มารับบริการ ถูกต้องครับ ถูกหลักอนามัย อิอิ
=================================================================

B = ผู้ป่วย NCD  ได้แก่  คลินิกเบาหวาน,ความดัน,หอบหืด,ไต,หัวใจ  ทั้งหมดกี่คนทุกอายุ
     โค้ดคือ
     
      select count(distinct(vn.hn))
      from depression_screen d1 
      left outer join depression_screen_evaluate d2 on d2.depression_screen_evaluate_id = d1.depression_screen_evaluate_id   
      left outer join suicide_screen_evaluate d3 on d3.suicide_screen_evaluate_id = d1.suicide_screen_evaluate_id           
      left outer join vn_stat vn on vn.vn = d1.vn       
      left outer join person p1 on p1.patient_hn=vn.hn   
     left outer join house h1 on h1.house_id=p1.house_id   
     left outer join village v1 on v1.village_id=h1.village_id
      left outer join thaiaddress t1 on t1.addressid=v1.address_id 
     left outer join patient p on p.hn=vn.hn                       
    LEFT OUTER JOIN clinicmember c ON p.hn=c.hn                 
    where vn.vstdate  between "'+d1+'" and "'+d2+'" and c.clinic in("1","10","2","9","13")

ถ้าจะให้ดี เรียงลำดับตารางใหม่จะดีมากครับ ตัวเราเองจะไล่โค้ดได้ง่ายด้วย ลำดับความสำคัญของตาราง ตารางไหนไม่ได้ใช้ก็ไม่ต้องเอามา JOIN ครับ ถ้าจะนับแค่คน
ตารางพวก house village thaiaddress  patient  person suicide_screen_evaluate depression_screen_evaluate depression_screen ก็ไม่ต้องเอามารกตา

=================================================================

C = ผู้มารับบริการตั้งแต่ อายุ 60 ปีขึ้นไป ได้รับการคัดกรองภาวะซึมเศร้า 9Q มีกี่คน

    โค้ดคือ

     select count(distinct(vn.hn))
     from vn_stat vn                                               
     left outer join depression_screen d1 ON vn.vn=d1.vn           
     left outer join depression_screen_evaluate d2 on d2.depression_screen_evaluate_id = d1.depression_screen_evaluate_id 
     left outer join suicide_screen_evaluate d3 on d3.suicide_screen_evaluate_id = d1.suicide_screen_evaluate_id           
     left outer join patient p ON p.hn=vn.hn                       
     where vn.vstdate between "'+d1+'" and "'+d2+'" and vn.age_y>=60

อ้างถึง
แค่นี้น่าจะพอครับ
      SELECT count(distinct(vn.hn))
      FROM vn_stat vn       
      LEFT OUTER JOIN clinicmember c ON p.hn=c.hn                 
      WHERE vn.vstdate  BETWEEN "'+d1+'" AND "'+d2+'"
      AND c.clinic in("1","10","2","9","13")

=================================================================
D = ผู้ป่วย NCD  ได้แก่  คลินิกเบาหวาน,ความดัน,หอบหืด,ไต,หัวใจ  ทั้งหมดที่ได้รับการคัดกรองภาวะซึมเศร้า 9Q มีกี่คน

    โค้ดคือ
     select count(distinct(vn.hn))
     from depression_screen d1
     LEFT OUTER JOIN depression_screen_evaluate d2 ON d2.depression_screen_evaluate_id = d1.depression_screen_evaluate_id   
     LEFT OUTER JOIN suicide_screen_evaluate d3 ON d3.suicide_screen_evaluate_id = d1.suicide_screen_evaluate_id           
     LEFT OUTER JOIN vn_stat vn ON vn.vn = d1.vn       
     LEFT OUTER JOIN person p1 ON p1.patient_hn=vn.hn   
     LEFT OUTER JOIN house h1 ON h1.house_id=p1.house_id   
     LEFT OUTER JOIN village v1ON v1.village_id=h1.village_id 
     LEFT OUTER JOIN thaiaddress t1 ON t1.addressid=v1.address_id
    LEFT OUTER JOIN patient p ON p.hn=vn.hn                       
    LEFT OUTER JOIN clinicmember c ON p.hn=c.hn                 
    where vn.vstdate  between "'+d1+'" and "'+d2+'" and c.clinic in("1","10","2","9","13")

อ้างถึง
เรียงลับดับตารางจะดีกว่านี้ครับ เข้าใจง่าย ถูกหลักอนามัยด้วยครับ อิอิ

==================================================================

E =  ผู้มารับบริการตั้งแต่ อายุ 60 ปีขึ้นไป  ที่มีผลการคัดกรอง >= 7  มีกี่คน
    โค้ดคือ

     select count(distinct(vn.hn))   
     from vn_stat vn                                             
     left outer join depression_screen d1 ON vn.vn=d1.vn         
     left outer join depression_screen_evaluate d2 on d2.depression_screen_evaluate_id = d1.depression_screen_evaluate_id 
     left outer join suicide_screen_evaluate d3 on d3.suicide_screen_evaluate_id = d1.suicide_screen_evaluate_id         
     left outer join patient p ON p.hn=vn.hn                       
     where vn.vstdate between "'+d1+'" and "'+d2+'" and vn.age_y>=60 and d1.depression_score>=7

อ้างถึง
พอได้คัรบ

==================================================================



F =  ผู้ป่วย NCD  ได้แก่  คลินิกเบาหวาน,ความดัน,หอบหืด,ไต,หัวใจ  ทั้งหมดที่มีผลการคัดกรอง >= 7  มีกี่คน

   โค้ดคือ

      select count(distinct(vn.hn))
    from depression_screen d1
    left outer join depression_screen_evaluate d2 on d2.depression_screen_evaluate_id = d1.depression_screen_evaluate_id 
    left outer join suicide_screen_evaluate d3 on d3.suicide_screen_evaluate_id = d1.suicide_screen_evaluate_id             
    left outer join vn_stat vn on vn.vn = d1.vn     
    left outer join person p1 on p1.patient_hn=vn.hn   
    left outer join house h1 on h1.house_id=p1.house_id   
     left outer join village v1 on v1.village_id=h1.village_id 
    left outer join thaiaddress t1 on t1.addressid=v1.address_id   
    left outer join patient p ON p.hn=vn.hn                       
    LEFT OUTER JOIN clinicmember c ON p.hn=c.hn                   
    where vn.vstdate  between "'+d1+'" and "'+d2+'" and c.clinic in("1","10","2","9","13") and d1.depression_score>=7

อ้างถึง
เรียงลับดับตารางจะดีกว่านี้ครับ เข้าใจง่าย ถูกหลักอนามัยด้วยครับ อิอิ

==================================================================
กัมปนาท  บุตรจันทร์  (bigbird)
นวก.คอมพิวเตอร์ @สสจ.เลย
mybigbird1983@gmail.com
blog : http://bigbird1983.blogspot.com/
---------------------------------------------------
วิธีใส่ลายเซ็น เพื่อแนะนำตัวเอง

ขอบคุณ ที่ก

ออฟไลน์ BBT Hospital

  • Jr. Member
  • **
  • กระทู้: 61
  • Respect: +2
    • ดูรายละเอียด
ขอลองไล่ทีละข้อครับ
เอาแต่ผลลัพธ์ตัวเลขใช่ไหมครับ

F =  ผู้ป่วย NCD  ได้แก่  คลินิกเบาหวาน,ความดัน,หอบหืด,ไต,หัวใจ 
ทั้งหมดที่มีผลการคัดกรอง >= 7  มีกี่คน

   โค้ดคือ
 select count(distinct(v.hn))     from depression_screen d1
    left outer join vn_stat v on v.vn = d1.vn     
    LEFT OUTER JOIN clinicmember c ON c.hn=v.hn                   
    where vn.vstdate  between "'+d1+'" and "'+d2+'"
        and c.clinic in("1","10","2","9","13")
        and d1.depression_score>=7
ไม่รู้ว่าเหมือนกันไหมนะครับ ถ้าตัดตารางที่ไม่เกี่ยวข้องจะทำให้หาข้อมูลได้เร็วขึ้นครับ
แพทย์ โรงพยาบาลบางบัวทอง
Linux server Cent-OS 5 -ram 4 GB
HosXP when 2550
ตัวเองเริ่มใช้ July 2551
Server version: 3.55.11.8
Client version:HOSxP 3.55.2.29  (Most)
                      3.55.7.14(Ward)
การขึ้นระบบโดย : ทีม BMS
การทำ Report + SQL => นั่งเทียนมั่วเอง + copy ของ อาจารย์ ทั้งหลายครับ
** ขอบคุณ ทุกท่านที่เอื้อเฟื้อครับ **
(update signature when 56-01-24)

ออฟไลน์ golf_pk

  • Jr. Member
  • **
  • กระทู้: 72
  • ขอบคุณสังคมแห่งการแบ่งปัน สังคม hosxp
  • Respect: 0
    • ดูรายละเอียด
    • https://www.pkhos.moph.go.th
ขอลองไล่ทีละข้อครับ
เอาแต่ผลลัพธ์ตัวเลขใช่ไหมครับ

F =  ผู้ป่วย NCD  ได้แก่  คลินิกเบาหวาน,ความดัน,หอบหืด,ไต,หัวใจ 
ทั้งหมดที่มีผลการคัดกรอง >= 7  มีกี่คน

   โค้ดคือ
 select count(distinct(v.hn))     from depression_screen d1
    left outer join vn_stat v on v.vn = d1.vn     
    LEFT OUTER JOIN clinicmember c ON c.hn=v.hn                   
    where vn.vstdate  between "'+d1+'" and "'+d2+'"
        and c.clinic in("1","10","2","9","13")
        and d1.depression_score>=7
ไม่รู้ว่าเหมือนกันไหมนะครับ ถ้าตัดตารางที่ไม่เกี่ยวข้องจะทำให้หาข้อมูลได้เร็วขึ้นครับ


ใช่ครับ  เอาเฉพาะผลลัพธ์ตัวเลขครับ
- วิรัตน์  ศรีวิโรจน์
- โรงพยาบาลปากคาด อ.ปากคาด จ.บึงกาฬ
- https://www.pkhos.moph.go.th
- ขนาด 30 เตียง 
- ขึ้นระบบ HOSxP เดือน เมษายน 2552
กำลังศึกษา ขอคำชี้แนะหน่อยนะครับ

กำลังศึกษาระบบฐานข้อมูล  ต้องการคำชีแนะจากอาจารย์ครับ  ขอรบกวนหน่อยนะครับ

ออฟไลน์ golf_pk

  • Jr. Member
  • **
  • กระทู้: 72
  • ขอบคุณสังคมแห่งการแบ่งปัน สังคม hosxp
  • Respect: 0
    • ดูรายละเอียด
    • https://www.pkhos.moph.go.th
ขอบคุณ อ.บิ๊กเบิร์ด  ที่คอมเมนต์อย่างละเอียดเลยคับ 
 ;D ;D ;D ;D ;D ;D ;D ;D ;D
- วิรัตน์  ศรีวิโรจน์
- โรงพยาบาลปากคาด อ.ปากคาด จ.บึงกาฬ
- https://www.pkhos.moph.go.th
- ขนาด 30 เตียง 
- ขึ้นระบบ HOSxP เดือน เมษายน 2552
กำลังศึกษา ขอคำชี้แนะหน่อยนะครับ

กำลังศึกษาระบบฐานข้อมูล  ต้องการคำชีแนะจากอาจารย์ครับ  ขอรบกวนหน่อยนะครับ