/bsis

BSIS is a system to monitor blood inventory from collection to transfusion. Started as a collaboration between the Computing For Good (C4G) program at Georgia Tech and the Centers for Diseases Control and Prevention (CDC), the application is now maintained, developed and managed by Jembi Health Systems (JHS), in partnership with Safe Blood for Africa (SBFA) and the Centers for Diseases Control (CDC).

Primary LanguageJavaBSD 3-Clause "New" or "Revised" LicenseBSD-3-Clause

Build Status codecov.io

BSIS

BSIS (Blood Safety Information System) was a project started at Georgia Institute of Technology as part of the Computing For Good (C4G) Program at Georgia Tech, under the name V2V (Vein to Vein). The project is now maintained by Jembi Health Systems in South Africa.

BSIS Disclaimer

If you are considering forking this code and making any changes, please make sure that you read the Disclaimer below to ensure you are aware of the risks associated with this.

  1. No warranties of any kind whatsoever are made as to the results that You will obtain from relying upon the covered code (or any information or content obtained by way of the covered code), including but not limited to compliance with privacy laws or regulations or laboratory and clinical care industry standards and protocols. Use of the covered code is not a substitute for appropriately-trained and registered professional blood service and healthcare providers, standard practice, quality assurance guidelines or professional judgment. Any decision with regard to the appropriateness of treatment, or the validity or reliability of information or content made available by the covered code, is the sole responsibility of the appropriately-trained and registered professional blood service personnel and health care providers.

  2. Under no circumstances and under no legal theory, whether tort (including negligence), contract, or otherwise, shall any Contributor, or anyone who distributes Covered Software as permitted by the license, be liable to You for any indirect, special, incidental, consequential damages of any character including, without limitation, damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other damages or losses of any nature whatsoever (direct or otherwise) on account of or associated with the use or inability to use the covered content (including, without limitation, the use of information or content made available by the covered code, all documentation associated therewith, and the failure of the covered code to comply with privacy laws and regulations or clinical care industry standards and protocols), even if such party shall have been informed of the possibility of such damages.

BSIS Contributors Agreement

If you are planning to contribute in any way to the source code, please first read the Contributors Agreement.

Background

BSIS is a software to manage blood related information from the point of donation through testing, storage to its eventual usage in a hospital or a clinic. Handling of blood is a sensitive operation and record of movement of blood as it goes through the following chain is critical to the effective functioning of blood processing centers. This solution is primary targeted for deployment in the developing countries of Africa where much of the blood inventory tracking is done on paper.

The software was developed at Georgia Tech as part of the C4G program in collaboration with Centers for Disease Control and Prevention (CDC), Safe Blood for Africa (SBFA) and the participating countries of Africa, and is now developed and maintained by Jembi Health Systems (JHS) in South Africa.

Problems related to blood supply in Africa

  • Unsafe blood can lead to disease transmissions
  • Insufficient supply of Safe Blood in hospitals point-of-care
  • Higher number of individuals living with HIV in Africa
  • Shortage of blood
  • Many countries of Africa depend on paper based systems to track the movement of blood through the blood processing chain

This factsheet from WHO discusses the problems related to blood safety and availability specifically the developing countries of Africa in greater detail.

Challenges

  • Transitioning from a paper based system to a computer based system can take time and experience
  • Varying blood processing practices across different countries
  • Unreliable Internet connectivity
  • Developing intuitive and easy-to-use admin. Cannot depend on an onsite admin to configure databases.

Solution

The challenges listed above have influenced the design of BSIS and the following design features have resulted.

  • Develop a browser based but locally deployable solution to avoid dependence on Internet
  • Smaller upgrade package size to allow
  • Make features configurable so that blood processing centers can turn them on/off based on their current practice
  • A single installer which installs and configures all dependencies like Java, MySQL, Apache Tomcat etc. to make first time configuration simple.

Many other design decisions in the future will be influenced by the same parameters.

Learn about BSIS

Learn more about BSIS and the Blood Safety Strengthening Programme here. Full Requirements Specifications are available.

Developer Documentation

Technology

Production Code

Test Code

Tooling

Build, Run and Test

Build

  • With Maven: mvn compile
  • With Docker Compose: sudo docker-compose build bsis

Run

  • With Docker Compose: sudo docker-compose --build up
  • With Bash Script: ./start.sh (runs docker-compose internally)

Test

  • With Maven: mvn test

Conventions

Code Style

  • Use 2 spaces instead of tabs to indent your code.
  • Use the appropriate codestyles template for your IDE. These codestyles are based on the Google Java Style Guide.
  • Only auto format the code you are working on.

Git Commit Messages

Use the supplied Git commit message template to ensure that commit messages conform to the project standards. The first line of the commit message should contain a JIRA ticket reference and a short description of the commit (50 characters max).
The following lines (72 characters max) should describe why the change is being made, what the problem was, and may contain external references if necessary.

In your BSIS Git repository folder, run the following command:

git config commit.template .git.template

This will set the git commit template for the local git repository only. If you'd like to set the template for all your Git repositories, then run the following command:

git config --global commit.template .git.template

Getting Started

Starting work on a new code base even when it uses similar versions and tooling that you are used can be frustrating. Here are a few tips to help you get coding quickly, pain free!

With Docker

  1. Install the required tooling: Maven and Docker.
  2. Change the host name part of the database url in bsis.properties from localhost to mysql the name of the docker container.
  3. Start the application with the bash script ./start.sh which will download the dependencies, start the application and create the database. NB. Creating the database from scratch takes quite a long time (10s of minutes) so it might be easier to grab a database dump from another developer.

Without Docker

  1. This repository contains some Eclipse specific configuration. If you are comfortable using Eclipse then setting up your development environment will be relatively easier. You may use another IDE if you wish to.
    • Install Eclipse Indigo 3.7 or Eclipse Juno 4.2.
    • Install Apache Tomcat 7 and integrate with Eclipse.
    • Clone the repository into a local directory preferably housed in your eclipse workspace and checkout the develop branch.
    • The project dependencies are configured using Maven. Install Eclipse plugin m2eclipse for easier integration of Maven with your development environment. In Eclipse, select Help>Install New Software and add the site http://download.eclipse.org/technology/m2e/releases to add the m2eclipse plugin.Setup m2eclipse so that it automatically downloads all the required dependencies, sources, javadocs.
    • Import the source code into Eclipse by using 'Import Existing project' option. The master branch contains the required eclipse project files (e.g. .project and .settings), so you should be able to start working right away. For other IDE's you will need to more work.
  2. You will also need to setup a MySQL CE database:
    • Run the Maven build mvn liquibase:update which will call the liquibase scripts to create and initialise your database.
    • src/main/resources/bsis.properties contains your database connection information.
    • Note: Liquibase is executed on application startup, so this step is optional.