This is a GitHub repository for the IBM Agentina Innovation Team Call 4 Code 2020 edition (IBM Internal competition).
- Short description
- Demo video
- The architecture
- Long Description
- Project roadmap
- Getting started
- Prototype (Live demo)
- Built with
- Versioning
- Authors
- License
- Acknowledgments
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.
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.
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.
- 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.
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 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.
These instructions will get you a copy of the project up and running on your local machine for development and testing purposes.
- 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.
The following steps will guide you through the steps to get a development env running:
Open a terminal and clone this repository:
git clone git@github.ibm.com: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
- 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 tohttp://localhost:5000/api/users/
with a data body as shown below:
{
"name": "John Doe",
"mail": "john.doe@hospital.com",
"password": "12345678"
}
- You can test login doing a
POST
tohttp://localhost:5000/api/auth/
with body:
{
"mail": "john.doe@hospital.com",
"password": "12345678"
}
This is a sample response of sucess login:
{
"auth": "ok",
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJfaWQiOiI1ZWU5MWZiMzQ0MTFmZDU0Mzk0ZTI4YTgiLCJuYW1lIjoiSk9ITiBET0UiLCJtYWlsIjoiam9obi5kb2VAaG9zcGl0YWwuY29tIiwiX2hvc3BpdGFsIjpbXSwiaXNBZG1pbiI6ZmFsc2UsImlzQWN0aXZlIjp0cnVlLCJpYXQiOjE1OTIzMzY1NjV9.8_etbbG3nVqODcw5OisK1j8kSi1Qo2XmcyxGbQ2OZIc"
}
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.
You can find a running system to test at https://hospitally.myinnovx.com/.
- user: 12345678
- pass: 12345678
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.
You can also experience the mock up flow of our application in the following links:
- 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)
We use IBM Enterprise Github for versioning. For the versions available, see the tags on this repository.
- Matias Salimbene - Initiative Lead & Sr. Dev - msalimbe - msalimbe@ar.ibm.com
- Cecilia Bel - Architect - belcecilia - belcecilia@ar.ibm.com
- Julieta Romero - UX Lead & Dev - Julieta-Ayelen-Romero - julieta.ayelen.romero@ibm.com
- Antonella Ovando - Full Stack Developer - ovandoan - ovandoan@ar.ibm.com
- Gaston Lifschitz - Full Stack Developer - Gaston-Lifschitz - gaston.lifschitz@ibm.com
- Gaston Kuracz - Full Stack Developer - Gaston-Kuracz - gaston.kuracz@ibm.com
This project is licensed under the Apache 2 License - see the LICENSE file for details
-
The video has been developed by our great media specialists at the Innovation Team media: Veronica Casillo (veronica.casillo@ibm.com) and Sabrina Cinzer (sabrinacinzer@ibm.com)
-
Icons made by Icongeek26 from www.flaticon.com.
-
Based on Billie Thompson's README template.