Burni - FHIR Server ⇒ Windows 10 架設篇

Posted on Sat, Mar 12, 2022 FHIR

這篇文章您將學習如何將 Burni 架設起來。

⚠️

如果覺得有些段落過長,可以使用右邊的按鈕瀏覽大綱模式唷! 文章太長,按鈕會產生比較慢,請您耐心等待!

⚠️

目前此篇教學只注重於基本的 FHIR Server 功能,如需要支持 $validate 的功能,請自行研究,日後會新增

下載 Burni

第一種方法:使用 Git

git clone https://github.com/Chinlinlee/Burni.git

第二種方法:下載 Zip

安裝所需軟體

所需軟體 requirement

安裝 Node.js 14.19.0

安裝完畢囉!

測試是否安裝完成

開啟 cmd (命令提示字元),並輸入 node -v,出現 v14.19.0 就代表完整安裝成功囉!

成功安裝 Node.js,讚讚

安裝 MongoDB

創建使用者帳號

由於 Raccoon 內的 MongoDB 連接需要帳號密碼,您必須創建 MongoDB 的帳號密碼以讓 Raccoon 正常運作。

mongodb://localhost:27017
use admin;
切換成功的訊息
⚠️

請自行更改成安全的帳號以及密碼!

db.createUser({
    user : "root",
    pwd : "root" ,
    roles : [{role : "root" , db:"admin"}]
});

出現 { ok: 1 } 就代表創建成功囉!

帳號創建成功的訊息

設定 Burni

以上所需的軟體已經完畢了,您可以開始進行設定 Burni 的步驟啦!

⚠️

注意!進行以下步驟前,請先進到 Burni 的專案目錄

安裝依賴

ℹ️

--only=production 代表只安裝 package.json 內 dependencies 區塊的依賴

npm i --only=production

設定要使用的 FHIR Resource (config.js)

第一種:一般設定

module.exports = {
    "Patient": {
        "interaction": {
            "read": true, // 是否開啟 read 的功能
            "vread": true,
            "update": true,
            "delete": true,
            "history": true,
            "create": true,
            "search": true
        }
    }
};
module.exports = {
    "Patient": {
        "interaction": {
            "read": true, // 是否開啟 read 的功能
            "vread": true,
            "update": true,
            "delete": true,
            "history": true,
            "create": true,
            "search": true
        }
    },
    "Organization": {}  // 新增 Organization , 可以不輸入 interation 的資訊
};

第二種:支援所有 Resource 的設定

ℹ️

如果您需要支援所有 Resource , 您可以使用 cmd 運行以下指令

node config/generate-config-allResources.js
此項指令將會產生所有 Resource 設定的 config/config.js

設定 .env 檔案

MONGODB_NAME="Burni"
MONGODB_HOSTS=["localhost"]
MONGODB_PORTS=[27017]
MONGODB_USER="root"
MONGODB_PASSWORD="root"
MONGODB_IS_SHARDING_MODE=false
MONGODB_SLAVEMODE=false

SERVER_PORT=8080

FHIRSERVER_HOST="localhost"
FHIRSERVER_PORT=8080
FHIRSERVER_APIPATH="fhir"

ENABLE_TOKEN_AUTH=false
JWT_SECRET_KEY="secret-key"
ADMIN_LOGIN_PATH="adminLogin"
ADMIN_USERNAME="admin"
ADMIN_PASSWORD="password"

ENABLE_CHECK_ALL_RESOURCE_ID=false
ENABLE_CHECK_REFERENCE=false

ENABLE_CSHARP_VALIDATOR=false
VALIDATION_FILES_ROOT_PATH="/validationResources"
VALIDATION_API_URL="http://burni-fhir-validator-api:7414"

.env 設定說明

設定名稱資料型態說明
MONGODB_NAMEStringMongoDB 資料庫的名稱
MONGODB_HOSTSArray <String>要連接的 MongoDB IP 或 網域名稱, e.g. 127.0.0.1、localhost
MONGODB_PORTSArray<Number>要連接的 MongoDB IP 的 Port,對應 MONGODB_HOSTS 的順序, e.g. 27017
MONGODB_USERString要連接的 MongoDB 的 使用者帳號
MONGODB_PASSWORDString要連接的 MongoDB 的 使用者密碼
SERVER_PORTNumberServer 啟動的 Port
FHIRSERVER_HOSTStringFHIR Server 對外連接的 IP 或網域名稱,用於產生回傳資料的 URL
FHIRSERVER_PORTNumberFHIR Server 對外連接的 Port,用於產生回傳資料的 URL
FHIRSERVER_APIPATHString使用 FHIR API 的前綴字,e.g. api/fhir ,代表查詢 Patient 使用 http://xxx.com/api/fhir/Patient
ENABLE_TOKEN_AUTHBoolean是否開啟驗證機制
JWT_SECRET_KEYStringJWT 的 secret key
ADMIN_LOGIN_PATHString核發 Token 登入頁面的 URL 路徑,e.g. adminLogin即 http://localhost/adminLogin
ADMIN_USERNAMEString核發 Token 管理者登入帳號
ADMIN_PASSWORDString核發 Token 管理者登入密碼
ENABLE_CHECK_ALL_RESOURCE_IDBoolean是否驗證跨 Resource 的 ID ,即 Patient/123 以及 Organization/123 不應該同時存在
ENABLE_CHECK_REFERENCEBoolean是否驗證 Resource 內的 Reference 是否存在
ENABLE_CSHARP_VALIDATORBoolean是否開啟 C# 的 API
VALIDATION_FILES_ROOT_PATHString存放驗證功能所使用的 Structure Definition、 Code System 、 Value Set 的路徑
VALIDATION_API_URLStringC# 驗證器 API 的 Base URL

產生 Resource 程式碼

npm run build
運行後您將會在 api/FHIR 資料夾; e.g. api/FHIR/Patient檔案以及models/mongodb/model資料夾; e.g. models/mongodb/model/Patient.js 檔案,看到產生的程式碼
npm run build 執行結果

部屬 Burni

node server.js

執行後看到以下訊息就代表架設成功囉!

測試 Burni

創建 Patient

取得剛剛創建的 Patient (read)

更改 Patient