ผู้เขียน หัวข้อ: รบกวนดู script ให้ด้วยคับ ใช้แบบนี้ได้ไหม  (อ่าน 12012 ครั้ง)

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

ออฟไลน์ yokyai

  • Hero Member
  • *****
  • กระทู้: 1,462
  • Respect: +9
    • ดูรายละเอียด
รบกวนดู script ให้ด้วยคับ ใช้แบบนี้ได้ไหม
« เมื่อ: มิถุนายน 03, 2010, 11:11:22 AM »
0
ChangeReportSQL('select doctor,count(depcode = "001") as total1,count(depcode="002") as total2 from pq_doctor '
+' where doctor_date between "'+ds1+'" and "'+ds2+'" '
+' group by doctor  ');
นับจำนวนแล้วมันออกมาเท่ากันหมดเลยคับทั้ง total1 และ total2 ขอคำแนะนำอื่นๆด้วยคับ
อยากนับจำนวน workload โดยแยกตามแพทย์ และแผนกที่ตรวจ ถ้าใช้ variable ใช้เวลานานมากในการคำนวนคับ ยิ่งถ้าเลือกหลายวันยิ่งนาน

ชื่อแพทย์/แผนก    ผู้ป่วยนอก    Er    ทันตกรรม     ห้องคลอด   รวม
 นายแพทย์ 1            xxx        xxx      xxxx         xxxx        xxx
 นายแพทย์ 2            xxx        xxx      xxxx         xxxx        xxx
 นายแพทย์ 3            xxx        xxx      xxxx         xxxx        xxx

ขอบคุณคับ
Sakaowrat Choocherd(Administrator) Information Technologist
Bangyai Hospital(30 beds)
HOSxP = 16_May_2008
Master and Slave : DELL-R730 Server Intel Xeon 8Core(2Units)
,Ram64 GB,HDD600(10k)x4,Raid5,CentOS 7.0 64 bit
,MySQL 10.1.10-MariaDB
(3 March 2016) With BMSxTraBackupGUI

ออฟไลน์ Khuad

  • Hero Member
  • *****
  • กระทู้: 3,778
  • .. นางฟ้า ตัวไม่น้อยแล้ว ..
  • Respect: +10
    • ดูรายละเอียด
Re: รบกวนดู script ให้ด้วยคับ ใช้แบบนี้ได้ไหม
« ตอบกลับ #1 เมื่อ: มิถุนายน 03, 2010, 13:54:19 PM »
0
... ลองแบนี้น่าจะได้นะครับ  ...

... สมมุติว่า
    depcode = 001 คือ ผู้ป่วยนอก(ไม่ทราบรวมห้องตรวจด้วยหรือเปล่าครับ)
    depcode = 002 คือ Er
    depcode = 003 คือ ทันตกรรม
    depcode = 004 คือ ห้องคลอด

... ใช้คำสั่ง
------------------------------------------------------------------------------
select pq.doctor,d.name,
count(pq1.vn) as total_OPD,count(pq2.vn) as total_ER,
count(pq3.vn) as total_Dent,count(pq4.vn) as total_LR,
count(pq.vn) as total_All

from pq_doctor pq

left outer join doctor d on d.code = pq.doctor

left outer join pq_doctor pq1 on pq1.vn = pq.vn
and pq1.doctor = pq.doctor and pq.depcode = '001'

left outer join pq_doctor pq2 on pq2.vn = pq.vn
and pq2.doctor = pq.doctor and pq.depcode = '002'

left outer join pq_doctor pq3 on pq3.vn = pq.vn
and pq3.doctor = pq.doctor and pq.depcode = '003'

left outer join pq_doctor pq4 on pq4.vn = pq.vn
and pq4.doctor = pq.doctor and pq.depcode = '004'

where pq.doctor_date between '2010-05-01' and '2010-05-10'
and pq.depcode in ('001','002','003','004')

group by pq.doctor
order by pq.doctor
------------------------------------------------------------------------------
... อันนี้จะเรียกดูข้อมูลเฉพาะ 4 แผนกที่เรากำหนดไว้
   
    ถ้าจะดูข้อมูลทั้งหมด ก็ไปลบเงื่อนไขตรง  and pq.depcode in ('001','002','003','004') ออก
    แล้วก็ไป join เพิ่มให้ครบทุกแผนกที่มีข้อมูลอยู่ในตาราง pq_doctor 
    ถ้า  join ไม่ครบทุกแผนก ตรง total_All ซึ่งเป็นผลรวมอาจผิดพลาดครับ ...

... อีกอย่าง ในตาราง pq_doctor  อาจมีที่เป็น vn เดียวกัน แพทย์คนเดียวกัน แต่มี 2 แผนก ได้ เช่นตรวจที่ OPD แล้วไปทำต่อที่ ER 
    เวลา่ join จึงต้องให้ทั้ง vn และ doctor ตรงกัน ไม่งั้นข้อมูลอาจคลาดเคลื่อนครับ ...  :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
    • ดูรายละเอียด
