1. 準備工具
今天需要的工具有三個:
| 工具 | 用途 |
| ------------------------------- | --------------- |
| **Grafana API** | 取得 Dashboard 畫面 |
| **Python (requests + smtplib)** | 抓圖與寄信 |
| **Cron / Task Scheduler** | 定期執行自動化任務 |
請先確認你有安裝以下套件:
pip install requests smtplib pillow
2. 用 Grafana API 擷取報告畫面
Grafana 提供 REST API 可將 Dashboard 匯出成圖片或 PDF。
你可以在 Grafana 的設定裡建立 API Token:
(1) 登入 Grafana
(2) 點選左下角 ⚙️ → 「API Keys」
(3) 建立新金鑰
● Name:report-bot
● Role:Viewer
● 有效期限:30 天
(4) 複製 Token(記得妥善保存!)
Python 程式:下載病人報告圖像
import requests
GRAFANA_URL = "http://localhost:3000"
API_KEY = "你的_API_KEY"
DASHBOARD_UID = "你的_dashboard_uid" # 在 URL 裡可以看到
PATIENT_ID = "001"
# 取得 Grafana 圖片 (PNG)
render_url = f"{GRAFANA_URL}/render/d-solo/{DASHBOARD_UID}/patient-report"
params = {
"orgId": 1,
"var-patient_id": PATIENT_ID,
"panelId": 1, # 要截哪一個 panel (可以改)
"width": 1600,
"height": 900,
"tz": "Asia/Taipei"
}
headers = {"Authorization": f"Bearer {API_KEY}"}
response = requests.get(render_url, headers=headers, params=params)
with open(f"report_{PATIENT_ID}.png", "wb") as f:
f.write(response.content)
print("病人報告圖片已生成!")
這樣就能擷取你在 Grafana 上的病人報告畫面。
3. 用 Python 自動寄送報告
接下來我們用 smtplib 將報告寄給醫師或病人。
(你可以使用 Gmail、Outlook 或企業信箱)
import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.mime.image import MIMEImage
sender_email = "your_email@gmail.com"
receiver_email = "doctor@hospital.org"
password = "你的應用程式密碼"
msg = MIMEMultipart("related")
msg["Subject"] = "📄 病人健康報告 - AFP/ALT 最新分析"
msg["From"] = sender_email
msg["To"] = receiver_email
# 郵件內文
text = MIMEText("""
您好,
附上本週病人健康報告摘要:
- 病人 ID:001
- AFP 趨勢:上升中 🔴
- ALT 趨勢:穩定 🟡
請參考附加圖檔以了解詳細趨勢。
此報告由癌症健康監測平台自動產生。
""", "plain", "utf-8")
msg.attach(text)
# 加入報告圖片附件
with open("report_001.png", "rb") as f:
img = MIMEImage(f.read())
img.add_header("Content-Disposition", "attachment", filename="report_001.png")
msg.attach(img)
# 寄信
with smtplib.SMTP_SSL("smtp.gmail.com", 465) as server:
server.login(sender_email, password)
server.send_message(msg)
print("報告已寄出!")
4. 自動化排程
最後一步:讓這段 Python 程式自動每天執行一次。
在 macOS / Linux:
執行:
crontab -e
加入排程(每天早上 8 點執行):
0 8 * * * /usr/bin/python3 /path/to/send_report.py
在 Windows:
(1) 開啟「排程工作程式 (Task Scheduler)」
(2) 建立新任務
(3) 觸發條件:每日 08:00
(4) 動作:執行 Python,參數為你的腳本位置
5. 成果展示
完成後,整個系統自動運作如下:
[AI 模型更新資料]
↓
[Grafana 自動刷新]
↓
[Python 擷取報告圖]
↓
[Email 自動寄送醫師]
↓
[每日 08:00 自動完成 ]
● 自動產生報告
● 自動通知醫療人員
● 完全不需人工操作