Skip to content

Latest commit

 

History

History
248 lines (164 loc) · 13.1 KB

README.md

File metadata and controls

248 lines (164 loc) · 13.1 KB

HospitAlly

License Slack Website

This is a GitHub repository for the IBM Agentina Innovation Team Call 4 Code 2020 edition (IBM Internal competition).

Contents

  1. Short description
  2. Demo video
  3. The architecture
  4. Long Description
  5. Project roadmap
  6. Getting started
  7. Prototype (Live demo)
  8. Built with
  9. Versioning
  10. Authors
  11. License
  12. Acknowledgments

Short description

What's the problem?

Institutions all around the world have reported problems gathering accurate metrics of critical health resources, such as beds available at a site, available medical staff (doctors, nurses, and so forth) or respirators. To have this information available quickly and accurately is of paramount importance to health institutions public or private and to the governments. In order to be able to efficiently and securely manage their health systems and prevent collapse so that each individual patient of COVID-19 can be treated properly.

How can technology help?

A lot of time is spent gathering information, usually involving administrative staff moving information from notes to a spreadsheet to a database. Particularly in poor countries and remote sites where advanced technology isn't readily available. The available technology that is omnipresent in everyday life, such as smartphones, tablets, and other mobile devices, and provide enormous help in regards to data gathering in case of an epidemic or any other disaster palliative initiative.

The idea

It's of critical importance to be able to gather information related to available resources and track its usage to get efficient use of them. Providing an easy to use application that can be quickly deployed and easily executed on any mobile device will enable local authorities in providing an improved health service to their communities, particularly at times when resources are scarce.

Key Features

  • Cloud Native, reduced cost through containerization & cloud standards adoption.
  • Doesn't involve vendor lock-in. Fully developed with open-source technology.
  • Doesn't require active internet to work. The application stores data locally and synchronizes when connection is available. Particularly important at sites with poor connectivity.
  • Easy to use, designed with modern UX/UI standards for mobile (Tablet and smartphones).
  • Web based, works with both iOS and Android. Tested on Chrome, Firefox and Safari.

Demo video

Watch the video on youtube

Long Description

In this pandemic situation, hotels, university dormitories, convention centers, gymnasiums, stadiums and so many other non-medical centers are turning into field hospitals, as medical centers are stressed and over its capacity. In this context, keeping track of patients, staff and supplies is both - problematic and essential - at the same time. Having accurate and trustable data in the exact moment is once again the key to take better decisions and provide a fast response.

This information is more important than ever to keep the situation under control and provide better care and support to the community. This is where the HospitAlly can help. It is a simple and easily deployable solution that can help health centers to have a better knowledge of the resources they can count on. The app has an Inspection module where the user will indicate the supplies inventory, staff attendance and patients per hospital, floor level and/or room.

The inspection itself does not require internet connection; so you can walk through the entire health center without worrying about data loss. The inspection data is stored locally in your device and it will be automatically sent to the server once your connection is restored. The supervisor will be able to see one or all hospitals’ real-time status in a Visual Dashboard. This will allow the supervisor to have control of one or more hospitals at a glance. Summarized information as well as a color-coded alert system will simplify the status monitoring and decision taking. Our roadmap includes e-mail alerts and push notifications when critical levels are reached so the supervisor can take action immediately and historical statistics.

HospitAlly’s main advantage is its flexibility. The app administrator can create new users and hospitals in the Management module; but also customize the supplies, the bed types, the staff… all the inspected items can be fully modified to fulfill to your needs. We have developed HospitAlly to be fully responsive, so you can use it from a computer, tablet, TV or phone.

We also know that time is critical – medical NGOs usually build field hospitals really quickly; so we have containerized HospitAlly so you can deploy to IBM Cloud and have it up and running in less than a day. Our commitment is not just with the health system; but also with the community. That’s why our roadmap includes geolocation and AI features related so people being addressed to the nearest available center, emergency supplies reallocation and more. We help you to manage your hospital, so you can focus on what is really important. You have an ally. This is HospitAlly.

The architecture

Video transcription/translation app

The application is written entirely in Javascript, on the most popular programming languages in the world (if not the most popular). This is convenient so to facilitate adoption since it's easier to find JS programmers anywhere in the world. It uses the latest version of node.js for the backend, and react.js for the frontend making it very lightweight and performative.

