ที่ ร.พ. มีการใช้งาน HOSxP PCU ร่วมกับ HOSxP คือใช้ฐานข้อมูลเดียวกัน โดย HOSxP PCU ถูกนำไปใช้ใน PCU ที่อยู่นอกโรงพยาบาลเชื่อมโยงกันด้วย Wireless ระยะทางประมาณ 2 ก.ม.
ปัญหาที่เกิดมีขึ้นก็คือ ทุกครั้งที่เรียกใช้งาน HOSxP PCU เมื่อ Login เข้าโปรแกรม
ไม่ว่า user ที่ login จะมีสิทธิอะไร โปรแกรมก็จะแสดง message box ให้เรากด update structure ตลอด ก็พยายามแจ้งผู้ใช้งานที่ PCU ว่า "
ห้ามกด Enter" หรือตอบ yes ให้ไปกด No แทน เพื่อป้องกันการ update structure จากระบบ HOSxP PCU ซึ่งก็ผ่านมาได้หลายเดือน ไม่มีปัญหาอะไร
ซึ่งผมก็คิดในใจอยู่นานว่าจะให้อ.ชัยพร ปรับ focus ของปุ่มให้ไป default ที่ No แทน ป้องกันความผิดพลาดที่อาจจะเกิดขึ้นได้ หรือปรับ HOSxP PCU ให้ตรวจสอบสิทธิผู้ใช้ที่ Login เสียก่อน ... แต่ก็ยังไม่ได้มา Post ขอ
มาถึงบ่ายแก่ ๆ ของวันนี้ เจ้าหน้าที่เวชกรรมสังคม เกิดเผลอหรืออย่างไรไม่ทราบได้ไปกด Enter ตรง Yes เข้าไปให้ คราวนี้ระบบค้างเลยครับ เพราะไป update structure ของ opitemrece โดยปรับขนาดของ column staff เป็น 10 ด้วยคำสั่ง Alter table opitemrece modify staff varchar(10) ซึ่งจริง ๆ แล้วผมได้ upgrade structure ด้วย HOSxP ไปจนถึง version 3.56.4.22 แล้ว ซึ่ง opitemrece ถูกปรับเป็น varchar(25) ไปแล้ว
เหตุการณ์ทั้งหมดเกิดขึ้นจอมผมขึ้นไปประชุม โชคดีที่ผมลงมาก่อนเลิกประชุม เนื่องจากมีภาระกิจต้องไปงานพระราชทานเพลิงศพ(เป็นกรณีพิเศษ) ของมารดาเจ้าหน้าที่ห้องยา ก่อนไปงาน ผมแวะลงมาที่ห้อง ก็ได้รับรายงานจากน้องที่ดู MySQL Monitor อยู่ว่าระบบค้าง กราฟขึ้นสูง พอผมเข้าไปดูก็พบว่ามีหลายเครื่องในระบบขึ้น waiting to ... และเวลาของชุดคำสั่ง (query) ในหน้า process list ของ MySQL Monitor ก็เดินไปเรื่อย ๆ ผมให้น้องเรียงดูเวลามากที่สุด เพื่อให้ทราบว่าปัญหามาจากเครื่องไหน ip อะไร จะได้ไปจัดการได้
น้องบอกว่าจัดการปิดโปรแกรมที่เครื่องนั้นไปแล้ว (ก่อนหน้าที่ผมจะลงมา) แต่ระบบก็ยังค้างอยู่
ผมก็เลยบอกไปว่า ตอนนี้ชุดคำสั่งถูกส่งมา run ที่ server แล้ว ปิดโปรแกรมที่ Client ไปก็ไม่ได้แก้ไขปัญหานี้ได้ และให้ทำการ Kill Process ที่เป็นปัญหานั้น (Alter table opitemrece ....) ปัญหาก็จบไปอย่างนึงแล้ว ระบบกลับมาสู่สภาวะปกติ
ผมก็ออกไปงานศพได้อย่างไร้กังวลปล. 1 ปกติผมจะมี PC เครื่องหนึ่งที่เปิด MySQL Monitor ไว้ตลอดเวลา และให้น้อง ๆ ใช้ Team Viewer เข้ามาตรวจสอบดูกราฟ หรือ process บ่อย ๆ
ปล. 2 เครื่อง PC นี้ทำหน้าที่หลายอย่าง เปิด Application ไว้หลายตัว ได้แก่ MySQL Monitor, Replication Agent, BMS Datacenter Synchronize
แต่ที่ยังติดค้างอยู่ในใจก็คือทำอย่างไรให้ใช้ HOSxP PCU ได้โดยไม่ต้องมาคอยระวังเรื่องการเผลอกดปุ่ม Update structure อีก
หลังจากกลับจากงานศพผมก็มาตรวจสอบข้อสงสัยอะไรบางอย่างที่เกี่ยวข้องกันระหว่าง HOSxP กับ HOSxP PCU ว่าโปรแกรม HOSxP PCU รู้ได้อย่างไรว่า Structure ของ database เก่ากว่าตัวโปรแกรม ทั้ง ๆ ที่จริง ๆ แล้วใหม่กว่า (database structure เป็น 3.56.4.22 แต่ HOSxP PCU เป็น 3.56.3.18)
จากประสบการณ์ที่เคย Update structure ของ HOSxP มา และสามารถตรวจสอบ version ของ database ได้ด้วยคำสั่ง
select * from sys_var where sys_name like "%current_db%" ซึ่งทำให้เราทราบได้ว่า database structure จริง เป็น version ไหน และถูกต้องกว่าการดูจากหน้าจอโปรแกรม (ChkDBVersion.png)
และใน Notebook ที่ผมใช้งานอยู่ก็มีสิ่งที่จำเป็นอยู่ครบ ได้แก่ HOSxP พร้อม database ที่ initial import มาเมื่อไม่นานมานี้ และมี HOSxP PCU ติดตั้งอยู่ด้วย และมาได้เคยลองกด update structure ของ HOSxP PCU ที่ connect กับฐานใน Notebook ผม เพื่อดูว่าจะมีอะไรเปลี่ยนแปลง (ซึ่งตอนนั้นไม่เห็นความเปลี่ยนแปลง...เพราะเราไม่รู้)
ครั้งนี้ผมลองเปิด HOSxP PCU เพื่อดูว่าพอจะแก้ปัญหาในเบื้องต้นได้อย่างไรบ้าง สิ่งที่ทำให้ผมแปลกใจอย่างหนึ่งก็คือ HOSxP PCU ไม่ได้มี Message box ขึ้นมาถามให้ upgrade structure อย่างที่เคยเป็น (หรือเป็นอยู่ในปัจจุบันกับเครื่อง Client อื่น ๆ) แสดงว่าต้องมีการเก็บค่าของ version ในตารางของ HOSxP แน่ ๆ ...แต่อยู่ตรงไหนล่ะ
(ปกติไม่ได้สังเกต sys_name อื่น ๆ นอกจาก current_db_structure_version)ผมจึงลอง run คำสั่ง SQL นี้ครับ
select * from sys_var where sys_name like "%version%" ผลลัพธ์ที่ได้คือ (ChkDBVersion2.png) เห็น sys_name ที่มีคำว่า PCU อยู่ด้วย (LAST_PCU_UPGRADE_STRUCTURE_VERSION)
(ปกติไม่ได้สังเกต sys_name อื่น ๆ นอกจาก current_db_structure_version ....อีกครั้ง)Bingo!!!! ผมก็เลยทราบว่า HOSxP PCU คงตรวจสอบ version จากตรงนี้ คราวนี้ผมก็เปิด HOSxP ที่ใช้กับฐานจริง พบว่า sys_value ของ sys_name ="LAST_PCU_UPGRADE_STRUCTURE_VERSION" เป็นค่าว่างครับ
ผมก็เลยจัดการใส่ค่า version (ตามรูปแบบของ HOSxP PCU) ลงใน sys_value ของ sys_name ="LAST_PCU_UPGRADE_STRUCTURE_VERSION" เพื่อแก้ปัญหาที่กวนใจผม