/MedViz

MedViz

Primary LanguageJava


Logo

MedViz

A data visualization application focused on empowering users to derive meaningful insights from medical data

Table of Contents
  1. About The Project
  2. Concepts Covered
  3. Feature List
  4. Project Setup

About The Project

Project Proposal

The Medical Visualizer, or MedViz for short, is a data visualization application focused on empowering users to derive meaningful insights from medical data including but not limited to patient records, and administrative payroll information.

Systems Analysis

MedViz extends the foundational, three-tiered data system by re-implementing it from the ground up with increased polish and refinement. The system will have a user interface layer in which users interact with a simple to understand GUI to read data and visualize the results. Users will be able to create logins with special priviledges for admin accounts with passwords being stored with proper password hashing and salting. Queries are processed and converted into accurate and performant logic in the second client tier of the system. Additionally, The server tier is connected to a NoSQL database and can handle multiple client requests, ultimatley serving results to clients using Restful APIs. The system will be concurrency safe to support multiple simultaneous client connections and can even run certain query types in parallel to maximize server load efficiency.

Data Sources

Data is drawn from Synthea. A project released by best-in-class Not-for-profit MITRE containing synthetic patient and population health data from the state of Massachusetts. Data will be loaded into and queried from a GCP Firestore NOSQL database hosted on a Firebase instance.

(back to top)

Concepts Covered

GUI

The project's graphical user interface, or GUI was built primarily with Java's Swing library. It uses a single frame which is repainted as necessary. The different frame paints include:

login

  1. Login Page: The page where the user logs in. Only verified users are a logged in and Admin accounts are given special priveledge. Additionally, the user is given a message that details whether entered information is missing, a username does not exist, or a password is incorrect. Navigation to the sign up page and a credential reset button is available.

signup

  1. Sign-Up Page: The page where a use can sign up. Checks are run on whether credentials are left empty and if a username is taken. The user is correspondingly notified. Once a user is signed up they can navigate to the login page and login using their credentials.

main

  1. Main Page: The main page functions as a way to naviage to the different parts of MedViz including the create, update, and delete patient information pages and the MedViz vizualization page. All of those pages contain a link to navigate back to the main page. Users can also logout from the main page which closes the client application.

create

  1. Create Patient Page: The create patient page allows users to enter patient information in order to create a new patient record in the database. Input validation is conducted at the client level. Additionally, if users try to create a patient that already exists, they are notified of this error.

medViz

  1. MedViz Page: The MedViz Page allows for two different types of data visualization. The first is a visuzalization based on looking up a particular value with choices for the types of conditions applied to that value, including equals to, less than, less than or equals to, greater than, greater than or equals to, and not equals to. The second visualization allows users to search up frequency of a given condition, selected from a drop down menu, betweeen a range of years. This is the marquee feature of MedViz.

update

  1. Update Patient Page: The Update patient page allow users to update any value within a patient record. Standard input validation and patient existence checking is applied.

delete

  1. Delete Patient Page: Admin privledged users can delete patient records from the database.

Networking

Networking is implemented using the traditional client-server architecture. A MedViz client runs as a standalone program which connects over a netowork to a MedViz server. This enables multiple clients to connect to the same server. Servers handle clients by receiving the connection in a dedicated thread. This allows for the server to communicate with clients individually and isolate information exchange.

Concurrency

Concurrency in MedViz is implemented at two levels. The first is at the database source. Firestore has been configured such that no records can be read or written to at the same time making it threadsafe. On the second level, locks have been used within the server program so that no two clients trigger race conditions when communicating with the database through the server.

Database Support

MedViz uses Google's Firestore service. Google Firestore is a cloud-based NoSQL document database that enables MedViz to store, sync, and query data from within the Java application. It was chosen due to ease of configuration scalability, allowing us to load the database with several thousand patient records, leading to a meaningful prototype. Firestore empowes MedViz's user authentication system, patient record interaction, and general data storage.

(back to top)

Feature List

Login

  • User login and authentication
  • Responsive user messaging

Sign Up

  • Account creation
  • Account creation validation
  • Responsive user messaging

Patient Creation

  • New patient record creation
  • Input validation

Value Lookup Search

  • Field value look up

  • 7 different look up conditions supported

  • Results are visualized in scrollable, easy to read table format

    update

Patient Update

  • Patient record updating
  • Input Validation
  • Responsive messaging

Patient Deletion

  • Patient Deletion
  • Seperation between admin and average user priveledges

Aggregate Value Search

  • Search for condition data bounded by year

  • input validation

  • Data visualization

    agg

(back to top)

Project Setup

MedViz can be set up on your system by first installing Maven on your system. If you have a Mac with homebrew installed, simply type the command "brew install maven" into your terminal, otherwise follow these instructions: https://maven.apache.org/download.cgi

To obtain permissions for our database, you must first install Google's CLI: https://cloud.google.com/sdk/docs/install

Once Google CLI is installed, run "./google-cloud-sdk/install.sh" from the folder in which it was installed, and be sure to allow the CLI to modify your PATH variable so that it can automatically set your permissions. Note that this may take a few minutes.

run "./google-cloud-sdk/bin/gcloud init", sign in as either your NYU email if you are a TA, or as your provided gmail address if you are the professor. Choose MedViz as your default project

You can then enter the command "gcloud auth application-default login" and sign in to your email to set your default Google credentials and have read/write access to our DB. After this, you should be able to simply run the Server file under src/java/main/Backend in Eclipse, and connect as a client with Main under src/java/main/GUI in Eclipse.

User access:

UserID = user

Password = user

Admin access:

UserID = admin

Password = admin

You will also have access to the Firebase console by logging in here: https://firebase.google.com/, choosing "MedViz" and clicking "go to console" on the top right of the page. Click "Firestore Database" on the leftside menu to explore the database

(back to top)