gnuhealth-fhir-server


Namegnuhealth-fhir-server JSON
Version 0.9b7 PyPI version JSON
download
home_pagehttps://www.gnuhealth.org
SummaryThe GNU Health FHIR Server
upload_time2023-10-12 16:20:28
maintainer
docs_urlNone
authorGNU Solidario
requires_python
license
keywords health api rest hl7 fhir
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            .. image:: https://www.gnuhealth.org/downloads/artwork/logos/gnu-health-HL7-FHIR.png

THE GNU HEALTH FHIR SERVER
==========================

The GNU Health Fast Healthcare Interoperability Resources (FHIR) server allows
to query different resources from a running GNU Health HMIS node, returning
HL7 FHIR messages.

History
-------
In March 2014 I started the initial alpha FHIR project for Python with the idea
to be used in GNUHealth HMIS (server and client) and other EMRs.
(https://pypi.org/project/fhir)

Soon after, our colleague Dr. Chris Zimmerman joined the project and
did an phenomenal job continuing and leading for years the development 
of HL7 FHIR server for GNUHealth. 

For several years, the FHIR development was part of the GNU Health HMIS
"backend". Although at the beginning was convenient, we felt that the 
GNU Health FHIR component deserved its own reporitory. In 2020, we created
the health-fhir-server mercurial repository in GNU Savannah. This allows
to have a team dedicated to the FHIR resources.

In 2020, we created the GNU Health FHIR server package at Pypi 
(https://pypi.org/project/gnuhealth-fhir-server)

The GNU Health FHIR server is work in progress. We are happy to work 
with the HL7 FHIR community, adding new resources and functionality.

The development, as other GNU Health components, is at GNU Savannah.


Installation
------------

The GNU Health FHIR server is pip installable

The server requires Flask and a few of its addons. And, of course, a working
GNU Health HMIS instance. 

  $ pip3 install --upgrade --user gnuhealth-fhir-server


Configuration
-------------

The server ships with a simple production config file (server/config.py). However, 
it needs to be edited.::

 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


Security
--------

Use TLS. Sensitive medical information must be protected and confidential.

By default, all FHIR endpoints except the Conformance statement require user 
authentication. The user authentication and access follows Tryton's model, 
respecting model and field access rights.

The same credentials used to sign into GNU Health are used to access the 
FHIR REST server.


Running the server
------------------

For development, you can just run:

python ./gnuhealth_fhir_server.py 

For production environments, you should run it from a WSGI container,
such as gunicorn, uWSGI or Tornado.

* uwsgi server_uwsgi.ini 

You can change the port (default 8020) and sockets in the server_uwsgi.ini

Current resources / endpoints
-----------------------------

Currently the following resources are implemented (read-only):

The FHIR standard defines a REST API, a set of interactions with each resource. Each resource handles different types of information. Currently, the GNU Health FHIR server supports 12 resources:

*    **Conformance**: Describes the server's FHIR capabilities.
*    **Patient**: Patient information, like email, address, SSN, etc.
*    **DiagnosticReport**: Completed lab tests, but not the data
*    **Observation**: Lab data, like Uric Acid values
*    **Practitioner**: Health professionals and their information
*    **Procedure**: Surgeries/operations
*    **Condition**: Diseases/diagnoses
*    **FamilyHistory**: Family histories of patients
*    **Medication**: Medications (not prescriptions!)
*    **MedicationStatement**: Medications taken by a patient
*    **Immunization**: Immunizations
*    **Organization**: Institutions, departments, companies, etc.

Each resource has its own endpoint. For example, the Patient endpoint is found at /Patient, the DiagnosticReport endpoint at /DiagnosticReport, and so on. The only exception to this naming schema is the Conformance endpoint which is found at / and /metadata. 

Querying the GNU Health FHIR Server
-----------------------------------

If we enter the resource name as the endpoint, GNU Health will bring back
all the results.

For instance:
https://federation.gnuhealth.org:8700/Patient

Will retrieve the patients in the current database.

To search a resource, simply add arguments to the endpoint to refine the search. For example, **/Patient?name=ana** will return all the patients with Ana in their name


The *log* file will be stored at the user's home directory, with the name
"fhir_server.log". You can also add the corresponging log when running the server behind uwsgi.


Technology
----------
The GNU Health HMIS FHIR server is built on Flask technology 
(http://flask.pocoo.org/) .

More information about Flask and its addons used in GNU Health FHIR server:

- `Flask <https://flask.pocoo.org/>`_
- `Flask-Login <https://flask-login.readthedocs.org/en/latest/>`_
- `Flask-Tryton <https://pypi.org/project/flask-tryton/>`_
- `Flask-Restful <http://flask-restful.readthedocs.org/en/latest/quickstart.html>`_
- `Flask-WTF <https://flask-wtf.readthedocs.org/en/latest/>`_


Development
-----------
The development of GNU Health is on GNU Savannah, using the Mercurial repository.

Tasks, bugs and mailing lists will be on health-dev@gnu.org , for development.

General discussion is done at health@gnu.org mailing list.


Homepage
--------
https://www.gnuhealth.org


Documentation
-------------
The GNU Health FHIR server documentation will be at the corresponding
chapter in the GNU Health Wikibook

https://en.wikibooks.org/wiki/GNU_Health


Support GNU Health
-------------------

GNU Health is a project of GNU Solidario. GNU Solidario is an Non-profit
Non-goverment-Organization (NGO) that works globally, focused on Social Medicine.

Health and education are the basis for the development and dignity of societies.

You can also **donate** to our project via :

https://www.gnuhealth.org/donate/

In addition, you can show your long time commitment to GNU Health by
**becoming a member** of GNU Solidario, so together we can further
deliver Freedom and Equity in Healthcare around the World.

https://my.gnusolidario.org/join-us/

GNU Solidario hosts IWEEE and GnuHealthCon:

The International Workshop on e-Health in Emerging Economies- a good way to
support GNU Solidario and to get the latest on e-Health is to assist
to the conferences.

https://www.gnuhealthcon.org/


Need help to implement GNU Health ?
-----------------------------------

We are committed to do our best in helping out projects that can improve
the health of your country or region. We want the project to be a success,
and since our resources are limited, we need to work together to make a great
and sustainable project.

In order to be elegible, we need the following information from you,
your NGO or government:

* An introduction of the current needs
* The project will only use Libre software technology
* There will be a local designated person that will be in charge of  the project 
  and the know-how transfer to the rest of the community.This person must be 
  committed to be from the beginning of the project until two years after its
  completion.
* There must be a commitment of knowledge transfer to the rest of the team.

We will do our best to help you out with the implementation and training
for the local team, to build local capacity and make your project sustainable.

Please contect us and we'll back to you as soon as possible::

 Thank you !
 Dr. Luis Falcón, MD, MSc
 Author and project leader
 falcon@gnuhealth.org


Email
-----
info@gnuhealth.org

Twitter: @gnuhealth

License
--------

GNU Health, the Libre Digital Health ecosystem, is licensed under GPL v3+::

 Copyright (C) 2008-2023 Luis Falcon <falcon@gnuhealth.org>
 Copyright (C) 2011-2023 GNU Solidario <health@gnusolidario.org>

 This program is free software: you can redistribute it and/or modify
 it under the terms of the GNU General Public License as published by
 the Free Software Foundation, either version 3 of the License, or
 (at your option) any later version.

 This program is distributed in the hope that it will be useful,
 but WITHOUT ANY WARRANTY; without even the implied warranty of
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 GNU General Public License for more details.

 You should have received a copy of the GNU General Public License
 along with this program.  If not, see <http://www.gnu.org/licenses/>.



            

Raw data

            {
    "_id": null,
    "home_page": "https://www.gnuhealth.org",
    "name": "gnuhealth-fhir-server",
    "maintainer": "",
    "docs_url": null,
    "requires_python": "",
    "maintainer_email": "",
    "keywords": "health API REST HL7 FHIR",
    "author": "GNU Solidario",
    "author_email": "info@gnuhealth.org",
    "download_url": "https://files.pythonhosted.org/packages/24/63/438aaa45c68102cd23424b2aa1e59657a0fada87ff43c1b5d4b25ce6c87e/gnuhealth-fhir-server-0.9b7.tar.gz",
    "platform": "any",
    "description": ".. image:: https://www.gnuhealth.org/downloads/artwork/logos/gnu-health-HL7-FHIR.png\n\nTHE GNU HEALTH FHIR SERVER\n==========================\n\nThe GNU Health Fast Healthcare Interoperability Resources (FHIR) server allows\nto query different resources from a running GNU Health HMIS node, returning\nHL7 FHIR messages.\n\nHistory\n-------\nIn March 2014 I started the initial alpha FHIR project for Python with the idea\nto be used in GNUHealth HMIS (server and client) and other EMRs.\n(https://pypi.org/project/fhir)\n\nSoon after, our colleague Dr. Chris Zimmerman joined the project and\ndid an phenomenal job continuing and leading for years the development \nof HL7 FHIR server for GNUHealth. \n\nFor several years, the FHIR development was part of the GNU Health HMIS\n\"backend\". Although at the beginning was convenient, we felt that the \nGNU Health FHIR component deserved its own reporitory. In 2020, we created\nthe health-fhir-server mercurial repository in GNU Savannah. This allows\nto have a team dedicated to the FHIR resources.\n\nIn 2020, we created the GNU Health FHIR server package at Pypi \n(https://pypi.org/project/gnuhealth-fhir-server)\n\nThe GNU Health FHIR server is work in progress. We are happy to work \nwith the HL7 FHIR community, adding new resources and functionality.\n\nThe development, as other GNU Health components, is at GNU Savannah.\n\n\nInstallation\n------------\n\nThe GNU Health FHIR server is pip installable\n\nThe server requires Flask and a few of its addons. And, of course, a working\nGNU Health HMIS instance. \n\n  $ pip3 install --upgrade --user gnuhealth-fhir-server\n\n\nConfiguration\n-------------\n\nThe server ships with a simple production config file (server/config.py). However, \nit needs to be edited.::\n\n TRYTON_DATABASE = ''    # GNU Health database\n SERVER_NAME = ''        # Domain name of the server (e.g., fhir.example.com)\n SECRET_KEY = ''         # Set this value to a long and random string\n\n\nSecurity\n--------\n\nUse TLS. Sensitive medical information must be protected and confidential.\n\nBy default, all FHIR endpoints except the Conformance statement require user \nauthentication. The user authentication and access follows Tryton's model, \nrespecting model and field access rights.\n\nThe same credentials used to sign into GNU Health are used to access the \nFHIR REST server.\n\n\nRunning the server\n------------------\n\nFor development, you can just run:\n\npython ./gnuhealth_fhir_server.py \n\nFor production environments, you should run it from a WSGI container,\nsuch as gunicorn, uWSGI or Tornado.\n\n* uwsgi server_uwsgi.ini \n\nYou can change the port (default 8020) and sockets in the server_uwsgi.ini\n\nCurrent resources / endpoints\n-----------------------------\n\nCurrently the following resources are implemented (read-only):\n\nThe FHIR standard defines a REST API, a set of interactions with each resource. Each resource handles different types of information. Currently, the GNU Health FHIR server supports 12 resources:\n\n*    **Conformance**: Describes the server's FHIR capabilities.\n*    **Patient**: Patient information, like email, address, SSN, etc.\n*    **DiagnosticReport**: Completed lab tests, but not the data\n*    **Observation**: Lab data, like Uric Acid values\n*    **Practitioner**: Health professionals and their information\n*    **Procedure**: Surgeries/operations\n*    **Condition**: Diseases/diagnoses\n*    **FamilyHistory**: Family histories of patients\n*    **Medication**: Medications (not prescriptions!)\n*    **MedicationStatement**: Medications taken by a patient\n*    **Immunization**: Immunizations\n*    **Organization**: Institutions, departments, companies, etc.\n\nEach resource has its own endpoint. For example, the Patient endpoint is found at /Patient, the DiagnosticReport endpoint at /DiagnosticReport, and so on. The only exception to this naming schema is the Conformance endpoint which is found at / and /metadata. \n\nQuerying the GNU Health FHIR Server\n-----------------------------------\n\nIf we enter the resource name as the endpoint, GNU Health will bring back\nall the results.\n\nFor instance:\nhttps://federation.gnuhealth.org:8700/Patient\n\nWill retrieve the patients in the current database.\n\nTo search a resource, simply add arguments to the endpoint to refine the search. For example, **/Patient?name=ana** will return all the patients with Ana in their name\n\n\nThe *log* file will be stored at the user's home directory, with the name\n\"fhir_server.log\". You can also add the corresponging log when running the server behind uwsgi.\n\n\nTechnology\n----------\nThe GNU Health HMIS FHIR server is built on Flask technology \n(http://flask.pocoo.org/) .\n\nMore information about Flask and its addons used in GNU Health FHIR server:\n\n- `Flask <https://flask.pocoo.org/>`_\n- `Flask-Login <https://flask-login.readthedocs.org/en/latest/>`_\n- `Flask-Tryton <https://pypi.org/project/flask-tryton/>`_\n- `Flask-Restful <http://flask-restful.readthedocs.org/en/latest/quickstart.html>`_\n- `Flask-WTF <https://flask-wtf.readthedocs.org/en/latest/>`_\n\n\nDevelopment\n-----------\nThe development of GNU Health is on GNU Savannah, using the Mercurial repository.\n\nTasks, bugs and mailing lists will be on health-dev@gnu.org , for development.\n\nGeneral discussion is done at health@gnu.org mailing list.\n\n\nHomepage\n--------\nhttps://www.gnuhealth.org\n\n\nDocumentation\n-------------\nThe GNU Health FHIR server documentation will be at the corresponding\nchapter in the GNU Health Wikibook\n\nhttps://en.wikibooks.org/wiki/GNU_Health\n\n\nSupport GNU Health\n-------------------\n\nGNU Health is a project of GNU Solidario. GNU Solidario is an Non-profit\nNon-goverment-Organization (NGO) that works globally, focused on Social Medicine.\n\nHealth and education are the basis for the development and dignity of societies.\n\nYou can also **donate** to our project via :\n\nhttps://www.gnuhealth.org/donate/\n\nIn addition, you can show your long time commitment to GNU Health by\n**becoming a member** of GNU Solidario, so together we can further\ndeliver Freedom and Equity in Healthcare around the World.\n\nhttps://my.gnusolidario.org/join-us/\n\nGNU Solidario hosts IWEEE and GnuHealthCon:\n\nThe International Workshop on e-Health in Emerging Economies- a good way to\nsupport GNU Solidario and to get the latest on e-Health is to assist\nto the conferences.\n\nhttps://www.gnuhealthcon.org/\n\n\nNeed help to implement GNU Health ?\n-----------------------------------\n\nWe are committed to do our best in helping out projects that can improve\nthe health of your country or region. We want the project to be a success,\nand since our resources are limited, we need to work together to make a great\nand sustainable project.\n\nIn order to be elegible, we need the following information from you,\nyour NGO or government:\n\n* An introduction of the current needs\n* The project will only use Libre software technology\n* There will be a local designated person that will be in charge of  the project \n  and the know-how transfer to the rest of the community.This person must be \n  committed to be from the beginning of the project until two years after its\n  completion.\n* There must be a commitment of knowledge transfer to the rest of the team.\n\nWe will do our best to help you out with the implementation and training\nfor the local team, to build local capacity and make your project sustainable.\n\nPlease contect us and we'll back to you as soon as possible::\n\n Thank you !\n Dr. Luis Falc\u00f3n, MD, MSc\n Author and project leader\n falcon@gnuhealth.org\n\n\nEmail\n-----\ninfo@gnuhealth.org\n\nTwitter: @gnuhealth\n\nLicense\n--------\n\nGNU Health, the Libre Digital Health ecosystem, is licensed under GPL v3+::\n\n Copyright (C) 2008-2023 Luis Falcon <falcon@gnuhealth.org>\n Copyright (C) 2011-2023 GNU Solidario <health@gnusolidario.org>\n\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program.  If not, see <http://www.gnu.org/licenses/>.\n\n\n",
    "bugtrack_url": null,
    "license": "",
    "summary": "The GNU Health FHIR Server",
    "version": "0.9b7",
    "project_urls": {
        "Download": "http://ftp.gnu.org/gnu/health",
        "Homepage": "https://www.gnuhealth.org"
    },
    "split_keywords": [
        "health",
        "api",
        "rest",
        "hl7",
        "fhir"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "2463438aaa45c68102cd23424b2aa1e59657a0fada87ff43c1b5d4b25ce6c87e",
                "md5": "740599b28fb1068b8589868aa1af4e98",
                "sha256": "da6a8290509ff4196980bf0ee2259baa112ffc926b4ea3c52648ecffc473aa54"
            },
            "downloads": -1,
            "filename": "gnuhealth-fhir-server-0.9b7.tar.gz",
            "has_sig": false,
            "md5_digest": "740599b28fb1068b8589868aa1af4e98",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": null,
            "size": 284074,
            "upload_time": "2023-10-12T16:20:28",
            "upload_time_iso_8601": "2023-10-12T16:20:28.395570Z",
            "url": "https://files.pythonhosted.org/packages/24/63/438aaa45c68102cd23424b2aa1e59657a0fada87ff43c1b5d4b25ce6c87e/gnuhealth-fhir-server-0.9b7.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2023-10-12 16:20:28",
    "github": false,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "lcname": "gnuhealth-fhir-server"
}
        
Elapsed time: 0.13263s