MediPal is open source medical software that gives users true access to their holistic health picture.
This application is meant to solve the pain points of long term medical patients that want to have their information easily accessible, especially in today's medical system where medical teams are low-staffed and overburdened.
The project is based on Blazor Web App with capability of both client and server side rendering. All main information is currently stored server side, allowing for direct database access without required web API calls. Information is currently stored on local databases using SQL Express.
Authentication and authorization are both applied to ensure proper access to the application, both through use of general user login and assigned roles. CRUD operations are executed to update information such as symptom tracking for each user.
I want this project to empower patients to learn more about their circumstances, relieve their pain points in communication, as well as provide a relief to the medical team's burden to keep patient's constantly performed in an already overwhelming environment.
- Model-View-ViewModel (MVVM) Architecture
- Model (database, models such as Symptom and ApplicationUser)
- ViewModel (Code blocks in razor files, commands, and services interfaces)
- View (razor components and HTML templates
- Account creation with full form validation and error handling
- Full CRUD functionality MS SQL Server database
- Symptoms
- Notes
- ASP.NET Core Identity implementation with authentication and authorization
- Current user authentication state handling to display user-specific data
- Create calendar appointment functionality (Syncfusion), display in multiple formats
- Doctor Dashboard allowing for selection of patient by name (read by patientId) and view/edit of information
- Models containing properties with backing fields and constructor
- List collection to hold symptoms (accessed through interface)
- List collection to hold doctors (hard coded)
- Button interactivity to validate properties with model and allow/not allow for form submit as appropriate
- Logic to execute specific actions if collections do not show, async functionality, JavaScript interaction when deleting symptoms for user-feedback.
- Model classes for base object structure
- Service interfaces to allow for abstracted interaction with async functions and loosely coupled components
- Foreign key implementation in relational database (MS SQL Server)
- Authorization role based access for specific pages and components
- Populate user dashboard items with user account information using current user authentication
- Database seeding to ensure admin account, roles, and other features are always added to database in new environments
- Client-Side rendering for specific features
- Chat Functionality
- Cloud Storage
- Add Azure Open Search integration
- Add Open AI integration
This project has emphasized the value of proper design with loosely coupled components to facilitate reusability and maintainability. This design has allowed for easier and more effective debugging, as well as ability to work on separate components without breaking the functionality of others.
More importantly, I've learned that there are technical aspects, such as the code design and implementation, and there are functional aspects, referring to how the program functions when used by an actual user. The key to building a great project is bridging these two concepts.