iT邦幫忙

2026 iThome 鐵人賽

DAY 16
0
Software Development

從標準到臨床:FHIR 架構與智慧護理資訊系統(NIS)實作 30 天系列 第 16 篇

Day 16:實作即時生命徵象上傳 API:批次寫入與 Observation 封裝

  • 分享至 

  • xImage
  •  

前言
在護理站巡房時,護理師很少「一次只為一位病人上傳一筆體溫」。臨床常見的動線是:推著護理量測推車走入一間雙人或四人病室,連續量測多位病人的生命徵象(體溫、脈搏、血壓、血氧),並在平板端一次勾選或逐床完成批次送出。

如果前端每量測一個項目就呼叫一次 API,在高併發時段會對後端連線池造成極大壓力;若中途斷線,更可能造成資料狀態破碎。

今天我們將實作 即時生命徵象上傳 API。這支 API 具備兩大核心機制:

內部資料庫交易(ACID Transaction): 一次接收多位病患或多項體徵,在 PostgreSQL 內部確保全數成功或全數回滾(Rollback)。

FHIR Observation 轉接適配器(Adapter): 將關聯式資料列自動拆解並封裝為符合 LOINC 國際編碼的標準 FHIR Observation Resource 與批次 Transaction Bundle。

一、批次上傳資料流架構https://ithelp.ithome.com.tw/upload/images/20260929/201788400skEBe71SI.jpg
二、型別定義與批次 Payload
建立 src/types/vital-batch.types.ts,支援單一請求帶入多位病人、多筆量測:https://ithelp.ithome.com.tw/upload/images/20260929/20178840BePqqkFGBO.jpg
三、實作 Observation Adapter(LOINC 轉換核心)
回顧 Day 4 與 Day 10 的策略:一筆包含體溫、心跳與血壓的臨床紀錄,在 FHIR 標準中應拆解為帶有精確 LOINC 代碼的獨立 Observation。

建立 src/adapters/fhir-observation.adapter.ts:https://ithelp.ithome.com.tw/upload/images/20260929/20178840vNWPN44G8K.jpg
https://ithelp.ithome.com.tw/upload/images/20260929/20178840T1iVSi9dBU.jpg
四、資料庫批次交易寫入與 Controller 實作
在 PostgreSQL 中,我們使用 pg 連線池的 Client 開啟 BEGIN ... COMMIT 交易區塊,確保即使第 5 筆量測因外鍵問題出錯,前 4 筆也不會殘留在資料庫中。

建立 src/modules/vitals/vitals.controller.ts:https://ithelp.ithome.com.tw/upload/images/20260929/20178840kS8w3Y5D69.jpg
https://ithelp.ithome.com.tw/upload/images/20260929/20178840BrYOeQypI5.jpg
五、實機測試與驗證
使用 cURL 模擬護理平板發送批次量測請求:https://ithelp.ithome.com.tw/upload/images/20260929/201788403spn3SzYWG.jpg
預期回應(201 Created):
https://ithelp.ithome.com.tw/upload/images/20260929/20178840fNQP609bYB.jpg
第 1 位病患產生 3 筆 Observation(體溫、心跳、複合血壓),第 2 位病患亦產生 3 筆,合計精準封裝 6 筆標準資源。

小結
今天我們攻克了高頻量測資料流的整合關鍵:
1.實作了基於 PostgreSQL Transaction 的原子性批次寫入,確保臨床資料零遺漏、零碎片。
2.透過 FhirObservationAdapter 將扁平的單筆體徵記錄,依據 LOINC 與 UCUM 規範拆解成符合醫療交換標準的 Observation。
3.打包成 FHIR Transaction Bundle,為後續與外部 HAPI FHIR Server 進行非同步同步備妥載體。

現在我們有了即時且批次寫入的體徵數據,明天 Day 17 我們將為系統裝上智慧大腦:實作臨床警告引擎——NEWS(早期預警評分)演算法與即時異常通報!


上一篇
Day 15:實作病患資料轉換層(Adapter Pattern):內部 DB 轉 FHIR Patient Bundle
下一篇
Day 17:臨床警告引擎:定義異常生命徵象閾值與即時通報邏輯
系列文
從標準到臨床:FHIR 架構與智慧護理資訊系統(NIS)實作 30 天 共 18 篇
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言