GNU Health/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 配置檔案時。按照之前的步驟操作應該可以解決此問題。