BMS-HOSxP Community

HOSxP => Delphi / Pascal => ข้อความที่เริ่มโดย: manoi ที่ มีนาคม 16, 2023, 06:21:02 AM

หัวข้อ: การใช้งานระบบ Script Program ใน HOSxP XE / PCU XE
เริ่มหัวข้อโดย: manoi ที่ มีนาคม 16, 2023, 06:21:02 AM
สวัสดีครับทุกท่าน เหมือนกับผมจะห่างหายไปจาก Webboard นี้ไปนานมากๆ ตอนนี้ผมปรับ flow การทำงานในสำนักงานใหม่ ใช้ slack แทน และเชื่อมต่อระบบ นี้เข้ากับ webhook ของ slack แล้ว น่าจะไม่พลาดการแจ้งเตือนให้เข้ามาตอบในนี้ครับ

ก่อนหน้านี้มี admin หลายท่านถามเข้ามาเรื่องการใช้งาน Script ไม่ว่าจะเป็น กิจจา / ป๊อป /  นาจ /... (ขออภัยครับผมจำได้ไม่หมด) ก็เลยคิดว่าเขียนไว้ตรงนี้น่าจะดีกว่า และจริงๆ แล้วผมน่าจะเคยเขียนอธิบายไว้ที่ไหนสักแห่งแล้ว ถือว่าเขียนใหม่แบบ Update Concept อีกรอบก็แล้วกันนะครับ

ระบบ Script สามารถเข้าไปทดสอบออกแบบ/เขียน code ได้ที่เมนู Tools -> Form Designer -> Form Designer ครับ

[attach=1 width=350]

การเขียน Script เขียนได้ 2 แบบครับ คือแบบที่เป็น Script (ไม่มี UI) และแบบที่เป็นหน้าจอแสดงขึ้นมาให้ผู้ใช้งานเห็น และสามารถรับ Input ข้อมูล เหมือนกับเขียนโปรแกรม มาดูขั้นตอนแบบสร้างเป็นฟอร์มซึ่งเป็นแบบที่ง่ายที่สุดก่อนนะครับ

เลือก New Form (ปุ่มมุมซ้ายบน สีปุ่มมันเหมือนจะไม่ active แต่ว่าสามารถกดได้ครับ จะแสดง popup menu ขึ้นมาให้เลือก)

[attach=2 width=350]

อย่างแรกที่ต้องทำคือตั้งชื่อ Form ครับ โดยชื่อ Form นี้จะถูกนำไปตั้งเป็นชื่อของ Script Module ในระบบให้ด้วย ถ้าจะเปลี่ยนชื่อ Script Module ต้องมาแก้ที่ชื่อ Form (ใน Instance ของ Application เดียวกัน ปกติจะไม่สามารถสร้าง form ชื่อเดียวกันขึ้นมาทำงานพร้อมๆ กันได้ ซึ่งปกติ Flow ของการ Run Script ก็ไม่น่าจะมีปัญหาอะไร เพราะว่า ระบบจะแสดง Form แบบ Modal ขึ้นมาเวลาเรียกใช้งานครับ)

[attach=3 width=350]

ตั้งชื่อ Form เสร็จแล้วก็ควรมากำหนด Default Font ของ Form ใหม่เพราะจะมีผลกับ component ที่จะวางลงไปใน Form ถ้าเป็น ณ ตอนนี้ Tahoma size 12 น่าจะเหมาะสมที่สุด

ในตัวอย่างผมวาง Button ลงไป 1 ตัว แล้ว Double Click ที่ Button เพื่อสร้าง Event OnClick ของ Button

[attach=4 width=350]

เสร็จแล้วก็มาตั้งชื่อ ของ Script Application ที่ Tab สุดท้าย แล้วกด Save ก็จะเสร็จสิ้นในการสร้าง Script ครับ

[attach=5 width=350]

click Run -> Script Run ก็จะเป็นการ Run Script ที่เราเขียนครับ


