MEDPRO is a Java Spring Boot application created for doctors, nurses, and medical providers to keep track of patient data.
It is the group capstone project for LaunchCode's Liftoff program. All CRUD operations (Create, Read/Retrieve, Update, and Delete) are demonstrated, which are the four basic functions of persistence storage.
CONTENTS
- Technologies Used
- Crud Operations
- User-Scenarios
- Application Flow
- Data Model and Entity Mapping
- Database and Back-end
- Front-end
- Additional Features
- Installation
- About the Developers
- Java
- Spring Boot
- Gradle
- Spring Data JPA
- Hibernate
- Javascript
- HTML
- CSS
- Bootstrap 5
- PostgreSQL
- REST API
- POST: Creates a new resource (A patient form can be filled out and saved to the database on form submit)
- GET: Reads a resource (Patient data can be displayed from the database)
- PUT: Updates an existing resource (Patient data can be edited and saved to the database)
- DELETE: Deletes a resource (Patient data can be deleted)
The application provides the following user (doctor/provider) scenarios:
-
Creating a doctor/provider account: The doctor/provider (user) needs to create an account before patient information is saved in the back end.
-
Provider Log in - the medical professionals will be able to create a profile and log into their account.
-
Create and Update Records: the medical provider will be able to create and update notes for certain patients.
-
Deleting: Doctors/Providers (users) can delete patient information.
-
Accessing Records: the medical provider will be able to access their patient's profiles/records.
-
New Patient Registration - We need atleast one doctor to be already present.
-
Patient Log in - Patient will be able to log into their account.
-
Creating new appointment, Viewing the list of appointments.
-
Cancel the future appointments if needed.
MEDPRO is a Health Care app to maintain patient visit updates from the provider side and the appointments from patient side. We have 2 different target users in our project. The first and primary user is a medical provider and the other user is a patient. Our application allows the provider to view the scheduled appointments and related patient details. They can also update the diagnostics, prescription, and the provider notes on the appointment visit for a selected patient. The app also allows the patient to schedule an appointment with the primary care provider and add or cancel appointments.
Authentication: we have separate authentication (login feature) pages to authenticate both users (providers and patients).
Doctor Flow:
- New doctor registration
- Doctor Login/Logout
- Add Patient details, diagnostics, prescription
- Edit/update Patient
- Delete Patient
- View Appointments and pull patient record.
Patient Flow:
- New Patient registration
- Patient Login/Logout
- View list of Appointments
- Add New Appointment
- Cancel Appointment
- One doctor to many patients (@OneToMany on the Doctor @Entity model)
- Many patients to one doctor (@ManyToOne on the Patient @Entity model)
- One patient can have many appointments (@OneToMany on the Patient @Entity model)
- One doctor can have many appointments (@OneToMany on the Doctor @Entity model)
- Has at least 3 tables
- Contains at least 1 one:many relationship between tables
- Tables contain data
- Connects to server
- Server
- Uses an ORM (such as Hibernate)
- Uses DAO (Data Access Object) design
- Handles requests
- Sends responses
- Accepts requests from a front-end
- Web application with at least 3 views
- Discord bot
- Command Line Interface
- The application is using a GET request to display data from OpenFDA through its Drug API Endpoints.
- A dropdown menu allows the provider to select a drug from the OpenFDA Drug API. The drug dropdown is populated with a list of the most common medications seen on the NCLEX-RN exam, which is required for registered nurse licensure in the USA, Canada, and Australia.
- The selected drug is saved to the database table on submission of the patient form.
- The provider can view associated drug information (e.g., adverse reactions, boxed warnings, and dosage and administration) pulled from the OpenFDA Drug API.
- Java 11
- Spring Boot
- PostgreSQL
To have this app running on your local computer, please follow the below steps:
Clone repository:
$ git clone https://github.com/Jan-23-Liftoff-KC/team-lindsay-group-repo.git
Create new backend server:
Create a free database server with AWS or use pgAdmin 4 on your computer to create and maintain a local postgreSQL database session
Update application properties file:
spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.PostgreSQLDialect
spring.jpa.hibernate.show-sql=true
spring.datasource.url=jdbc:postgresql://localhost:5432/postgres
spring.datasource.username=username
spring.datasource.password=password
# Hibernate ddl auto (create, create-drop, update)
spring.jpa.hibernate.ddl-auto=create-drop
logging.level.sql=debug
spring.jpa.show-sql=true
spring.datasource.initialization-mode=always
spring.datasource.initialize=true
spring.datasource.schema=classpath:/schema.sql
spring.datasource.continue-on-error=true
Get URI from AWS or use pgAdmin 4 to connect to your localhost. If you're using pgAdmin 4, the URI will look something like this:
spring.datasource.url=jdbc:postgresql://localhost:5432/postgres
Run the file in IntelliJ (or your IDE of choice)
Navigate to localhost:8080/home.html
Kevin Peery is a software engineer and registered nurse in Houston, TX. He holds a bachelor's degree with double majors in business economics and history from the University of Texas at Austin, a Bachelor of Science in Nursing from the University of Texas at Arlington, and an Associate of Science in Computer Science. He has also completed several software engineering immersive programs. Kevin has had previous experience with the Database as a Service (DBAAS) team at a major oil and gas company where he focused on Angular development. He has completed training programs and has coding experience in langauges such as Java, Spring Boot, JavaScript, Angular, React, Ruby, Ruby on Rails, and C#. In addition to software development and active learning, Kevin enjoys running and staying healthy.
Connect with Kevin:
Connect with Megan:
Connect with Ryan:
Nisha Rajendran is a stay at home mom who holds a Bachelor Degree in Computer Science and Engineering and has about 10+ years of Software Industry work Experience in Financial Domain. She worked for Fiserv Inc., in India and took a break to provide care for her family and willing to restart her career now. She is continuing to upgrade her skills by learning new technologies and tools. She has completed LC101 web development course with Launchcode in December 2022 to learn technologies like Java, Springboot, Rest API, Javascript, Angular Basics, MYSQL, PostgreSQL, HTML, CSS and Bootstrap.
Connect with Nisha:
Connect with Kavin: