這篇文章您將學習如何將 Burni 架設起來。
⚠️
如果覺得有些段落過長,可以使用右邊的按鈕瀏覽大綱模式唷! 文章太長,按鈕會產生比較慢,請您耐心等待!
⚠️
目前此篇教學只注重於基本的 FHIR Server 功能,如需要支持 $validate 的功能,請自行研究,日後會新增
下載 Burni
- 進到 Burni 的 GitHub:
第一種方法:使用 Git
git clone https://github.com/Chinlinlee/Burni.git
第二種方法:下載 Zip
安裝所需軟體
所需軟體 requirement
- Node.js ≥ 14
- MongoDB > 4.0
安裝 Node.js 14.19.0
- 第一步:進到下載網址,網址:https://nodejs.org/zh-tw/download/releases/
- 第二步:使用上面的搜尋找 14.19 開頭的版本,找到 14.19.0 版本並按下載
- 第三步:點擊
node-v14.19.0-x64.msi
下載
- 第四步:開啟下載的
node-v14.19.0-x64
- 第五步:點擊 Next
- 第六步:勾選
I accept the terms in the License Agreement
並點擊 Next
- 第七步:選擇安裝目錄並點擊 Next
- 第八步:點擊 Next
- 第九步:點擊 Next
- 第十步:點擊 Install
安裝完畢囉!
測試是否安裝完成
開啟 cmd (命令提示字元),並輸入 node -v,
出現 v14.19.0
就代表完整安裝成功囉!
安裝 MongoDB
- 第一步:進到 MongoDB主頁,網址:https://www.mongodb.com/try/download/community
- 第二步:選擇
Version
→4.4.13
,Platform
→Windows
,Package
→msi
並點擊Download
- 第三步:打開下載的
mongodb-windows-x86_64-4.4.13-signed.msi
- 第四步:點Next
- 第五步:將
I accept the terms in the License Agreement
打勾
- 第六步:選擇
Complete
- 第七步:設定 Data Directory (資料存放位置) 以及 Log Directory (紀錄存放位置),選擇完畢後按 Next
- 第八步:安裝 MongoDB Compass
- 第九步:點擊 Install
- 第十步:安裝完畢囉!
創建使用者帳號
由於 Raccoon 內的 MongoDB 連接需要帳號密碼,您必須創建 MongoDB 的帳號密碼以讓 Raccoon 正常運作。
- 第一步:打開 MongoDB Compass
- 第二步:在 New Connection 的 connection string 輸入以下內容,並點擊 Connect
mongodb://localhost:27017
- 第三步:點開下方的
>_MONGOSH
- 第四步:輸入以下指令切換到 admin 資料庫
use admin;
- 第五步:輸入以下指令創建 root 帳號
⚠️
請自行更改成安全的帳號以及密碼!
db.createUser({
user : "root",
pwd : "root" ,
roles : [{role : "root" , db:"admin"}]
});
出現 { ok: 1 }
就代表創建成功囉!
設定 Burni
以上所需的軟體已經完畢了,您可以開始進行設定 Burni 的步驟啦!
⚠️
注意!進行以下步驟前,請先進到 Burni 的專案目錄
安裝依賴
- 開啟 cmd (命令提示字元) 進到 Burni 專案目錄並執行以下指令
ℹ️
--only=production 代表只安裝 package.json 內 dependencies 區塊的依賴
npm i --only=production
設定要使用的 FHIR Resource (config.js)
第一種:一般設定
- 更改
config/config.js
,如沒此檔案可以複製config/confit.template.js
並重新改名成config/config.js
module.exports = {
"Patient": {
"interaction": {
"read": true, // 是否開啟 read 的功能
"vread": true,
"update": true,
"delete": true,
"history": true,
"create": true,
"search": true
}
}
};
- 如果需要新增 Resource ,您可以在
module.exports
內加入 Resource 的名稱,如要進一步設定interaction
,請按照上面Patient
的範例設定即可
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 檔案
- 第一步:複製根目錄的
.env.template
,貼上並更名為.env
- 第二步:更改
.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_NAME | String | MongoDB 資料庫的名稱 |
MONGODB_HOSTS | Array <String> | 要連接的 MongoDB IP 或 網域名稱, e.g. 127.0.0.1、localhost |
MONGODB_PORTS | Array<Number> | 要連接的 MongoDB IP 的 Port,對應 MONGODB_HOSTS 的順序, e.g. 27017 |
MONGODB_USER | String | 要連接的 MongoDB 的 使用者帳號 |
MONGODB_PASSWORD | String | 要連接的 MongoDB 的 使用者密碼 |
SERVER_PORT | Number | Server 啟動的 Port |
FHIRSERVER_HOST | String | FHIR Server 對外連接的 IP 或網域名稱,用於產生回傳資料的 URL |
FHIRSERVER_PORT | Number | FHIR Server 對外連接的 Port,用於產生回傳資料的 URL |
FHIRSERVER_APIPATH | String | 使用 FHIR API 的前綴字,e.g. api/fhir ,代表查詢 Patient 使用 http://xxx.com/api/fhir/Patient |
ENABLE_TOKEN_AUTH | Boolean | 是否開啟驗證機制 |
JWT_SECRET_KEY | String | JWT 的 secret key |
ADMIN_LOGIN_PATH | String | 核發 Token 登入頁面的 URL 路徑,e.g. adminLogin即 http://localhost/adminLogin |
ADMIN_USERNAME | String | 核發 Token 管理者登入帳號 |
ADMIN_PASSWORD | String | 核發 Token 管理者登入密碼 |
ENABLE_CHECK_ALL_RESOURCE_ID | Boolean | 是否驗證跨 Resource 的 ID ,即 Patient/123 以及 Organization/123 不應該同時存在 |
ENABLE_CHECK_REFERENCE | Boolean | 是否驗證 Resource 內的 Reference 是否存在 |
ENABLE_CSHARP_VALIDATOR | Boolean | 是否開啟 C# 的 API |
VALIDATION_FILES_ROOT_PATH | String | 存放驗證功能所使用的 Structure Definition、 Code System 、 Value Set 的路徑 |
VALIDATION_API_URL | String | C# 驗證器 API 的 Base URL |
產生 Resource 程式碼
- 完成設定要使用的 FHIR Resource後,您必須運行以下指令產生程式碼:
npm run build
運行後您將會在api/FHIR
資料夾; e.g.api/FHIR/Patient
檔案以及models/mongodb/model
資料夾; e.g.models/mongodb/model/Patient.js
檔案,看到產生的程式碼
部屬 Burni
- 開啟 cmd (命令提示字元) 進到 Raccoon 專案目錄並執行以下指令
node server.js
執行後看到以下訊息就代表架設成功囉!
測試 Burni
- 在此章節使用 Postman 測試
- 使用資料:patient-example