跳轉到內容

GNU Health/FHIR REST 伺服器

來自華夏公益教科書



關於 FHIR 和 REST

[編輯 | 編輯原始碼]

快速醫療互操作性資源 (FHIR) 是由 HL7 開發的一種用於電子交換醫療資訊資訊的標準。有關 FHIR 的更多資訊,請參見http://hl7.org/fhir

表述性狀態轉移 (REST) 是由 W3C 技術架構組 (TAG) 開發的一種用於可擴充套件 Web 服務的軟體體系結構風格。基於 REST 的系統可以透過超文字傳輸協議 (HTTP) 訪問,HTTP 是 Web 瀏覽器用於從 Web 伺服器請求 Web 頁面並向 Web 伺服器傳送資料的協議。有關 REST 的更多資訊,請參見https://en.wikipedia.org/wiki/Representational_state_transfer

伺服器需要 Flask 及其一些外掛。當然,還需要一個可用的 GNU Health 安裝。

建議使用 virtualenv 將軟體包安裝到虛擬環境中。

設定環境(作為 gnuhealth 使用者)

$ pip install virtualenv                # Install virtualenv using python (may require root)
$ cd my_work_folder                     # Wherever you want to put the virtual environment folder
$ virtualenv -p /usr/bin/python2 venv   # Create the environment, with the Python 2.x interpreter
$ source venv/bin/activate              # Active the environment

現在使用 requirements 檔案安裝軟體包

$ pip install -r requirements.txt

系統上已經安裝了一些軟體包(如 pywebdav)。但是,在虛擬環境中工作時,管理和除錯 Flask 伺服器通常更容易。

有關 virtualenv 的更多幫助。

伺服器附帶一個簡單的生產配置檔案。但是,需要對其進行編輯。

server/config.py
----------------
TRYTON_DATABASE = ''    # GNU Health database
SERVER_NAME = ''        # Domain name of the server (e.g., fhir.example.com)
SECRET_KEY = ''         # Set this value to a long and random string

Flask 及其外掛提供了其他選項:* Flask * Flask-Login * Flask-Tryton * Flask-Restful * Flask-WTF

安全性

[編輯 | 編輯原始碼]

使用 TLS。敏感的醫療資訊必須受到保護並且保密。

預設情況下,除了符合性宣告之外,所有 FHIR 端點都需要使用者身份驗證。使用者身份驗證和訪問遵循 Tryton 的模型,尊重模型和欄位訪問許可權。

用於登入 GNU Health 的相同憑據用於訪問 FHIR REST 伺服器。

執行伺服器

[編輯 | 編輯原始碼]

伺服器附帶一個簡單的指令碼 (run_server.py),位於server/資料夾中,用於使用Tornado執行伺服器。

該指令碼期望它自己位於server/資料夾上方一個目錄級別。因此,將 run_server.py 指令碼向上移動一個目錄級別。例如

$ mv /example/base/server/run_server.py /example/base/run_server.py

在啟用虛擬環境並作為 gnuhealth 使用者的情況下,執行伺服器。

$ python run_server.py

但是,大多數生產伺服器使用 nginx、lighttpd 或 apache 位於 Tornado 伺服器之前。例如,一種常見的做法是讓 nginx 位於多個 Tornado 例項之前,充當負載均衡器,處理 SSL 並提供靜態內容(如影像和常用 JavaScript)。如何配置 nginx/lighttpd + tornado + flask 設定超出了本文件的範圍,儘管它並不複雜,尤其是在 nginx 的情況下。

故障排除

[編輯 | 編輯原始碼]

無法連線到資料庫

[編輯 | 編輯原始碼]

確保您以gnuhealth使用者身份執行。

Flask-Tryton 應該自動找到並解析 Tryton 配置檔案。如果找不到

server/config.py
----------------
TRYTON_CONFIG = ''      # Set this to the path of the Tryton configuration file (e.g., '/weird/tryton/weird-tryton.conf')

沒有該名稱的資料庫

[編輯 | 編輯原始碼]

這與之前的錯誤有關,並且發生在 Flask-Tryton 找不到 Tryton 配置檔案時。按照之前的步驟操作應該可以解決此問題。

故障排除 · 使用 FHIR REST 伺服器

華夏公益教科書