The GNU Health FHIR Server
Project description
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-hypernode.com/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-hypernode.com/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:
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
Documentation
The GNU Health FHIR server documentation will be at the corresponding chapter in the GNU Health Wikibook
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.
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
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/>.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
File details
Details for the file gnuhealth-fhir-server-0.9b7.tar.gz
.
File metadata
- Download URL: gnuhealth-fhir-server-0.9b7.tar.gz
- Upload date:
- Size: 284.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.9.18
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | da6a8290509ff4196980bf0ee2259baa112ffc926b4ea3c52648ecffc473aa54 |
|
MD5 | 740599b28fb1068b8589868aa1af4e98 |
|
BLAKE2b-256 | 2463438aaa45c68102cd23424b2aa1e59657a0fada87ff43c1b5d4b25ce6c87e |