GNU Health 联盟消息和认证服务器
项目描述
丘脑项目为所有 GNU Health 联盟节点提供了一个 RESTful API 中心。主要功能包括:
消息服务器:从 GNU Health 联盟和 GNU Health 信息系统 (PgSQL) 参与节点集中和转发消息。参与节点包括 GNU Health HMIS、MyGNUHealth 移动 PHR 应用程序、实验室、研究机构和民事办公室。
认证服务器:丘脑还作为认证和授权服务器与 GNUHealth 信息系统交互
丘脑是 GNU Health 项目的一部分,但它是一个独立的、自包含的服务器,可用于不同的健康相关场景。
安装
丘脑可以通过 pip 安装
$ pip3 install --upgrade --user thalamus
关于 psycopg2 的说明:自 thalamus 0.9.16 以来,我们用 psycopg2 替换了 psycopg2-binary,因为它引起了一些问题。您需要安装 PostgreSQL 开发库。在您的操作系统包中查找类似 PostgreSQL 共享库(开发文件) 或 头文件 的描述
技术
RESTful API:Thalamus使用REST(表示状态转移)架构风格,由Flask技术驱动。
Thalamus将执行CRUD(创建、读取、更新、删除)操作。它们将通过以下方法在资源和其实例上实现。
GET:读取
POST:创建
PATCH:更新
DELETE:删除。
DELETE操作将是最小的。
JSON:信息将采用JSON格式编码。
资源
一些资源和端点如下
人员 (/people)
生命之页 (/pols)
住宅单位 (/domiciliary-units)
个人文件 (/personal_docs)
从WSGI容器中运行Thalamus
在生产环境中,出于性能考虑,您应使用HTTP服务器。我们选择了uWSGI,但您可以使用任何WSGI服务器。如果您更喜欢uWSGI以外的Gunicorn,我们也提供了配置文件。
例如,您可以使用以下方式从uWSGI运行Thalamus应用程序。默认配置文件使用安全(SSL)连接
$ uwsgi --ini etc/thalamus_uwsgi.ini
对于开发,如果您想直接从Flask Werkzeug服务器运行它,
$ python3 ./thalamus.py
示例
命令行,使用httpie
检索人员的统计数据信息
$ http --verify no --auth ARGBUE111FAV:freedom https://federation.gnuhealth.org:8443/people/ESPGNU777ORG
得到
HTTP/1.1 200 OK Access-Control-Allow-Origin: * Connection: close Content-Length: 547 Content-Type: application/json Date: Thu, 30 Jul 2020 12:01:37 GMT Server: gunicorn/20.0.0 { "_id": "ESPGNU777ORG", "active": true, "dob": "1990-10-04", "education": "tertiary", "ethnicity": "latino", "gender": "f", "id": "ESPGNU777ORG", "lastname": "Betz", "marital_status": "married", "modification_info": { "node": "SPAIN-LASPALMAS-GNUSOLIDARIO-GRAL_HOSPITAL", "timestamp": "2018-11-06 19:24:43.662846", "user": "ITAPYT999HON" }, "name": "Ana", "password": "$2b$12$cjrKVGYEKUwCmVDCtEnwcegcrmECTmeBz526AAD/ZqMGPWFpHJ4FW", "profession": "teacher", "roles": [ "end_user" ] }
检索全球的统计数据信息:
$ http --verify no --auth ARGBUE111FAV:freedom https://federation.gnuhealth.org:8443/people
得到
HTTP/1.1 200 OK Access-Control-Allow-Origin: * Connection: close Content-Length: 2715 Content-Type: application/json Date: Mon, 20 Jul 2020 18:03:24 GMT Server: gunicorn/20.0.0 [ [ { "active": true, "dob": "1984-10-05", "education": "tertiary", "ethnicity": "latino", "gender": "f", "id": "ITAPYT999HON", "lastname": "Cordara", "marital_status": "married", "name": "Cameron", "password": "$2b$12$Y9rX7PoTHRXhTO1H78Tan.8mVmyayGAUIveiYxu2Qeo0ZDRvJQ8/2", "profession": "teacher", "roles": [ "end_user", "health_professional" ] } ], [ { "creation_info": { "node": "SPAIN-LASPALMAS-GNUSOLIDARIO-GRAL_HOSPITAL", "timestamp": "2019-11-20 10:39:21.162731", "user": "ITAPYT999HON" }, "dob": "1999-10-12", "gender": "m", "id": "DEUMOP095IDI", "lastname": "Dillinger", "name": "John Doe", "roles": [ "end_user" ] } ], [ { "active": true, "dob": "2008-10-12", "education": "tertiary", "ethnicity": "latino", "gender": "f", "id": "ARGBUE111FAV", "lastname": "Root", "marital_status": "married", "name": "Admin", "password": "$2b$12$McKDNgArdHKbUssD1fj64ecpdbJGMIt29ns7DGvqzqIT26W0dtJzi", "profession": "System Administrator", "roles": [ "root" ] } ], [ { "_id": "ESPGNU777ORG", "active": true, "dob": "1990-10-04", "education": "tertiary", "ethnicity": "latino", "gender": "f", "id": "ESPGNU777ORG", "lastname": "Betz", "marital_status": "married", "modification_info": { "node": "SPAIN-LASPALMAS-GNUSOLIDARIO-GRAL_HOSPITAL", "timestamp": "2018-11-06 19:24:43.662846", "user": "ITAPYT999HON" }, "name": "Ana", "password": "$2b$12$cjrKVGYEKUwCmVDCtEnwcegcrmECTmeBz526AAD/ZqMGPWFpHJ4FW", "profession": "teacher", "roles": [ "end_user" ] } ], ]
使用Python requests:
>>> import requests >>> person = requests.get('https://: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']}
关于角色的说明 演示用户“ITAPYT999HON”是卫生专业人员(health_professional角色),因此她对统计数据信息有全局访问权限。
用户“ARGBUE111FAV”,密码“freedom”。这是演示数据库的“root”用户。
检查roles.cfg文件以获取有关角色和ACL的示例信息。
开发
Thalamus是GNU Health项目的一部分。
开发将在GNU Savannah上使用Mercurial仓库进行。
任务、错误和邮件列表将在health-dev@gnu.org上,用于开发。
一般问题可以在health@gnu.org邮件列表上提出。
主页
发布周期
Thalamus,作为其他GNU Health组件,将遵循自己的发布流程。
文档
Thalamus文档将在GNU Health文档门户的相应章节中
- 作者::
Luis Falcon <falcon@gnuhealth.org>
项目详情
下载文件
下载适用于您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。
源分布
构建分布
thalamus-0.9.16.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 80bcd48312f55e8804f2fd10b702277fec7cc75cfe4b1aa8b618e41958bd9f26 |
|
MD5 | 36f3b1a7d4aa4a9fed6ca5f75fa17733 |
|
BLAKE2b-256 | 878b2978691a9a6bc865bde102036277ea08d0967bbdc2b5c472dbc18a892be9 |
thalamus-0.9.16-py3-none-any.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 54bb4170552664753742716d99cb68fed615e87b09a3fabc0c186e41160ed4d8 |
|
MD5 | a0291dcfb61df4d7f3628173eb90c718 |
|
BLAKE2b-256 | 894724ccd959755cd3f64fe1834363de4cc69f8b6d32682203b0905091e20bc7 |