[attach=6 width=350]
หัวข้อ: Re: การใช้งานระบบ Script Program ใน HOSxP XE / PCU XE
เริ่มหัวข้อโดย: manoi ที่ มีนาคม 16, 2023, 07:06:32 AM
ถัดไปมาดูปัญหาแรกที่หลายๆ ท่านเจอเวลานำ Script ไปใช้งาน ดูเหมือนว่า Script จะทำงานแล้วโปรแกรมไม่ทำงานต่อตาม Flow ปกติ อันนี้เนื่องมาจาก แต่เดิม การเรียกใช้งาน Script นั้นเป็นการเรียกใช้แบบไม่สนใจ result คือ ไม่ว่าจะบันทึกขัอมูลแบบไหนอย่างไร พอปิดหน้าจอ ก็ทำงานต่อ ซึ่งมันจะมีปัญหากับงานที่ต้องมีการยืนยัน หรือกรณีที่ต้องการให้ Script ทำการตรวจสอบข้อมูลตาม Logic ที่เขียนเอาไว้ ถ้าไม่ผ่าน ถือว่าทำงานต่อไปไม่ได้  ตอนนี้จึงมีการออกแบบว่า Script ที่เขียน ถ้าต้องการให้ระบบทำงานไปต่อได้หลังจาก Script ทำงานได้เสร็จสิ้นแล้ว ต้องกำหนดตัวแปรที่ชื่อว่า CurrentHostScriptOK ให้เป็น True ด้วย Statement นี้ครับ

โค๊ด: [Select]
   CurrentHostScriptOK := true;

ในตัวอย่างผมเขียนไว้ตรง event onClose ของ Form นะครับ

[attach=1 width=350]


ใน version ใหม่ มีการแก้ไขระบบให้ตรวจสอบสถานะของ Script ก่อนเรียกใช้งาน เพื่อให้สามารถ เปิด/ปิด ภายหลังได้ กรณี Script มีปัญหา ถ้าไม่ Check ตรงนี้ Script นี้จะไม่ถูกเรียกใช้งาน แต่จะกดปุ่ม Run ที่หน้าจอ ออกแบบได้ครับ

[attach=2 width=350]
หัวข้อ: Re: การใช้งานระบบ Script Program ใน HOSxP XE / PCU XE
เริ่มหัวข้อโดย: TanKit ที่ มีนาคม 16, 2023, 15:34:26 PM
ขอบพระคุณมากครับ อ.  ;D ;D
หัวข้อ: Re: การใช้งานระบบ Script Program ใน HOSxP XE / PCU XE
เริ่มหัวข้อโดย: manoi ที่ มีนาคม 16, 2023, 16:19:29 PM
คราวนี้มาดูการนำ Script ไปใช้งานนะครับ คือหลายๆ คนคงจะสงสัยว่า script ที่เขียนนี้จะเอาไปใช้ยังไง นอกจากที่จะต้องมา Run ที่หน้าจอ Script นี้ ใน HOSxP XE จะมีระบบ Tracking การ update ตาราง ว่าตอนนี้ user มีการบันทึกข้อมูลที่เกี่ยวข้องกับตารางอะไร และระบบ Script นี้จะไปทำการ hook กับ event ที่เกิดขึ้นกับตารางในระบบ ว่าหากมีการ เพิ่ม / แก้ไข / ลบ ข้อมูลจากตาราง ให้เรียกใช้งาน script ต่างๆ ได้ ซึ่งเมนูที่จะกำหนดให้ระบบเรียกใช้งาน Script จะอยู่ที่เมนูนี้ครับ

[attach=1 width=350]

ซึ่งในหน้าจอนี้ มีช่องที่ต้องอธิบายคือ table_op คือ เหตุการณ์ที่ต้องการให้ run script ว่าจะให้ run ตอนไหน
 1 = append, 2 = edit ,3 = delete

[attach=2 width=350]

run before เป็นตัวเลือก ว่าจะให้ script ทำงาน ก่อน หลัง หลังจาก ที่ข้อมูลถูกบันทึกนะครับ


ตอนนี้ตารางที่รองรับ event ที่ hook ไว้กับหน้าจอต่างๆ ที่ทดสอบแล้วจะมีตารางดังนี้ครับ

- patient
- ovst
- ipt
- doctor_wb
- ovst_doctor_sign
- doctor_wb_nurse
- opdscreen
- opitemrece
- opd_qs_slot
- person
- lab_head (เฉพาะ table_op = 2 , run_before = N)

