digiRunner Composer node-red medical

使用 Composer 製作取得病歷 API

顏綸 Lun Yan 2025/03/21 19:07:58
16

前言

最近有遇到客戶會用到 Composer 去資料庫取資料並將此整合成 JSON 回傳,所以藉此機會寫這篇文章分享出來,

防止日後還有人跑來找我問相關的問題

該篇範例主要介紹 digiRunner-database-connector 節點 的基本應用,

除此之外也會用到之前介紹的節點,如果想深入了解這幾個節點的朋友,也可以參考以下幾篇:

Composer debug 節點的完整介紹

Composer function 節點的基本介紹

Composer inject 節點的完整介紹

 

 

一、前置準備

首先這家沒什麼病人的醫院有以下資料:

病人資訊

藥品資訊

病歷資訊

然後在 dgR AC >> 系統設定 >> RDB 連線 設定要連線的資料庫 (不懂這邊操作的朋友們記得回去看看這篇 digiRunner-database-connector 節點)

 

二、流程與設定

我們會需要這個 API 會是取得病歷為主,並將病歷中病患與使用藥品的詳細資訊整合在病歷裡面後回傳。

以下是流程的部分:

1. 檢查格式

功能:檢查 API 請求的參數格式是否正確。

來源:流程的起點是不同的搜尋條件 (生日、電話、姓名),最後通過 /medical/getdetail API 輸入。

目的:確認請求中是否有必要的參數,並檢查參數的格式。如果有錯誤,會被 catch:1 捕捉 (見第 7 步)。

 

2, 3, 4. Arrange parameters (整理參數)

功能:根據請求類型整理參數,然後傳遞給對應的 SQL 查詢節點。

流程:

步驟 2:如下圖所示,將參數整理後傳遞給 [SQL] get patients 節點,取得病患資訊 (Patient Information)。

步驟 3:如下圖所示,將參數整理後傳遞給 [SQL] get medical records 節點,取得病歷資訊 (Medical Records)。

步驟 4:如下圖所示,將參數整理後傳遞給 [SQL] get medications 節點,取得用藥資訊 (Medications Information)。

如果有錯誤,則會被 catch:7 捕捉 (見第 6 步)。

 

5. 設定回傳 JSON 格式

功能:將 SQL 查詢得到的資料組合成一個 JSON 格式的回應。

來源:接收來自 2、3、4 步驟的 SQL 結果。

目的:將所有病患資訊、病歷資訊和用藥資訊整合到一個 JSON 物件中,準備作為 API 的回應,如下圖所示:

 

6. 捕捉意外錯誤

功能:catch 節點捕捉紅框 2、3、4、5 中所有節點產生的未預期錯誤 (如資料庫連線失敗或未知例外),如下圖所示:

流程:捕捉錯誤後,會進入 unexpected error response 函數節點,設定錯誤訊息。

最後將錯誤訊息傳遞給 api res 節點,將其作為 API 回應返回。

 

7. 捕捉格式錯誤

功能:catch 節點捕捉請求參數格式錯誤 (第 1 步檢查時出錯),如下圖所示:

流程:捕捉到錯誤後,會進入 format error response 函數節點,設定錯誤訊息。

最後將錯誤訊息傳遞給 api res 節點,將其作為 API 回應返回。

 

 

二、DEMO

以上資料與設定通通齊全後,我們就來打看看這支 API:

 

1. 使用人名取得病歷:

結果:

 

2. 使用電話取得病歷,這次傳入兩個號碼試試:

結果發現確實能給出兩張病歷:

 

3. 使用生日取得病歷,這次加了個不存在的生日看看會怎樣:

結果可以看到不存在的生日被忽略了,只回傳兩個病歷:

 

 

三、結語

這篇的基本應用就介紹到這邊,雖然是基本應用,但足以應付大部分需求。

不過其實還是有許多可以改善的地方,一些防呆的部分、效能提升像是使用 INNER JOIN

來一次取得所需的資料以減少網路流量,但 Composer 本身就是面向 low coding 的微服務,

所以這篇就使用基本的 JS 和 SQL 語法去解決問題。

 

 

四、參考

(1) node-red 官方

(2) 自己

顏綸 Lun Yan