เล่าประสบการณ์การพัฒนาระบบเฝ้าระวังอุณหภูมิตู้เก็บยาในโรงพยาบาล

Puwadon Sricharoen
LINE Developers Thailand
4 min readNov 17, 2020

หนึ่งในหลายโปรเจกต์ Internet of things (IoT) ที่เราทำกันที่โรงพยาบาล

ก่อนอื่นต้องย้อนกลับไปเมื่อปี พ.ศ. 2560 ตอนนั้นผมและทีมทำงานอยู่ที่โรงพยาบาลเจ้าพระยาอภัยภูเบศร จังหวัดปราจีนบุรี ประกอบกับเป็นช่วงที่เรากำลังอยากลองทำโปรเจกต์เกี่ยวกับ Internet of things (IoT) ช่วงนั้นมีหลายบริษัทเข้ามาเสนอระบบมอนิเตอร์ต่างๆให้กับโรงพยาบาลอยู่บ่อยครั้งและหนึ่งในนั้นก็คือ ตู้เก็บยา

หลังจากผมและคุณหมอเข้าฟังการนำเสนอของบริษัทแห่งหนึ่งแล้ว มีจังหวะที่คุณหมอหันกลับมาพูดกับผมว่า “เราทำกันเองได้มั้ย” ในวินาทีนั้นผมตอบกลับไปว่า “ได้ครับ” นั่นคือจุดเริ่มต้นของโปรเจกต์ชื่อ “ภูเบศร มอนิเตอร์” (Bhubejhr Monitor) หลังจากวันนั้นผมก็เริ่มรวบรวมทีมขึ้นมาได้ดังนี้

  • Prakhan Jansawang ผู้ที่จะประกอบและเขียนโปรแกรมให้กับชุดเซ็นเซอร์ เพื่อวัดอุณหภูมิของตู้เย็นและส่งขึ้นเซิฟเวอร์
  • Puwadon Sricharoen พัฒนาเว็บไซต์สำหรับตั้งค่าอุณหภูมิ แจ้งเตือน ส่งแจ้งเตือนไปยังไลน์กลุ่มของเภสัชกร ดูอุณหภูมิย้อนหลังและต้องแสดงผลได้ทั้งบน Desktop และ Mobile
  • Nathaworn Pattarasundorn ผู้ที่จะมาช่วยดูระบบเน็ตเวิร์คของโรงพยาบาลที่ซับซ้อนมากในตอนนั้น เราจำเป็นต้องใช้ IP address สำหรับส่งข้อมูลรวมถึงการเดินสายแลนไปยังจุดที่ตู้เย็นตั้งอยู่

โดยมีหลักการทำงานคือ ระบบจะวัดอุณหภูมิจากตู้เย็นในคลังยาของโรงพยาบาลและสามารถตั้งเงื่อนไขไว้ว่าหากอุณหภูมิสูงหรือต่ำกว่าที่ตั้งค่าไว้ ให้เริ่มแจ้งเตือนผ่านทาง LINE เพื่อให้เจ้าหน้าที่ไปตรวจสอบ ซึ่งหลังจากนี้ผมจะขอใช้คำว่า “เรา” แทนการเรียกทั้งทีมนะครับ

ทำความเข้าใจปัญหาและเริ่มออกแบบระบบ

ปัญหาแรก จะเอาอุณหภูมิออกมาจากตู้เย็นได้อย่างไร คำตอบคือ ต้องมีชุดเซ็นเซอร์วัดอุณหภูมิติดตั้งไว้ที่ตู้เย็นและส่งข้อมูลขึ้นไปที่เซิร์ฟเวอร์ จากนั้นต้องมีเว็บให้สามารถเข้าไปตั้งค่าอุณหภูมิ เปิดปิดการแจ้งเตือน รวมถึงการดูข้อมูลย้อนหลังเพื่อใช้สำหรับการวิเคราะห์ปัญหาที่เกิดไปแล้วและกำลังจะเกิดในอนาคต

