Conventionally, when a patient needs blood, he/she has to contact a blood bank or a compatible blood group of a donor in their circle, family, and friends. However, it is difficult to find suitable donor within a limited group of people in a given time. In addition, there is no guarantee that blood banks will have compatible blood group in stock. There is also steady increase in blood donation requests posts in social networking sites (like Facebook, twitter, Instagram, etc.) requesting for donation.
Ease of access, requirements of blood, and the blood donation statistics (1,2) are taken into consideration while researching the topic. There is a steady need for blood and blood components (red blood cells, blood plasma, platelets). Every minute of every day someone is in need for blood, however as e.g., in Canada (3), only 1 in 60 Canadians gave blood last year, when almost 1 of every 2 Canadians is eligible to donate. 52% of Canadians say they or a family member have needed blood or blood products. The blood donation rate in high-income countries is 33.1 donations per 1,000 people; 11.7 donations in middle-income countries and 4.6 donations in low-income countries (1). As a result, finding blood donor is becoming very difficult in almost every country.
There are some blood donor finder applications such as Blood app by Red Cross which allows the donor to book appointment with blood banks and also can find local blood drives and donation centers quickly and easily (4). However, there is no direct communication between the donor and that clinic in need of a specific blood type. As a result, this app is more beneficial for donors but not for clinics to find needed blood type directly and promptly. Blood Donor Finder application by Neologix (5) allows users in need for blood to find nearest donors. Although this application helps finding donors, but the ease of communication with those donors is not prompt and it requires man power as the requester (patient or clinic) has to contact each donor individually. Also, there is no application that provides a proper communication channel to notify donors about the blood donation requirements.
BLOODR application can resolve these issues by connecting patients promptly with a large pool of donors in the same region via an authorized clinic. When a patient needs a blood donation, the clinic (where the patient is admitted) can use the application to contact the blood donors in the vicinity or nearby city based on their location. The registered donors will get notification about the blood donation needed at a specific clinic where they can go and donate.
BLOODR application provides donors with functionalities including “blood request feed”, “donation history”, “invite friend”, and “book an appointment” (with the clinic to donate blood), at the same time the requester (aka clinic) can send requests and use this application to maintain the different blood donation activities.
RubyGems (6) are pre-built so that developing the web application with Rails is efficient. BLOODR uses some of the existing gems such as devise, public_activity, jquery-timepicker-rails, pg, nifty-generators, coffee-rails gem, therubyracer, rack, and rake. In the following, we briefly explain these gems:
Devise gem: devise is a popular gem that provides full-featured authentication solution which handles all of the controller logic and form views. It provides BLOODR with an API for login/registration pages for different user types and session maintenance (7).
Public_Activity gem: Public_Activity provides easy activity tracking for Active Record, Mongoid 3 and MongoMapper models in Rails 3 and 4 (8). In BLOODR, Public activity gem is extended to show blood request feeds.
Jquery-timepicker-rails gem: jquery timepicker is a lightweight timepicker plugin for jquery inspired by Google Calendar ( 9) . It is used in the appointment booking feature.
Pg gem: PgJeny (11) is the Ruby interface to the PostgreSQL which is a relational database management system (RDBMS). BLOODR application uses PostgreSQL database. Pg gem is used to provide interface to the BLOODR database.
Nifty-generators gem: nifty-generators (12) gem is a collection of useful Rails generator scripts for scaffolding, layout files, authentication, and more. In the BLOODR, nifty-generators gem used to generate different layout and scaffolding files including:
- Nifty: layout, generates generic layout, stylesheet, and helper files.
- Nifty: scaffold, generates a controller and optional model/migration.
- Nifty: config, generates a config YAML file and loader.
- Nifty: authentication, generates user model with sign up and log in.
Rack gem: rack provides a minimal, modular and adaptable interface for developing web applications in Ruby. By wrapping HTTP requests and responses in the simplest way possible, it unifies and distills the API for web servers, web frameworks, and software in between (the so-called middleware) into a single method call (14). BLOODR uses rack to provide HTTP web server services to different types of application users.
Rake: rake is a Make-like program implemented in Ruby. Tasks and dependencies are specified in standard Ruby syntax (15). BLOODR uses Rake as Task Management Tool to perform different tasks and database migrations.
Based on UML methodology, this application design includes sequence diagrams, use case diagrams and class diagrams. These diagrams are useful to visualize the architecture of a system. Using sequence diagram, we can understand the collaboration of objects (requesters, donors, and admin) based on a time sequence. It shows the interactions between objects in a particular scenario of a use case. For example, as a requester object, once requesters login into the application, they can be able to see the Blood Request feed, they can notify the donor using send request feature which notify the matching blood donors, and also can also track their request history.
Use case diagram is useful to identify different functions and show how the actor users can interact with these functions based on their roles. An actor can be a donor, requester, admin based on the actor’s role using the application. The Primary actor is the requester user who uses the application to notify the Donors. The use cases can be Blood Request feed, Book appointment, invite friends, donation history etc.
Class diagrams are the most common diagram found in modeling object-oriented systems. A class diagram shows a set of classes, interfaces, collaborations, and their relationships. Class diagram shows the relationships between different classes like Donor, Requester, and Admin, and subclasses such as Blood Request feed, Donation History, and Book Appointment. Class diagrams are used to model the static design view of a system (16). The main classes of the application are:
User: this class represents the Users of the application. Each object of this class will have the association with all the other classes. The user will have attributes such as Name, Email, password, and Address. User has methods to access BLOODR including as register (), login (). The main users in the application are Donor, Requester and Admin.
Donor: the Donor is one of the user types so it has same attributes mentioned above. Donor has features like Blood Request Feed, Donation History, Invite Friends, and Book Appointment.
- Blood Request Feed (): this subclass is useful to view the Blood Requests.
- Donation History (): using this subclass Donor user can see their Blood donation history.
- Invite Friends (): this subclass is useful to invite friends of donor users by entering the friends email.
- Book Appointment (): this subclass is useful to book appointment with clinics to donate blood.
Requester: this class represents the Requester which is the clinic as one of the user type of the application. It has same attributes of the user type and features like Blood Request Feed, Send Request, Request History, and View Appointment.
- Send Request (): using this subclass, requester can send blood donation notification to donors
- Request History (): this subclass is useful to view the request history.
- View Appointment (): this subclass is useful to see the appointments booked by the donors.
- Blood Request Feed (): this subclass is useful to view the Blood Requests.
Admin: the Admin is another user type. It also has same attributes of the user and features like Manage users, analyze data.
- Manage users (): this subclass is useful to see the manage users of the application.
- Analyze data (): this subclass is useful to analysis of the data to get different statistics.
Here, we discuss how BLOODR works with the three types of users.
Donors can be individuals and blood banks. Donor users can register to the application to receive notification about blood donation requests when their blood type is required for an admitted patient to a clinic. In the online registration, users need to provide information about their blood type and address. Once the user login, he would be able to see the latest blood donation requests in their city/region using “BlooRequests Feed” as shown in Figure 1. Each notification contains information about the required blood type and the clinic address together with a request status as pending if the donation is not done yet. If someone has donated, then the request status is marked as success so that potential donors would receive an updated notification indicating that the blood donation has been made and there is no further donation is required for this particular request. Blood donation has a significant impact on iron stores in frequent donors, particularly females. Several measures are necessary to prevent, detect, and treat iron deficiency in donors. These include less frequent donation by donors most susceptible to iron deficiency, and better education of both donors and their physicians about iron needs associated with blood donation. Regular blood donors may require a course of iron supplements to replenish the iron lost in blood donation. These individuals can often return to blood donation, after an adequate course of iron supplementation (17). As a result, Donor may track his/her donation history details using “Donation History” to avoid such risky intensive donations before that the body can make up its lost red blood cells. Donors can invite friends to register to the application using “Invite Friends” to increase number of donors. When a Donor is notified about a blood request, he/she can book an appointment witht the clinic that requested the donation using “Book Appointment feature”.
Blood requester (patients through clinic)
When a patient needs a blood, the clinic where he/she is addmitted would request registered volunteers in the same or nearby city/state to donate using the “Send Request” of the app. For example, assuming that a patient is admitted in a clinic in Toronto, those donors in Markham, Brampton areas may be notified too. Requester can send notification to donors as emergency/normal depending on the need of the patient as shown in Figure 2. In some cases, surgeries are scheduled in advance and the blood donation then, if needed, is marked as normal. Once a request is fulfilled, i.e., when a successful donation made, then the clinic can send updated notification to the previous recipients. The function “BloodRequests Feed” is to display requests from other clinics. To enhance the cooperation and communication between different clinics, “BloodRequests Feed” can be used at one clinic to pass the need of other clinics to those potential donors who are unaware of the BLOODR app. Clinics can also see their request history and donation history using “Request History” and “Donations History” features, respectively. Using the history, clinics can know how many requests they requested and how many donations made and analyze the data for further research. Clinics are informed about the appointments scheduled by donors through using “Appointments”. As a result, this application can be helpful for clinics to send request to donors, keep track of requests and donations history, and view donor’s appointments with a clinic.
Admin user can manage users and analyze data. User management includes adding/deleting co-admin users using “Admin Users” feature shown in Figure 3. Admin can track the list of donations made at all clinics using “View Donations”. This donations’ follow up can be used to alert those donors who have frequent donations to avoid risks explained earlier. Admin can also view all requests made by clinics “View Requests”. This can be used to alert donors (registered or not) in situations where the donations are not enough to fairly respond to the increasing number of requests. Admin can see the registered donors list using “Donors List” to alert/delete those donors, if necessary, who are inactive for a period of time. Also, admin can encourage those limited number of donors in a specific area/city to invite their friends and relatives to register to the app. Admin can see the registered clinics using “Requesters List” to encourage those unregistered clinics to use this app. Using this data collected from all these admin features, admin can do data analysis.
Admin can use the data collected to analyze rates of donations and requests to get statistics that can be used to calculate the donors to patients ratio in each city as shown in Figure 4. By using statistics, we can increase the awareness in the community by conducting donation camps in the areas that have fewer donors.
In recent days, it is noticed the increase in blood request posts on social media such as Facebook, Twitter, and Instagram. Interestingly there are many people across the world interested in donating blood when there is a need, but those donors don’t have an access to know about the blood donation requests in their local area. This is because that there is no platform to connect local blood donors with patients. BLOODR solves the problem and creates a communication channel through authorized clinics whenever a patient needs blood donation. It is a useful tool to find compatible blood donors who can receive blood request posts in their local area. Clinics can use this web application to maintain the blood donation activity. Collected data through this application can be used to analyse donations to requests rates in a local area to increase the awareness of people by conducting donations camps.
BLOODR Application can be developed to further improve user accessibility via integrating this application with various social networks application program interfaces (APIs). Consequently, users can login and sign up using various social networks. This would increase number of donors and enhances the process of blood donation.
User interface (UI) can be improved in future to accommodate global audience by supporting different languages across countries. Data scraping can be done from different social networks and can be shown in the BloodRequest Feeds. Appointments can be synchronized with Google and Outlook calendars for the ease of users.
Conflicts of Interest: The authors have no conflicts of interest to declare.
- Blood safety and availability, Fact Sheet July 2016, World Health Organization. Available online: http://www.who.int/mediacentre/factsheets/fs279/en/
- Blood Facts and Statistics, American Red Cross, 2016. Available online: http://www.redcrossblood.org/learn-about-blood/blood-facts-and-statistics
- Blood, organ and tissue donation -The need of blood donation in Canada, Available online: http://healthycanadians.gc.ca/diseases-conditions-maladies-affections/donation-contribution-eng.php
- Blood App, American Red Cross, 2016. Available online: http://www.redcrossblood.org/bloodapp
- Blood Donor Finder, 2016 Google. Available online: https://play.google.com/store/apps/details?id=com.Neologix.BloodDonorFinder&hl=en
- Rick Borup. An Introduction to Ruby and Rails. Southwest Fox conference in Gilbert, Arizona in October, 2010:1-50.
- Devise by Plataformatec, 2017 GitHub, Inc., available online: https://github.com/plataformatec/devise
- public_activity, 2017 GitHub, Inc., available online: https://github.com/chaps-io/public_activity#first-time-setup
- jquery.timepicker, 2017 GitHub, Inc., available online: https://github.com/cover/jquery-timepicker-rails
- Therubyracer. Available online: http://www.rubydoc.info/gems/therubyrace
- Wiki ruby-pg. Available online: https://bitbucket.org/ged/ruby-pg/wiki/Home
- Nifty Generators, 2017 GitHub, Inc., available online: https://github.com/ryanb/nifty-generators
- Coffee-Rails. Available online: http://www.rubydoc.info/gems/coffee-rails/4.2.1
- Rack, a modular Ruby webserver interface, 2017 GitHub, Inc., available online: https://github.com/rack/rack
- RAKE – Ruby Make. Available online: http://docs.seattlerb.org/rake/
- Ainapure BS, Jadhav SS. Object Oriented Modeling & Design. Technical Publications 2008;3:3-74.
- Goldman M. Iron status in Canadian Blood Services donors. Ottawa: Canadian Blood Services, 2014.
Cite this article as: Tatikonda VK, El-Ocla H. BLOODR: blood donor and requester mobile application. mHealth 2017;3:40.