Skip to content

Mediscreen is a SpringBoot web application specializes in detecting risk factor for diabetes.

Notifications You must be signed in to change notification settings

GAulombard/OC_P9_Mediscreen

Repository files navigation


About The Project

Mediscreen is a springBoot application using a multi-service architecture. This application allow doctors/practitioners to fetch personals information on patients. Depending the informations, the application can generate a diabetes report.

(back to top)

Built With

(back to top)

Architecture

Mediscreen use 4 different micro-services :

  • UI-API: this microservice handles the user interface part of the application, it receives all HTTP requests from the user, send http request to others services, get the responses and modify the view.
  • PATIENT-API: this microservice allows patient information management, like add, update and delete patient information. This service use MySQL database to store information.
  • HISTORY-API: this microservice handles the history of each patient. It allows practitioners/doctors to add, update, delete notes about patient. Notes are stored in a MongoDb database.
  • ASSESSMENT-API: this part of the application is used to gather all information about a patient (personal and history) in order to calculate the risk level to have diabetes.

architecture

(back to top)

Diabetes calculation logic

This is the logic to calculate the diabetes risk level based on "conditions". Just follow the lines and answer the question by "yes" or "no" until you get the result. diabetes_logic

(back to top)

Getting Started

Installation

  1. First, create a new directory, and go into it.
cd /path/to/directory/yourProjectName
  1. Clone the project using:
git clone https://github.com/GAulombard/OC_P8_Mediscreen.git
  1. Use the following command to run the app:
 docker-compose up -d --build 
  1. For the first time, execute the following CURL command to fill-in the mongodb database with few notes (find those here "./resources/curlAddNote.txt"). You can as well run those CURL commands online, reqbin.com
curl -X POST "http://localhost:8082/history/validate" -H  "Content-Type: application/json" -d "{  \"note\": \"Patient: TestNone Practitioner's notes/recommendations: Patient states that they are 'feeling terrific' Weight at or below recommended level\",  \"patientId\": 1}"

curl -X POST "http://localhost:8082/history/validate" -H  "Content-Type: application/json" -d "{  \"note\": \"Patient: TestBorderline Practitioner's notes/recommendations: Patient states that they are feeling a great deal of stress at work Patient also complains that their hearing seems Abnormal as of late\",  \"patientId\": 2}"

curl -X POST "http://localhost:8082/history/validate" -H  "Content-Type: application/json" -d "{  \"note\": \"Patient: TestBorderline Practitioner's notes/recommendations: Patient states that they have had a Reaction to medication within last 3 months Patient also complains that their hearing continues to be problematic\",  \"patientId\": 2}"

curl -X POST "http://localhost:8082/history/validate" -H  "Content-Type: application/json" -d "{  \"note\": \"Patient: TestInDanger Practitioner's notes/recommendations: Patient states that they are short term Smoker\",  \"patientId\": 3}"

curl -X POST "http://localhost:8082/history/validate" -H  "Content-Type: application/json" -d "{  \"note\": \"Patient: TestInDanger Practitioner's notes/recommendations: Patient states that they quit within last year Patient also complains that of Abnormal breathing spells Lab reports Cholesterol LDL high\",  \"patientId\": 3}"

curl -X POST "http://localhost:8082/history/validate" -H  "Content-Type: application/json" -d "{  \"note\": \"Patient: TestEarlyOnset Practitioner's notes/recommendations: Patient states that walking up stairs has become difficult Patient also complains that they are having shortness of breath Lab results indicate Antibodies present elevated Reaction to medication\",  \"patientId\": 4}"

curl -X POST "http://localhost:8082/history/validate" -H  "Content-Type: application/json" -d "{  \"note\": \"Patient: TestEarlyOnset Practitioner's notes/recommendations: Patient states that they are experiencing back pain when seated for a long time\",  \"patientId\": 4}"

curl -X POST "http://localhost:8082/history/validate" -H  "Content-Type: application/json" -d "{  \"note\": \"Patient: TestEarlyOnset Practitioner's notes/recommendations: Patient states that they are a short term Smoker Hemoglobin A1C above recommended level\",  \"patientId\": 4}"

curl -X POST "http://localhost:8082/history/validate" -H  "Content-Type: application/json" -d "{  \"note\": \"Patient: TestEarlyOnset Practitioner's notes/recommendations: Patient states that Body Height, Body Weight, Cholesterol, Dizziness and Reaction\",  \"patientId\": 4}"
  1. Stop the app using :
docker-compose down

Run the tests

Use the following command to run tests in assessment-api directory, or history-api directory, or patient-api directory, or ui-api directory:

gradle test

(back to top)

Usage

This app allows you to get a list of all patient. You can see on the board a part of their personal information, and how many notes they have in the history.

list

Each patient have a profile. In this page you have the details of the notes written by a doctor/practitioner, the personal information of the patient. You have also a direct report concerning the diabetes risk level.

profile

You can see an individual diabetes report

individual

And you can see a family diabetes report

family

(back to top)

Endpoints

Use the following url after starting the application to see the Swagger API documentation.

(back to top)

Contributing

Contributions are what make the open source community such an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated.

If you have a suggestion that would make this better, please fork the repo and create a pull request. You can also simply open an issue with the tag "enhancement". Don't forget to give the project a star! Thanks again!

  1. Fork the Project
  2. Create your Feature Branch (git checkout -b feature/AmazingFeature)
  3. Commit your Changes (git commit -m 'Add some AmazingFeature')
  4. Push to the Branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

(back to top)

License

Distributed under the MIT License. See LICENSE.txt for more information.

(back to top)

Contact

Author: Geoffrey Aulombard - Java web-application developer student at OpenClassRooms

@your_twitter - [email protected]

(back to top)

About

Mediscreen is a SpringBoot web application specializes in detecting risk factor for diabetes.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages