BMS-HOSxP Community
HOSxP => แจ้งปัญหา / ขอความช่วยเหลือ => ข้อความที่เริ่มโดย: Yuwa-Hos ที่ กรกฎาคม 16, 2014, 10:48:50 AM
-
ถึง อาจารย์ และพี่ๆน้องๆ ทุกท่าน
ขอบอกตามตรงครับว่ามีแค่ความรู้พื้นฐานจริง เรื่องของเรื่องคือว่า กลุ่มงานวิจัยและวิชาการ ของ รพ. จะทำวิจัยจากการมารับบริการของผู้ป่วย มีกลุ่มเป้าหมายแยกตามช่วงอายุ
1. ผู้ป่วยใหม่-เก่า ที่มารับบริการครั้งแรกในปีงบประมาณ
2. แยกตามช่วงอายุ
0 - 5 ปี
5 ปี 1 เดือน - 10 ปี
10 ปี 1 เดือน - 15 ปี
15 ปี 1 เดือน - 20 ปี
20 ปี ขึ้นไป
--------------------------------------------------------
ลองเขียนแบบทีละช่วงอายุก่อน (เบสิกจริงๆครับ)
select pt.hn,concat(ov.age_y,' ปี',' ',ov.age_m, ' เดือน') as 'อายุ', x.name, ovst.pt_subtype, ov.pdx
from vn_stat ov ,patient pt ,ovst ovst, sex x
where ov.vn=ovst.vn and pt.hn=ov.hn and pt.firstday between "2012-10-01" and "2013-09-30" and ov.hn=pt.hn and ov.sex=x.code
and ov.age_y>= 5
and ov.age_y<= 10
and ov.age_m between "1" and "11"
group by pt.hn
------------------------------------------------------------
ผลลัพธ์ที่เจอคือ ข้อมูลมันซ้ำกัน อย่าง ผู้ป่วยอายุ 10 ปี, 15 ปี จะนับซ้ำกันที่ จำนวนเดือน
แต่ก็คิดว่าถ้านำเอา วันที่มารับบริการครั้งแรก - วันเกิด น่าจะแบ่งช่วงอายุได้ง่ายกว่ารึป่าว แต่คำสั่งจะเขียนนี่สิครับ
ต้องขอรบกวน อาจารย์ และพี่ๆน้องๆ ทุกท่าน ด้วยครับ
-
มันต้องกำหนดช่วงอายุใหม่ครับ
เช่น 0 - 5 ปี 0 เดือน 0 วัน
5 ปี 0 เดือน 1 วัน - 10 ปี 0 เดือน 0 วัน
10 ปี 0 เดือน 1 วัน - 15 ปี 0 เดือน 0 วัน
15 ปี 0 เดือน 1 วัน - 20 ปี 0 เดือน 0 วัน
20 ปี 0 เดือน 1 วัน ขึ้นไป
-
มันต้องกำหนดช่วงอายุใหม่ครับ
เช่น 0 - 5 ปี 0 เดือน 0 วัน
5 ปี 0 เดือน 1 วัน - 10 ปี 0 เดือน 0 วัน
10 ปี 0 เดือน 1 วัน - 15 ปี 0 เดือน 0 วัน
15 ปี 0 เดือน 1 วัน - 20 ปี 0 เดือน 0 วัน
20 ปี 0 เดือน 1 วัน ขึ้นไป
ขอบคุณครับ ลองกำหนดตามที่ udomchok แนะนำ
-
ผมลองใช้คำสั่งนี้ดู นับจำนวนเดือน จะเสียเวลาที่ต้องมาเปลี่ยนจำนวนเดือน
select pt.hn,concat(ov.age_y,' ปี',' ',ov.age_m, ' เดือน') as ' อายุ', x.name, ovst.pt_subtype, ov.pdx
from vn_stat ov
inner join patient pt on pt.hn = ov.hn
inner join ovst on ovst.vn = ov.vn
inner join sex x on ov.sex=x.code
where pt.firstday between "2011-10-01" and "2012-09-30"
and timestampdiff(MONTH,pt.birthday,pt.firstday) between 0 and 60
group by pt.hn
-
ลองดูตัวอย่างครับ
select i.code, i.name, count(an) as cases
from an_stat a
join icd101 i on i.code=a.pdx
where (a.dchdate between "2012-01-01" and "2014-04-30") and ((a.age_y between 0 and 1) or (a.age_y=2 and a.age_m=0 and age_d=0)) and a.pdx not like "Z38%"
group by a.pdx
order by cases desc, code
select i.code, i.name, count(an) as cases
from an_stat a
join icd101 i on i.code=a.pdx
where (a.dchdate between "2012-01-01" and "2014-04-30") and ((a.age_y between 3 and 4) or (a.age_y=5 and a.age_m=0 and age_d=0) or (a.age_y=2 and age_d>0)) and (a.pdx not like "Z38%")
group by a.pdx
order by cases desc, code
select i.code, i.name, count(an) as cases
from an_stat a
join icd101 i on i.code=a.pdx
where (a.dchdate between "2012-01-01" and "2014-04-30") and ((a.age_y between 6 and 14) or (a.age_y=5 and age_d>0)) and (a.pdx not like "Z38%")
group by a.pdx
order by cases desc, code