BloodBank IE: Blood Bank Management System Using Cloud Computing
BloodBank IE: Blood Bank Management System Using Cloud Computing
Christian Cobalida
Second, I'd want to thank my supervisor for his assistance with this assignment. Stephen
Larkin has been a great help to me throughout the project.
Stephen's advice has been invaluable, and it's always a pleasure to meet with him for our
weekly sessions.
Third, I'd want to thank everyone who helped me during my B.Sc. (Hons) Cloud Computing
studies, including my lecturers, classmates, and friends. I am grateful for all of their support,
critical criticism, and professional advise during my education.
Declaration
_________________________
Christian Cobalida
2022
Abstract
The focus of this paper is BloodBank IE, a modern Angular application that manages blood
banks and donors. BloodBank IE allows blood donors to donate to patients in need via a
progressive online application. Furthermore, BloodBank IE makes use of modern frameworks
like Ionic with Angular.js for the front-end, NgRx for the back-end, and Node (Express.js) for
Table of Contents
Acknowledgements
Declaration
Abstract
Table of Contents
1 Introduction
2022 Christian Cobalida
4
5
2 Literature Review
2.1 Background Research
2.2 Use of mobile applications
2.3 Socia media advertisements
2.4 Global Positioning System (GPS)
2.5 Availability
2.6 Comparison of the related and proposed systems
2.7 Cloud computing
2.8 Google Cloud Platform
2.9 Amazon Web Services
2.10 Microsoft Azure
2.11 Amazon Web Services vs Microsoft Azure vs Google Cloud Platform
3 Proposed Solution
3.1 Design
3.1.1 Database
3.1.2 Ionic & Angular
3.1.3 NodeJS & Express
3.1.4 Security
3.2 Implementation
3.2.1 Cloud Application
3.2.2 Progressive Web App
3.2.3 Firebase Hosting
3.2.4 Firebase Authentication
3.2.5 Firebase Cloud Messaging
3.2.6 Architecture Diagram
4 Conclusion
References
1 Introduction
The blood carries nutrients and oxygen to the cells of the body. The need for blood is
increasing as the population grows. Because of the growing population, there are many
potential blood donors around the world. Despite this, fewer than 10% of the world's total
population donates blood. As the population grew and medical science advanced, demand
for blood increased.
Blood banking is the practice of storing and preserving donated blood or blood components
for future use in transfusions. A patient's blood type must also be determined to ensure
compatibility with a transfusion. In some cases, patients may not be able to get the right
Blood is wasted due to a lack of communication and synchronization between blood banks
and hospitals. The issues can be resolved by automating the current manual blood bank
management system. To bridge the gap between donors and recipients and to reduce the
effort required to find blood donors, a high-end, efficient, universally available, and scalable
system must be developed. People can easily look for blood in nearby areas during an
emergency using GPS with the help of this Android app, and blood can be seen in real-time
and at the right location.
2 Literature Review
The goal of the research on an Android blood bank management system [3] was to create an
online blood bank project that would store information about blood donors in case of an
emergency. This project aims to establish direct contact between the donor and recipient.
The willingness of the donor, the location, the last donation date, and the blood group are the
four major components of the project. Transparency in blood donation, ensuring that
obtaining blood from blood banks is a corruption-free process, and effective management of
blood banks were all goals of the project.
Finding appropriate blood donors for individuals who require blood transfusions takes time.
This issue spurred the creation of an Android app that connects blood donors with receivers.
The requester can use the app to notify volunteer blood donors that they are still in need of
blood. If a donor is available to donate blood, the application will notify the requester [6].
2.5 Availability
In an emergency, such as a blood transfusion, quick action is required, and visiting blood
banks to check on blood availability takes time. The RedDonate Blood Bank Donation
Application was designed to cut down on the time spent looking for blood donors as well as
the availability of the blood the patient requires. The system maintains a database of blood
donors' contact information to assist people in need of blood.
The functionalities that were used as metrics to compare the related systems and the
proposed system are listed below:
In conclusion, blood donation systems can assist patients, blood donors, blood donation
centers, and various health organizations in ensuring that the donation process is as efficient
as possible. The blood donation process can be used in a variety of ways, and new systems
are being developed to make it easier for blood donors and donation centers to
communicate, as well as for patients to find blood donors when they require transfusions.
Various mobile applications for blood donation are currently in use in various parts of the
world. The majority of these applications are successful, demonstrating that technology can
help with blood donation.
In general, it uses three models: Cloud Software as a Service (SaaS), Cloud Platform as a
Service (PaaS), and Cloud Infrastructure as a Service (IaaS), while it's delivered through four
delivery methods: Private cloud, Community cloud, Public cloud, and Hybrid cloud (Mell and
Grance, 2011). Implementing cloud services can eliminate the need for organizations to
prepare for and acquire servers and other IT equipment weeks or months in advance. As a
result, hundreds of thousands of servers can be set up in minutes, and results are supplied
much more quickly.
In every market, Google has the one luxury no other #3 player has. The company holds the
top position in a different, virtually one-player market: online advertising. In some scenarios,
it has a competitive advantage because its cloud services can mature and find their
audiences, despite ranking 3rd among these three firms in terms of market share and
revenue.
AWS's greatest strengths are its ability to innovate better than its competitors, its engineering
prowess to deeply innovate, and its large financial commitment to the service. Netflix, Airbnb,
and Expedia are among AWS's high-profile and high-volume customers. The company is
based on a pay-per-use model and its pricing model from hourly to secondly.
3 Proposed Solution
As discussed below, this paper represents a blood bank management system based on
advanced technologies and a stage process methodology.
3.1.1 Database
The BloodBank IE application needs persistent data to retain data for blood camps and
donors. The application will use a non-relational database system to manage this data.
Firebase is a cloud-based development platform best known for its real-time database, which
is still a multi-node, key-value database specialized for synchronizing data between user
computers or smartphones and centralized cloud storage. It's made to make developers'
lives easier by taking care of a lot of the data pushing and pulling. As a result, app
developers are freed from the coding headaches that come with maintaining versions and
locales. They can add new components to Firebase, and the data will be consistent
throughout the system.
Realtime and Firestore are the two databases offered by Firebases. Real-time updates,
offline synchronization, scalability, and multi-region deployment are all features of Firestore,
which is a more robust and powerful database. The project will be implemented using Cloud
Firestore in this case. Cloud Firestore is a versatile, scalable database for mobile, web, and
server applications, powered by Firebase and Google Cloud. Firestore is a NoSQL document
database that scales automatically and provides great performance, designed for ease of
application development.
The database will consist of 3 core tables that make up this application:
● The users table will be populated by the data received during the registration
process. The table will consist of donor information.
● The bloodCamp table will be populated by the blood camp registered venues
during the registration process. The table will consist of the venue of the blood camp
information.
The open-source Ionic mobile SDK is the company's most well-known product. Ionic SDK
allows web developers to create iOS and Android apps as well as mobile-ready Progressive
Web Apps using common online tools, frameworks, and languages.
With Angular and Ionic, you can build blazing-fast mobile, web, and desktop apps using
highly optimized Angular components. The Ionic Angular components are compatible with
iOS, Android, and PWAs. With native plugins, DevOps, expert services, and more, it's
backed by a company dedicated to enterprise app development.
3.1.4 Security
During registration, Firebase authenticates users using a built-in hashing technique. To hash
account passwords, Firebase Authentication uses an internally customized version of scrypt.
Firebase Auth will rehash the password the first time an account logs in successfully,
regardless of the algorithm used to upload the password. If a password hash is available for
this version of Scrypt, it will be present in accounts retrieved via Firebase Authentication;
otherwise, an empty one will be present.
The application will implement a strong password policy which will be:
● At least 8 characters
● At least 1 numeric character
Password policies will be enforced at the client-side using regular expressions (RegEx)
implemented in JavaScript and combined with HTML validation to ensure policy
implementation. In addition, the password field will be validated on the server-side before
salted hashing and subsequent entry to the database.
3.2 Implementation
The paper breaks down the entire process of developing a mobile app into several modules,
including front-end (client-side development), back-end (server-side development), and
deployment on the Firebase Hosting cloud server.
When a user decides to register or log in to the application, the data will execute and pass
through the typescript files login.ts and register.ts. Based on the information entered, the
database checks to see if there are any existing users. As soon as the user has completed
the registration and login confirmation checks, they are redirected to the relevant landing
page.
Once the user has logged in, depending on the role they have, some functions of the
application are limited to them such as searching for blood banks, searching for donors, and
subscribing for notifications about the next available blood camps.
If the user selects the SEARCH DONORS, the data will pass through the filterList($event)
function to be executed. It will look through the usersProfile collection database if it has a
2022 Christian Cobalida
18
19
matching user or blood group. If it has matching details from the data, it will return all detailed
information about the donor(s).
If the user selects the SEARCH BLOOD CAMPS, the data will pass through the
filterList($event) function to be executed. It will look through the bloodcamp collection
database if it has a matching blood camp name or county. If it has matching details from the
data, it will return all detailed information about the blood camp(s).
In terms of notification for the next available blood camps, a token is generated which will be
sent to the Cloud Messaging in Firebase to register for it to be able to send a notification to
the user. SUBSCRIPTION page does this function as well, except if the user clicks the
"REQUEST PERMISSION" button it will generate a token which the admin will use to store
Secondary to the core functionality, the logged-in user is allowed to update their profile
information. When the user updates their information, the unique id of the user will be used to
send the user to the "UPDATE PROFILE" page. The page will auto-generate the data read
from the usersProfile collection. After the user clicks the "UPDATE PROFILE" button, the
data will be encapsulated and sent back to the collection with updated details.
If the admin logs in, they will be able to implement CRUD capabilities to a blood camp and
delete users from the database.
If the admin selects the BLOOD CAMPS button, it will list out all of the registered blood
camps in a list with a "CREATE BLOOD CAMP" button at the top of the page, and at the
right side of each every blood camp there is an edit and delete icon.
If the admin clicks the "CREATE NEW BLOOD CAMP" button, the data inputted from the
form is validated from both the client and server-side, and then it is encapsulated which is
then added to the bloodcamp collection.
A Service Worker and a Web Manifest are required for a PWA. While both of these can be
added manually to an app, the Angular team has a @angular/pwa bundle that is used to
automate this.
An app with the @angular/pwa package will have a service worker and an app manifest by
default. Running ng add @angular/pwa will add the package to the app. After adding this
package, run ionic build —prod and the www directory will be ready to deploy as a PWA.
In the BloodBank IE application, users are able to register and log in using Google and e-
mail/password authentication. Authentication with Firebase requires Firebase config
parameters, which must be included in environment.ts.
A sender ID from Firebase is needed to be able to send messages to users which is stored in
the src/manifest.webmanifest file.
There are two possibilities: PWA is open in the foreground or closed in the backdrop. In the
first scenario, the application will be subscribed to an AngularFire messages object and will
capture inbound push notifications. We also need a user token to target those notifications,
which we receive by executing requestToken, which also asks for user authorization to push
notifications.
Even though the application is in a good stable condition, there is a function that I would
have liked to be implemented that has never come to fruition. Cloud Functions from Firebase
would have been a major upgrade into improving the application.
With this project, I have become familiar with a wide range of technologies and platforms,
which are rapidly updating and changing. To implement a project smoothly, comprehensive
planning and design will be crucial components, requiring greater attention moving forward.
Throughout the implementation of this project, I have become aware of certain limitations of
the application such as a connectivity requirement to the internet and a dependency on a
single platform provider. Going forward I would like to continue to develop the application by
implementing new features such as improving the user interface and storing blood details in
terms of liters for each blood group from every blood bank.