iT邦幫忙

2025 iThome 鐵人賽

DAY 17
0
  1. 修改 docker-compose.yml 加入 PostgreSQL
    在 cancer-dashboard/docker-compose.yml 裡新增一個服務:
  postgres:
    image: postgres:15
    container_name: cancer-postgres
    restart: always
    environment:
      POSTGRES_USER: admin
      POSTGRES_PASSWORD: admin123
      POSTGRES_DB: cancer_db
    ports:
      - "5432:5432"
    volumes:
      - postgres_data:/var/lib/postgresql/data

volumes:
  postgres_data:

這樣會啟動一個 PostgreSQL,資料庫名稱是 cancer_db。

  1. 建立病人資料表
    啟動容器:
docker compose up -d

進入 PostgreSQL:

docker exec -it cancer-postgres psql -U admin -d cancer_db

建立病人數據表:

CREATE TABLE cancer_patients (
    id SERIAL PRIMARY KEY,
    patient_id VARCHAR(10),
    record_date DATE,
    afp INT,
    alt INT
);

插入測試數據:

INSERT INTO cancer_patients (patient_id, record_date, afp, alt) VALUES
('001', '2025-08-01', 120, 30),
('001', '2025-08-10', 180, 40),
('001', '2025-08-20', 300, 60),
('001', '2025-08-30', 500, 90),
('002', '2025-08-01', 90, 25),
('002', '2025-08-15', 160, 45),
('002', '2025-08-30', 280, 60);

檢查:

SELECT * FROM cancer_patients;
  1. 在 Grafana 新增 PostgreSQL Data Source
    (1) 打開 Grafana → Connections → Data sources → Add data source
    (2) 選擇 PostgreSQL
    (3) 填入:
    ● Host:cancer-postgres:5432
    ● Database:cancer_db
    ● User:admin
    ● Password:admin123
    (4) 點 Save & test → 應該會顯示成功連線

4.在 Grafana 查詢資料
新增一個 Panel → Query → SQL:

SELECT
  record_date AS "time",
  afp
FROM cancer_patients
WHERE patient_id = '001'
ORDER BY record_date;

就能畫出病人 001 的 AFP 趨勢圖。
如果要同時畫 ALT:

SELECT
  record_date AS "time",
  afp,
  alt
FROM cancer_patients
WHERE patient_id = '001'
ORDER BY record_date;

在 Panel 裡設定:
● AFP → 左軸
● ALT → 右軸

5.成果
● 我們不再用 log 檔,而是把數據存進 PostgreSQL
● Grafana 直接查詢資料庫,畫出病人 AFP/ALT 趨勢
● 更接近「臨床資料庫 + 視覺化」的真實場景


上一篇
把警示推送到外部平台
下一篇
將 AI 預測數據存入資料庫,並在 Grafana 呈現
系列文
用 Grafana 打造癌症資料視覺化平台:從資料清洗到AI預測呈現21
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言