gnu健康联盟消息和身份验证服务器

thalamus的Python项目详细描述


丘脑项目为所有gnu健康提供了一个restful api中枢。 联合节点。主要功能有:

  1. 消息服务器:从和到的集中器和消息中继 gnu健康联盟的参与节点与gnu健康 信息系统(PGSQL)。一些参与节点包括 GNU Health HMIS,MyGNUHealth移动PHR应用程序, 实验室、研究机构和民政部门。
  2. 身份验证服务器:丘脑也充当身份验证和 与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

检索人员的人口统计信息:

$ 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"
        ]

    }

]

使用python请求

>>> 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']}

note:演示用户“itapyt999hon”是一个健康专家(健康专家角色)。 所以她可以在全球范围内获取人口信息。检查roles.cfg文件 有关角色和acl的示例信息。

开发

丘脑是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>

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java I使用Hystrix(1.5.18),并设置param ErrorThresholdPercentage=30,当marksuccess时,circuitbreak状态开关始终为   java如何打印数组直到有值。不是完整阵列?   在Java中比较具有不同字节顺序掩码的字符串的编码   javascript无法输入文本区域   java可绘制资源文件更改图像   java错误:“在电梯.jar中没有主清单属性”   java如何在Android中使用画布绘制在弧顶上的线路径   java Spring Boot WebMVCConfigureAdapter服务损坏的映像   Java11JavaCompiler抛出Java。仅限linux上的lang.StackOverflower错误   java eclipse对axis2的支持   java如何通过socket发送图像   JPA保留的java OffsetDateTime相差2小时   java重载不属于多态性吗?   java无需身份验证即可发送电子邮件   Android Studio中的java交互式微调器   JSP:在Javascript中使用java变量   生命、宇宙和一切java中的spoj编译错误