ผู้เขียน หัวข้อ: ReportBuilder end user function  (อ่าน 13287 ครั้ง)

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

ออฟไลน์ manoi

  • Hero Member
  • *****
  • กระทู้: 8,669
  • Respect: +170
    • ดูรายละเอียด
    • HOSxP Community Center
ReportBuilder end user function
« เมื่อ: เมษายน 19, 2012, 13:08:30 PM »
0
เนื่องจากในการอบรมการเขียน Report โดยใช้ Report Designer ใน HOSxP ได้มีผู้เรียกร้องให้เพิ่ม Utility function ต่างๆ เป็นจำนวนมาก ผมก็เลยได้ Idea ว่าถ้าให้ผู้ที่ทำ Report จริงๆ จังๆ เขียน Function ที่ต้องการเพิ่มเข้ามาได้เองน่าจะสะดวกและมีประโยชน์มากกว่า ดังนั้นใครที่อยากเพิ่ม Function ต่างๆ เข้าไปในระบบ Rap ของ Report Designer ใน HOSxP สามารถเขียนตามตัวอย่างใน Unit ที่ผมแนบ ได้เลยครับ แล้วผมจะเอามา Compile ใส่ไว้ใน HOSxP นะครับ
HOSxP Project Manager / Cheif Developer / BMS MD

ออฟไลน์ ittipol

  • Hero Member
  • *****
  • กระทู้: 841
  • ขอตั้งใจและมั่นใจในสิ่งที่ทำ
  • Respect: +4
    • ดูรายละเอียด
    • www.thungchanghospital.com
Re: ReportBuilder end user function
« ตอบกลับ #1 เมื่อ: กรกฎาคม 13, 2012, 10:11:08 AM »
0
ขอบคุณครับ
มีประโยชน์มากครับ
Thungchang Hospital NAN
ward 30 bedno computer 50 client
Endien Firewall+Ip cop
mysql 5.0.51
P4 2.4G DDR 2 GB
HDD 80G 7200
HOsxP 3.52.10.5
HOSxP_PCU 3.52.10.5
ขึ้นระบบ 01-10-2548

ออฟไลน์ LDHP

  • Full Member
  • ***
  • กระทู้: 128
  • พิศมัย พื้นนวล พยาบาลชำนาญการ - โรงพยาบาลลำดวน
  • Respect: 0
    • ดูรายละเอียด
Re: ReportBuilder end user function
« ตอบกลับ #2 เมื่อ: กรกฎาคม 13, 2012, 10:19:06 AM »
0
เยี่ยมเลยค่ะ ใช้ได้ทั้ง hosxp และ hosxp_pcu ด้วยหรือเปล่าคะ
master : ibm 3350 xeon 2.66GHz ram 2G  HD 144
  cenos 5.3 mysql 5.1.30

     slave : P4  2.8GHz  ram 2G HD 80G
        redhat 5.0 mysql 5.0.41


ขอขอบคุณท่านอาจารย์ทั้งหลายนะค่ะ ที่ช่วยเหลือให้ความรู้มากมาย

ออฟไลน์ manoi

  • Hero Member
  • *****
  • กระทู้: 8,669
  • Respect: +170
    • ดูรายละเอียด
    • HOSxP Community Center
Re: ReportBuilder end user function
« ตอบกลับ #3 เมื่อ: กรกฎาคม 13, 2012, 10:22:18 AM »
0
ใช่ครับ แต่ไม่เห็นมีใครส่ง function เข้ามาเลยครับ
HOSxP Project Manager / Cheif Developer / BMS MD

ออฟไลน์ armds

  • Hero Member
  • *****
  • กระทู้: 1,084
  • armds
  • Respect: +10
    • ดูรายละเอียด
Re: ReportBuilder end user function
« ตอบกลับ #4 เมื่อ: กรกฎาคม 13, 2012, 11:07:43 AM »
0
ขอคนแรกได้ไหมครับ  อ.mn
ไม่แน่ใจว่าจะได้ไหมนะครับ

