ออกแบบการสั่งยาทางอิเล็กทรอนิกส์ – การค้นหายาโดยใช้ข้อมูลใน TMT

ในการสั่งยาทางอิเล็กทรอนิกส์ แน่นอนว่าสิ่งที่สำคัญที่สุดก็คือการเลือกยาที่จะสั่ง บทความนี้เป็นการนำเสนอวิธีการเลือกยาที่ผมคิดว่าน่าจะ practical สำหรับผู้ใช้ที่เป็นหมอครับ

ตอนแรกผมว่าจะเขียนให้ต่อเนื่องจากตอนที่แล้วที่เป็นเรื่อง FHIR Dosage แต่พอลองไปดู MedicationRequest resoucre ของ FHIR จริง ๆ เขาก็กำหนดให้เราเลือกจาก terminology ของเราเองก็ได้หรือใช้ Medication resource ของ FHIR ก็ได้ แต่ผมว่าใช้ terminology ไปเลยน่าจะง่ายกว่า ดังนั้นโจทย์ของการออกแบบในประเด็นนี้มันเลยกลายเป็นว่า ทำอย่างไรจะทำให้หมอค้นหายาที่ตนเองต้องการได้เร็วที่สุดครับ ซึ่งในความเห็นผม ผู้พัฒนาระบบควรใช้แนวคิดของ Thai Medicines Terminology (TMT) มาช่วยในการออกแบบครับ

ข้อมูลของยาแต่ละตัว ประกอบด้วยอะไรบ้าง

เราอาจคุ้นเคยว่ายามีแบบ generic product กับ trade product ซึ่งก็ถูก แต่จริง ๆ มันมีรายละเอียดที่ซับซ้อนกว่านั้น ผมคิดว่า data model ที่สะท้อนยาต่าง ๆ ที่มีใช้ในประเทศไทยได้ดี ก็คือ Thai Medicines Terminology (TMT) ของสำนักพัฒนามาตรฐานข้อมูลสุขภาพไทย (สมสท.) ครับ ซึ่งมี data model ดังนี้

ภาพจากเอกสารเผยแพร่ของสมสท.

อธิบายแบบง่าย ๆ ก็คือฝั่งซ้ายเป็นเรื่องของ generic product ส่วนฝั่งขวาเป็นเรื่องของ trade product โดยมีรายละเอียดดังนี้

  • Substance: สารเคมี ยาทุกตัวต้องประกอบด้วยสารเคมีอย่างน้อย 1 ชนิด
  • Virtual Therapeutic Moiety (VTM): หลายครั้งที่ยาประกอบด้วยสารเคมีหลายชนิด เช่น amoxicillin + clavulanic acid รวมมาอยู่ในยาเม็ดเดียวกัน
  • Generic Product (GP): ก็คือนำ VTM มาใส่เพิ่มข้อมูลเข้าไป 2 เรื่อง คือ 1) Dosage Form หรือรูปแบบยา เช่น ยาเม็ด ยาน้ำ และ 2) Strength หรือความแรงของสารนั้น เช่น 325 mg
  • Generic Product Use (GPU): ก็คือการนำ GP มาเพิ่มข้อมูลเรื่อง Unit of Use หรือหน่วยในการใช้เข้าไป เช่น 1 tablet, 60 mL bottle
  • Generic Product Pack (GPP): ก็คือการนำ GPP มาเพิ่มข้อมูลเรื่อง pack เข้าไปด้วย เช่น 1 แพ็คมี 7 tablet
  • Trade Product (TP): ก็คือการนำ GP มาเพิ่มข้อมูลชื่อทางการค้าและบริษัทผู้ผลิต (Manufaturer) เข้าไป
  • Trade Product Use (TPU): ก็คือ GPU แบบมีข้อมูลทางการค้า
  • Trade Product Pack (TPP): ก็คือ GPP แบบมีข้อมูลทางการค้า

ลองเอายาในระดับ TPU มาแยกส่วนประกอบดูกันซัก 3 ตัวครับ

ตัวอย่างยา 1: Sara – Paracetamol

เป็นตัวอย่างยาที่ตรงไปตรงมา ไม่ซับซ้อน

