SMART on FHIR App - 跨院病摘雙向交換平台
CHARI (Cross-Hospital Admission Record Integration) 是一個 SMART on FHIR App,用於解決跨院轉診時的病歷整合問題。讓接收醫院能快速查閱轉出醫院的病摘,並選擇性導入至本院病歷系統。
Live Demo: https://selika.github.io/CHARI/
| 痛點 | 現況 | CHARI 解決方案 |
|---|---|---|
| 資料取得困難 | 紙本傳真、PDF 掃描 | FHIR 標準化查詢 |
| 無法直接利用 | 人工逐項抄寫 | 一鍵選擇性導入 |
| 資訊可能遺漏 | 過敏史、用藥未被注意 | 結構化呈現與警示 |
┌─────────────────┐ ┌─────────────────────┐ ┌─────────────────┐
│ A 醫院(轉出端) │ │ 衛福部 FHIR Server │ │ B 醫院(接收端) │
│ │ │ │ │ │
│ ┌───────────┐ │ │ ┌───────────────┐ │ │ ┌───────────┐ │
│ │ HIS │ │ │ │ Composition │ │ │ │ HIS │ │
│ └─────┬─────┘ │ │ │ Bundle │ │ │ └─────┬─────┘ │
│ │ │ │ └───────────────┘ │ │ │ │
│ ┌─────▼─────┐ │ │ │ │ ┌─────▼─────┐ │
│ │ CHARI App │──┼────►│ POST 出院/轉院病摘 │ │ │ CHARI App │ │
│ └───────────┘ │ │ │◄────┼──│ GET 病摘 │ │
└─────────────────┘ └─────────────────────┘ └─────────────────┘
以「就診紀錄 (Encounter)」為主軸,整合顯示:
- 出院病摘(藍色主題)
- 轉院病摘(橘色主題,標註「住院中轉院」)
- 門診記錄(綠色主題)
| 項目 | 說明 |
|---|---|
| 過敏註記 | 預設導入,高風險過敏紅色警示 |
| 主訴 / 現病史 | 可選擇導入,以 FHIR DocumentReference 格式 |
| 診斷 | Condition 資源,含 ICD 代碼 |
| 用藥記錄 | MedicationStatement,區分住院用藥/出院帶回 |
| 手術處置 | Procedure 資源 |
| 檢驗報告 | Observation 資源,異常值紅字標示 |
Composition- 出院/轉院病摘Encounter- 就醫紀錄(住院/門診)Condition- 診斷MedicationStatement- 用藥紀錄AllergyIntolerance- 過敏史Procedure- 手術/處置Observation- 檢驗數據DiagnosticReport- 影像/EKG 報告
本專案提供 AI 生成符合臨床實務的 3 位測試病人:
| 病人 | 診斷 | 情境 | 來源醫院 |
|---|---|---|---|
| 林小萱 | SLE 紅斑性狼瘡 | 出院後轉院 | 臺北榮民總醫院 |
| 王美華 | Severe AS s/p TAVI | 出院後轉院 | 臺北榮民總醫院 |
| 陳志明 | NSTEMI 三支血管疾病 | 住院中轉院 | 關渡醫院 |
FHIR Server: https://thas.mohw.gov.tw/v/r4/fhir
| 項目 | 規格 |
|---|---|
| FHIR 版本 | R4 |
| Profile | TW Core IG |
| 認證方式 | OAuth 2.0 (SMART App Launch) |
| 前端框架 | React 18 + Vite |
| FHIR Client | fhirclient.js |
| UI 框架 | Tailwind CSS + Lucide Icons |
| 部署方式 | GitHub Pages |
| 環境 | URL |
|---|---|
| Demo | https://selika.github.io/CHARI/ |
| FHIR Server | https://thas.mohw.gov.tw/v/r4/fhir |
| Patient Browser | https://thas.mohw.gov.tw/patient-browser/ |
CHARI/
├── README.md # 中文 README
├── README.en.md # English README
├── AGENTS.md # AI Coding Agent 指引
├── LICENSE # Apache 2.0 授權
├── package.json # 專案設定與依賴
├── vite.config.js # Vite 建置設定
│
├── docs/ # 📚 技術文件
│ ├── CHARI_完整應用說明文件_v4.pdf # 應用說明書(PDF)
│ └── CHARI_資料規格文件_完整版.md # FHIR 資料規格
│
├── public/ # 靜態資源
│ ├── CHARI_App_Icon.png # App 圖標
│ └── launch.html # SMART App 啟動頁
│
├── src/ # 前端原始碼
│ ├── App.jsx # 主應用程式
│ ├── main.jsx # 進入點
│ ├── components/
│ │ ├── PatientSearch.jsx # 病人查詢
│ │ ├── CompositionList.jsx # 病摘時間軸
│ │ ├── CompositionDetail.jsx # 病摘導入
│ │ └── Layout.jsx # 頁面布局
│ ├── hooks/
│ │ └── useFhirClient.js # FHIR Client Hook
│ └── services/
│ └── fhirQueries.js # FHIR 查詢封裝
│
├── test-data/ # 🧪 測試資料
│ ├── README.md # 測試案例總覽
│ ├── TESTA-01/ # 林小萱(SLE,出院後轉院)
│ │ └── README.md
│ ├── TESTA-02/ # 王美華(TAVI,出院後轉院)
│ │ └── README.md
│ └── TESTA-03/ # 陳志明(NSTEMI,住院中轉院)
│ └── README.md
│
└── scripts/ # 資料上傳腳本
├── upload-compositions.cjs
├── upload-outpatient.cjs
└── upload-patients.cjs
| 文件 | 說明 |
|---|---|
| docs/CHARI_完整應用說明文件_v4.pdf | 完整應用說明書(含截圖) |
| docs/CHARI_資料規格文件_完整版.md | FHIR 資源與資料規格定義 |
| test-data/README.md | 測試案例總覽與使用說明 |
# 安裝依賴
npm install
# 本地開發
npm run dev
# 建置
npm run build
# 部署至 GitHub Pages
npm run deploy| 階段 | 狀態 |
|---|---|
| Phase 1: 病摘查詢與時間軸 | ✅ 完成 |
| Phase 2: 病摘導入功能 | ✅ 完成 |
| Phase 3: 測試資料建立 | ✅ 完成 |
本專案採用 Apache License 2.0 授權。
蔡世能 - 臺北榮民總醫院 教學部教師培育科 資訊工程師