//ตัวนี้เอาไว้หาคะแนน  ของผลแลป fbs  ครับ โดยตั้งค่าคงที่ไว้ที่  select sys_value from sys_var where sys_name like"LAB_Criterion_FBS_1"
โค๊ด: Delphi
  1. function GetGradelab_fbs(lab_result:string): string;
  2. begin
  3.   result := '';
  4.   if StrToFloat(lab_result) < getsqldata('select sys_value from sys_var where sys_name like"LAB_Criterion_FBS_1" ') then
  5.               result := getsqldata('select sys_var_guid from sys_var where sys_name like"LAB_Criterion_FBS_1" ')
  6.            else if StrToFloat(lab_result) < getsqldata('select sys_value from sys_var where sys_name like"LAB_Criterion_FBS_2" ') then
  7.                   result := getsqldata('select sys_var_guid from sys_var where sys_name like"LAB_Criterion_FBS_2" ')
  8.                 else if StrToFloat(lab_result) < getsqldata('select sys_value from sys_var where sys_name like"LAB_Criterion_FBS_3" ') then
  9.                        result := getsqldata('select sys_var_guid from sys_var where sys_name like"LAB_Criterion_FBS_3" ')
  10.                      else  if StrToFloat(lab_result) < getsqldata('select sys_value from sys_var where sys_name like"LAB_Criterion_FBS_4" ') then
  11.                            result := getsqldata('select sys_var_guid from sys_var where sys_name like"LAB_Criterion_FBS_4" ')
  12.                            else
  13.                            result := getsqldata('select sys_var_guid from sys_var where sys_name like"LAB_Criterion_FBS_5" ');
  14. end;

//ตัวนี้เอาไว้หาคะแนน  ของผลแลป hba1c  ครับ โดยตั้งค่าคงที่ไว้ที่  select sys_value from sys_var where sys_name like"LAB_Criterion_HbA1C_1"
โค๊ด: Delphi
  1. function GetGradelab_hba1c(lab_result:string): string;
  2. begin
  3.   result := '';
  4.   if StrToFloat(lab_result) < getsqldata('select sys_value from sys_var where sys_name like"LAB_Criterion_HbA1C_1" ') then
  5.             result := getsqldata('select sys_var_guid from sys_var where sys_name like"LAB_Criterion_HbA1C_1" ')
  6.          else if StrToFloat(lab_result) < getsqldata('select sys_value from sys_var where sys_name like"LAB_Criterion_HbA1C_2" ') then
  7.                  result := getsqldata('select sys_var_guid from sys_var where sys_name like"LAB_Criterion_HbA1C_2" ')
  8.               else  if StrToFloat(lab_result) < getsqldata('select sys_value from sys_var where sys_name like"LAB_Criterion_HbA1C_3" ') then
  9.                     result := getsqldata('select sys_var_guid from sys_var where sys_name like"LAB_Criterion_HbA1C_3" ')
  10.                     else  if StrToFloat(lab_result) < getsqldata('select sys_value from sys_var where sys_name like"LAB_Criterion_HbA1C_4" ') then
  11.                           result := getsqldata('select sys_var_guid from sys_var where sys_name like"LAB_Criterion_HbA1C_4" ')
  12.                           else
  13.                           result := getsqldata('select sys_var_guid from sys_var where sys_name like"LAB_Criterion_HbA1C_5" ');
  14. end;

// //ตัวนี้เอาไว้หาคะแนน  ของผลแลป bp  ครับ  แต่ค่าคงที่ยัง fix ตายตัวอยู่  ยังหาที่เก็บไว้ไม่ได้ครับ
โค๊ด: Delphi
  1. function GetGradebp(bps,bpd:string): string;
  2. begin
  3.   result := '';
  4.  
  5.   case strtoint(bps)  of
  6.      1..140   : begin
  7.                      if strtoint(bpd)<=90 then
  8.                      result := '5';
  9.                 end;
  10.      141..150 : begin
  11.                      if strtoint(bpd)<=90 then
  12.                      result := '4'
  13.                      else if strtoint(bpd)<=95 then
  14.                           result := '3';
  15.                 end;
  16.      151..160 : begin
  17.                      if strtoint(bpd)>95  then
  18.                      result := '2'
  19.                      else
  20.                      result := '2';
  21.                 end;
  22.      161..300 : begin
  23.                      if strtoint(bpd)>100  then
  24.                      result := '1'
  25.                      else
  26.                      result := '1';
  27.                 end;
  28.      else result := '0';
  29.   end;
  30. end;
โรงพยาบาลสมเด็จพระยุพราชด่านซ้าย จ.เลย
ขนาด 60 เตียง นวก. คอมพิวเตอร์ ขึ้นระบบ ปี 2548
ขอบคุณ อ.ชัยพร อ.สุชัย อ.เดชา อ.doreamon อ.naj อ.ขวด และอ.ในเว็บ hosxp.net ทุกท่าน

ออฟไลน์ chitvichai

  • Full Member
  • ***
  • กระทู้: 103
  • Respect: +5
    • ดูรายละเอียด
    • รพ.เมืองปาน
