昨天做了「輸入症狀 → AI 建議可能藥品」,效果雖然不錯,但我後來想到一個問題:如果使用者誤以為任何症狀都只要吃藥就好,那其實很危險
舉例來說:
這讓我覺得專案不能只給藥品建議,還需要額外的警示提醒,避免誤導。
在 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 度且持續不退,請立即就醫
這樣使用者就能更直觀地知道什麼時候吃藥可以解決,什麼時候需要趕快去醫院。
如果只做「症狀 → 藥品」,很容易讓人誤以為「有症狀就吃藥」。但醫療實際上有很多灰色地帶,過度簡化會有風險。透過這個警示,系統不只是給藥品建議,還能提醒使用者哪些情況應該去醫院。這樣就能兼顧便利和安全了!