iT邦幫忙

2025 iThome 鐵人賽

DAY 22
0

前言

昨天做了「輸入症狀 → AI 建議可能藥品」,效果雖然不錯,但我後來想到一個問題:如果使用者誤以為任何症狀都只要吃藥就好,那其實很危險

舉例來說:

  • 發燒超過 39 度不退,吃退燒藥已經不足以解決
  • 胸痛不一定是感冒,可能是心臟問題
  • 頭痛長時間持續,應該要去醫院檢查

這讓我覺得專案不能只給藥品建議,還需要額外的警示提醒,避免誤導。

實作流程

新增 warning_map 資料表

在 SQLite 新增了一張表,專門存放「症狀 → 警示訊息」。

import sqlite3

conn = sqlite3.connect("medicine.db")
cursor = conn.cursor()

cursor.execute('''
CREATE TABLE IF NOT EXISTS warning_map (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    symptom TEXT,
    warning TEXT
)
''')

warning_data = [
    ("高燒", "若體溫超過 39 度且持續不退,請立即就醫"),
    ("胸痛", "胸痛可能涉及心血管疾病,請立刻就醫"),
    ("頭痛", "若頭痛持續超過三天或劇烈,建議就醫"),
]
cursor.executemany("INSERT INTO warning_map (symptom, warning) VALUES (?, ?)", warning_data)

conn.commit()
conn.close()

執行後,資料庫裡就有了警示資料。

查詢功能:同時查藥品 + 警示

寫了一個 CLI 小程式,輸入症狀時會同時查詢藥品與警示。

import sqlite3

def suggest_medicine(user_input):
    conn = sqlite3.connect("medicine.db")
    cursor = conn.cursor()
    cursor.execute("SELECT medicine FROM symptom_map WHERE symptom LIKE ?", ('%' + user_input + '%',))
    results = cursor.fetchall()
    conn.close()
    return [r[0] for r in results] if results else []

def symptom_warning(user_input):
    conn = sqlite3.connect("medicine.db")
    cursor = conn.cursor()
    cursor.execute("SELECT warning FROM warning_map WHERE symptom LIKE ?", ('%' + user_input + '%',))
    results = cursor.fetchall()
    conn.close()
    return [r[0] for r in results] if results else []

# 測試
user_input = input("請輸入症狀:")
medicines = suggest_medicine(user_input)
warnings = symptom_warning(user_input)

print("輸入症狀:", user_input)
print("建議藥品:", medicines if medicines else "暫無建議藥品")
print("警示提醒:", warnings if warnings else "無特別警示")

實測結果

輸入:頭痛 →
建議藥品:普拿疼
警示提醒:若頭痛持續超過三天或劇烈,建議就醫

輸入:胸痛 →
建議藥品:暫無建議藥品
警示提醒:胸痛可能涉及心血管疾病,請立刻就醫

輸入:高燒 →
建議藥品:暫無建議藥品
警示提醒:若體溫超過 39 度且持續不退,請立即就醫

這樣使用者就能更直觀地知道什麼時候吃藥可以解決,什麼時候需要趕快去醫院

心得

如果只做「症狀 → 藥品」,很容易讓人誤以為「有症狀就吃藥」。但醫療實際上有很多灰色地帶,過度簡化會有風險。透過這個警示,系統不只是給藥品建議,還能提醒使用者哪些情況應該去醫院。這樣就能兼顧便利和安全了!


上一篇
Day 21:使用者輸入症狀 → AI 建議可能藥品
系列文
AI 藥師助手:打造人人都看得懂的藥品查詢系統22
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言