ปัญหาถัดไป การแจ้งเตือนที่จะต้องติดตัวกับเจ้าหน้าที่ได้มีหลายวิธีคือ SMS, Email และ LINE Notify ซึ่งเป็นตัวเลือกที่ดีที่สุดเพราะง่ายและประหยัดมาก เราจะให้เภสัชกรและเจ้าหน้าที่ที่รับผิดชอบงานส่วนนี้เข้าไปอยู่ใน LINE Group ซึ่ง LINE Notify Bot จะส่งการแจ้งเตือนมาในกลุ่มนี้เท่านั้น ซึ่งทางเจ้าหน้าที่เองก็ตั้งกฏกันว่าต้องเปิดแจ้งเตือนไว้เสมอ

สำรวจคลังยาของโรงพยาบาล

ภายในคลังยาจะมีตู้เย็นจำนวนมากที่ใช้สำหรับเก็บยาและยาแต่ละชนิดมีอุณหภูมิเก็บรักษาที่แตกต่างกัน ทำให้ตู้เย็นบางตู้ต้องทำความเย็นต่ำกว่า -25 องศากันเลยทีเดียว

มียาอีกจำนวนมากที่ไม่ต้องเก็บในตู้เย็น ซึ่งในห้องนี้ก็จะควบคุมอุณหภูมิด้วยเครื่องปรับอากาศอยู่แล้ว อีกปัญหาสำคัญคือเราต้องเดินสายแลนและสายไฟฟ้าเข้ามาในห้องนี้ด้วย

ภายในคลังยาควบคุมอุณหภูมิด้วยเครื่องปรับอากาศ

เราพบว่าคลังยามีระบบแจ้งเตือนอยู่แล้ว หลักการทำงานคือจะมีเซ็นเซอร์ติดตั้งอยู่ที่ตู้เย็นทุกตัว เมื่อพบว่าอุณหภูมิสูงหรือต่ำกว่าที่ตั้งไว้ระบบจะแจ้งเตือนไปที่ห้องควบคุมคลังยาและห้องจ่ายยาของโรงพยาบาล (จะมีเภสัชกรจ่ายยาให้คนไข้อยู่) ด้วยการส่งเสียงผ่านลำโพงเล็กๆที่อยู่ในห้องนั้นเพื่อให้ใครสักคนมาดูว่าเกิดอะไรขึ้น

ระบบมอนิเตอร์เดิมของคลังยา

จากที่เราได้คุยเภสัชกรและเจ้าหน้าที่ ทุกคนบอกเราว่าในช่วงเวลาปกติ (เวลาราชการ) ระบบเดิมสามารถทำงานได้ดีเพราะทุกคนพร้อมที่จะผลัดไปกันดูความเรียบร้อยที่คลังยาอยู่เสมอ แต่ปัญหาจริงๆอยู่ช่วงหลังเลิกงานและวันหยุด ซึ่งบางครั้งเจ้าหน้าที่ไม่ได้อยู่ในจุดที่จะได้ยินเสียงจากลำโพงตลอดเวลา และนั่นคือความเสี่ยงที่ยามูลค่าหลายแสนบาทอาจเกิดความเสียหายได้

เครื่องวัดอุณหภูมิแบบปรอท (Liqud in glass thermometer)

ในตู้เย็นทุกตู้จะมีเครื่องวัดอุณหภูมิแบบปรอท (Liqud in glass thermometer) ประจำตู้ด้วย หมายความว่าเมื่อเราติดตั้งเซ็นเซอร์ตัวใหม่เข้ากับตู้เย็นแล้ว จะต้องปรับค่าอุณหภูมิของเซ็นเซอร์ให้แสดงผลตรงกับเครื่องวัดอุณหภูมิแบบปรอทเดิมด้วยหรือที่เรียกว่า คาลิเบรท (Calibration)

เริ่มพัฒนา

ก่อนอื่นเราต้องประกอบเซ็นเซอร์ขึ้นมาก่อน ด้วยที่ทีมเราไม่เคยทำงานกับฮาร์ดแวร์มาก่อน จึงจำเป็นเลือกอุปกรณ์และเทคโนโลยีที่เรารู้จักและสามารถเริ่มงานได้ทันที ซึ่งอาจจะไม่ใช่ตัวเลือกเหมาะสมกับงานที่สุดหรือคุณภาพดีที่สุด

