Health Informatics

ทำไมเราจึงควรใช้ Clinical Terminology (เช่น SNOMED CT)

16 December 2019

SNOMED CT เป็นเรื่องที่ผ่านเข้ามาในชีวิตผมหลายครั้ง ครั้งแรกคือตอนที่เรียนกับอ.บุญชัย กิจสนาโยธินตั้งแต่สมัยทำงานอยู่ที่รพ.รามาธิบดี ต่อมาตอนไปเรียนที่สวีเดนก็ได้เรียนอีก เป็นเรื่องที่เหมือนจะเข้าใจ แต่ก็พูดได้ไม่เต็มปากว่าเข้าใจ ตอนนี้เนื่องด้วยหน้าที่การงานและความสนใจทำให้ผมกลับมาศึกษาเรื่องนี้อีกครั้งแบบจริงจังกว่าทุกครั้ง จนคิดว่าในแง่หลักการพื้นฐานนี่คิดว่าพอเข้าใจอยู่ จึงอยากถือโอกาสนี้มาถ่ายทอดต่อครับ โดยเน้นให้ clinician ที่แม้ไม่มีพื้นฐานทาง IT มากนักก็อาจจะเข้าใจได้

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

ดาวน์โหลด Presentation

ต่อไปเป็นการเขียนคำบรรยายแต่ละสไลด์ โดยคำบรรยายจะอยู่ด้านล่างของแต่ละสไลด์นะครับ

  • สไลด์นี้ไม่มีอะไรครับ แนะนำตัว เกริ่นนำ
  • ออกตัวเล็กน้อยว่าผมเองก็ไม่ทราบเหมือนกันครับว่าประเทศไทยควรเป็นสมาชิก SNOMED International ไหม แต่อย่างที่บอกในสไลด์ครับว่าเป็นเทคโนโลยีที่ดี และไทยควรมีอะไรแบบนี้ (ไม่จำเป็นต้องเป็น SNOMED CT นะครับ ขอแค่บรรลุวัตถุประสงค์แบบเดียวกัน
  • และออกตัวอีกเรื่องว่าผมไม่ใช่ผู้เชี่ยวชาญ ทั้งทางด้าน SNOMED CT และ Artificial Intlelligence (A.I.) ซึ่งเป็นเรื่องที่เกี่ยวพันสูงมากกับ SNOMED CT อย่างไรก็ดีสไลด์ชุดนี้ก็เน้นนำเสนอให้บุคคลทั่วไปอยู่แล้วครับ
  • Term ก็คือการอธิบายสิ่งต่าง ๆ ทั้งที่เป็นนามธรรมและเป็นรูปธรรม เช่น เราเรียกอุปกรณ์สำหรับสื่อสารหน้าตาเป็นสี่เหลี่ยม ๆ ประมาณนี้ว่ามือถือ เรียกความรู้สึกแบบนี้ว่าความรัก เป็นต้น
  • Terminology ก็คือการรวบรวมเอา term ที่เกี่ยวข้องกับเรื่องเดียวกันมาไว้ด้วยกัน เพื่อให้ทุกคนอ้างถึงสิ่งเดียวกัน และเข้าใจตรงกันเวลาสื่อสาร ซึ่งรวมไปถึงการสื่อสารกับคอมพิวเตอร์ด้วย
  • Classification, ontology, nomenclature, taxonomy คำเหล่านี้มีความหมายใกล้เคียงกัน แต่ยังไม่ต้องสนก็ได้ครับ
  • bullet อื่นตรงตัวตามสไลด์ครับ
  • เมื่อปี 1998 คุณหมอ JJ Cimino ได้เขียน paper ระดับตำนานที่คนในวงการ health informatics ทุกคนน่าจะรู้จัก ชื่อว่า Desiderata ซึ่งแปลว่า “ลักษณะอันพึงประสงค์” ของ controlled medical vocabulary ก็คือ medical vocabulary ที่มีการ controlled คือไม่ใช่ใครอยากเขียนคำว่าอะไรก็เขียน แต่มีการควบคุมระดับหนึ่ง ซึ่งในทีนี้ เนื้อหาหลักก็บรรยายถึงว่า terminology ที่ดีควรเป็นยังไง
  • ที่ต้องเป็น SNOMED CT ถึงแม้ว่าจะมี terminology อื่น ๆ เพราะเป็น terminology ที่ adopt เอา Desiderata เข้ามาใช้ออกแบบ terminology เยอะมาก
  • หน่วยย่อยที่สุดของ SNOMED CT เรียกว่า concept; concept ก็คือความคิดเมื่อเรานึกถึงสิ่ง ๆ หนึ่ง เช่น concept ของสุนัข ก็คือสัตว์ สูงประมาณไม่เกินเอวเรา ชอบเห่า พวกลักษณะต่าง ๆ เหล่านี้คือสิ่งที่มา define ความเป็นสุนัขในกระบวนการคิดของเรา
  • concept จะประกอบด้วย unique identifier ที่ไม่ซ้ำกับ concept อื่น ๆ และไม่มีความหมายอยู่ใน identifier นั้น (ตัวอย่าง identifier ที่มีความหมาย เช่น เลขบัตรประชาชน 13 หลัก, ICD-10)
  • concept ยังประกอบไปด้วย description หรือ synonym ที่เราสามารถใช้เรียก concept นั้นได้ เช่นในภาพคือ kidney stone ก็สามารถเรียกได้ด้วยชื่อต่าง ๆ อีกมากมาย
  • กล่องสีชมพูคือ หากไทยเราเข้าเป็นสมาชิก SNOMED International เราสามารถทำ Thai Extension เพื่อเพิ่มคำภาษาไทยเข้าไปได้ ซึ่งจะเป็นประโยชน์อย่างมากต่อวงการ A.I. ทางการแพทย์
  • แต่ละ concept นั้นเชื่อมกันด้วยความสัมพันธ์ (relationship) ซึ่ง 1 ในนั้นคือความสัมพันธ์ที่ช่วยสร้างความเป็นลำดับขั้น (Hierarchy) ให้กับข้อมูล นึกถึง ICD-10 ที่เริ่มมาจากหมวดหมู่โรคใหญ่ ๆ แล้วแบ่งย่อยขึ้นเรื่อย ๆ ตามลำดับขั้น SNOMED CT ก็มีลำดับขั้นแบบนี้เช่นกันโดยผ่านความสัมพันธ์แบบ “Is-a”
  • สิ่งที่ต่างจาก ICD-10 ก็คือ SNOMED CT เป็น polyhierachy หมายความว่า 1 concept สามารถเป็น child ให้กับกี่ concept ก็ได้ ซึ่งแบบนี้สะท้อนโลกความเป็นจริงได้มากกว่า เช่น โรค TB lung ก็เป็นทั้งโรคติดเชื้อ และเป็นโรคปอดด้วย
  • นอกจาก Is-a relationship แล้ว SNOMED CT ยังมีความสัมพันธ์แบบอื่น ๆ อีกเยอะ เช่น “Finding site”
  • สไลด์นี้แสดงให้เห็นว่า Kidney stone เป็น child ของ kidney disorder (โรคนิ่วในไต เป็น (IS-A)โรคไต) และเป็น child ของโรค urolithiasis (โรคนิ่วในไต เป็น (IS-A) โรคนิ่วในทางเดินปัสสาวะ)
  • แต่ขณะเดียวกัน Kidney stone ก็เป็น parent ให้อีก concept หนึ่งคือ calculus in renal pelvis
  • ความสัมพันธ์หลากหลายรูปแบบนี้โยงใยกันอย่างสลับซับซ้อน
  • เกิดเป็นลักษณะที่ทาง computer science เรียกว่า semantic network
  • concept เมื่อโยงผ่าน is-a relationship ไปเรื่อย ๆ จะไปถึง concept ที่อยู่ระดับ top (เป็นรองแค่ root concept) จำนวนหนึ่ง ซึ่งยังไม่ต้องสนก็ได้ครับ
  • สรุปแล้ว SNOMED CT มี concept มากกว่า 300,000 concept
  • ถ้าให้ผมนิยามเอง ผมคิดว่า SNOMED CT เป็นเหมือนในสไลด์ด้านบนนี่แหละครับ แต่อาจจะเข้าใจยากนิด เดี๋ยวเราลองมาดูตัวอย่างการใช้งานจริงกันดูครับ
  • สมมติเราไม่ใช้ SNOMED CT; หากเราเป็นนักพัฒนาสารสนเทศรพ. ได้รับโจทย์มาตามในสไลด์ เราดีไซน์การบันทึกข้อมูล problem list ของคนไข้ในการมารพ.ครั้งนั้นให้เป็น free text แล้วมาเขียนโปรแกรมดักเอา การทำแบบนี้เราต้องดักทุกคนที่หมอมักจะพิมพ์ (ยังไม่นับเรื่องพิมพ์ผิด) ซึ่งถ้า algorithm มีความซับซ้อน การมาทำแบบนี้ที่ละ condition จะใช้แรงกายแรงใจเยอะมาก
  • ที่เลือก demo SNOMED CT จากปัญหานี้ เพราะเป็นปัญหาที่เหมือนจะแก้ง่าย เดี๋ยวมาลองดูกันครับ
  • แถมปัญหายังไม่จบอีก เพราะเอาไปแค่ตัวโรคเองไม่ได้ ต้องเอาลูก ๆ ของ concept นั้นทั้งหมดมา เช่น นิ่วใน renal pelvis ก็เป็นนิ่วในไตเหมือนกัน ดังนั้นก็ต้องแสดง CPG ด้วย และเป็นไปได้ยากมากที่จะ include children ทั้งหมดของ concept นั้น ๆ มา
  • สรุปคือ การทำ hard code จาก free text เองนั้นทำได้ยากมาก ยังไงก็ต้องมีการผูกกับ terminology บางอย่างเพื่อไม่ใช้ทางเลือกมากไป ใครอยากกรอกอะไรก็กรอก
  • พูดถึง terminology นักสารสนเทศท่านดังกล่าวก็นึกขึ้นมาได้ว่า อย่างนั้นเราก็มาใช้ ICD-10 กันสิ จริง ๆ ได้นะครับ แต่ก็จะมีปัญหาดังในสไลด์ข้างต้น
  • นักสารสนเทศท่านเดิม เปลี่ยนวิธีใหม่เป็นมาคิดรายการคำที่ใช้บ่อยให้ จากนั้นไป map เข้ากับ ICD-10 ทางระบบหลังบ้าน หมอไม่ต้องทำอะไร ไม่ต้องคีย์ ICD-10 แล้ว แถมได้ใช้คำที่คุ้นเคย
  • ปัญหาก็จะเหมือนทางเลือกแรก คือเรายากจะนึก term ทั้งหมดที่เป็นไปได้ขึ้นมาไว้ก่อนได้ ทีนี้ถ้าทำระบบออกมาแล้วเปิดช่องให้หมอใส่ free text ได้ แบบนี้หมอก็จะใส่ตามใจ และ logic ที่เราวางไว้โดยดักกับ ICD-10 ก็จะไม่ทำงาน
  • หากในสถานการณ์แบบนี้เราใช้ SNOMED CT เราสามารถแก้ปัญหา synonym ได้ทันที เปิดช่องไปเลยให้หมอพิมพ์คำว่าอะไรก็ได้ ส่วนใหญ่ term ที่อยู่ใน SNOMED CT มักจะครอบคลุมอยู่แล้ว หากไม่ครอบคลุมก็ค่อยเพิ่มเป็น extension เอา
  • Concept ใน SNOMED CT มีความครอบคลุมสิ่งต่าง ๆ ใน healthcare เยอะมาก
  • เคสนี้เป็นเคสที่ผมก็อปมาจากในเน็ต เพื่อเอา present illness
  • เราสามารถ bind SNOMED CT concept เข้ากับ medical record ของเราได้เยอะมาก
  • หมายเหตุ: code ที่นำมาสาธิตวิธีการผูก concept เข้ากับข้อความ เป็นเพียงตัวอย่างเพื่อโชว์ความสามารถ ผมเองไม่ได้มั่นใจว่า code เหล่านี้มีความถูกต้อง 100%
  • การตรวจร่างกายก็เช่นกัน
  • ขออนุญาตเปลี่ยนเคสเพราะเคสที่แล้วที่โหลดมาได้มีสไลด์ไม่ถึงการตรวจร่างกาย
  • เราสามารถผูก SNOMED CT concept เข้ากับการตรวจร่างกายได้เยอะมาก
  • ในทางการแพทย์มี clinical document เกิดขึ้นมากมาย ตั้งแต่ OPD card, admission note, progress note, operative note, nurse note, ฯลฯ​ ข้อมูลต่าง ๆ ในนั้นเราสามารถผูกกับ SNOMED CT concept ได้เยอะมาก หากเราทำได้ คอมพิวเตอร์จะสามารถประมวลผลข้อมูลทางการแพทย์ของเราได้มากมาย
  • การที่เราเปลี่ยนจากการเขียนใส่กระดาษมาเป็นพิมพ์ข้อมูลเข้าสู่ระบบคอมพิวเตอร์เป็นเพียงขั้นแรกของการ digitization คอมพิวเตอร์ยังไม่สามารถเข้าใจสิ่งที่เราพิมพ์ได้ เราต้องนำ structure และ meaning (semantic) เข้ามาสู่ข้อมูลของเราด้วย จึงจะเป็นการ digitization ที่สมบูรณ์
  • เราไม่จำเป็นต้องมาเลือก concept ที่ละคำในทุกอย่างที่เราป้อนเข้าสู่ระบบคอม เราสามารถใช้ tool ต่าง ๆ เข้ามาช่วยได้ เช่นการใช้ระบบ natural language processin (NLP) มาผูก concept เข้ากับคำโดยอัตโนมัติ
  • แต่ไม่ว่าเราจะใช้วิธีใดก็ตาม สุดท้ายปลายทาง เราต้องทำให้เกิด information ที่มี structure และมี semantic
  • เคสแบบถ้าเป็นนิ่วให้แสดงคำแนะนำเป็นเคสที่ไม่ซับซ้อนเพราะเป็นแค่ตัวอย่าง แต่ reasoning logic ในโลกความจริงมีความซับซ้อนกว่านั้นเยอะ เช่น IF “เป็นนิ่ว แต่เป็น CKD stage 2 ด้วย แถมมีประวัติเป็นเบาหวาน และมีประวัติครอบครัวเป็นมะเร็ว” THEN “แสดงคำแนะนำ” ถ้า logic เป็นแบบนี้ก็จะค่อนข้างเขียนเป็นโปรแกรมได้ยากโดยไม่พึ่ง knowledge base ที่เป็นการแปลงความรู้ในโลกจริงเป็นข้อมูลที่คอมพิวเตอร์ประมวลผลได้ เช่น SNOMED CT
  • ตัวอย่างอื่น ๆ เช่น การเช็ค drug interaction จากสารตั้งต้นแทนที่จะเช็คจากยา ดังนั้นหากสารสองชนิดมี interaction กัน ดังนั้นยาทุกตัวที่มีสารสองชนิดนี้ก็ต้องมี interaction กันทั้งหมด การเช็คแบบนี้ เราจะเขียน algorithm ได้ครอบคลุมกว่าและมีข้อผิดพลาดน้อยกว่า
  • อีกตัวอย่างก็เช่นการเช็ค cumulative dose จากยาคนละตัวแต่เป็นกลุ่มเดียวกัน เช่นเคย เราไม่ต้องมาเขียน algorithm เช็คโดสสำหรับยาทุกกลุ่ม SNOMED CT บอกเราได้ว่ายาตัวไหนเป็นกลุ่มไหน
  • การใช้พวกผลการซักประวัติ ตรวจร่างกาย และประวัติอื่น ๆ มาแนะนำการรักษา, order set, ฯลฯ เช่น ถ้าคนไข้เป็นแบบนี้ ๆ น่าสงสัย appendicitis ให้แสดงแบบฟอร์ม Avorado score ให้แพทย์กรอกแต่ก็กรอกข้อมูลไปก่อนบางส่วน ของ appendicitis อันนี้หมอคงหลุดยาก ปวดท้องมาก็นึกถึงไส้ติ่งไว้ก่อน แต่ลองนึกถึงเคส med ยาก ๆ หรือเคสสาย genetic ที่เราไม่รู้จักเลย พวกนี้ระบบคอมเข้ามาช่วยเราได้ เพราะเขาประมวลผลไม่ใช่แค่ visit เดียวแต่ไปประมวลมาหมดทุกอย่างที่มี
  • ไม่ใช่แค่การทำ AI แบบ expert system เท่านั้นที่ได้ประโยชน์จาก SNOMED CT การทำ machine learning ก็ได้ประโยชน์เช่นกัน แทนที่จะ train model เราโดยไม่มีพื้นฐานเลย เราใช้ terminology มาเป็นฟีเจอร์สำหรับการ train ได้
  • ลองดูตัวอย่างการประยุกต์ใช้อีกแบบ
  • สมมติเราได้ requirement จากหัวหน้าเราว่าอยากได้ข้อมูลผู้ป่วยกลุ่มดังกล่าว และถ้าเราไม่ใช้ SNOMED CT
  • เราก็ต้องทำตามขั้นตอนที่ 1 ดังในสไลด์
  • และทำขั้นตอนที่ 2, 3, 4 ซึ่งทั้งหมดนี้ไม่ง่าย และมีงาน manual ค่อนข้างเยอะ
  • จริง ๆ อย่างขั้นตอนที่ 3 เชื่อว่าทุกรพ.น่าจะมีลิสต์ยา Penicillin อยู่แล้วเพราะเป็นยาที่คนไข้แพ้เยอะ แต่หากเป็นยากลุ่มอื่น เราก็คงหลีกเลี่ยงงาน manual ไม่ได้ แต่ SNOMED CT มี relationship ที่ช่วยเราเรื่องนี้ได้
  • ถ้าข้อมูลที่เราเก็บไว้เป็น structured data ที่มีการผูกกับ SNOMED CT concept ไว้เรียบร้อยดี เราเขียน expression เพื่อดึงข้อมูลออกมาได้เลยโดยอัตโนมัติทั้งหมด ลดความผิดพลาด ประหยัดเวลา
  • พอจะเห็นภาพไหมครับที่ผมบอกว่า SNOMED CT คือการก๊อปปี้โลกจริงมา แต่เอามาแค่เรื่องการแพทย์ พอดีว่าโลกที่เราสร้างมาใหม่นี้ เรามีอำนาจควบคุมมันเยอะ เราจึงสามารถเข้าไปรู้อะไรที่เราอยากจะรู้ได้อย่างรวดเร็ว ซึ่งเราทำแบบนั้นไม่ได้กับโลกจริง
  • ถ้าไม่อยากใช้ SNOMED CT แต่ใช้หลาย ๆ terminology ผสมกันแทนจะเป็นอย่างไร จริง ๆ ก็สามารถทำได้ครับ แต่จะขาดความเชื่อมโยง
  • เปรียบเทียบ terminology ของแต่ละเรื่องก็เหมือนทวีปหนึ่งที่รู้จักแต่เฉพาะเรื่องราวที่เกิดขึ้นในทวีปของตน รู้หมดว่าเมืองไหนอยู่ตรงไหนเดินทางอย่างไร สัมพันธ์กับอีกเมืองอย่างไร แต่ไม่รู้เลยว่าทวีปของตนกับทวีปอื่นสัมพันธ์กันอย่างไร
  • SNOMED CT เหมือนภาพล่างที่ทุกอย่าง connect ถึงกันหมด
  • ตรงไปตรงมาตามสไลด์ครับ ใช้ SNOMED CT เป็นตัวกลางในการ map ไปสู่ terminology อื่น ๆ
  • ตรงไปตรงมาตามสไลด์ครับ ถ้าเป็นประเทศสมาชิก สามารถใช้ SNOMED CT ได้ในประเทศนั้น ๆ โปรดสังเกตเพื่อนบ้านเรา มาเลเซีย, สิงคโปร์, บรูไน
  • ตรงไปตรงมาตามสไลด์ครับ
  • ผมตกหล่นคู่มือภาษาไทยของอ.ดาวฤกษ์ สินธุวณิชย์ไปครับ เห็นอาจารย์ท่านว่ากำลังจะมีเวอร์ชั่นใหม่นะครับ
  • อ่านแต่ introduction ก็ได้ครับ เห็นภาพแล้ว

ก็จบลงแล้วนะครับสำหรับ presentation ผ่านทาง blog ครั้งแรก มีข้อเสนอแนะติชมประการใดพูดคุยกันได้นะครับ ^.^

ขอบคุณครับ

You Might Also Like

1 Comment

  • Reply พี่ขวัญ 23 February 2020 at 07:29

    กำลังหาอ่านอยู่พอดีครับ เอกสารเข้าใจง่ายมากครับ

  • Leave a Reply