iT邦幫忙

2025 iThome 鐵人賽

DAY 13
0
自我挑戰組

30 天用 Vibe Coding 打造多角色復健追蹤應用系列 第 13

Day 13|第三階段:開發角色專屬儀表板與工作流程 API

  • 分享至 

  • xImage
  •  

今天正式完成 Patient(患者)Physiotherapist(物理治療師)Doctor(醫師)
三個角色專屬的 API 與分析服務,系統後端邁入智慧化分析角色分工的新階段!🎉


🩺 Patient Dashboard APIs

核心程式碼架構

  • PatientDashboardService
    位於 src/services/PatientDashboardService.js,負責處理患者儀表板的所有商業邏輯,
    內部包含:

    • getActiveTasks(patientId):查詢進行中的復健任務並計算完成比例
    • getWeeklyStats(patientId):彙整一週的運動次數、疼痛變化、活動度
    • getAchievements(patientId):計算徽章與里程碑(使用 MongoDB Aggregation Pipeline)
    • getProgressTrends(patientId):分析長期進展趨勢並回傳統計資料
  • 資料處理重點

    • 使用 MongoDB $match + $group 做分週統計,減少前端計算負擔
    • 在 service 層進行權限驗證(patientId 與 JWT token 比對)

API 路由

  • GET /api/patient/dashboard:取得個人進度與統計
  • GET /api/patient/achievements:取得徽章與成就

這些路由會先經過 authMiddleware 驗證,再調用 PatientDashboardService 的方法。


🧑‍⚕️ Physiotherapist Workflow APIs

核心程式碼架構

  • PhysiotherapistWorkflowService
    位於 src/services/PhysiotherapistWorkflowService.js,包含:

    • getPatientOverview(therapistId):列出治療師名下的所有患者,附帶風險評分
    • getWorkloadStats(therapistId):計算當週工作量、任務完成率與截止警示
    • getActivityFeed(therapistId):回傳患者最新的康復活動記錄
    • generatePerformanceMetrics(therapistId):彙整表現指標,用於後續報表或儀表板圖表
  • 程式實作重點

    • 透過 populate 載入患者與任務關聯資料,減少多次查詢
    • 內建風險分層算法:依照疼痛分數變化、自主運動紀錄計算風險等級
    • 提供 limitskip 支援分頁查詢,提升大型資料集效能

API 路由

  • GET /api/therapist/patients:取得患者總覽與風險指標
  • GET /api/therapist/workload:回傳治療師工作量與效能統計
  • GET /api/therapist/activity:患者活動即時動態

🩺 Doctor Oversight APIs

核心程式碼架構

  • DoctorOversightService
    位於 src/services/DoctorOversightService.js,功能包含:

    • getPopulationHealth(doctorId):跨治療師的患者群體健康監測
    • getTreatmentOutcomes(doctorId):依療程類別分析治療成果
    • getProviderPerformance(doctorId):比較不同治療師的績效指標
    • getCriticalAlerts(doctorId):回傳需要立即關注的高風險患者清單
  • 程式實作重點

    • 結合 $facet$lookup 做多維度報表輸出
    • 每個方法皆有權限驗證(確認醫師是否具備跨治療師監管權限)
    • 透過 Redis 做查詢結果快取,減少重複計算

API 路由

  • GET /api/doctor/overview:群體健康與療效分析
  • GET /api/doctor/alerts:重大風險警示

📊 API 路由總表

角色 Method Endpoint 功能
Patient GET /api/patient/dashboard 個人進度統計
Patient GET /api/patient/achievements 成就徽章
Physiotherapist GET /api/therapist/patients 患者總覽與風險
Physiotherapist GET /api/therapist/workload 工作量統計
Physiotherapist GET /api/therapist/activity 即時動態
Doctor GET /api/doctor/overview 群體健康與療效
Doctor GET /api/doctor/alerts 重大風險警示

🔑 技術亮點

  1. Service Layer 設計
    三個角色皆採獨立的 Service Class,清楚劃分商業邏輯,方便測試與維護。

  2. 資料庫最佳化

    • 大量使用 MongoDB Aggregation Pipeline 處理統計
    • 整合 Redis Cache 降低高頻查詢成本
  3. 權限驗證

    • 每個 API 皆套用 JWT 驗證
    • 服務層內部再做資源擁有權檢查
  4. 回傳格式統一
    所有 API 回傳 { success: boolean, data: {...}, message?: string },方便前端直接渲染。


🎯 今日成果總結

完成這三個角色的 API 後,系統已具備:

  • 角色專屬儀表板:患者看進度、治療師看工作量、醫師看整體健康
  • 進階統計與警示:週報、風險分層、即時警示一應俱全
  • 可擴展架構:Service + Route + Middleware 的分層設計,後續新增指標或演算法更容易

這些程式碼奠定了系統進入臨床決策支援的基礎,接下來的目標將是
前端儀表板的可視化呈現資料查詢效能優化
讓使用者能即時獲取關鍵指標,真正實現「資料驅動復健決策」。


專案Github Repo : https://github.com/CHING-WENLAI1031/Rehab_Tracker


上一篇
Day 12|第二階段:核心 API 開發 (六)撰寫測試與更新文件
系列文
30 天用 Vibe Coding 打造多角色復健追蹤應用13
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言