跳转到内容

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 服务器

华夏公益教科书