BMS-HOSxP Community

HOSxP => แจ้งปัญหา / ขอความช่วยเหลือ => ข้อความที่เริ่มโดย: SIWIT ที่ ตุลาคม 14, 2010, 00:11:27 AM

หัวข้อ: เกี่ยวกับ SQL มาฝากให้ช่วยคิดครับผม น่าคิดนะครับ
เริ่มหัวข้อโดย: SIWIT ที่ ตุลาคม 14, 2010, 00:11:27 AM
คือว่าผมจะดึงยอด ผู้ป่วย HT ครับ โดยแยกเป็น สองยอด ผู้ป่วย HT ที่อายุ 15-34 ปี ครับ
และที่อายุ 35 ปีขึ้นไปครับ โดยใช้คำสั่งนี้ครับ

select count(distinct(o.hn))  from ovstdiag o,vn_stat v
where  v.hn=o.hn and v.age_y >="15" and v.age_y<="34" and o.icd10 between "i10" and "i159"
and o.vstdate<"2009-10-01"

ดึงอายุจาก visit ครับผม 15-34

จากนั้น

select count(distinct(o.hn))  from ovstdiag o,vn_stat v
where  v.hn=o.hn and v.age_y >="35"  and o.icd10 between "i10" and "i159"
and o.vstdate<"2009-10-01"

ดึงอายุจาก visit ครับ ตั้งแต่35 ขึ้นไป


คำถามคือถ้าคนไข้มา หลาย visit ซึ่งไม่ได้เอาอายุล่าสุด มันจะนับคนไข้คนเดียวอยู่ทั้งสองรายงาน ใช่มั้ยครับ
ทำไงถึงจะเอาแต่อายุที่มากที่สุดได้ครับ

ขอบคุณครับ
หัวข้อ: Re: เกี่ยวกับ SQL มาฝากให้ช่วยคิดครับผม น่าคิดนะครับ
เริ่มหัวข้อโดย: SIWIT ที่ ตุลาคม 14, 2010, 00:12:31 AM
ขอโทษนะครับถ้าตั้งผิดห้องพอดีไม่รู้ว่าจะตั้งห้อง sql ดีมั้ยนะครับ
หัวข้อ: Re: เกี่ยวกับ SQL มาฝากให้ช่วยคิดครับผม น่าคิดนะครับ
เริ่มหัวข้อโดย: SIWIT ที่ ตุลาคม 14, 2010, 00:40:13 AM
ลองเอาวันเกิดลบกับ วันตัดยอด แ่ต่ก็เขียนไม่เป็นซะอีกคับไม่รู้แบบนี้รึปล่าว

select count(diistinct(o.hn)) from ovstdiag o,vn_stat v,patient p
where v.hn=o.hn and o.hn=p.hn and datediff("2009-10-01",p.birthday)>="35" and o.icd10 between "i10" and "i159"
and o.vstdate<"2009-10-01"

ช่วยหน่อยนะครับ
หัวข้อ: Re: เกี่ยวกับ SQL มาฝากให้ช่วยคิดครับผม น่าคิดนะครับ
เริ่มหัวข้อโดย: เกื้อกูล ครับ.. ที่ ตุลาคม 14, 2010, 08:42:34 AM
รายงานอายุมากกว่า 35 ปี ให้เพิ่ม o.hn not in o.hn ของรายงานที่ 1 ได้ป่ะครับ..จะได้ไม่ซ้ำใน 2 รายงาน ณ ช่วงเวลาที่เรียกรายงานเดียวกัน  คงต้องดูจาก อายุ ณ  vstdate เป็นเกณฑ์  และรายงานแบบนี้ คงต้อง parameter ไม่เกิน 1 เดือน เพราะอายุผู้ป่วยจะเปลี่ยนทุกเดือน แน่นอน  :D
หัวข้อ: Re: เกี่ยวกับ SQL มาฝากให้ช่วยคิดครับผม น่าคิดนะครับ
เริ่มหัวข้อโดย: SIWIT ที่ ตุลาคม 14, 2010, 08:50:13 AM
ไม่ได้อะคับ รายงานคนละตัวอะ
หัวข้อ: Re: เกี่ยวกับ SQL มาฝากให้ช่วยคิดครับผม น่าคิดนะครับ
เริ่มหัวข้อโดย: SIWIT ที่ ตุลาคม 14, 2010, 08:58:35 AM
ได้แล้วครับ คำนวณอายุจากวันที่ตัดยอดครับผมทีนี้คนไข้ยอดก็จะไม่มาปนกันแล้ว

select count(distinct(p.hn)) from ovstdiag o ,vn_stat v ,patient p
where  v.hn=o.hn and o.hn=p.hn
and timestampdiff(year,p.birthday,"2009-10-01")>="15"
and timestampdiff(year,p.birthday,"2009-10-01")<="34"
and o.icd10 between "i10" and "i159"
and o.vstdate<"2009-10-01"