Re: รบกวนดู script ให้ด้วยคับ ใช้แบบนี้ได้ไหม
« ตอบกลับ #2 เมื่อ: มิถุนายน 03, 2010, 13:55:55 PM »
0

... ส่วนถ้าจะวางคำสั่งในตัวรายงานก็ลอง

------------------------------------------------------------------------------

    ChangeReportSQL('select pq.doctor,d.name, '+
'count(pq1.vn) as total_OPD,count(pq2.vn) as total_ER, '+
'count(pq3.vn) as total_Dent,count(pq4.vn) as total_LR, '+
'count(pq.vn) as total_All '+
'from pq_doctor pq '+
'left outer join doctor d on d.code = pq.doctor '+
'left outer join pq_doctor pq1 on pq1.vn = pq.vn '+
'and pq1.doctor = pq.doctor and pq.depcode = "001" '+
'left outer join pq_doctor pq2 on pq2.vn = pq.vn '+
'and pq2.doctor = pq.doctor and pq.depcode = "002" '+
'left outer join pq_doctor pq3 on pq3.vn = pq.vn '+
'and pq3.doctor = pq.doctor and pq.depcode = "003" '+
'left outer join pq_doctor pq4 on pq4.vn = pq.vn '+
'and pq4.doctor = pq.doctor and pq.depcode = "004" '+
'where pq.doctor_date between between "'+ds1+'" and "'+ds2+'" '+
'and pq.depcode in ("001","002","003","004") '+
'group by pq.doctor '+
'order by pq.doctor ');

------------------------------------------------------------------------------

... ช่องผลรวม ก็คือ total_All นะครับ ....  :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

ออฟไลน์ yokyai

  • Hero Member
  • *****
  • กระทู้: 1,462
  • Respect: +9
    • ดูรายละเอียด
Re: รบกวนดู script ให้ด้วยคับ ใช้แบบนี้ได้ไหม
« ตอบกลับ #3 เมื่อ: มิถุนายน 03, 2010, 14:07:57 PM »
0
ขอบคุณ อ.ขวด  และ คุณ woravet ที่ให้คำปรึกษาทาง email  ใช้ได้ทั้ง 2 script เลยคับ เป็นประโยชน์มาก
ถามอีกเรื่องคับ จะมีปัญหาเวลาใช้ subreport หลายตัวต่อกัน รายงานมันจะซ้อนกันคับ ทำอย่างไรคับ
Sakaowrat Choocherd(Administrator) Information Technologist
Bangyai Hospital(30 beds)
HOSxP = 16_May_2008
Master and Slave : DELL-R730 Server Intel Xeon 8Core(2Units)
,Ram64 GB,HDD600(10k)x4,Raid5,CentOS 7.0 64 bit
,MySQL 10.1.10-MariaDB
(3 March 2016) With BMSxTraBackupGUI

ออฟไลน์ Khuad

  • Hero Member
  • *****
  • กระทู้: 3,778
  • .. นางฟ้า ตัวไม่น้อยแล้ว ..
  • Respect: +10
    • ดูรายละเอียด
Re: รบกวนดู script ให้ด้วยคับ ใช้แบบนี้ได้ไหม
« ตอบกลับ #4 เมื่อ: มิถุนายน 03, 2010, 14:24:46 PM »
0

ถามอีกเรื่องคับ จะมีปัญหาเวลาใช้ subreport หลายตัวต่อกัน รายงานมันจะซ้อนกันคับ ทำอย่างไรคับ


... ถ้ายังไม่ได้ เดี๋ยวขอเป็นช่วงเย็นนะครับ มีงานนิดหน่อยครับตอนนี้ ...  :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

ออฟไลน์ yokyai

  • Hero Member
  • *****
  • กระทู้: 1,462
  • Respect: +9
    • ดูรายละเอียด
Re: รบกวนดู script ให้ด้วยคับ ใช้แบบนี้ได้ไหม
« ตอบกลับ #5 เมื่อ: มิถุนายน 03, 2010, 15:51:06 PM »
0
อ.ขวดคับ พอไปใส่ sub report มันออกมาน้อยกว่าจำนวนจริง  ไม่ทราบว่าเกิดจากอะไรคับ
ตรง beforegenerate ก็ใส่แล้วนะคับ นับแล้วน้อยกว่ามากคับ
Sakaowrat Choocherd(Administrator) Information Technologist
Bangyai Hospital(30 beds)
HOSxP = 16_May_2008
Master and Slave : DELL-R730 Server Intel Xeon 8Core(2Units)
,Ram64 GB,HDD600(10k)x4,Raid5,CentOS 7.0 64 bit
,MySQL 10.1.10-MariaDB
(3 March 2016) With BMSxTraBackupGUI

