Repository navigation
About
Click here to view Architecture and Site Diagrams
1 ) Why do we need this application ?
According to a survey In India every year, about 500,000 people die because of non-availability of organs, 200,000 people die due to liver disease, and 50,000 people die because of heart disease. Moreover, 150,000 people await a kidney transplant but only 5,000 get among them. The organ donor can play a big role in saving others’ life. The organ of the donor can be transplanted to the patient who needs it urgently. Despite advances in medicine and technology and increased awareness of organ donation and transplantation, the gap between supply and demand continues to widen. For every minute, the number of people on the waiting list for organs keeps getting longer, while the number of donors lags significantly behind. By registering as an organ donor, you have the chance to save and improve up to 75 people’s lives. People who are on an organ waiting list typically have end-stage organ disease that significantly impacts their quality of life and maybe near the end of their life. Receiving an organ can become a life-changing event for these people.
Not all hospitals in India are equipped to carry out the process of organ transplantation and retrieval. Out of 301 hospitals equipped to handle the process, only 250 have registered with the National Organ and Tissue Transplant Organisation (NOTTO). Which means to conduct an organ transplant, there exists one fully equipped hospital for around 43 lakh people. Currently, in India, there are only 5 Regional Organ and Tissue Transplant Organisation (ROTTO) and 6 State Organ and Tissue Transplant Organisation (SOTTO) are in the proposal state.
This application is to have a platform for both donor and receiver to communicate we need this application. The receiver can request for organs.
The study revealed that various socio-cultural factors such as lack of awareness, lack of faith in the healthcare system, religious beliefs and superstitions among others are the biggest factors why families refuse to give consent for organ donation in India.
2) Conditions to donate the organs
Cornea
Any person can donate. Eyes must be removed after 4 to 6 hours after death and depending upon the method of preservation, usually, it should be transplanted within 4 days Eye donors could be of any age group or sex. People who use spectacles, diabetics, patients with high blood pressure, asthma patients and those without communicable diseases can donate eyes. Persons with AIDS, Hepatitis B and C, Rabies, Septicaemia, Acute leukemia (Blood cancer), Tetanus, Cholera, and infectious diseases like Meningitis and Encephalitis cannot donate eyes.
Blood
Donation may be of whole blood, or specific components directly. Blood banks often participate in the collection process as well as the procedures that follow it. Identify the blood type: A, B, AB, or O and the donor's Rh (D) type.
Overall health- The donor must be fit and healthy, and should not be suffering from transmittable diseases. Age and weight- The donor must be 18–65 years old and should weigh a minimum of 50 kg. The time between successive blood donations should be more than 3 months. Individuals under certain conditions are deemed ineligible to donate blood: A person who has been tested HIV positive. Individuals suffering from ailments like cardiac arrest, hypertension, blood pressure, cancer, epilepsy, kidney ailments, and diabetes. A person who has undergone ear/body piercing or tattoo in the past 6 months. Individuals who have undergone immunization in the past 1 month. Individuals treated for rabies or received the Hepatitis B vaccine in the past 6 months. A person who has consumed alcohol in the past 24 hours. Women who are pregnant or breastfeeding. Individuals who have undergone major dental procedures or general surgeries in the past 1 month.
Liver
Living donor - donates a portion of it. It regrows. Age - 18 to 60 a donor ineligible, such as diabetes, certain cancers, kidney or heart disease, substance abuse, hepatitis, and elevated body mass index (BMI).
Deceased donor liver can use for 2 patients Deceased donor livers come from people who have died suddenly, usually from an accident or bleed into the brain. These individuals are usually between one and 70 years of age and have been relatively healthy before their death. These people have previously expressed to their families a willingness to donate their organs, or their families have decided to donate their organs so that someone else will have a chance to live a better life. It isn't necessary to match the donor and recipient for age, sex or race. All donors are screened for hepatitis viruses and HIV. Also, many studies – such as ABO blood type and HLA matching – are performed to ensure that the organs are functioning properly. As soon as a deceased donor is declared brain-dead, the liver is removed and placed in sterile fluid similar to fluid in body cells. It is then stored in the refrigerator. The harvested liver needs to be transplanted within 24 hours of recovery. – which is why recipients are often called to the hospital in the middle of the night or at short notice.
Kidneys
Live donation: A living kidney donation comes most often from a family member such as a parent, child, brother or sister. A donor can also be a spouse, friend or co-worker. Or it can be a stranger.
Conditions which are needed to be verified:
- Age should between 18 and 70
- Good general health(there should be no evidence of Blood pressure, diabetes, cancer, kidney disease, heart disease, hepatitis).
Deceased Donation: Must ensure if the donor is in the same geographic location to reduce the time the kidney is outside a human body. No matter how the person died, his or her kidney will only be given to you if it is healthy and likely to work in your body. Transportation: Kidneys could be shipped in a small box containing ordinary ice for periods of up to 30 hours with almost no detectable damage.
Bone Marrow
Age should be 18-44 Blood pressure - should be in control Diabetes - should be in control no heart diseases no major allergies no severe kidney or liver diseases
Lungs
_Age:_18 years or above to donate. 60 years or less for bilateral lung transplantation 65 years or less for single lung transplantation
_Conditions: _ Should not have any of the following
Concurrent chronic illness (e.g., congestive heart failure, kidney disease, liver disease) Current infections, including HIV and hepatitis Current or recent cancer Current use of alcohol, tobacco or illegal drugs Psychiatric conditions History of noncompliance with medical instructions
Platelets
Generally, a platelet donor must: – Have given at least one successful plasma donation within the previous 12 months – must be aged between 18-70 years and weigh over 50kg – Not have had recent dental work – Not have taken aspirin 7 days prior or other anti-inflammatory medications 3 days prior to donation – Not have any current cuts, abrasions, sores or rashes – Not have had a recent gastric upset, diarrhea, abdominal pain or vomiting – Not have traveled in the previous 4 months to a country with malaria risk
- Wait 12 months after a tattoo
- To donate blood, a woman must have a hemoglobin level of at least 12.5 g/dL, and a man must have a hemoglobin level of at least 13.0 g/dL. For all donors, the hemoglobin level can be no greater than 20 g/dL. -Acceptable as long as your pulse is no more than 100 and no less than 50
3)Functionalities of the application
- A donor can register and become a valid donor within a few steps.
- A donor can get his donor card and download it to prove whether he is a valid donor or not.
- Any individual can search for the organs though he is not registered the difference is he will not get the donor communication details. He will be shown whether the organs are available or not.
- A receiver can register and he is authorized by the email authentication.
- Once the receiver is registered he can request for the organs by mentioning the organ needed and the blood group. Once he searches then he can view all the recommended donors and if he wants to communicate to donor then he can communicate through chat.
- Based on the donor and receiver information graphs are generated dynamically.
- A donor is given the flexibility of withdrawing the application.
**4) Technologies used **
- Angular 8
- Spring Boot i) Spring Initializr
- Kafka
- Apache Maven
- Neo4J
- MongoDB
- DialogFlow
- MySQL
- AWS
Angular 8 Angular 8 is a client-side TypeScript based framework which is used to create dynamic web applications.
Features: Improved Angular CLI Workflow. Speed and Performance. Productivity. Full development story.
**Spring Boot ** Spring makes it easy to create Java enterprise applications. It provides everything you need to embrace Java language in an enterprise environment, with support for Groovy and Kotlin as alternative languages on the JVM. Spring Framework 5.1, Spring requires JDK 8+ (Java SE 8+) and provides out-of-the-box support for JDK 11 LTS.
_Features: _ Create stand-alone Spring applications. Embed Tomcat (no need to deploy WAR files). Provide opinionated 'starter' dependencies to simplify your build configuration. Automatically configure Spring and 3rd party libraries whenever possible. Provide production-ready features such as metrics, health checks and externalized configuration no code generation and no requirement for XML configuration i) Spring Initializr: Bootstrap the application using Spring Initializr.
KAFKA Apache Kafka® is a distributed streaming platform.
Kafka is generally used for two broad classes of applications: Building real-time streaming data pipelines that reliably get data between systems or applications Building real-time streaming applications that transform or react to the streams of data.
ZooKeeper: ZooKeeper is a centralized service for maintaining configuration information, naming, providing distributed synchronization, and providing group services.
Apache Maven Apache Maven is a software project management and comprehension tool. Based on the concept of a project object model (POM), Maven can manage a project's build, reporting, and documentation from a central piece of information.
Features: Making the build process easy Providing a uniform build system Providing quality project information Providing guidelines for best practices development Allowing transparent migration to new features
Neo4J It is a graph database.
Features: Neo4j’s First Mover Advantage is Connecting Everyone to Graphs Biggest and Most Active Graph Community on the Planet. Highly Performant Read and Write Scalability, Without Compromise High-Performance Thanks to Native Graph Storage & Processing Superb Value for Enterprise and Startup Projects
MongoDB MongoDB is a general-purpose, document-based, distributed database built for modern application developers and the cloud era. It stores JSON-like documents.
DialogFlow DialogFlow is a Google-owned developer of human-computer interaction technologies based on natural language conversations. Give users new ways to interact with your product by building engaging voice and text-based conversational interfaces, such as voice apps and chatbots, powered by AI. Connect with users on your website, mobile app, Google Assistant, Amazon Alexa, Facebook Messenger, and other popular platforms and devices.
**MySql ** MySQL is free and open-source software under the terms of the GNU General Public License. It is a relational database management system.
AWS(Amazon Web Services)
Amazon Web Services is a subsidiary of Amazon that provides on-demand cloud computing platforms to individuals, companies, and governments, on a metered pay-as-you-go basis.
5) Microservices of the application
- Donor Profile
- Recipient Profile
- Login
- Search
- Recommendation
- Chat
- Reports
1. Donor Profile This service is used for registering donors and display their data in the donor dashboard. All the information about the donor is stored and fetched from MongoDB using this microservice.
**2. Recipient Profile ** This service is used for registering recipients and display their data in the recipient dashboard. All the information about the recipient is stored and fetched from MongoDB using this microservice.
**3. Login ** This service facilitates both donor and recipient login. As soon as the users' log in their dashboard is displayed.
4. Search This service facilitates organ search with filters such as blood group for the users.
**5. Recommendation ** This service recommends the donors based on organs and blood groups to recipients based on their need.
6. Chat This service is used to implement private chat rooms for donors and recipients.
**7. Reports ** This service is used to generate reports like graphs on the number of registered users (donors & recipients) and the number of organs donated and received using the application.
Issues faced
KAFKA and ZOOKEEPER
- Kafka and zookeeper wasn't running sometimes Sol: Restarted the system. 2.Some topics weren’t created Sol: Modified the java home path.
- Sometimes the data wasn't consumed from the producer. Sol: This is resolved by giving proper and correct topic names in both producer and consumer.
- An issue with running kafka in both systems Sol: Changed the advertized listeners in configserver.properties.
- Broker may not be available Sol: It's because kafka wasn't running properly. 6.Unable to conver string to object after consuming the data in kafka Sol: Used object mapper Example ObjectMapper objectMapper = new ObjectMapper(); Car car = new Car("yellow", "renault"); objectMapper.writeValue(new File("target/car.json"), car);
- Faced issue while single producer producing data to many consumers. Sol: Gave different group ids for consumers.
Login
- Unable to generate the token. Sol: Used appropriate autowiring.
Eureka
- Services aren't registered in eureka. Sol: Added jackson-databind dependency in pom.xml.
Config server
- Unable to fetch the properties from the github url Sol: Added spring-cloud-starter-config dependency in pom.xml and the application name in application.properties should match with the file that is in git hub.
Donor card
- Donor card wasn't downloading.
Sol: Installed jspdf
Product backlog:
- As a donor, I should be able to receive a notification when the recipient requests an organ.
- As a system, I should be able to get donor info from the external systems
- As a user, I should be able to get notification from the system
- As a user, I should be able to get notification from the system
- As a donor I should be able to connect with the recipient through communication channel
- As an admin I should be able to manage the transportation of organs
- As a donor/receiver I should be able to manage my insurance policy
- As a developer I should be able to demonstrate fraud detection
- As a tester I should be able to perform browser compatibility test on the application
LifeLine