gnu健康联盟消息和身份验证服务器
thalamus的Python项目详细描述
丘脑项目为所有gnu健康提供了一个restful api中枢。 联合节点。主要功能有:
- 消息服务器:从和到的集中器和消息中继 gnu健康联盟的参与节点与gnu健康 信息系统(PGSQL)。一些参与节点包括 GNU Health HMIS,MyGNUHealth移动PHR应用程序, 实验室、研究机构和民政部门。
- 身份验证服务器:丘脑也充当身份验证和 与gnuHealth信息系统交互的授权服务器
丘脑是GNU健康项目的一部分,但它是一个独立的, 可用于不同健康相关方案的独立服务器。
安装
丘脑是PIP可安装的:
$ pip install --user thalamus
技术
restful api:丘脑使用rest(抑制状态转移) 建筑风格,由 Flask技术
丘脑将执行CRUD(创建、读取、更新、删除)操作。他们 将通过以下方法在资源及其实例上实现。
- get:读取
- post:创建
- patch:更新
- delete:删除。
删除操作将是最小的。
json:信息将以JSON格式编码。
资源
一些资源和终点是:
- 人(/人)
- 生活页(/pols)
- 户籍(/户籍单位)
- 个性化文档(/personal_docs)
从wsgi容器中取出丘脑
在生产设置中,出于性能原因,应使用http服务器。 我们选择了Gunicorn,但是您可以使用任何wsgi服务器。
Gunicorn本机支持wsgi,它以python包的形式提供。我们有 包括一个简单的默认配置文件(etc/gunicorn.cfg)来运行丘脑 启用SSL的Gunicorn。
例如,您可以从Gunicorn运行丘脑应用程序,如下所示。 默认配置文件使用安全(SSL)连接:
$ gunicorn --config etc/gunicorn.cfg thalamus:app
如果您想直接从Flask Werkzeug服务器运行它,:
$ python ./thalamus.py
示例
命令行,使用httpie
检索人员的人口统计信息: 屈服于: 全局检索人口统计信息: 屈服于: 使用python请求: note:演示用户“itapyt999hon”是一个健康专家(健康专家角色)。
所以她可以在全球范围内获取人口信息。检查roles.cfg文件
有关角色和acl的示例信息。$ http --verify no --auth ITAPYT999HON:gnusolidario https://localhost:8443/people/ESPGNU777ORG
HTTP/1.1 200 OK
Connection: close
Content-Length: 411
Content-Type: application/json
Date: Fri, 21 Apr 2017 16:22:38 GMT
Server: gunicorn/19.7.1
{
"_id": "ESPGNU777ORG",
"active": true,
"biological_sex": "female",
"dob": "Fri, 04 Oct 1985 13:05:00 GMT",
"education": "tertiary",
"ethnicity": "latino",
"gender": "female",
"lastname": "Betz",
"marital_status": "married",
"name": "Ana",
"password": "$2b$12$cjrKVGYEKUwCmVDCtEnwcegcrmECTmeBz526AAD/ZqMGPWFpHJ4FW",
"profession": "teacher",
"roles": [
"end_user"
]
}
$ http --verify no --auth ITAPYT999HON:gnusolidario https://localhost:8443/people
HTTP/1.1 200 OK
Connection: close
Content-Length: 933
Content-Type: application/json
Date: Fri, 21 Apr 2017 16:31:23 GMT
Server: gunicorn/19.7.1
[
{
"_id": "ITAPYT999HON",
"active": true,
"biological_sex": "female",
"dob": "Fri, 05 Oct 1984 09:00:00 GMT",
"education": "tertiary",
"ethnicity": "latino",
"gender": "female",
"lastname": "Cordara",
"marital_status": "married",
"name": "Cameron",
"password": "$2b$12$Y9rX7PoTHRXhTO1H78Tan.8mVmyayGAUIveiYxu2Qeo0ZDRvJQ8/2",
"profession": "teacher",
"roles": [
"end_user",
"health_professional"
]
},
{
"_id": "ESPGNU777ORG",
"active": true,
"biological_sex": "female",
"dob": "Fri, 04 Oct 1985 13:05:00 GMT",
"education": "tertiary",
"ethnicity": "latino",
"gender": "female",
"lastname": "Betz",
"marital_status": "married",
"name": "Ana",
"password": "$2b$12$cjrKVGYEKUwCmVDCtEnwcegcrmECTmeBz526AAD/ZqMGPWFpHJ4FW",
"profession": "teacher",
"roles": [
"end_user"
]
}
]
>>> import requests
>>> person = requests.get('https://localhost:8443/people/ESPGNU777ORG', auth=('ITAPYT999HON', 'gnusolidario'), verify=False)
>>> person.json()
{'_id': 'ESPGNU777ORG', 'active': True, 'biological_sex': 'female','dob': 'Fri, 04 Oct 1985 13:05:00 GMT',
'education': 'tertiary', 'ethnicity': 'latino', 'gender': 'female', 'lastname': 'Betz', 'marital_status': 'married',
'name': 'Ana', 'password': '$2b$12$cjrKVGYEKUwCmVDCtEnwcegcrmECTmeBz526AAD/ZqMGPWFpHJ4FW', 'profession': 'teacher',
'roles': ['end_user']}
开发
丘脑是GNU健康项目的一部分。
开发将在gnu savannah上完成,使用mercurial存储库。
任务、错误和邮件列表将放在health-dev@gnu.org上进行开发。
一般问题可以在health@gnu.org邮件列表中完成。
释放循环
丘脑,作为其他gnu健康成分,将遵循其自身的释放过程。
文档
丘脑文件将在相应的 GNU Health Wikibook中的章节
https://en.wikibooks.org/wiki/GNU_Health
Author: | Luis Falcon <lfalcon@gnusolidario.org> |
---|