Raspberry Pi 3 Model B+

บอร์ดนี้ใช้ชิพ Quad-Core ARM ความเร็ว 1.4 GHz มีแรม 1 GB รองรับ Wi-Fi 2.4 GHz และ 5GHz มี Bluetooth 4.2 รองรับ Gigabit Ethernet ที่ 300 Mbps พอร์ต USB 2.0 จำนวน 4 พอร์ต รองรับระบบปฏิบัติการ Linux Raspbian (ซึ่งสเปคเกินความจำเป็นไปมาก)

1.4GHz 64-bit quad-core processor, dual-band wireless LAN, Bluetooth 4.2/BLE

Waterproof Temperature Sensor (DS18B20)

จุดเด่นของเซ็นเซอร์ตัวนี้คือ กันน้ำได้ มีขนาดเล็ก ติดตั้งง่ายและสามารถวัดอุณหภูมิได้ตั้งแต่ -50 จนถึง 125°C

Raspberry PI 3 Heatsink Set (3pcs)

คาดว่าตัวบอร์ดน่ามีความร้อนพอสมควรเนื่องจากต้องทำงานอยู่ตลอดเวลา เราจึงสั่ง Heatsink สำหรับระบายความร้อนมาเผื่อด้วย

ส่วนอุปกรณ์อื่นเพิ่มเติม เช่น สายมลัติคอร์ 4CTSL (สายเซ็นเซอร์), Switching Power Supply, Connector 3p (ขั่วต่อ Sensor), Spacer (น็อตรองวงจร) แผ่นปริ้นอเนกประสงค์และกล่องพลาสติกสำหรับบรรจุวงจรทั้งหมด

เริ่มประกอบบอร์ดเข้ากับเซ็นเซอร์
ติดตั้ง Raspberry Pi OS

สำหรับในส่วนโปรแกรมของบอร์ด เราเลือกใช้ภาษา Python โดยเริ่มจากดึงค่าอุณหภูมิตั้งค่าจากเซิร์ฟเวอร์มาเก็บไว้ก่อน เพื่อจะได้รู้ว่าเซ็นเซอร์ตัวนี้ถูกตั้งอุณหภูมิสำหรับแจ้งเตือนสูงสุดและต่ำสุดอยู่ที่กี่องศา จากนั้นจะดึงอุณหภูมิออกมาจากเซ็นเซอร์และส่งกลับไปที่เซิร์ฟเวอร์ทุกๆ 3 นาที (1 วันส่งข้อมูลประมาณ 480 ครั้ง) แต่ในความเป็นจริงแล้วบอร์ดได้รับข้อมูลจากเซ็นเซอร์ทุกวินาทีอยู่แล้ว เราจึงเพิ่มเงื่อนไขพิเศษเข้าไปอีก เมื่อพบว่ามีอุณหภูมิผิดปกติจากค่าที่ดึงมาเก็บไว้ทีแรก เราจะให้บอร์ดส่งข้อมูลมาที่เซิร์ฟเวอร์ทันที (ไม่ต้องรอลูป 3 นาที)

ตัวอย่างฟังก์ชั่นสำหรับส่งข้อมูลขึ้นเซิฟเวอร์

เราใช้เวลาประกอบบอร์ดเข้ากับเซ็นเซอร์ เขียนโปรแกรม พัฒนาเว็บที่ใช้เก็บข้อมูลซึ่งทั้งหมดประมาณ 1 สัปดาห์ ครั้งแรกที่ได้เชื่อมต่อทั้งสองส่วนเข้าด้วยกัน ได้เห็นตัวเลขที่ถูกส่งมาจากเซ็นเซอร์เป็นความรู้สึกที่ตื่นเต้นมากๆ

บรรยากาศส่งข้อมูลจากเซ็นเซอร์ครั้งแรก

เริ่มการติดตั้ง

