iT邦幫忙

2025 iThome 鐵人賽

DAY 25
0

前言

昨天已經完成了藥品交互作用提醒,今天要繼續往前一步 —— 模擬藥師,給使用者劑量與用法的建議。
很多時候,使用者不只想知道這個藥有什麼副作用,更想知道該怎麼吃才安全,這正是我今天的重點。

因此,今天的做法是:

  • 整合 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 自訂劑量資料,讓系統隨時能查到常見藥物的建議。最後是醫療資訊要小心,這裡的範例僅供學習展示,真實臨床上的劑量與用法,一定要依醫師與藥師指示為準。


上一篇
Day 24:藥品交互作用提醒
下一篇
Day 26:打造使用者介面(簡單 GUI)
系列文
AI 藥師助手:打造人人都看得懂的藥品查詢系統26
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言