ตารางที่ไม่ใช่ตารางจริงๆ จะเป็นการ hook operation ในหน้าจอนั้นๆ (เช่น *_wb_* )

หัวข้อ: Re: การใช้งานระบบ Script Program ใน HOSxP XE / PCU XE
เริ่มหัวข้อโดย: manoi ที่ มีนาคม 16, 2023, 16:59:01 PM
ท่านใดมีข้อสงสัย พิมพ์ถามได้ ใน webboard ระบบ webboard ตอนนี้ link webhook ไปยัง slack channel #webboard ของ  Workspace HOSxP Admin Contribute ครับ
หัวข้อ: Re: การใช้งานระบบ Script Program ใน HOSxP XE / PCU XE
เริ่มหัวข้อโดย: naj ที่ มีนาคม 18, 2023, 12:21:49 PM
การส่ง Parameter รหว่าง Form สามารถทำได้เหมือนใน Delphi ใช่ไหมครับ อ.ชัยพร
(Use Unit)
หัวข้อ: Re: การใช้งานระบบ Script Program ใน HOSxP XE / PCU XE
เริ่มหัวข้อโดย: BlueEye ที่ มีนาคม 23, 2023, 07:59:30 AM
เยี่ยมเลยครับ รอแบบนี้มานานเลย
หัวข้อ: Re: การใช้งานระบบ Script Program ใน HOSxP XE / PCU XE
เริ่มหัวข้อโดย: SIWIT ที่ มิถุนายน 27, 2023, 09:32:44 AM
คราวนี้มาดูการนำ Script ไปใช้งานนะครับ คือหลายๆ คนคงจะสงสัยว่า script ที่เขียนนี้จะเอาไปใช้ยังไง นอกจากที่จะต้องมา Run ที่หน้าจอ Script นี้ ใน HOSxP XE จะมีระบบ Tracking การ update ตาราง ว่าตอนนี้ user มีการบันทึกข้อมูลที่เกี่ยวข้องกับตารางอะไร และระบบ Script นี้จะไปทำการ hook กับ event ที่เกิดขึ้นกับตารางในระบบ ว่าหากมีการ เพิ่ม / แก้ไข / ลบ ข้อมูลจากตาราง ให้เรียกใช้งาน script ต่างๆ ได้ ซึ่งเมนูที่จะกำหนดให้ระบบเรียกใช้งาน Script จะอยู่ที่เมนูนี้ครับ

(Attachment Link)

ซึ่งในหน้าจอนี้ มีช่องที่ต้องอธิบายคือ table_op คือ เหตุการณ์ที่ต้องการให้ run script ว่าจะให้ run ตอนไหน
 1 = append, 2 = edit ,3 = delete

(Attachment Link)

run before เป็นตัวเลือก ว่าจะให้ script ทำงาน ก่อน หลัง หลังจาก ที่ข้อมูลถูกบันทึกนะครับ


ตอนนี้ตารางที่รองรับ event ที่ hook ไว้กับหน้าจอต่างๆ ที่ทดสอบแล้วจะมีตารางดังนี้ครับ

- patient
- ovst
- ipt
- doctor_wb
- ovst_doctor_sign
- doctor_wb_nurse
- opdscreen
- opitemrece
- opd_qs_slot
- person

ตารางที่ไม่ใช่ตารางจริงๆ จะเป็นการ hook operation ในหน้าจอนั้นๆ (เช่น *_wb_* )
สอบถามครับอาจารย์
ถ้าต้องการทำ POPUP หน้าตรวจแพทย์ ผมใส่เป็นตาราง doctor_wb ไม่ทำงานครับ แต่ opitemrece ทำงานอยู่ครับ ผมใส่ผิดตรงไหนรึปล่าวครับผม


หัวข้อ: Re: การใช้งานระบบ Script Program ใน HOSxP XE / PCU XE
เริ่มหัวข้อโดย: pong3plas ที่ พฤศจิกายน 17, 2023, 09:00:41 AM
Script no UI เขียนยังไงคับ ใช้เมนู Form Designer เหมือนกันเลยไหมคับ