ระบบติดตามงานวิจัยหน่วยโรคผิวหนัง รามาธิบดี (Research Rama Tracker v2.38)
Web Application Research Rama Tracker พัฒนาขึ้นเพื่อเพิ่มประสิทธิภาพในการบริหารจัดการโครงร่างงานวิจัยและติดตามความก้าวหน้า (Progress Tracking) ของบุคลากรภายในหน่วยโรคผิวหนัง คณะแพทยศาสตร์โรงพยาบาลรามาธิบดี
ประโยชน์และฟังก์ชันเด่นของระบบ:
ระบบถูกออกแบบบนโครงสร้างแบบ Serverless Architecture โดยทำงานร่วมกันระหว่าง 3 ส่วนหลัก ดังนี้:
HTML5, CSS3 (Bootstrap 5), JavaScript (LIFF SDK, SweetAlert2)
Google Apps Script (code.gs) ประมวลผลผ่านฟังก์ชัน doGet และ doPost
Google Sheets (ชีต staff และ research69) และ Google Drive Folder
Base64 DataURL และจัดโครงสร้างในรูปแบบ JSON Payloadresearch69 ตามดัชนี rowIndex ที่ถูกต้อง| ชื่อฟังก์ชัน | ลอจิกและการทำงานภายใน |
|---|---|
doGet(e) |
เราเตอร์ฝั่งรับข้อมูลเข้าผ่าน URL พารามิเตอร์ คัดกรอง Action หากเป็น getInitialData จะสั่งรันระบบล็อกอินและดึงงานวิจัยเฉพาะของผู้ใช้ หากเป็น getAllResearch จะส่งคืนข้อมูลงานวิจัยทั้งหมดไปประมวลผลหน้าแดชบอร์ด |
getInitialData() |
ตรวจสอบรหัส Rama ID หากผู้ใช้เป็นกลุ่ม "อาจารย์" จะตรวจเช็ค line_uid เพื่อทำระบบ LINE Login สำหรับยืนยันตัวตน และคัดกรองส่งงานวิจัยคืนไปเฉพาะชิ้นที่ผู้ใช้มีส่วนเกี่ยวข้อง (เป็น MR, MS, OR, OS) |
saveResearchData() |
ตรวจสอบ JSON Payload ที่ส่งมาจากหน้าบ้าน ตรวจเช็คก้อน Base64 ของไฟล์ในแต่ละขั้นตอน หากพบข้อมูลจะสั่งอัปโหลดไฟล์ผ่าน uploadPDF() ก่อนจะนำอาร์เรย์ผลลัพธ์แมปลงคอลัมน์ใน Google Sheets ตามชื่อหัวตาราง (Headers Matching) |
uploadPDF() |
ตัดแยก Header ของ Base64 เพื่อหา Content-Type ถอดรหัสด้วย Utilities.base64Decode() แล้วบันทึกลงโฟลเดอร์ปลายทาง พร้อมตั้งสิทธิ์เป็นแบบ View-only (Anyone with link) |
renderProgress() ควบคุมการปิดกั้น/เปิดปุ่มแสตมป์เวลา โดยจะเช็คค่า prevOk หากขั้นตอนก่อนหน้ายังไม่มีข้อมูลแสตมป์เวลา ปุ่มในขั้นตอนถัดไปจะถูกเซ็ตสถานะเป็น disabled และเปลี่ยนคลาสเป็น step-locked ทันทีisViewer จะมีค่าเป็น True ส่งผลให้ซ่อนปุ่มบันทึก ปุ่มเพิ่มรายชื่อ และซ่อนอินพุตสำหรับอัปโหลดไฟล์ทันทีallResearches) เพื่อรองรับการคัดกรองข้อมูลฝั่งผู้ใช้งาน (Client-side filtering) ทำให้สามารถเลือกดูงานวิจัยตามชื่อ MR และ MS ได้ในทันทีโดยไม่ต้องดึงข้อมูลจากฐานข้อมูลใหม่เพื่อป้องกันความผิดพลาดจากการพิมพ์ช่องว่าง หรือการพิมพ์เลขศูนย์นำหน้าไม่เท่ากัน ระบบใช้ฟังก์ชัน normalizeID(id) ในการแปลงค่าข้อมูลก่อนนำไปเปรียบเทียบในฐานข้อมูลด้วยคำสั่ง:
ระบบคำนวณระยะต่างระหว่างวันปัจจุบันกับวันหมดอายุของ EC (EC_expire_date) และส่งคืน Tag Badge เตือนภัยบนการ์ดงานวิจัยดังนี้:
กรอกรหัสบุคลากร (Rama ID) แล้วกดปุ่มเข้าสู่ระบบ สำหรับกลุ่มอาจารย์แพทย์หากเข้าใช้งานครั้งแรก ระบบจะแสดงป๊อปอัปแจ้งเตือนให้กดสิทธิ์ล็อกอินผ่าน LINE เพื่อทำการผูกบัญชีความปลอดภัย
คลิกที่แถบเลือกงานวิจัย ระบบจะเรียงลำดับงานที่มีเครื่องหมายธงสีแดง 🚩 ไว้ด้านบนสุด ซึ่งหมายถึง "เป็นงานที่คุณต้องเข้าไปอัปเดตความคืบหน้าในปัจจุบัน" หรือคลิกเลือก + สร้างงานวิจัยใหม่ หากต้องการเปิดเรื่องใหม่
กรอกชื่อเรื่อง (Title) จากนั้นสามารถกดปุ่ม + เพิ่มแพทย์ หรือ + เพิ่มอาจารย์ เพื่อเลือกรายชื่อทีมผู้ร่วมวิจัยจากหน้าต่างรายชื่อป๊อปอัปได้อย่างสะดวก
ในสเต็ปงานที่คุณมีสิทธิ์ ปุ่มกดจะเป็นคำว่า ลงเวลา หรือ 🔄 อัปเดตข้อมูล ให้ทำการแนบไฟล์ PDF ประจำขั้นตอนนั้นๆ (ถ้ามีกำหนดไว้ เช่น ขั้นตอนอนุมัติ EC หรือร่างแมนูสคริปต์) จากนั้นกดปุ่มแสตมป์ลงเวลา ระบบจะประทับเวลาปัจจุบันให้ทันที
ตรวจสอบข้อมูลให้แน่ใจแล้วกดปุ่มสีเขียว 💾 บันทึกข้อมูล ด้านล่างสุด ระบบจะซิงก์ข้อมูลอัปโหลดไฟล์ขึ้น Google Drive และบันทึกประวัติลง Google Sheets จนเสร็จสิ้น
เมื่อเข้าสู่หน้า Dashboard คุณสามารถใช้เครื่องมือ ตัวกรอง (Filter) ด้านบนเพื่อค้นหางานวิจัยเฉพาะเจาะจงได้:
staff ค้นหาแถวรายชื่อของอาจารย์ท่านนั้น แล้วทำการลบข้อมูลในช่องคอลัมน์ line_uid และ line_displayname ให้เป็นช่องว่างว่างๆ จากนั้นแจ้งให้อาจารย์ล็อกอินใหม่อีกครั้งเพื่อผูกไอดีใหม่
research69
FOLDER_ID ในไฟล์ code.gs ยังสอดคล้องกับโฟลเดอร์คลาวด์ที่มีสิทธิ์เขียนแชร์ข้อมูลอยู่จริง
ผู้ดูแลระบบไม่จำเป็นต้องเข้ามาแก้ไขโค้ดโปรแกรมแต่อย่างใด เพียงแค่เปิด Google Sheets ชีต staff แล้วทำการกรอกข้อมูลแพทย์ใหม่ลงไปในแถวถัดไป โดยระบุ ramaID, name และช่อง group ให้มีคำระบุประเภทชัดเจน (เช่นมีคำว่า "อาจารย์" หรือกลุ่ม "แพทย์ประจำบ้าน") ระบบหน้าบ้านจะทำการดึงข้อมูลไปแสดงผลในตัวเลือกและคัดแยกสิทธิ์ให้โดยอัตโนมัติในการล็อกอินครั้งถัดไป