หลังจากทดสอบกันอยู่หลายวัน ก็ถึงเวลาติดตั้งในสถานที่จริง ซึ่งในโรงพยาบาลมีคลังยาอยู่หลายห้องและมีโซนย่อยแยกกันอีก จำนวนตู้เย็นที่มีทั้งหมดมากกว่า 10 ตู้ ทำให้ปัญหาใหญ่ของเราในตอนนี้คือการเดินระบบเน็ตเวิร์ค เพื่อประหยัดงบจึงจำเป็นต้องเลือกการเดินสายแลน แทนเราเตอร์ (WiFi) ทำให้มีงานช่างเข้ามาเพิ่มด้วย เช่น การเจาะผนัง ตอกหมุดสายไฟ

ต้องเจาะผนังเพื่อเดินสายแลนและสายไฟฟ้า

สำหรับในบางจุดที่มีตู้เย็นอยู่ใกล้กันทำให้เราสามารถบรรจุบอร์ดเข้ากล่องพลาสติกได้มากกว่า 1 ตัวและใช้วิธีการลากสายยาวไปยังตู้เย็นแทน

เราตั้งใจว่าจะไม่เจาะหรือทำการดัดแปลงตู้เย็นเลย ใช้วิธียึดหรือวางบอร์ดไว้ในที่ลับสายตาแทน ส่วนหัวเซ็นเซอร์ที่ต้องไปอยู่ในตู้เย็น เราก็ใช้ช่องทางเดียวกันสายเดิม (ระบบเดิมของโรงพยาบาล) ทำให้ตู้เย็นแต่ละตัวจะมีเซ็นเซอร์อยู่ 2 หัว ทำให้ระบบเดิมของโรงพยาบาลยังใช้งานได้ตามปกติ ซึ่งทางเภสัชกรแจ้งว่าในช่วงแรกจะเปิดใช้ระบบทั้งคู่ทำงานไปพร้อมกัน จนกว่าจะมั่นใจได้ว่าระบบใหม่สามารถเข้ามาแก้ปัญหานี้ได้จริง

เซ็นเซอร์สำหรับวัดอุณหภูมิภายในตู้เย็น

เมื่อติดตั้งเรียบร้อยเราต้องสังเกตุว่าอุณหภูมิที่ได้ตรงกับเครื่องวัดอุณหภูมิแบบปรอทเดิมหรือไม่ การวางตำแหน่งเซ็นเซอร์มีผลกับตัวเลขอย่างชัดเจน ตัวอย่างเช่น ถ้าวางตำแหน่งหัวเซ็นเซอร์ใกล้กับเสาเหล็กของตู้เย็นมากเกินไป ค่าอุณหภูมิจะผิดไปค่อนข้างมาก

ค่าอุณหภูมิต้องแสดงผลตรงกับเครื่องวัดอุณหภูมิแบบปรอทด้วย

เมื่อติดตั้งทุกอย่างเรียบร้อยแล้วเราก็เริ่มเปิดระบบจริงทันที ในช่วงสัปดาห์แรกต้องติดตามผลลัพธ์ของการทำงานในหลายส่วนอย่างใกล้ชิด ตัวอย่างเช่น การแจ้งเตือนผ่าน LINE Notify, ความความเสถียรของบอร์ด, ความร้อนและระบบเน็ตเวิร์ค ว่าทุกอย่างยังทำงานได้สมบูรณ์ดีหรือไม่

ตัวอย่างข้อความแจ้งเตือนในกลุ่มไลน์เมื่อพบอุณหภูมิผิดปกติ

เมื่อติดตั้งเซ็นเซอร์ครบทุกจุด เราจะได้หน้า Dashboard ที่แสดงอุณหภูมิตู้เย็นหลายๆตู้พร้อมกัน ซึ่งในเฟสแรกเรามีทั้งหมด 9 ตู้ ซึ่งเภสัชกรและเจ้าหน้าที่ทุกคนสามารถเข้ามาดูอุณหภูมินี้ได้จากคอมพิวเตอร์หรือมือถือด้วย Username, Password ได้ตลอดเวลา

หน้า Dashboard แสดงอุณหภูมิของตู้เย็น

เมื่อใช้งานมาระยะหนึ่งพบว่าการแจ้งเตือนของระบบมีความหมายที่หลากหลายมากขึ้น ตัวอย่างเช่น ช่วงที่ไฟดับหรือไฟตกชั่วขณะ ตู้เย็นจะดับและติดทำให้อุณหภูมิสูงขึ้น ระบบจะเริ่มส่งการแจ้งเตือนบ่อยครั้งขึ้นหรือเมื่อตู้เย็นถูกเปิดเป็นเวลานานๆ ระบบก็จะแจ้งเตือนด้วยเช่นกันเพราะพบว่าอุณหภูมิมีการเปลี่ยนแปลงเกินจุดที่กำหนดไว้ ซึ่งสามารถดูอุณหภูมิย้อนหลังของตู้เย็นนั้น ว่าพบความผิดปกติช่วงใดบ้าง

แสดงอุณหภูมิย้อนหลัง

มีบางช่วงไม่มีการแจ้งเตือนใดๆเลยติดต่อกันหลายวัน จนทำให้ทุกคนรู้สึกไม่สบายใจหรือเข้าใจว่าระบบมีปัญหาอะไรหรือไม่ เราจึงเพิ่มการแจ้งเตือนประจำวันเข้าไป ซึ่งระบบจะดึงอุณหภูมิของตู้เย็นทุกตัวและส่งเข้ากลุ่มไลน์วันละ 2 ครั้ง ห่างกัน 12 ชั่วโมง

ตัวอย่างรายงานประจำวัน

พบปัญหาหลังผ่านไป 1 ปี

เราได้รับแจ้งจากพี่เภสัชกรว่า ไม่ค่อยได้รับแจ้งเตือนจากตู้เย็นบางตัว เราเดาว่าน่าจะเป็นที่ระบบเน็ตเวิร์คของโรงพยาบาลหลุดบ่อยทำให้ส่งข้อมูลไม่ถึงเซิฟเวอร์ แต่เมื่อเดินทางไปที่คลังยาพบว่าตัวบอร์ดหลายตัวไม่ทำงาน(ดับ) ซึ่งมีอยู่ 2 สาเหตุคือ SD Card และอะแดปเตอร์แปลงไฟเสีย เป็นเพราะต้องทำงานตลอด 24 ชั่วโมงเป็นเวลานาน เมื่อเปลี่ยนตัวใหม่ก็กลับมาทำงานได้ตามปกติ เป็นอีกปัญหาที่เราต้องหาวิธีแก้ต่อไป

ยังมีจุดบกพร่องให้ยังพัฒนาต่ออีกหลายประเด็น เราตั้งสมมุติฐานว่าหากมีเซ็นเซอร์มากกว่า 1 ตัวในตู้เย็นจะทำให้เราได้อุณหภูมิที่เที่ยงตรงมากขึ้น เพราะตู้เย็นบางตู้มีขนาดค่อนข้างใหญ่และน่าจะช่วยให้ยังวัดอุณหภูมิได้หากมีเซ็นเซอร์ตัวใดตัวหนึ่งเสียหาย (จะได้เปลี่ยนทัน)

ตอนนี้เรากำลังพัฒนาเซ็นเซอร์ชุดใหม่กับ NodeMCU เราพบว่าข้อดีคือเจ้าตัวนี้กินไฟน้อย ทนทาน เร็วกว่า ควบคุมการทำงานด้วยภาษา C ซึ่งเขียนไม่ยากและที่สำคัญราคาถูกมาก จนทำให้เราสามารถเปลี่ยนตัวใหม่ได้ทันทีเมื่อมีบอร์ดชุดไหนเสียหาย และยังเชื่อมต่อ WiFi ได้อีกด้วย ช่วยแก้ปัญหาที่ต้องเดินสายแลนโดยที่ใช้เร้าเตอร์ปล่อยสัญญาณอินเตอร์เน็ตให้กับเซ็นเซอร์โดยตรง ซึ่งทั้งหมดนี้อยู่ในช่วงพัฒนาในเวอร์ชั่นต่อไป

อีกปัญหาที่เราเจอคือ ไฟฟ้าดับ ทำให้เซ็นเซอร์ดับไปด้วย ในเวอร์ชั่นต่อไปเราอาจจะต้องเพิ่มแบตเตอรี่ขนาดเล็กเข้าไปและเขียนโปรแกรมให้ตัวบอร์ดเก็บข้อมูลระหว่างที่ไฟดับจากนั้นรอจนกว่าไฟติดค่อยส่งข้อมูลย้อนหลังขึ้นเซิฟเวอร์อีกครั้ง

