前言
在前兩個模組中,我們完成了醫療標準(HL7 FHIR)的基礎理論、測試沙盒架設,以及護理資訊系統(NIS)核心業務與資料庫塑模。從今天開始,我們正式邁入 模組三:後端 API 開發與 FHIR 整合實戰。
在醫療場域中,系統安全是絕對的紅線。病人的電子病歷、生理數據與用藥紀錄屬於高度敏感個資(Protected Health Information, PHI)。醫療系統的 API 絕不能對外裸奔,每個端點都必須確認:
1.呼叫者是誰?(Authentication:身分識別)
2.呼叫者是否有權限執行該處置?(Authorization:角色授權,例如:護理師可記錄體徵但不可開立處方,醫師可開立醫囑但由藥師審核)
今天我們將使用 Node.js + Express + TypeScript 搭建 NIS 核心後端骨幹,配置集中化的 RESTful 路由結構,並實作符合醫療資訊規範的 JWT(JSON Web Token)身分認證與 RBAC(Role-Based Access Control)角色權限中介軟體(Middleware)。
一、專案結構與模組分工
為了確保高內聚、低耦合,後端專案採用標準的分層架構(Layered Architecture):
二、型別定義與擴充 Express Request
在 TypeScript 專案中,護理人員通過驗證後,我們需要將解碼後的醫護身分附掛在 req.user 上。
請建立 src/types/express.d.ts,利用 declaration merging 擴充 Express 的 Request 型別:
三、實作 JWT 簽發與驗證服務
我們採用 jsonwebtoken 進行 Token 的產生與校驗。在醫療情境中,由於行動推車或臨床平板經常處於公用空間,Token 的過期時間不宜過長(一般建議 Access Token 為 15~60 分鐘,並搭配 Refresh 機制或輪班自動註銷)。

認證與權限中介軟體 (src/middlewares/auth.middleware.ts)
五、建立 API 路由與伺服器入口
現在我們將中介軟體組裝進 Express 骨幹中,示範公有登入路由與受保護臨床路由的配置。





有了穩固的身分防護盾後,明天 Day 15 我們將進入核心轉譯設計模式:資料轉換層(Adapter Pattern)實作——將內部 PostgreSQL 關聯資料無失真轉換為 FHIR Patient Bundle!