TMTID:437764
Trade name:SARA
Manufacture:ไทยนครพัฒนา
Active Ingredient:paracetamol
Strength:500 mg
Dosage Form:tablet
Unit of Use:tablet

ตัวอย่างยา 2: DEXOPHEN – Paracetamol Syrup

เป็นยาน้ำ และมีส่วนผสมของยาหลายตัว

TMTID:624161
Trade name:DEXOPHEN
Manufacture:นิด้า ฟาร์มา
Active Ingredient:chlorphenamine maleate + dextromethorphan hydrobromide + guaifenesin + paracetamol
Strength:1 mg/5 mL + 7.5 mg/5 mL + 50 mg/5 mL + 150 mg/5 mL
Dosage Form:syrup
Unit of Use:60 mL bottle

ตัวอย่างยา 3: วัคซีน PREVNAR 13

TMTID:1002715
Trade name:PREVNAR 13
Manufacture:PFIZER IRELAND PHARMACEUTICALS, IRELAND
Active Ingredient:pneumococcal polysaccharide serotype 1 + pneumococcal polysaccharide serotype 14 + pneumococcal polysaccharide serotype 18C + pneumococcal polysaccharide serotype 19A + pneumococcal polysaccharide serotype 19F + pneumococcal polysaccharide serotype 23F + pneumococcal polysaccharide serotype 3 + pneumococcal polysaccharide serotype 4 + pneumococcal polysaccharide serotype 5 + pneumococcal polysaccharide serotype 6A + pneumococcal polysaccharide serotype 6B + pneumococcal polysaccharide serotype 7F + pneumococcal polysaccharide serotype 9V
Strength:2.2 mcg/0.5 mL + 2.2 mcg/0.5 mL + 2.2 mcg/0.5 mL + 2.2 mcg/0.5 mL + 2.2 mcg/0.5 mL + 2.2 mcg/0.5 mL
Dosage Form:suspension for injection
Unit of Use:0.5 mL prefilled syr

จริง ๆ TMT เป็นรหัสมาตรฐานด้านยาที่ดีมากนะครับ ถ้าเป็นไปได้ผมอยากให้ทุกรพ. map รหัสนี้เข้าไปในยาทุกรายการของรพ. ซึ่งรพ.จะได้ประโยชน์ไม่ใช่แค่ในแง่การบริหารจัดการ แต่สามารถใช้ประโยชน์ในทางคลินิกได้มากมาย ทั้งภายในรพ.ตนเอง (หลัก ๆ คือในแง่ clinical decision support) และใช้เพื่อ semantic interoperability ระหว่างรพ.

การค้นหายาตอนที่แพทย์จะสั่งยา

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

กรณียาตัวอย่างที่ 1: เวลาค้นหายาพวกนี้ หมอคงอยากเห็น active ingredient, strength, form แน่ ๆ เช่น “Paracetamol 500 mg tablet” ส่วน unit of use ถ้า form มันชัดอยู่แล้ว เช่นกรณีนี้เป็น tablet ก็คงไม่ต้อง ส่วน Trade name ก็สำคัญในยาบางตัว แต่ยาบางตัวเขาก็อาจไม่ได้แคร์ อยากจ่ายยา generic name นี้ เภสัชกรเลือกให้เลย เอายี่ห้อไหนก็ได้

กรณียาตัวอย่างที่ 2: กรณีนี้คล้าย ๆ ยาตัวอย่างที่ 1 แต่เคสแบบนี้ผมว่าหมอน่าจะค้นหาจาก trade name ที่เขาใช้บ่อย ๆ มากกว่า เนื่องจาก active ingredient มันเริ่มหลายตัว การไปนั่งไล่อ่าน ingredient เวลาจะสั่งยาก็อาจจะเริ่มไม่สะดวก และพอเป็นยาน้ำ unit of use จึงสำคัญ ส่วน strength อาจไม่ค่อยสำคัญ (แต่ต้องดูได้) ผมว่าเขาน่าจะอยากเห็นประมาณนี้ “DEXOPHEN (ingredients + strength ทำไงก็ได้ให้สั้น ๆ) syrup 60 mL bottle”