It runs on a container so it can be executed on any Kubernetes orchestrator. We choose Openshift of its ease of use, strong scalability, and fault tolerance features. For the database, we choose to use MongoDB as a service, a no-SQL Database that is lighting fast and it is hosted on an external location to reduce single points of failures.

Getting started

These instructions will get you a copy of the project up and running on your local machine for development and testing purposes.

Prerequisites

  • node.js

You can get the latest version and install instructions here.

On Mac, you can install with Homebrew

brew install node
  • MongoDB

You need a running instance of MongoDB in order to test or deploy the application. A cloud instance is preferred, you can get one here, or you can install MongoDB on locally following the instructionns here.

If you are running Mac, alternativly, you can use Homebrew

brew update
brew install mongodb

After installation is done, complete configuration by creating a db and settings permissions:

mkdir -p /data/db
sudo chown -R `id -un` /data/db

To start mongo simply excute mongod from a terminal.

Installing

The following steps will guide you through the steps to get a development env running:

Open a terminal and clone this repository:

git clone [email protected]:InnovationAndGrowth/call4code2020.git

Access the project's folder and install required packages with NPM:

cd call4code2020/
/call4code> npm i

End with an example of getting some data out of the system or using it for a little demo

Initial config

  • The database requires an initial config with documents stating the types of information that will be stored. There are API available to submit such information that for the final product will be document with swagger, but for this prototype we provide document files that can be imported directly into your db instance via mongodb-compass or the mongoshell. These files are located in the /samples folder

The required types are

  • user (i.e admin, supervisor)
  • bed (i.e occupied, available)
  • observations (i.e lack of time, unanswered)
  • staff (i.e doctor, nurse)
  • supply (i.e goggles, boots, camisole)
  • patients (i.e critical, high, severe)

Also, an initial user needs to be created to be able to use the API, to do so, follow these steps:

  • Temporary remove auth from post user to create initial user from /server/routes/users.js
router.post("/", [val400(validate)], async (req, res) => {
    ...
});
  • Create initial user by doing a POST call to http://localhost:5000/api/users/ with a data body as shown below:
{
  "name": "John Doe",
  "mail": "[email protected]",
  "password": "12345678"
}
  • You can test login doing a POST to http://localhost:5000/api/auth/ with body:
{
  "mail": "[email protected]",
  "password": "12345678"
}

This is a sample response of sucess login:

{
  "auth": "ok",
  "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJfaWQiOiI1ZWU5MWZiMzQ0MTFmZDU0Mzk0ZTI4YTgiLCJuYW1lIjoiSk9ITiBET0UiLCJtYWlsIjoiam9obi5kb2VAaG9zcGl0YWwuY29tIiwiX2hvc3BpdGFsIjpbXSwiaXNBZG1pbiI6ZmFsc2UsImlzQWN0aXZlIjp0cnVlLCJpYXQiOjE1OTIzMzY1NjV9.8_etbbG3nVqODcw5OisK1j8kSi1Qo2XmcyxGbQ2OZIc"
}

Project roadmap

The live demo in the next section is a fully functional prototype but isn't the final product. This is our current roadmap:

NOTE The current prototype doesn't include automated testing (both unit and integration tests) and js linting files, but they will be included in the main project.

Roadmap

Live demo

You can find a running system to test at https://hospitally.myinnovx.com/.

  • user: 12345678
  • pass: 12345678

drawing

You can also view the dashboard at https://hospitally.myinnovx.com/dashboard. Keep in mind that for the final product we intend to use MongoDB Charts for improved statics, including geolocation information to aid supply among nearby locations.

Dashboard

You can also experience the mock up flow of our application in the following links:

Built with

  • node.js - The backend runtime based on Javascript and built on Chrome's V8 engine.
  • React - The web framework used for the UX
  • IBM Databases for MongoDB - The NoSQL database used
  • Red Hat OpenShift on IBM Cloud - The containers platform for handling workload, scalability, resiliency and automation.
  • Figma - The design and prototype framework.
  • Mongo DB Charts - User for visualizations of MongoDB data (Not implemented during prototyping)

Versioning

We use IBM Enterprise Github for versioning. For the versions available, see the tags on this repository.

Authors

License

This project is licensed under the Apache 2 License - see the LICENSE file for details

Acknowledgments

flex-grid

call4code2020