ออฟไลน์ Khuad

  • Hero Member
  • *****
  • กระทู้: 3,778
  • .. นางฟ้า ตัวไม่น้อยแล้ว ..
  • Respect: +10
    • ดูรายละเอียด
Re: รบกวนดู script ให้ด้วยคับ ใช้แบบนี้ได้ไหม
« ตอบกลับ #6 เมื่อ: มิถุนายน 03, 2010, 15:58:25 PM »
0
อ.ขวดคับ พอไปใส่ sub report มันออกมาน้อยกว่าจำนวนจริง  ไม่ทราบว่าเกิดจากอะไรคับ
ตรง beforegenerate ก็ใส่แล้วนะคับ นับแล้วน้อยกว่ามากคับ

... ลองส่งรายงานขึ้นมาให้ดูหน่อยนะครับ เดี๋ยวลองตรวจสอบดูให้ครับ ...  :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
    • ดูรายละเอียด
Re: รบกวนดู script ให้ด้วยคับ ใช้แบบนี้ได้ไหม
« ตอบกลับ #7 เมื่อ: มิถุนายน 03, 2010, 17:36:54 PM »
0

ถามอีกเรื่องคับ จะมีปัญหาเวลาใช้ subreport หลายตัวต่อกัน รายงานมันจะซ้อนกันคับ ทำอย่างไรคับ


... ถ้ายังไม่ได้ เดี๋ยวขอเป็นช่วงเย็นนะครับ มีงานนิดหน่อยครับตอนนี้ ...  :D ...


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

   วิธีทำให้ SubReport/Region แสดงผลแบบเรียงต่อเนื่องในรายงาน
