OOPS!, it seems like I have exceeded the maximum duration of the video demonstration and I sincerely apologize for that. But it would have been unjust, to sum up my hard work and perseverance of around 2 months in a 3-minute video. I am sure that not even a single second was wasted in this video, as the project is really vast, so that is why the length got expanded significantly. Do watch it, and I am sure you will love it 💖

Inspiration

Irrespective of any place on the Earth, healthcare facilities should be of pristine quality because it is the sector that helps patients fight against diseases and helps society in the best manner possible. That being said, there are many voids in the healthcare industry as of now and out of them Referrals of Patients is one of the serious concerns. When the patient is in dire condition, every minute counts and I have read many articles in newspapers stating that due to delays in the referral process, many patients lose their lives. Why is that even happening? There are many reasons behind it, but the main one is the lack of inter-communication of various entities. I think that we can sum up the healthcare industry as a pyramid (Equilateral Triangle) that is comprised of Patients, Hospitals and doctors. Each of them is sitting at the edges and is equally far apart from the other.

Mankind found the importance of healthcare a thousand years ago, but still, we cannot bring all of these entities close enough so that due to small negligence and miscommunication, a patient should not suffer.

So, my project OneStop acts as a common stop for all of the 3 entities where they can hop on and do the work according to their role and thus resurrect the healthcare sector.

What it does

According to the role of the entity using it, it will provide the things to the user. So, let's talk about the various functions that can be undertaken by each of them:

1. Hospitals

The common thread between the patients & doctors is the Hospital, for sure. They not only make the healthcare functionalities accessible to both of them but also serve as a place that can coordinate numerous events at the same time. So, the same is being done in this project and thus this entity has the highest number of functionalities. Let's have a look at what things can it do:

🔴 It can add both patients and doctors under itself. Do note that the patients that are being registered by the hospitals are different than the sole patients that can register themselves on the website. As the hospitals already have a great chunk of paper records for their already registered patients, they can turn that tedious paper chunk into digital replicas by manually adding the patient details and reports, whereas the people who are not registered on the website yet (patients), can register themselves for the sake of getting an appointment with their doctors.

🟠 Under the patient's section, it can add test reports to the same and that is beneficial and will last long because those reports will be shifted to another hospital in case the patient gets referred to the other hospital. That's not it, the reports will be checked for maliciousness and if found that they contain some restricted data, then they will be blocked from entering the backend.

🟡 The appointment request sent by a sole patient will be delivered to the respective hospital and then it can Accept/Reject it according to the internal scheduling and other parameters. If accepted, the patient and the doctor will be notified so that they can use the common chat window to get the proceedings done.

🟢 Can change its registered details and thus can ensure that everyone will be updated regarding the current status of the hospital.

🔵 It is the only entity that can use the Virtual Voice Assistant and it can do a ton of things right through the voice and requires no hand movements at all (apart from login). It can direct you to the various pages of the website, fill up the patient creation form for you, tell you the status and number of appointments made by/from you, iterate over the already added patients and many small things that really elevate the project to new heights.


2. Sole Patients

The sole patients can get themselves registered and can make sure that they can get e-appointments with the doctor in the easiest and quickest possible way. Their dashboard is quite compact compared to that of hospitals and that ensures that everything is right before the eyes. Similar to the hospital entity, they also have to sign the agreement at the time of registration so that they can be legally bound to some restrictions/conditions because, in the end, everything is related to the precious lives of patients. The things that they can do are as follows:

🔴 Can use the search & sort functionality to look out for the specific type of doctors. Currently, there are 5 types (specializations) of doctors that can be added by a hospital: ENT (ear, nose, throat), Nerves, Eyes, Bones, Heart. So, if the patient wants to look out for an ENT-specialized doctor, then he can click/tap on the same label and then the details will be shown in the frontend. Further, he/she can look out for each doctor associated with the hospital so that he has options for his/her own treatment.

🟠 The above thing is for scheduling an appointment, but to see the pending/accepted appointments the right section can be used and it will show the status of each request that has been done by that patient. If the appointment is in the accepted state, then he/she can leverage the common chat functionality to interact with the doctors, look out for prescriptions and much more.

🟢 The last section tells the patient about the real-time stats of the hospitals that are registered on the website and thus can use it to see which hospital has better infrastructure and where the appointment acceptance chances are higher.

🔵 Profile section for the patient enables them to change their phone number, But to do so, they have to provide the SSN number that was shared with them during the registration process. Don't worry, I named the unique identifier as SSN because it provides security to the patient's account in the case of this application.


3. Doctors

