BMS-HOSxP Community
HOSxP => แจ้งปัญหา / ขอความช่วยเหลือ => ข้อความที่เริ่มโดย: navyNP ที่ กุมภาพันธ์ 11, 2011, 15:55:22 PM
-
คือผมต้องการสร้างรายงานตรวจสอบการใช้ยาที่มีมูลค่าสูง ที่จ่ายเกินกว่า 365 เม็ด/ปี(เนื่องจากยากินวันละ 1 เม็ด)
ก็เลยสร้างรายงานหน้าตาออกมาตามรูปที่แนบ แต่สังเกตดูว่าข้อมูลที่ออกมาไม่ค่อยตรงความเป็นจริงซักเท่าไหร่ ทั้งจำนวนครั้งที่มา และจำนวนยารวม คือไม่ว่าจะเปลี่ยนชื่อยาไปเป็นยาตัวไหนจำนวนก็ไม่เปลี่ยนข้อมูลตามชื่อยา
script ที่ใช้ ดังนี้ครับ
begin
GetDateRangeDialog(date1, date2);
bdate := Formatdatetime('yyyy-mm-dd',date1);
edate := Formatdatetime('yyyy-mm-dd',date2);
drug := GetPickupList('select concat(name," ",strength) as drugname from drugitems where icode in("1480778","1480603","1480674","1480717","1480679","1510012","1490031","1480641","1480625") order by name,strength');
drugcode := GetSQLStringData('select icode from drugitems where concat(name," ",strength)="'+drug+'"');
ChangeReportSQL('select o.vn,o.icode,count(qty)as time,o.qty,sum(qty)as sum_qty,o.hn,concat(p.pname,p.fname," ", p.lname) as ptname, ' +
'"'+drug+'" as drugname from opitemrece o ' +
'left outer join patient p on p.hn=o.hn ' +
'left outer join drugitems d on d.icode=o.icode ' +
'where o.icode in("1480778","1480603","1480674","1480717","1480679","1510012","1490031","1480641","1480625") ' +
'and o.rxdate between "'+ bdate +'" and "'+ edate+'"' +
'group by o.hn ' +
'having sum_qty>365 ' +
'order by sum_qty');
end;
-
คือผมต้องการสร้างรายงานตรวจสอบการใช้ยาที่มีมูลค่าสูง ที่จ่ายเกินกว่า 365 เม็ด/ปี(เนื่องจากยากินวันละ 1 เม็ด)
ก็เลยสร้างรายงานหน้าตาออกมาตามรูปที่แนบ แต่สังเกตดูว่าข้อมูลที่ออกมาไม่ค่อยตรงความเป็นจริงซักเท่าไหร่ ทั้งจำนวนครั้งที่มา และจำนวนยารวม คือไม่ว่าจะเปลี่ยนชื่อยาไปเป็นยาตัวไหนจำนวนก็ไม่เปลี่ยนข้อมูลตามชื่อยา
script ที่ใช้ ดังนี้ครับ
begin
GetDateRangeDialog(date1, date2);
bdate := Formatdatetime('yyyy-mm-dd',date1);
edate := Formatdatetime('yyyy-mm-dd',date2);
drug := GetPickupList('select concat(name," ",strength) as drugname from drugitems where icode in("1480778","1480603","1480674","1480717","1480679","1510012","1490031","1480641","1480625") order by name,strength');
drugcode := GetSQLStringData('select icode from drugitems where concat(name," ",strength)="'+drug+'"');
ChangeReportSQL('select o.vn,o.icode,count(qty)as time,o.qty,sum(qty)as sum_qty,o.hn,concat(p.pname,p.fname," ", p.lname) as ptname, ' +
'"'+drug+'" as drugname from opitemrece o ' +
'left outer join patient p on p.hn=o.hn ' +
'left outer join drugitems d on d.icode=o.icode ' +
'where o.icode in("1480778","1480603","1480674","1480717","1480679","1510012","1490031","1480641","1480625") ' +
'and o.rxdate between "'+ bdate +'" and "'+ edate+'"' +
'group by o.hn ' +
'having sum_qty>365 ' +
'order by sum_qty');
end;
ได้ Icode แล้วไม่ได้เอามาใส่ในเงื่อนไขอันสุดท้ายอ่ะครับ
-
ที่ถูกต้อง ต้องเขียนอย่างไรอ่ะครับ รบกวนด้วยครับ ;D
-
น่าจะเป็น
begin
GetDateRangeDialog(date1, date2);
bdate := Formatdatetime('yyyy-mm-dd',date1);
edate := Formatdatetime('yyyy-mm-dd',date2);
drug := GetPickupList('select concat(name," ",strength) as drugname from drugitems where icode in("1480778","1480603","1480674","1480717","1480679","1510012","1490031","1480641","1480625") order by name,strength');
drugcode := GetSQLStringData('select icode from drugitems where concat(name," ",strength)="'+drug+'"');
ChangeReportSQL('select o.vn,o.icode,count(qty)as time,o.qty,sum(qty)as sum_qty,o.hn,concat(p.pname,p.fname," ", p.lname) as ptname, ' +
'"'+drug+'" as drugname from opitemrece o ' +
'left outer join patient p on p.hn=o.hn ' +
'left outer join drugitems d on d.icode=o.icode ' +
'where o.icode="'+drugcode+'" ' +
'and o.rxdate between "'+ bdate +'" and "'+ edate+'"' +
'group by o.hn ' +
'having sum_qty>365 ' +
'order by sum_qty');
end;
-
น่าจะเป็น
begin
GetDateRangeDialog(date1, date2);
bdate := Formatdatetime('yyyy-mm-dd',date1);
edate := Formatdatetime('yyyy-mm-dd',date2);
drug := GetPickupList('select concat(name," ",strength) as drugname from drugitems where icode in("1480778","1480603","1480674","1480717","1480679","1510012","1490031","1480641","1480625") order by name,strength');
drugcode := GetSQLStringData('select icode from drugitems where concat(name," ",strength)="'+drug+'"');
ChangeReportSQL('select o.vn,o.icode,count(qty)as time,o.qty,sum(qty)as sum_qty,o.hn,concat(p.pname,p.fname," ", p.lname) as ptname, ' +
'"'+drug+'" as drugname from opitemrece o ' +
'left outer join patient p on p.hn=o.hn ' +
'left outer join drugitems d on d.icode=o.icode ' +
'where o.icode="'+drugcode+'" ' +
'and o.rxdate between "'+ bdate +'" and "'+ edate+'"' +
'group by o.hn ' +
'having sum_qty>365 ' +
'order by sum_qty');
end;
ตามนี้ครับ ;D ;D
-
ขอบคุณ อ.ทุกท่านที่ชี้แนะครับ ไปลองดูแล้วตามนี้
begin
GetDateRangeDialog(date1, date2);
bdate := Formatdatetime('yyyy-mm-dd',date1);
edate := Formatdatetime('yyyy-mm-dd',date2);
drug := GetPickupList('select concat(name," ",strength) as drugname from drugitems where icode in("1480778","1480603","1480674","1480717","1480679","1510012","1490031","1480641","1480625") order by name,strength');
drugcode := GetSQLStringData('select icode from drugitems where concat(name," ",strength)="'+drug+'"');
ChangeReportSQL('select o.vn,o.icode,count(qty)as time,o.qty,sum(qty)as sum_qty,o.hn,concat(p.pname,p.fname," ", p.lname) as ptname, ' +
'"'+drug+'" as drugname from opitemrece o ' +
'left outer join patient p on p.hn=o.hn ' +
'left outer join drugitems d on d.icode=o.icode ' +
'where o.icode="'+drugcode+'" ' +
'and o.rxdate between "'+ bdate +'" and "'+ edate+'"' +
'group by o.hn ' +
'having sum_qty>365 ' +
'order by sum_qty');
end;
ไม่มีข้อมูลออกเลย น่าจะผิดตรงนี้ครับ 'having sum_qty>365 ' +
เพราะผมลองเอาออกแล้วมีข้อมูลออก แต่มาหมดเลย แต่ผมต้องการแค่ HN ที่มีการจ่ายรวมเกิน 365 เม็ด/ปี ต้องใส่เงื่อนไขเพิ่มเติมอย่างไร ครับ
-
แก้เป็น having sum(o.qty)>365 ได้ไหมครับ