Inspiration
For this hackathon's theme of health/healthcare, we were motivated to build this app to improve accessibility to patients' medical records, so patients are more aware of their health progress and can take initiatives in improving it. It also improves transparency for patients by allowing them to know exactly what information doctors have about them, which can facilitate communication between patient and doctor. Patients can also then let doctors know if additional information needs to be added or if any errors or misrepresentations exist their record. It also helps to reduce wait times for doctor visits because patients are more aware about their health status from their last visit. It can save storage/transportation fees required by paper records, and all the records are retrievable in the case of catastrophe.
What it does
Our web app provides two views: patient view and doctor view. Patients will be able to see all the records they have for themselves, including a history of doctor visit times, doctors visited, diagnoses made, and medications prescribed. Doctors can see all the records of all the patients they have. Doctors can edit patient records to add new diagnoses, discussion points, prescriptions, and any medical concerns with the patients. Patients can view their health records and edit personal contact information, but they cannot edit diagnosis information. We decided to do this to protect the integrity of diagnosis records. Patients can also upload records exported from Apple Health in the form of a CSV, which is visualized to show trends in patient health. Doctors can also add new patients, but patients must register at the doctor's office to create a new account. This is to make sure there are no duplicates of records for a single individual. Both views require logins to protect confidential information and prevent it from falling in the wrong hands.
How we built it
We decided to build the front end with React and the backend with C++. We wrote an API in Javascript and parsed information from there to show the patient details; we used Docker as a container management system and MongoDB for the database. csv to json conversion was done in C++.We designed the main page, doctor and patient view using React/CSS/JS. Unfortunately, we did not have time to finish all of the components we wanted (see last section), so some mock JSON data was used in the interest of time.
Challenges we ran into
Our biggest challenge was the limited time we had to work on the project. We had a lot of features we wanted to implement, but we didn't have the time to finish linking them all together. We initially started with four members, but one member chose to leave the team to work on a different project. We also struggled to set up a framework in which the frontend and backend could interact properly. It was very challenging to get the project set up to run on both Node and C++; we all had different experience levels in the different languages we used, so we all had to learn to use various new tools. Two of us were also beginners in computer science in general and would have qualified for the beginner division.
Accomplishments that we're proud of
We were able to get the front-end up and running and looking presentable. There are a lot of files in the front end that are responsible for the different components and pages. So, organizing them and identifying which one is necessary vs which one is not was an accomplishment. We got the front-end components and pages to act properly, as far as we can tell. We are also happy we can get the Modal stuff to work last minute when the nested React routers did not work, and we spent a lot of time on it. We also gained further knowledge about React and how to use it to build the frontend. We also found a different implementation when our initial approach did not work. We learned how to work with API in JS.
What we learned
We learned how to adapt to the changing team and how the project would look as there are other issues that may arise as the project progresses. We learned about C++ development on the backend, and the methods to use it with Node. Also learned about using responsive styling with React for the first time. We also learned that React V6 routing is different, so it was interesting to learn about nested routings.
What's next for B++MedicEHR
- Adding login authentication and deploying a live site.
- Linking existing frontend and backend components.
- Adding search functionalities and build out the API and website functionality to be more robust.
- Visualizing processed Apple Health data with ChartJS.
Log in or sign up for Devpost to join the conversation.