ในฝั่งเซิร์ฟเวอร์พบว่ามีการส่งข้อมูลเดือนละประมาณ 230,000 ครั้งต่อเดือน (เซ็นเซอร์ 10 ชุด) และใช้ Bandwidth มากกว่า 300 MB ต่อเดือน

ปริมาณข้อมูลทีส่งขึ้นเซิฟเวอร์ในเวลา 30 วัน

ในส่วนฐานข้อมูลใช้เป็น MySQL ซึ่งหลังจากผ่านไป 2 ปี พบว่าฐานข้อมูลมีขนาดใหญ่ขึ้นเรื่อยๆและปัจจุบันมีขนาดอยู่ที่ 300 MB มีข้อมูลอุณหภูมิประมาณ 3 ล้านรายการ

ผ่านมาแล้ว 2 ปี กับระบบแจ้งเตือนอุณหภูมิตู้เก็บยาของโรงพยาบาล เราทำกันไว้ตั้งแต่ตอนยังทำงานอยู่ที่นี่ ระหว่างปีพบปัญหาให้แก้อยู่ตลอดและจุดด้อยที่สามารถพัฒนาต่อได้อีก ถือเป็นโปรเจกต์แก้เบื่อแต่ได้ใช้ประโยชน์จริงจนถึงทุกวันนี้ และทุกครั้งพี่ๆเภสัชจะมีขนมนมเนย ชากาแฟเตรียมไว้เพียบ

เสียงตอบรับจากเภสัชกร

ลองสังเกตุว่าเราไม่ได้ใช้เทคโนโลยีที่ซับซ้อนเข้ามาแก้ปัญหา นั่นหมายความว่าเราเน้นกับผลลัพธ์ว่าสามารถแก้ปัญหาได้จริงหรือไม่ ซึ่งผลลัพธ์ก็เป็นไปตามที่เราต้องการคือ เภสัชกรและเจ้าหน้าที่ได้รับการแจ้งเตือนที่รวดเร็วขึ้น(ดูสบายใจมากขึ้น) ไม่จำเป็นต้องนั่งเฝ้าอยู่ในห้องทำงานเหมือนเดิมอีกต่อไป เพียงแค่เปิดการแจ้งเตือนจากกลุ่มไลน์ไว้เท่านั้น เมื่อนำอุณหภูมิย้อนหลังมาวิเคราะห์ก็ทำให้เห็นว่ามีตู้เย็นบางตู้ที่รักษาความเย็นไม่ได้แล้ว ช่วยให้ทางโรงพยาบาลดำเนินการเปลี่ยนต่อไป เรามองว่าระบบสามารถช่วยป้องกันปัญหาก่อนที่จะเกิดขึ้นได้จริง

ตัวอย่างข้อความแจ้งเตือนในกลุ่มไลน์เมื่อพบอุณหภูมิผิดปกติ

สำหรับใครที่มีไอเดียอะไรสักอย่างแต่ยังไม่ได้ทำ ผมขอแนะนำให้เริ่มทำวันนี้ตอนนี้เลยครับ เริ่มจากวางแผนคร่าวๆก่อนก็ได้ เลือกทำส่วนที่จำเป็นก่อน หากเป็นครั้งแรกให้คิดไว้เสมอเลยว่าจะต้องเจอปัญหาแน่นอน เมื่อเวลาเกิดปัญหาขึ้นจริงก็หาทางแก้ไข สนุกกับสิ่งนั้น ทำให้ตัวเองพบกับความสำเร็จอยู่เรื่อยๆ แล้วจะมีกำลังใจทำสิ่งใหม่มากขึ้น (ผมเชื่อแบบนั้น)

ปล. สำหรับเจ้าของคำถามที่ว่า “เราทำกันเองได้มั้ย” คือ คุณหมอโอฬาริก มุสิกวงค์ (Olarik Musigavong)

--

--

Puwadon Sricharoen
LINE Developers Thailand

I’m an optimistic person. Love to travel to a new places and enjoy to spending my free time and vacation day to pursue my hobbies.