跳转到主要内容

GNU Health 联盟消息和认证服务器

项目描述

丘脑项目为所有 GNU Health 联盟节点提供了一个 RESTful API 中心。主要功能包括:

  1. 消息服务器:从 GNU Health 联盟和 GNU Health 信息系统 (PgSQL) 参与节点集中和转发消息。参与节点包括 GNU Health HMIS、MyGNUHealth 移动 PHR 应用程序、实验室、研究机构和民事办公室。

  2. 认证服务器:丘脑还作为认证和授权服务器与 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邮件列表上提出。

主页

https://www.gnuhealth.org

发布周期

Thalamus,作为其他GNU Health组件,将遵循自己的发布流程。

文档

Thalamus文档将在GNU Health文档门户的相应章节中

https://docs.gnuhealth.org

作者::

Luis Falcon <falcon@gnuhealth.org>

项目详情


下载文件

下载适用于您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。

源分布

thalamus-0.9.16.tar.gz (118.2 kB 查看哈希)

上传时间

构建分布

thalamus-0.9.16-py3-none-any.whl (115.2 kB 查看哈希值)

上传时间 Python 3

支持者