If I had made a healthcare project without the doctor's entity, then it would be like a tree without leaves. And I have ensured that the doctors are only doing what they are hired for, not the extra stuff (like record maintenance, appointment request approval and stuff like that). The most intellectual entity on this platform will get its login credentials via email whenever the respected hospital adds him/her. Once the login credentials are shared, the doctor can access the minimalistic, effective dashboard that will show only the accepted appointments.

Once an appointment shows up, the doctor can use it to chat/interact with the desired patient. In that chat window, there will be a prescriptions section where the doctor can add up to 5 prescriptions and can also delete those which are not useful (as the diagnosis moves ahead). It can also view the General Questionnaire that will be filled by the patient. That document will help a lot to the doctor because now it can have a look at the patient's medical summary and get to know the minutes that are required for a successful session.

Note: Due to my limited knowledge and access to medical reports, I have not added different General Questionnaires for different specialities of doctors. To generalize the situation and for demonstration purposes, the same PDF will be shared by email and that has to be filled by the patient. I have invented the wheel, it's up to just using the correct variant for the correct situation. Invention is hard, not consuming it 😉 Patients can also ask for questions via the chat window. Whenever the doctor feels that the patient has recovered fully, then the discharge/relieve button can be pressed so that the appointment can be officially closed.

How I built it

This is a project that is made using the basic languages that you can see and I am proud to state that with those basic languages, I pulled off a project of this potential. The frontend is HTML, CSS & Vanilla JS whereas for the backend functionality, I have used PHP & MySQL (database). This goes for the website and whatever services have been used by it. As all of my data processing is being done at my PHP-backed backend, I redirected the PANGEA calls to a glitch-based NODE JS backend so that the load can be divided. The WhatsApp integration that I showed you, is using a NODE.JS backend file (hosted on GLITCH) that can handle the incoming WhatsApp messages and thus provide real-time response back to the patients.

This project is a result of tons of Lines of Code and a mixture of hard work and determination.

Now, let's specifically talk about 6 of those Pangea Services that I have used in this project:

Service No 1: Redact API

Why am I using it?:

The healthcare data usually contains sensitive data that should not be visible to the general public. So, I have redacted the entire PII in the patient's panel (SSN, phone and even email address). I didn't do that for the hospital entity because it is the common point between various end users, so it would be really frustrating in terms of slow output for millions of rows (data has to be sent for redaction after being extracted from the database) and more importantly hospitals will be needing the patient's info handy so that they can have a glance at it whenever needed.

Service No 2: Secure Audit Log

Why am I using it?

It is very important to keep track of who is using our website and do they face any issues while accessing or consuming it. So, for almost every activity performed by the end user (registration, login, referral requests, doctor addition, patient addition) and much more, I stored the successful and erroneous instances of the action in the audit log. I haven't redacted any infor there, because I am not storing anything personal in there.

Service No 3: AuthN

Why am I using it?

I am handling the sign-up/in process on my own and I am very happy with that. I did that because I had to check a lot of things in the backend and also invoke many external services. But when I was going through the AuthN documentation, I fell in love with the MFA functionality and believe me or not, I always wanted to add MFA functionalities to my project but never can't do that because of the high expertise required in that. Initially, I thought of changing my entire registration flow but I thought that it would make things only worse. So, I used the User Management aspect of AuthN** service. So, this is what calls I have done to make this happen?

1. Created a new user at the time of registration (user/create)

2. Updated the user's profile by supplying the registration parameters so that I can have a look at them via the Pangea console itself. (user/profile/update)

3. Then I am using the MFA endpoints and getting the newly registered user, enrolled for this great functionality after providing the correct MFA code, the registration becomes successful and then only the user can access his/her account.

Service No 4: File Intel

Why am I using it?

Whenever a hospital is adding reports for a patient, it is very important to check whether the to-be-uploaded files are safe or not. So according to the reputation and score returned by the File Intel API for the uploaded file. This one was quite difficult to implement, because here the only required step is to get a HASH of the file, and in my case, I had to provide the file's HASH from the client side to the backend side without it being sent internally. So, after many attempts, I tried to extract the buffered array of the file and passed it into the backend and thus everything worked fine.

Service No 5 & 6: IP & User Intel

Why am I using it?

At the time of registration and logging in, the user and IP intels are checked so that only the authorized entity can use it.

Challenges I ran into

There were infinite hurdles in completing the project and even with those hurdles, I crossed the finish line with a shining project in hand.

What I learned

From not knowing what Pangea is, to making around 5,000 call requests to Pangea as of now, I have done many out-of-the-box things that the others might have not done and I am really proud of each and every line of code that I have written. I have learned a lot about Pangea and used many of their available services via the API.

What's next for OneStop

I am not sure at this moment, because I think I have only added more than enough for each of the functionalities to my project. But I am always open to any suggestions

Share this project:

Updates