กรณียาตัวอย่างที่ 3: กรณีนี้หมอน่าจะไม่แคร์​ ingredient โดยสิ้นเชิง เพราะยาวและก็ไม่ใช่ชื่อยาอยู่ดี เขาน่าจะจำว่าฉีดวัคซีน pneumococcus ในรพ.ให้ฉีด Prevna 13 ส่วน strength น่าจะไม่สำคัญเลย เพราะดูไม่รู้เรื่องอยู่ดี Dosage form ก็ไม่ค่อยจำเป็น สรุปแล้วน่าจะประมาณนี้ “PREVNA 13 0.5 mL prefilled syr”

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

ประเด็นอื่น ๆ ที่ควรนำมาคิดในการออกแบบ

  • Alias หรือชื่อเล่นของยา: เช่น หมออาจคุ้นเคยกับชื่อย่อสั้น ๆ บางอย่าง เช่น Cef-3 แทน Ceftriaxone หรือคุ้นกับ trade name บางอย่างที่รพ.ไม่ได้ stock ไว้แล้ว แต่จริง ๆ หมายถึงยาอื่น กรณีเหล่านี้เราจะอนุญาตให้เขาค้นหาด้วย keyword เหล่านี้ได้หรือเปล่า
  • ยา Look Alike Sound Alike (LASA): best practices ในแง่ medication safety แนะนำว่ายาเหล่านี้ควรเขียนให้แยกจากกันได้ง่าย เช่น LORazepam — clonazePAM
  • ยา 1 ตัวอาจมีวิธีใช้ได้หลากหลาย ซึ่งจากบทความที่แล้วผมก็เสนอว่าพวกข้อมูลเหล่านี้ควร fill ให้อัตโนมัติเลย หมอแค่เลือก item ให้ถูก

จะเห็นว่าจากข้อมูลข้างต้น เราไม่สามารถนำ Fully specified name (FSN) ของ TMT มาใช้ตรง ๆ ได้ ไม่ว่าจะที่ granularity ระดับใด (GP, TP, GPU, TPU, ฯลฯ) เพราะจะมี use case ที่ไม่ตอบโจทย์

ออกแบบ User Interface (UI) ของระบบสั่งยา

ประเด็นที่อาจต้องพิจารณาก่อนก็คือจะอนุญาตให้สั่งโดยไม่ระบุ trade name ได้หรือไม่ แล้วให้เภสัชกรไปเลือกให้ อันไหนก็ได้ที่มีในคลัง หากอนุญาตก็อาจต้องมีวิธีแสดง item ที่ไม่ระบุ trade name เพิ่มเติม แต่ในกรณีนี้ผมสมมติว่ารพ.ไม่อนุญาต คือต้องเลือก trade name ทุกครั้ง

UI pattern ที่เห็นบ่อย แต่ผมคิดว่าเราน่าจะทำได้ดีกว่านี้ ก็คือการใช้ dropdown ธรรมดาแล้วให้ user พิมพ์เลือกจากสิ่งที่อยู่ใน dropdown นั้น เหมือนพิมพ์เลือกจังหวัด ซึ่งการเลือกยามันซับซ้อนกว่านั้นมาก

ผมเสนอว่า UI ควรมีฟีเจอร์เหล่านี้ครับ

  1. ระบบฐานข้อมูล master ควรเก็บข้อมูลหลายชนิด (field) อย่างน้อย ๆ ก็ตามที่ TMT กำหนดไว้ ไม่ใช่เก็บแค่ generic name กับ trade name ส่วนระบบ UI ก็สามารถค้นหาจากข้อมูลหลายชนิดได้ เช่น ค้นจาก trade name, ingredient, strength, form, alias, ฯลฯ
  2. แต่เวลาแสดงผลการค้นหา รายการที่โชว์ในลิสท์ต้อง custom ให้เหมาะสมกับยาชนิดนั้น ๆ การแสดงผลไม่จำเป็นต้องแสดงในบรรทัดเดียวก็ได้
  3. keyword แต่ละคำสามารถไป lookup ใน field คนละ field ได้
  4. โชว์ common dose และ timing มาให้เลือกเลยในผลการค้นหา
  5. อาจมีระบบ search operation เช่น ใช้ keyword ว่า “>500” ก็คือถ้ามีค่ามากกว่า 500 ก็เอามาใส่ผลการค้นหาหมด ถ้าระบบจะฉลาดขึ้นไปอีกก็อาจใช้วิธีพิมพ์ชื่อกลุ่มไปเลยได้ เช่น พิมพ์ Antibiotic ระบบก็ลิสต์ยาปฏิชีวนะในตำรับยาของรพ.ออกมาให้เลย

