รายวิชา ปฏิบัติการสารสนเทศด้านสุขภาพ (อจวพ ๓๐๒)
หลักสูตรวิทยาศาสตรบัณฑิต สาขาวิชาวิทยาศาสตร์การแพทย์
ข้อมูลสุขภาพทางคลินิก (EHR) เป็นข้อมูลที่ซับซ้อน มักไม่มีโครงสร้างที่แน่นอน และเต็มไปด้วยข้อมูลที่ขาดหายหรือพิมพ์ผิด (Messy & High-Stakes)
การสร้างแบบจำลอง AI หรือ Machine Learning ด้านการแพทย์ที่มีความปลอดภัยและไม่มีอคติ (Bias) ต้องเริ่มต้นจาก "ข้อมูลที่สะอาดและได้รับการจัดการอย่างดี" ไม่ใช่จากอัลกอริทึม
ในการปฏิบัติงานสัปดาห์นี้ เราจะใช้เครื่องมือ Jupyter Notebook (Python 3) ซึ่งติดตั้งอยู่ในระบบของรายวิชาแล้ว
เราได้จัดเตรียมไฟล์ข้อมูลการจ่ายยาเพื่อนำไปทดลองค้นหาข้อมูลเชิงลึก (Insights) ไว้เรียบร้อยแล้ว ได้แก่:
prescriptions.csv (ข้อมูลหลักการจ่ายยาในคลินิก)practices_registry.csv (ทะเบียนรายชื่อคลินิกแพทย์ทั่วไป)💡 เคล็ดลับความปลอดภัยข้อมูล: การปฏิบัติงานใน Sandbox ช่วยให้เราทดลองวิเคราะห์ข้อมูลได้โดยไม่ต้องเสี่ยงกับการทำข้อมูลผู้ป่วยจริงรั่วไหล และสอดคล้องกับมาตรฐานความปลอดภัยสากล เช่น HIPAA และกฎหมายไทย PDPA
เปรียบเสมือนคอลัมน์เดี่ยวที่มีดัชนีกำกับ (Index) เช่น ข้อมูลความดันโลหิตหรืออุณหภูมิร่างกายของผู้ป่วยรายบุคคลตามช่วงเวลาอย่างต่อเนื่อง (Time-series)
เป็นรูปแบบตาราง (Tabular) มีแถวและคอลัมน์ชัดเจน มีโครงสร้างดัชนีทั้งแนวตั้งและแนวนอน เหมาะสำหรับการบันทึกประวัติการรักษาผู้ป่วยและบันทึกใบสั่งยา (EHR Data)
เราจะนำเข้าข้อมูลด้วยฟังก์ชัน read_csv() ซึ่งจะทำการแปลงไฟล์ข้อมูลให้กลายเป็นวัตถุ DataFrame โดยอัตโนมัติ
ในระบบปฏิบัติการทั่วไป หากไฟล์ไม่อยู่ในโฟลเดอร์เดียวกัน คุณจำเป็นต้องกำหนด Path สัมบูรณ์ (Absolute Path) หรือพารามิเตอร์เพิ่มเติมเพื่อให้ pandas ทราบตำแหน่งไฟล์และวิธีการถอดรหัสของอักขระ (Encoding)
หลังการนำเข้าข้อมูล สิ่งสำคัญที่สุดก่อนนำข้อมูลไปประมวลผลคือการทำความสะอาดและตรวจสอบคุณภาพความถูกต้องเพื่อไม่ให้เกิดข้อผิดพลาดด้านสุขภาพและการวิเคราะห์ (Garbage In, Garbage Out)
ในสไลด์บทเรียนส่วนที่ 1 นี้ นักศึกษาได้เรียนรู้วิธีการกำหนดโครงสร้างข้อมูล Series และ DataFrame รวมถึงสามารถพิมพ์โค้ดภาษาไพทอนด้วยคำสั่ง read_csv() เพื่อโหลดฐานข้อมูลการจ่ายยาสาธารณสุขจริงเข้ามาวิเคราะห์ข้อมูลสูญหายเบื้องต้นได้เรียบร้อยแล้ว
เมื่อนักศึกษาเข้าใจส่วนที่ 1 นี้เรียบร้อยแล้ว ให้เริ่มเปิด Jupyter Notebook ในคอมพิวเตอร์แล็บเพื่อทดลองพิมพ์และรันโค้ด หรือข้ามไปศึกษา "ส่วนที่ 2: การกรองผลลัพธ์ข้อมูลอย่างมีเงื่อนไข" เพื่อหาข้อค้นพบเชิงลึก (Insights) ของยารักษาโรคเบาหวานและยาทั่วไปได้เลยครับ!
รายวิชา ปฏิบัติการสารสนเทศด้านสุขภาพ (อจวพ ๓๐๒)
หลักสูตรวิทยาศาสตรบัณฑิต สาขาวิชาวิทยาศาสตร์การแพทย์
หัวใจหลักของการกรองข้อมูลใน pandas DataFrame คือการระบุเงื่อนไขตรรกะ (True/False) ลงไปในแถวข้อมูลของคอลัมน์ เพื่อเลือกเฉพาะผู้ป่วยที่เข้าเกณฑ์ตามหลักเกณฑ์ระบาดวิทยา
df[df['AGE'] >= 18].loc[]: ยืดหยุ่นกว่าเนื่องจากช่วยให้เราเข้าถึงได้ทั้ง "แถว" และ "คอลัมน์เป้าหมาย" พร้อมกันได้อย่างปลอดภัยในหน่วยความจำในระบบสาธารณสุขจริง แพทย์และนักวิจัยต้องการศึกษาผู้ป่วยเฉพาะกลุ่มที่มีโรคร่วมหรืออาการแสดงที่ซับซ้อน จึงต้องใช้ตัวดำเนินการตรรกะในการวิเคราะห์
ในขั้นตอนวิศวกรรมข้อมูลทางการแพทย์ (Medical Data Engineering) ขั้นตอนสำคัญคือการสกัดกลุ่มประชากร (Cohort) ตามมาตรฐานรหัสโรคเช่น ICD-9 หรือ ICD-10
ช่วยคัดกรองกลุ่มรหัสโรคแบบเป็นกลุ่ม เช่น รหัสที่ขึ้นต้นด้วย E11 (กลุ่มโรคเบาหวานชนิดที่ 2) โดยใช้เครื่องมือจัดการข้อความของ pandas
ในระบบประมวลผลข้อมูลเวชระเบียนแบบบูรณาการ (เช่น ข้อมูลสัญญาณชีพหรือผลแล็บ) การมีอยู่ของข้อมูลที่ไม่สมบูรณ์เป็นเรื่องปกติ นักศึกษากระบวนวิชานี้ต้องเรียนรู้กลวิธีการคัดแยกและบำบัดข้อมูลเหล่านี้
.isnull(): ตรวจหาเซลล์ข้อมูลที่เป็นช่องว่าง.notnull(): คัดเลือกเฉพาะแถวที่มีข้อมูลครบถ้วนสมบูรณ์.fillna(): แทนที่ข้อมูลที่สูญหายด้วยค่าสถิติ (เช่น ค่าเฉลี่ย หรือใช้วิธี Forward Fill)ก่อนการนำข้อมูลสุขภาพจาก EHR ไปพัฒนาระบบปัญญาประดิษฐ์ทางการแพทย์ จำเป็นต้องสืบค้นหาจุดผิดปกติของวันเวลาและค่าข้อมูลการตรวจวัดที่ขัดแย้งต่อสภาพความจริง
ตัวอย่าง เช่น "วันจำหน่ายผู้ป่วย (Discharge Date) บันทึกไว้ก่อนวันลงทะเบียนรับเข้าพยาบาล (Admission Date)" หรือข้อมูลสัญญาณชีพที่มีค่าผิดเพี้ยนรวดเร็วเกินไป (เช่น น้ำหนักเปลี่ยนแปลง 20 กก. ในครึ่งวัน)
การสืบค้นหาข้อค้นพบ (Finding Insights) และคัดกรองประชากรเป้าหมายด้วยคำสั่ง pandas ในสัปดาห์นี้ เป็นรากฐานที่สำคัญที่จะนำไปสู่การประมวลผลข้อมูลสุขภาพระดับภูมิภาค (Data Lake) และการทำงานร่วมกับระบบฐานข้อมูลขนาดใหญ่ (SQL / BigQuery) ในสัปดาห์ถัดไป
ขอให้นักศึกษาเปิด Jupyter Notebook จากคอมพิวเตอร์ประจำตัวขึ้นมา นำเข้าชุดข้อมูลใบสั่งยา prescriptions.csv แล้วสืบค้นหากลุ่มผู้ป่วยโรคเบาหวานประเภทที่ 2 ตามแบบฝึกหัดประเมินผลสัมฤทธิ์ทางการเรียนประจำสัปดาห์ (CLO2: 18%) ของทางคณะสหเวชศาสตร์ได้เลยครับ!
รายวิชา ปฏิบัติการสารสนเทศด้านสุขภาพ (อจวพ ๓๐๒)
หลักสูตรวิทยาศาสตรบัณฑิต สาขาวิชาวิทยาศาสตร์การแพทย์
เมื่อต้องทำโครงงานหรือวิจัยข้อมูลเวชระเบียนขนาดใหญ่ (เช่น ข้อมูลสัญญาณชีพหรือยา) วิธีวิเคราะห์สถิติมูลฐานคือกระบวนการ Split-Apply-Combine:
ช่วยตอบโจทย์เช่น: "ผู้ป่วยที่เข้ารับการรักษาด้วยการผ่าตัดไส้ติ่งมีระยะเวลาพักฟื้นเฉลี่ยต่างกันอย่างไรระหว่างผู้ชายและผู้หญิง?" หรือ "ยอดการเบิกจ่ายยาโดยเฉลี่ยของแต่ละสาขาคลินิกมีแนวโน้มอย่างไร?"
ผู้ป่วยโรคเบาหวานชนิดที่ 2 มักมีการเจาะเลือดตรวจหาค่าน้ำตาลสะสม (HbA1c - LOINC 4548-4) หลายครั้งตลอดช่วงระยะเวลาการรักษา เพื่อประเมินผลการดูแลรักษาระยะยาว
💡 โจทย์จริงในเวชระเบียน: เราจะจัดกลุ่มข้อมูลตาม patient_id และหาค่าเฉลี่ยค่าน้ำตาลสะสมในประวัติการตรวจทั้งหมดของผู้ป่วยแต่ละคนเพื่อแยกความรุนแรงของโรค
ในทางวิทยาศาสตร์สุขภาพ เราจำเป็นต้องนับจำนวนประชากรที่ได้รับการวินิจฉัยโรคตามมาตรฐานสากล เช่น โรคเบาหวานชนิดที่ 2 (SNOMED: 44054006) เพื่อสร้างอัตราส่วนความชุกในแต่ละพื้นที่
การใช้คำสั่ง value_counts() และ nunique() ของ pandas ช่วยคัดแยกรายชื่อผู้ป่วยที่ซ้ำกันออกจากการสรุปสถิติจำนวนรายเคสที่จำหน่ายจริงได้โดยง่าย
การศึกษาสุขภาพประชากร จำเป็นต้องแบ่งกลุ่มประเมินเพื่อหาความเหลื่อมล้ำและโอกาสในการเข้าถึงยาของกลุ่มประชากรที่มีความหลากหลาย ทั้งในด้านเพศ วัย และเชื้อชาติ
เราสามารถส่งค่าคีย์จัดกลุ่มไปเป็นลิสต์ข้อมูล ['gender', 'age_group'] เพื่อประมวลสถิติเชิงลึกหลายลำดับชั้นในตารางเดียวกันได้อย่างแม่นยำ
สำหรับโรงพยาบาลหรือเขตสุขภาพขนาดใหญ่ การวิเคราะห์เฉลี่ยเพียงอย่างเดียวอาจบิดเบือนข้อเท็จจริงเนื่องจากค่าผิดปกติ (Outliers) การคำนวณหาค่าความแปรปรวน มิน-แมกซ์ และผลรวมจึงมีความสำคัญ
เป็นโครงสร้างที่ทรงพลังมากที่สุดของ pandas เนื่องจากสามารถกำหนดสูตรสถิติต่างฟังก์ชันกันให้กับคอลัมน์ข้อมูลแต่ละคอลัมน์พร้อมกันได้ในรอบประมวลผลเดียว
ยินดีด้วยครับ! นักศึกษาได้บรรลุเป้าหมายการจัดกลุ่ม (Data Aggregation) ทั้งการใช้คำสั่งสรุปผล คัดกรองรหัสโรค นำสถิติตามลักษณะประชากร และการประมวลผลหลายสถิติตามมาตรฐานการควบคุมข้อมูลสุขภาพ
ขอให้นักศึกษาทุกคนเปิดไฟล์ Lab Manual สัปดาห์ที่ 3 นำเข้าข้อมูลใบสั่งยา prescriptions.csv และรันโค้ดหาจำนวนความชุกและ HbA1c เฉลี่ยของผู้ป่วยแต่ละคลินิก ส่งผลลัพธ์ลงในระบบประเมินเพื่อทวนสอบมาตรฐานผลการเรียนรู้ของหลักสูตรต่อไปครับ!