โรงพยาบาลวังน้อย   พระนครศรีอยุธยา ( รพช.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

ออฟไลน์ yokyai

  • Hero Member
  • *****
  • กระทู้: 1,462
  • Respect: +9
    • ดูรายละเอียด
Re: รบกวนดู script ให้ด้วยคับ ใช้แบบนี้ได้ไหม
« ตอบกลับ #8 เมื่อ: มิถุนายน 07, 2010, 13:48:52 PM »
0
อ.ขวดคับ code ตามที่ให้มา แปลงนิดหน่อย แต่ว่าออกมาอย่างที่แนบไฟล์เลยคับ ไม่ทราบว่าทำไม แต่ว่าพอเอาไป query ใน sql command ก็ปกติคับ ทำอะไรผิดหรือเปล่าคับ
ChangeDBPipeLineLink1SQL('select pq.doctor, '+
'count(distinct pq1.vn) as total_OPD,count(distinct  pq2.vn) as total_ER, '+
'count(distinct pq3.vn) as total_LR,count(distinct pq4.vn) as total_SS, '+
'count(distinct op.vn) as total_OPER,count(distinct pq.vn) as total_OPD_All,  '+
'count(distinct o.vn) as total_ER2 '+
'from pq_doctor pq '+
'left outer join doctor d on d.code=pq.doctor '+
'left outer join ovst o on o.vn = pq.vn     '+
'left outer join operation_list op on op.vn=pq.vn  '+
'and op.request_doctor=pq.doctor and pq.doctor_date=op.request_operation_date '+
'left outer join pq_doctor pq1 on pq1.vn = pq.vn    '+
'and pq1.doctor = pq.doctor and pq1.depcode in (001,002,003,004,005,006,007,008,022,032)  '+
'left outer join pq_doctor pq2 on pq2.vn = pq.vn    '+
'and pq2.doctor = pq.doctor and pq2.depcode = 011  '+
'left outer join pq_doctor pq3 on pq3.vn = pq.vn    '+
'and pq3.doctor = pq.doctor and pq3.depcode = 014  '+
'left outer join pq_doctor pq4 on pq4.vn = pq.vn    '+
'and pq4.doctor = pq.doctor and pq4.depcode = 023  '+
'where pq.doctor_date between "'+ds1+'" and "'+ds2+'" '+
'and pq.depcode in (001,002,003,004,005,006,007,008,022,032,011,014,021)  '+
'and o.visit_type = "I" and d.position_id = "1" and code<>"145" group by pq.doctor  ');

ChangeDBPipeLineLink2SQL('select pq.doctor, '+
'count(distinct pq1.vn) as total_OPD,count(distinct  pq2.vn) as total_ER, '+
'count(distinct pq3.vn) as total_LR,count(distinct pq4.vn) as total_SS, '+
'count(distinct op.vn) as total_OPER,count(distinct pq.vn) as total_OPD_All,  '+
'count(distinct o.vn) as total_ER2 '+
'from pq_doctor pq '+
'left outer join doctor d on d.code=pq.doctor '+
'left outer join ovst o on o.vn = pq.vn     '+
'left outer join operation_list op on op.vn=pq.vn  '+
'and op.request_doctor=pq.doctor and pq.doctor_date=op.request_operation_date '+
'left outer join pq_doctor pq1 on pq1.vn = pq.vn    '+
'and pq1.doctor = pq.doctor and pq1.depcode in (001,002,003,004,005,006,007,008,022,032)  '+
'left outer join pq_doctor pq2 on pq2.vn = pq.vn    '+
'and pq2.doctor = pq.doctor and pq2.depcode = 011  '+
'left outer join pq_doctor pq3 on pq3.vn = pq.vn    '+
'and pq3.doctor = pq.doctor and pq3.depcode = 014  '+
'left outer join pq_doctor pq4 on pq4.vn = pq.vn    '+
'and pq4.doctor = pq.doctor and pq4.depcode = 023  '+
'where pq.doctor_date between "'+ds1+'" and "'+ds2+'" '+
'and pq.depcode in (001,002,003,004,005,006,007,008,022,032,011,014,021)  '+
'and o.visit_type = "O" and d.position_id = "1" and code<>"145" group by pq.doctor  ');
Sakaowrat Choocherd(Administrator) Information Technologist
Bangyai Hospital(30 beds)
HOSxP = 16_May_2008
Master and Slave : DELL-R730 Server Intel Xeon 8Core(2Units)
,Ram64 GB,HDD600(10k)x4,Raid5,CentOS 7.0 64 bit
,MySQL 10.1.10-MariaDB
(3 March 2016) With BMSxTraBackupGUI

ออฟไลน์ Khuad

  • Hero Member
  • *****
  • กระทู้: 3,778
  • .. นางฟ้า ตัวไม่น้อยแล้ว ..
  • Respect: +10
    • ดูรายละเอียด
Re: รบกวนดู script ให้ด้วยคับ ใช้แบบนี้ได้ไหม
« ตอบกลับ #9 เมื่อ: มิถุนายน 07, 2010, 17:28:17 PM »
0

... คำสั่งในรายงานมันซ้ำซ้อนกันครับ ...

... ต้องการรายงานแบบนี้ วางคำสั่งที่ต้องการใช้ดึงข้อมูลแค่ GlobalOnCreate จุดเดียวก็พอครับ 
    ส่วนอื่นๆ ลองแก้ไขดูนะครับ .
    เช่น ที่ตรง join มี depcode = 023  แต่ตรง where มี depcode = 021 อยู่ด้วย แล้วก็ตรงนับจำนวนในเวลา ต้องนับจาก ovst(ในคำสั่งของ variable นับจาก vn_stat ซึ่งไม่มี field  visit_type อยู่ในตาราง) ...  :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

ออฟไลน์ yokyai

  • Hero Member
  • *****
  • กระทู้: 1,462
  • Respect: +9
    • ดูรายละเอียด
Re: รบกวนดู script ให้ด้วยคับ ใช้แบบนี้ได้ไหม
« ตอบกลับ #10 เมื่อ: มิถุนายน 08, 2010, 08:50:53 AM »
0
ขอบคุณ อ.ขวดคับ จะลองดูนะคับ เหตุที่จำเป็นต้องแบ่งเป็นหลาย sup เพราะว่าจะแยกระหว่างแพทย์ที่มาในเวลาและนอกเวลาด้วยคับ แต่ถ้าเอาแพทย์มาทั้งหมดจะทำให้มีแพทย์ที่ไม่ได้มานอกเวลาติดมาด้วยคับ เลยดูจะมั่ว ๆ หน่อย  :)
Sakaowrat Choocherd(Administrator) Information Technologist
Bangyai Hospital(30 beds)
HOSxP = 16_May_2008
Master and Slave : DELL-R730 Server Intel Xeon 8Core(2Units)
,Ram64 GB,HDD600(10k)x4,Raid5,CentOS 7.0 64 bit
,MySQL 10.1.10-MariaDB
(3 March 2016) With BMSxTraBackupGUI

ออฟไลน์ yokyai

  • Hero Member
  • *****
  • กระทู้: 1,462
  • Respect: +9
    • ดูรายละเอียด
Re: รบกวนดู script ให้ด้วยคับ ใช้แบบนี้ได้ไหม
« ตอบกลับ #11 เมื่อ: มิถุนายน 08, 2010, 13:30:31 PM »
0
โหลดแล้วแสดง error คับ 
Sakaowrat Choocherd(Administrator) Information Technologist
Bangyai Hospital(30 beds)
HOSxP = 16_May_2008
Master and Slave : DELL-R730 Server Intel Xeon 8Core(2Units)
,Ram64 GB,HDD600(10k)x4,Raid5,CentOS 7.0 64 bit
,MySQL 10.1.10-MariaDB
(3 March 2016) With BMSxTraBackupGUI