จากทั้งหมดข้างต้น UI น่าจะออกมาราว ๆ นี้ (ขอเน้นข้อมูลและฟังก์ชั่นครบ ไม่เน้นความสวยงามหรือใช้ง่ายอะไรนะครับ 😆) 

element ต่าง ๆ ใน UI ลองวางคร่าว ๆ แบบนี้ครับ หลักการสำคัญคือ search bar นี้ต้องฉลาดพอสมควร สามารถค้นหาจาก field อะไรก็ได้ ที่มีความสัมพันธ์กับ keyword ต่าง ๆ ที่เราป้อนไป

แสดงการค้นหามาตรฐาน ในกรณีนี้คือค้นจาก ingredients (อาจเป็น generic name หรือไม่ก็ได้) แต่ละผลการค้นหาที่ขึ้นมา user จะสามารถเลือก dosage และ timing ที่ใช้บ่อยได้เลย ถ้าจะให้ดียิ่งขึ้นไปการแนะนำ dosage และ timing นี้ควรจะสอดคล้องกับแพทย์ผู้สั่ง (เช่น อาจเรียนรู้จากการสั่งที่เขาสั่งบ่อย) ประกอบกับ condition ของคนไข้ (เช่น Diagnosis)

หากใส่ keyword เพิ่มเติม เช่นกรณีนี้คือ “Para” และ “500” ก็ filter มาเฉพาะรายการที่มีค่าที่เกี่ยวข้อง

ภาพสุดท้ายนี้แสดงตัวอย่าง 2 แบบ คือ 1) filter Para ด้วย dosage form 2) หาก ingredients เยอะเกินไป อาจไม่เหมาะที่จะแสดงตรงนี้ ก็อาจต้องไปซ่อนแล้วใช้วิธีอื่นในการแสดง

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

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

ก็จบลงแล้วครับ อันนี้เป็นการเสนอไอเดียของผมเฉย ๆ นะครับ ไม่ได้มีหลักฐานทางวิชาการรองรับอะไรว่าออกแบบแบบนี้ใช้ง่าย ลดความผิดพลาด หรือประโยชน์อื่น ๆ และในแง่ความใช้ง่ายหรือความสวยงาม มันก็มีวิธีออกแบบอีกเยอะที่จะทำได้ดีกว่านี้ครับ ประเด็นที่ผมจะสื่อก็คือ

  1. ระบบการเลือกยาเพื่อสั่งการรักษาควรเป็นระบบที่ฉลาด และใช้ข้อมูลที่มากไปกว่าชื่อธรรมดาในการค้นหา
  2. มีวิธีการแสดงผลที่ทำให้ user เข้าใจได้โดยง่ายถึงรายละเอียดของสิ่งที่ตนเองกำลังสั่งอยู่

หากท่านใดมีไอเดีย มีข้อเสนอแนะ อยากนำไปต่อยอด หรืออยากแชร์ระบบการสั่งยาของตนเอง ก็แลกเปลี่ยนพูดคุยกันได้นะครับ 😄

Acknowledgement

ขอขอบพระคุณ รศ.นพ.ชลธิป พงศ์สกุล อาจารย์ของผม และรองคณบดีฝ่ายสารสนเทศ คณะแพทยศาสตร์ มหาวิทยาลัยขอนแก่น ที่ช่วยกรุณาให้ผมเข้าไปศึกษาระบบ HIS ของรพ.ศรีนครินทร์ ได้ไอเดียหลายอย่างเลยครับ

รวมถึงท่านอื่น ๆ ที่อาจไม่ประสงค์ให้เอ่ยนามออกสื่อ ที่ช่วยส่งตัวอย่างระบบต่าง ๆ มาให้ดูด้วยครับ 🙏

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *