昨天已經完成了藥品交互作用提醒,今天要繼續往前一步 —— 模擬藥師,給使用者劑量與用法的建議。
很多時候,使用者不只想知道這個藥有什麼副作用,更想知道該怎麼吃才安全,這正是我今天的重點。
因此,今天的做法是:
整合 FDA API:嘗試取得官方藥品資料如副作用、警語(這邊改用了FDH 不用open ai了)。
自訂劑量資料庫:針對常見藥物,自己建立一份簡化的「劑量與注意事項」字典。
輸出整合結果:使用者輸入藥品名稱後,系統同時回傳「劑量建議、注意事項、副作用」。
先新建一個 dosage_data.py,放入常見藥物的劑量建議與注意事項:
# dosage_data.py
dosage_data = {
"acetaminophen": {
"dosage": "成人每次500mg,每4~6小時一次,每日不超過4000mg",
"note": "避免與酒精同時使用,以免增加肝損傷風險"
},
"ibuprofen": {
"dosage": "成人每次200~400mg,每4~6小時一次,每日不超過1200mg",
"note": "飯後服用可減少胃部不適"
},
"amoxicillin": {
"dosage": "成人每8小時500mg,或每12小時875mg",
"note": "需按醫囑完成療程,即使症狀改善也不要自行停藥"
}
}
這樣一來,常見藥物的建議就隨時可以查到。
接著我們建立主程式 app_day25.py,把 FDA API 查詢和自訂劑量資料結合
# app_day25.py
import requests
from dosage_data import dosage_data
FDA_ENDPOINT = "https://api.fda.gov/drug/label.json"
def get_fda_data(drug_name):
try:
url = f"{FDA_ENDPOINT}?search=openfda.generic_name:{drug_name}&limit=1"
response = requests.get(url)
response.raise_for_status()
data = response.json()
results = data.get("results", [])
if not results:
return None
return results[0]
except Exception as e:
print("⚠️ 錯誤:", e)
return None
def get_drug_info(drug_name):
key = drug_name.lower()
fda_info = get_fda_data(drug_name)
dosage_info = dosage_data.get(key, {
"dosage": "❓ 此藥品劑量資訊暫無資料",
"note": ""
})
result = {
"drug": drug_name,
"dosage": dosage_info["dosage"],
"note": dosage_info["note"],
"side_effects": fda_info.get("adverse_reactions", ["❓ 無副作用資料"]) if fda_info else []
}
return result
if __name__ == "__main__":
drug = input("輸入藥品名稱 (例如 acetaminophen): ")
info = get_drug_info(drug)
print("\n=== 藥品建議 ===")
print("藥品名稱:", info["drug"])
print("劑量建議:", info["dosage"])
print("注意事項:", info["note"])
print("常見副作用:", info["side_effects"][:3])
輸入藥品名稱 (例如 acetaminophen): ibuprofen
=== 藥品建議 ===
藥品名稱: ibuprofen
劑量建議: 成人每次200~400mg,每4~6小時一次,每日不超過1200mg
注意事項: 飯後服用可減少胃部不適
常見副作用: ['nausea', 'headache', 'dizziness']
這樣使用者就能得到清楚的 劑量建議 + 注意事項 + 副作用
首先就是API 不一定足夠,雖然 FDA API 提供了大量藥品資料,但要讓資訊真正實用,往往需要額外的整理與補充。再來就是結構化資料的重要性,我們透過 dosage_data.py 自訂劑量資料,讓系統隨時能查到常見藥物的建議。最後是醫療資訊要小心,這裡的範例僅供學習展示,真實臨床上的劑量與用法,一定要依醫師與藥師指示為準。