Re: ReportBuilder end user function
« ตอบกลับ #5 เมื่อ: กรกฎาคม 13, 2012, 11:28:10 AM »
0
// //ตัวนี้เอาไว้หาคะแนน  ของผลแลป bp  ครับ  แต่ค่าคงที่ยัง fix ตายตัวอยู่  ยังหาที่เก็บไว้ไม่ได้ครับ
โค๊ด: Delphi
  1. function GetGradebp(bps,bpd:string): string;
  2. begin
  3.   result := '';
  4.  
  5.   case strtoint(bps)  of
  6.      1..140   : begin
  7.                      if strtoint(bpd)<=90 then
  8.                      result := '5';
  9.                 end;
  10.      141..150 : begin
  11.                      if strtoint(bpd)<=90 then
  12.                      result := '4'
  13.                      else if strtoint(bpd)<=95 then
  14.                           result := '3';
  15.                 end;
  16.      151..160 : begin
  17.                      if strtoint(bpd)>95  then
  18.                      result := '2'
  19.                      else
  20.                      result := '2';
  21.                 end;
  22.      161..300 : begin
  23.                      if strtoint(bpd)>100  then
  24.                      result := '1'
  25.                      else
  26.                      result := '1';
  27.                 end;
  28.      else result := '0';
  29.   end;
  30. end;
ช่วยอธิบายความหมายของแต่ละ grade 0-5 หน่อยครับว่าคืออะไร เพราะมีบาง case แบ่ง grade ไม่ได้ครับ
เช่นผู้ป่วย วัด bps 139 bpd 93 result:= ''
โรงพยาบาลเมืองปาน (ขนาด 30 เตียง) จังหวัดลำปาง โทร 054-276345-6
Master Server : HP Proliant DL360G7 Ram DDR3 1333 ECC 2x2 GB  HDD 2x146 GB  CentOS 6.2 Linux MySQL 5.5.11
Slave Server I : Acer Altos G540 Ram DDR2 667 ECC 2x1 GB HDD 2x146 GB Redhat Ent 5.2 Linux Mysql 5.1.29
Slave Server II : คอมประกอบ Ram DDR2 667  2x2 GB HDD SATA 160 GB Endian Firewall Community release 2.4.1 Mysql 5.5.24
Client : Windows XP Sp2
ขึ้นระบบ 1 มิ.ย.50

ออฟไลน์ armds

  • Hero Member
  • *****
  • กระทู้: 1,084
  • armds
  • Respect: +10
    • ดูรายละเอียด
Re: ReportBuilder end user function
« ตอบกลับ #6 เมื่อ: กรกฎาคม 13, 2012, 11:37:43 AM »
0

ช่วยอธิบายความหมายของแต่ละ grade 0-5 หน่อยครับว่าคืออะไร เพราะมีบาง case แบ่ง grade ไม่ได้ครับ
เช่นผู้ป่วย วัด bps 139 bpd 93 result:= ''

อ้อ อันนี้หมอเขาต้องการดู grade ของคนไข้ความดันครับ
ถ้าในกรณี  bps 139 bpd 93 result:= '0'  ผลลัพก็จะได้  0 ครับ
แต่ความหมายในทางการวิเคราะห์ผมก็ไม่ทราบครับ  เขาอยากแบ่งแบบนี้ครับ 
เดี่ยวไปถามพี่พยาบาลก่อนนะครับ
โรงพยาบาลสมเด็จพระยุพราชด่านซ้าย จ.เลย
ขนาด 60 เตียง นวก. คอมพิวเตอร์ ขึ้นระบบ ปี 2548
ขอบคุณ อ.ชัยพร อ.สุชัย อ.เดชา อ.doreamon อ.naj อ.ขวด และอ.ในเว็บ hosxp.net ทุกท่าน

ออฟไลน์ manoi

  • Hero Member
  • *****
  • กระทู้: 8,669
  • Respect: +170
    • ดูรายละเอียด
    • HOSxP Community Center
Re: ReportBuilder end user function
« ตอบกลับ #7 เมื่อ: กรกฎาคม 13, 2012, 11:49:26 AM »
0
เอาไปใส่ไว้ใน Unit ตามตัวอย่างแฟ้มใน post แรกได้หรืเปล่าครับ
HOSxP Project Manager / Cheif Developer / BMS MD

ออฟไลน์ armds

  • Hero Member
  • *****
  • กระทู้: 1,084
  • armds
  • Respect: +10
    • ดูรายละเอียด
