BMS-HOSxP Community
HOSxP => Report Exchange => ข้อความที่เริ่มโดย: naj ที่ มิถุนายน 13, 2012, 22:58:37 PM
-
ขออธิบายนิดหนึ่งนะครับ ว่าทางหน่วยงาน OPD(cur_dep=010) ของ รพ ผม ต้องการเปิดช่องทางพิเศษให้กับผู้สูงอายุ(>70 ปีขึ้นไป) และเด็ก(อายุ<5 ปี) ได้รับการตรวจก่อนผู้ป่วยทั่วไป เลยได้ Idea ว่าจะให้ห้องบัตรเป็นคนเลือกความเร่งด่วนของผู้ป่วยตอนที่ส่งตรวจเป็น มาก ซึ่งโปแกรมในหน้าเมนูคัดกรอง ทางพยาบาลที่คัดกรองก็จะเห็นสัญลักษณ์รูปหน้าคนยิ้ม ก็จะได้เรียกผู้ป่วยมาคัดกรองก่อน จะได้ไม่ต้องรอนาน แต่มีปัญหาว่าห้องบัตรไม่สะดวกที่ต้องมากำหนดเองทุกครั้ง บางครั้งส่งผิดก็ต้องเสียเวลากลับมาแก้ไขใหม่(แทนที่จะช่วยให้บริการง่ายขึ้น กลับเพิ่มความยุ่งยากให้กับเจ้าหน้าที่..) พี่หัวหน้าห้องบัตรเลยเสนอว่าน่าจะผลักให้เป็นหน้าที่ของโปรแกรม(admin งานเข้า :) :) :) :D :D :D) จัดการให้ auto น่าจะดี เลยลองเขียนคำสั่งในการตรวจสอบฝากไว้ใน FORM-RxORDER1 (ที่ รพ. ผม ห้องบัตร print ฟอร์มนี้ ให้กับ pt ทุกคนที่มารักษา ) ท่านใด
สนใจที่จะลองไปทดสอบก็ตามสบายเลยครับ :D :D :D :D
ดั้งนั้น ตอนที่ส่งตรวจแค่ให้เจ้าหน้าที่เลือกความเร่งด่วนเป็น ปกติ เท่านั้น เดี๋ยว script ใน FORM-RxORDER1 จะตรวจสอบให้เองครับ
ตัวอย่าง code
unit TanReg;
procedure main;
var
s1,s2,s3:string;
tc:Tclientdatset;
begin
s2:=report_value(3);
//showmessage(s2);
s1:=report_value(2);
s1:=trim(copy(s1,1,2));
// Showmessage(s1);
if (s1='FU') or (s1='Un') then
s1:='0' ;
if (strtoint(s1)>=70) or ((strtoint(s1)<6)) then
if getsqldata('select count(*) as dd from ovst where vn="'+s2+'" and cur_dep="010" ')>0 then
begin
tc:=Tclientdataset.create(nil);
tc.data:=Hosxp_getdataset('select pt_priority from ovst where vn="'+s2+'"');
tc.open;
tc.edit;
tc['pt_priority']:='1';
tc.post;
hosxp_updatedelta(tc.delta,'select pt_priority from ovst where vn="'+s2+'"');
tc.free;
//showmessage('You Can Done...');
end;
end;
end.
-
ขอบคุณมากครับ พอดีหนังสือเรื่องนี้ถึงโต๊ะผมพอดีเมื่อวานเลย ;D
-
สุดยอด...
-
เยี่ยมเลย อ.นาจ ที่มี tool ดีๆมาฝากเสมอ แต่ปัญหาคือหน้ายิ้มหรือหน้าบูดตูไม่สนตามคิวครับ จนท.บางคนยังไม่รู้เลยครับว่าสัญลักษณ์พวกนี้คืออะไร ตูไม่สนอีกเช่นกัน
-
report_value(2);
report_value(3);
รับค่าจากอะไร แล้วส่งค่าอะไรออกมาครับพี่นาจ
-
Script ที่ผมเขียนมันยังมี error อยู่นะครับ โดยมันจะไปเปลี่ยน pt_priority ของผู้ป่วยรายอื่นด้วย
ขอบคุณน้อง Golf_Win มากครับที่แจ้งปัญหามาให้ทราบ เดี๋ยวจะแก้ไขให้ใหม่นะครับ
สงสัยเหมือนกันตอนที่ทดสอบใน NoteBook ไม่พบ error นี้ ;D ;D ;D ;D ;D
-
report_value(2);
report_value(3);
รับค่าจากอะไร แล้วส่งค่าอะไรออกมาครับพี่นาจ
report_value(2) คือ Fullage
report_value(3) คือ VN
-
ขออภัยด้วยครับ แก้ไข code ให้ใหม่แล้ว ทดสอบกับระบบจริงของ รพ. น่าจะ Ok แล้วนะครับ (สังเกตจากไม่มีเสียงโทรศัพท์มา :D :D :D :D)
Thanks For Gowf_Win มากที่ช่วยตรวจสอบให้ครับ
Code....
unit YindeeAndTan;
procedure main;
var
s1,s2,s3:string;
tc:Tclientdatset;
begin
s2:=report_value(3);
//showmessage(s2);
s1:=report_value(2);
s1:=trim(copy(s1,1,2));
// Showmessage(s1);
if (s1='FU') or (s1='Un') then
s1:='0' ;
if (strtoint(s1)>=70) or ((strtoint(s1)<5)) then
if getsqldata('select count(*) as dd from ovst where vn="'+s2+'" and cur_dep="010" ')>0 then
begin
zquery.close;
zquery.sql.text:='update ovst set pt_priority="1" where vn="'+s2+'" and cur_dep="010" ';
zquery.execsql;
zquery.close;
//showmessage('You Can Done...');
end;
end;
end.
-
ได้รับโจทย์เพิ่มว่าให้นอกจากผู้ป่วยสูงอายุและเด็ก ทางงาน OPD อยากให้ครอบคลุมถึง พระ ชี สามเณร ด้วย คงต้องปล่อยให้ขอไปก่อน ...ตอนนี้ยังคิดไม่ออก ;D ;D ;D ;D ;D
-
ผมว่าพระ ชี สามเณร ดูเอาเองก็น่าจะรู้ครับ ;D ;D
-
ได้รับโจทย์เพิ่มว่าให้นอกจากผู้ป่วยสูงอายุและเด็ก ทางงาน OPD อยากให้ครอบคลุมถึง พระ ชี สามเณร ด้วย คงต้องปล่อยให้ขอไปก่อน ...ตอนนี้ยังคิดไม่ออก ;D ;D ;D ;D ;D
ความต้องการของมนุษย์โลก อย่าง เรา ๆ ท่าน ๆ ไม่มีสิ้นสุดครับ...ยืนยัน.. :D
-
ผมว่าพระ ชี สามเณร ดูเอาเองก็น่าจะรู้ครับ Grin Grin
;D ;D ;D
สงสัยกลัวร.ต.อ.ปลอมตัวมาหรือเปล่าครับพี่กอล์ฟ อิ อิ อิ
;D ;D ;D
-
คงอย่างที่ อ.เกื้อบอกครับ ว่าความต้องการไม่มีที่สิ้นสุด แต่ก็เข้าใจงาน OPD เขาอยากพัฒนางานบริการให้กับผู้มารับบริการ เลยถูกบังคับทางอ้อม ว่าทำให้หน่อย :D :D :D :D
หลังจากที่ไปหาแรงบันดาลใจมา ;D ;D ;D ;D ;D เลยได้ Idea ในการจัดการกรณีที่เป็นพระภิกษุ แม่ชี สามเณร โดยเพิ่ม code ในส่วนที่เป็นอักษรสีแดง
unit YindeeAndTan;
procedure main;
var
s1,s2,s3,fhn:string;
begin
s2:=report_value(3);
//showmessage(s2);
s1:=report_value(2);
s1:=trim(copy(s1,1,2));
// Showmessage(s1);
fhn:=GetSqldata('select hn from ovst where vn="'+s2+'" and cur_dep="010" limit 1');
s3:=GetSqlData('select count(*) as dd from patient where hn="'+fhn+'"and pname in("พระ","แม่ชี","สามเณร") ');
//Showmessage(s3);
if (s1='FU') or (s1='Un') then
s1:='0' ;
if (strtoint(s1)>=70) or ((strtoint(s1)<5)) or ((strtoint(s3)>0)) then
if getsqldata('select count(*) as dd from ovst where vn="'+s2+'" and cur_dep="010" limit 1 ')>0 then
begin
zquery.close;
zquery.sql.text:='update ovst set pt_priority="1" where vn="'+s2+'" and cur_dep="010" ';
zquery.execsql;
zquery.close;
//showmessage('You Can Done...');
end;
end;
end.
ปล..
ดีใจหลาย ที่ Spain ชนะกับเขาเป็นบ้างเสียที ;D ;D ;D ;D ;D ;D
-
ขอบคุณกับ script ดีๆๆ ครับ
-
รบกวนท่านเจ้าของกระทู้ ถ้าไม่รันscriptในreportจะทำได้ไหมครับ หรือรันที่ vn_script ตามรูปได้หรือไม่ครับ และต้องเขียน script อย่างไรครับ
-
ได้ครับ แต่ว่าต้องการระบุเงื่อนไขแบบไหนครับ :) :) :) :) :)
-
เงื่อนไขเดียวกันครับ <5 >70 โดยให้ scrip run ที่ห้องเวชระเบียนครับ
-
ขอเป็นแบบ pre_vn_script ได้ไหมครับ