Re: ReportBuilder end user function
« ตอบกลับ #8 เมื่อ: กรกฎาคม 13, 2012, 12:00:13 PM »
0
เอาไปใส่ไว้ใน Unit ตามตัวอย่างแฟ้มใน post แรกได้หรืเปล่าครับ
ตัวอย่าง  THOSxPRapGetGradelab_fbsFunction  นี้ได้ไหมครับ
ถ้าได้จะได้เพิ่มที่เหลือครับ   :)

อ้อลืม อีกบรรทัดครับ 
raRegisterFunction('GetGradelab_fbs', THOSxPRapGetGradelab_fbsFunction);
บรรทัดสุดท้าย
แนบไฟล์ใหม่แล้วนะครับ อ.mn
« แก้ไขครั้งสุดท้าย: กรกฎาคม 13, 2012, 12:05:13 PM โดย armds »
โรงพยาบาลสมเด็จพระยุพราชด่านซ้าย จ.เลย
ขนาด 60 เตียง นวก. คอมพิวเตอร์ ขึ้นระบบ ปี 2548
ขอบคุณ อ.ชัยพร อ.สุชัย อ.เดชา อ.doreamon อ.naj อ.ขวด และอ.ในเว็บ hosxp.net ทุกท่าน

ออฟไลน์ manoi

  • Hero Member
  • *****
  • กระทู้: 8,669
  • Respect: +170
    • ดูรายละเอียด
    • HOSxP Community Center
Re: ReportBuilder end user function
« ตอบกลับ #9 เมื่อ: กรกฎาคม 13, 2012, 12:06:21 PM »
0
ลบ class ของ function ตัวอย่างออกแล้วแก้ให้เป็น Unit สำหรับ Function นี้ได้เลยครับ ผมลองแก้ให้แล้วครับ แต่ถ้าใครอยากจะใส่ Function ของตัวเอง ก็แก้ตาม Unit นี้ได้ครับ
HOSxP Project Manager / Cheif Developer / BMS MD

ออฟไลน์ manoi

  • Hero Member
  • *****
  • กระทู้: 8,669
  • Respect: +170
    • ดูรายละเอียด
    • HOSxP Community Center
Re: ReportBuilder end user function
« ตอบกลับ #10 เมื่อ: กรกฎาคม 13, 2012, 12:12:38 PM »
0
ผม link unit นี้ให้แล้วนะครับใน 3.55.7.13
HOSxP Project Manager / Cheif Developer / BMS MD

ออฟไลน์ armds

  • Hero Member
  • *****
  • กระทู้: 1,084
  • armds
  • Respect: +10
    • ดูรายละเอียด
Re: ReportBuilder end user function
« ตอบกลับ #11 เมื่อ: กรกฎาคม 13, 2012, 12:23:39 PM »
0
ผม link unit นี้ให้แล้วนะครับใน 3.55.7.13
เพิ่มอีก 2 ฟังชันครับ  อ.mn   :)
GetGradelab_hba1c
GetGradebp
โรงพยาบาลสมเด็จพระยุพราชด่านซ้าย จ.เลย
ขนาด 60 เตียง นวก. คอมพิวเตอร์ ขึ้นระบบ ปี 2548
ขอบคุณ อ.ชัยพร อ.สุชัย อ.เดชา อ.doreamon อ.naj อ.ขวด และอ.ในเว็บ hosxp.net ทุกท่าน

ออฟไลน์ manoi

  • Hero Member
  • *****
  • กระทู้: 8,669
  • Respect: +170
    • ดูรายละเอียด
    • HOSxP Community Center
Re: ReportBuilder end user function
« ตอบกลับ #12 เมื่อ: กรกฎาคม 13, 2012, 12:33:33 PM »
0
เพิ่มให้แล้วครับ  :)
HOSxP Project Manager / Cheif Developer / BMS MD

ออฟไลน์ armds

  • Hero Member
  • *****
  • กระทู้: 1,084
  • armds
  • Respect: +10
    • ดูรายละเอียด
Re: ReportBuilder end user function
« ตอบกลับ #13 เมื่อ: กรกฎาคม 13, 2012, 12:43:44 PM »
0
เพิ่มให้แล้วครับ  :)
เพิ่มเติมครับ อ.mn
GetHOSVariable

อันนี้ไม่ได้เขียนเองครับ  อยู่ใน hosxp  แล้วแต่อยากใช้งานกับรายงานด้วยครับ
โรงพยาบาลสมเด็จพระยุพราชด่านซ้าย จ.เลย
ขนาด 60 เตียง นวก. คอมพิวเตอร์ ขึ้นระบบ ปี 2548
ขอบคุณ อ.ชัยพร อ.สุชัย อ.เดชา อ.doreamon อ.naj อ.ขวด และอ.ในเว็บ hosxp.net ทุกท่าน

ออฟไลน์ chitvichai

  • Full Member
  • ***
  • กระทู้: 103
  • Respect: +5
    • ดูรายละเอียด
    • รพ.เมืองปาน
Re: ReportBuilder end user function
« ตอบกลับ #14 เมื่อ: กรกฎาคม 13, 2012, 14:47:35 PM »
0

ช่วยอธิบายความหมายของแต่ละ grade 0-5 หน่อยครับว่าคืออะไร เพราะมีบาง case แบ่ง grade ไม่ได้ครับ
เช่นผู้ป่วย วัด bps 139 bpd 93 result:= ''

อ้อ อันนี้หมอเขาต้องการดู grade ของคนไข้ความดันครับ
ถ้าในกรณี  bps 139 bpd 93 result:= '0'  ผลลัพก็จะได้  0 ครับ
แต่ความหมายในทางการวิเคราะห์ผมก็ไม่ทราบครับ  เขาอยากแบ่งแบบนี้ครับ 
เดี่ยวไปถามพี่พยาบาลก่อนนะครับ
ผมลอง แล้วครับ GetGradebp('139','93');
มัน return value ='' ครับ ไม่ใช่ 0 นะครับ
โรงพยาบาลเมืองปาน (ขนาด 30 เตียง) จังหวัดลำปาง โทร 054-276345-6
Master Server : HP Proliant DL360G7 Ram DDR3 1333 ECC 2x2 GB  HDD 2x146 GB  CentOS 6.2 Linux MySQL 5.5.11
Slave Server I : Acer Altos G540 Ram DDR2 667 ECC 2x1 GB HDD 2x146 GB Redhat Ent 5.2 Linux Mysql 5.1.29
Slave Server II : คอมประกอบ Ram DDR2 667  2x2 GB HDD SATA 160 GB Endian Firewall Community release 2.4.1 Mysql 5.5.24
Client : Windows XP Sp2
ขึ้นระบบ 1 มิ.ย.50

ออฟไลน์ armds

  • Hero Member
  • *****
  • กระทู้: 1,084
  • armds
  • Respect: +10
    • ดูรายละเอียด
Re: ReportBuilder end user function
« ตอบกลับ #15 เมื่อ: กรกฎาคม 13, 2012, 15:04:15 PM »
0

ช่วยอธิบายความหมายของแต่ละ grade 0-5 หน่อยครับว่าคืออะไร เพราะมีบาง case แบ่ง grade ไม่ได้ครับ
เช่นผู้ป่วย วัด bps 139 bpd 93 result:= ''

อ้อ อันนี้หมอเขาต้องการดู grade ของคนไข้ความดันครับ
ถ้าในกรณี  bps 139 bpd 93 result:= '0'  ผลลัพก็จะได้  0 ครับ
แต่ความหมายในทางการวิเคราะห์ผมก็ไม่ทราบครับ  เขาอยากแบ่งแบบนี้ครับ 
เดี่ยวไปถามพี่พยาบาลก่อนนะครับ
ผมลอง แล้วครับ GetGradebp('139','93');
มัน return value ='' ครับ ไม่ใช่ 0 นะครับ

ครับ โอกาสที่ bpd จะเป็น 93 ก็เป็นไปได้  แต่ผลลัพที่ไม่มีในเงื่อนไขก็จะเป็นค่าว่างครับ 
ผมก็เอาค่า returen value = '' หรือ 0 ก็มีความเดียวกันครับ

ประมาณนี้ครับ
function GetGradebp(bps,bpd:string): string;
begin
  result := '';

  case strtoint(bps)  of
     1..140   : begin
                     if strtoint(bpd)<=90 then
                     result := '5'
                     else
                     result := '0';
                end;
     141..150 : begin
                     if strtoint(bpd)<=90 then
                     result := '4'
                     else if strtoint(bpd)<=95 then
                          result := '3'
                          else
                          result := '0';
                end;
     151..160 : begin
                     if strtoint(bpd)>95  then
                     result := '2'
                     else
                     result := '2';
                end;
     161..300 : begin
                     if strtoint(bpd)>100  then
                     result := '1'
                     else
                     result := '1';
                end;
     else result := '0';
  end;
end;
โรงพยาบาลสมเด็จพระยุพราชด่านซ้าย จ.เลย
ขนาด 60 เตียง นวก. คอมพิวเตอร์ ขึ้นระบบ ปี 2548
ขอบคุณ อ.ชัยพร อ.สุชัย อ.เดชา อ.doreamon อ.naj อ.ขวด และอ.ในเว็บ hosxp.net ทุกท่าน