This project simulates the functionality of the RaDoTech health monitoring device, including scanning, data processing, and visualization of health metrics for different user profiles. The system allows users to initiate scans, view results in charts, and monitor device states like battery level.
| Name | Role | Contributions |
|---|---|---|
| William Marcus | Developer | Developed code for the scan process in the RaDoTechDevice and DataProcessor class along with the data visualizations within the Visualization class. Created state machine diagrams for the app and device. |
| Param Desai | Developer | Developed the CUD Profile implementation, Login and Register logic, viewing History Data (health indicators, recommendations and comments) from the Health Data points, and implemented MainWindow classes. |
| JC Sevigny | Developer | Designed and structured the program infrastructure, ensuring a robust foundation for development. Contributed to the UML Class Diagram, aligning design elements with functional requirements. Created Sequence Diagrams to clarify the app's flow, ensuring consistency and a smooth user experience. Researched and implemented HealthData algorithms for key indicators, using insights from RadoTech videos and AI. |
| Abdelrahman ElShafay | Developer | Designed and implemented functionality for the Battery object class within the RaDoTechDevice, including depletion and charging mechanisms, as well as the logic for device pairing initialization. Developed a comprehensive Traceability Matrix to ensure requirements alignment. Created detailed UML Class and Use Case Diagrams, refining existing use cases for accuracy and completeness in the use cases form. |
- Observer Pattern
- The Qt's Signal SLot Merchanism is an implemtation of the observer pattern used in this project. The mechanism helps enabling communication between the components and classes to emit a signal by one obect when a certain event happens and the other obhects that are connected to htis singal respond by invoking slots.
- Mediator Pattern
- The
Mainwindowclass serves as the mediator between theRaDoTechDeviceclass to theDataProcessorclass and then to theHealthDataclass to push the data from the scan made from the device to theHealthDataclass after the data is processed and so theMainWindowclass acts like the mediator between the classes. - Another example is when the
MainWindowclass is responsible of showing the data from theHealthDataclass to the UI, so theMainWindowclass grabs the data from theHealthDataclass and distributes it to theVisulizationand theRecommendationclasses to display the data.
- The
- Strategy Pattern
- The
HealthDataclass uses the strategy pattern to run the algorithms to calculate the health indicator data values like the Energy level and the Immune System level data values using formulas we researched. - So this pattern is used just to run the algorithms on the data given after scans to visualize the historical data.
- The
- State Pattern
- This pattern is used in the
RaDoTechDeviceclass to change the state of the device from ON to OFF and vice versa. Also used to change the state of the device from scanning the user to not scanning the user and staying idle while the battery is depleting.
- This pattern is used in the
- The team wanted this approach to be an experience of using the app and the device properly instead of having simulations run a lot of the main functionality. We went with two different proper views in this project which was the device view and the app view. The device view is the view of the device itself which has the buttons that the actual device would have like the battery charging, scanning on skin and taking off skin, connecting to the app and major display of the battery level of the device. The app view shows the actual app view of the RaDoTech app which has the different tabs of the history data which has the visulization of the data, login page, create profile page and also viewing all of the created profiles. This approach was chosen to give a real life experience of using the device and the app and to show the functionality of both of them.
- For the algorithm to get the health indicator data points this was the initial research that was done through the RaDoTech website and also using AI to get the algorithms made from the sample data points from the video we were shown in class. These are the calculations we researched and used through the data points:
- Energy Level
Energy Level = (Left Total + Right Total) / (Total Meridians × Energy Scaling Factor)
- Scaling Factor: 2.78
- Normal Range: 25-55
- Immune System
Immune System = (Upper Body Left Total + Upper Body Right Total) / (6 × Immune Scaling Factor)
- Includes all upper body meridians starting with "H".
- Scaling Factor: 52.1
- Normal Range: 47-57
- Metabolism
Metabolism = Left Total / Right Total
- Ratio of left to right side conductance.
- Normal Range: 1.1-1.2
- Psycho-Emotional State
Psycho-Emotional State = Sum of Emotional Meridians Conductance / (Number of Emotional Meridians × Emotional Scaling Factor)
- Emotional meridians include H1 (Lung) and H2 (Pericardium).
- Scaling Factor: 80.71
- Normal Range: 0.8-1.2
- Musculoskeletal System
Musculoskeletal System = (Lower Body Left Total + Lower Body Right Total) / (6 × Musculoskeletal Scaling Factor)
- Includes all lower body meridians starting with "F".
- Scaling Factor: 86.0
- Normal Range: 0.9-1.2
- Average Value
Average Value = (Left Total + Right Total) / (Total Meridians × Energy Scaling Factor)
- Left Total
Left Total = Sum of Conductance of All Left-Side Meridians
- Right Total
Right Total = Sum of Conductance of All Right-Side Meridians
- Left-Right Ratio
Left-Right Ratio = Left Total / Right Total
- Upper Total
Upper Total = Upper Body Left Total + Upper Body Right Total
- Includes all upper body meridians starting with "H".
- Lower Total
Lower Total = Lower Body Left Total + Lower Body Right Total
- Includes all lower body meridians starting with "F".
- Upper-Lower Ratio
Upper-Lower Ratio = Upper Total / Lower Total
- Class Diagram
Class Diagram/UMLClassDiagram.png: UML Class diagramClass Diagram/TextualRepresentationUML.md: UML Class diagram textual explanation
- Sequence Diagrams
Sequence Diagrams/Battery.png: Battery charge and depletion sequence diagramSequence Diagrams/Battery_Textual_Explanation.txt: Battery charge and depletion sequence diagram textual explanationSequence Diagrams/CUD_Profile.png: Create, update and delete profiles sequence diagramSequence Diagrams/CUD_Profile_Textual_Explanation.txt: Create, update and delete profiles sequence diagram textual explanationSequence Diagrams/Login-Sequence.png: Login sequence diagramSequence Diagrams/Login-Sequence_Textual_Explanation.txt: Login sequence diagram textual explanationSequence Diagrams/Register_and_NewProfile.pngRegister user and create new profile sequence diagramSequence Diagrams/Register_and_NewProfile_Textual_Explanation.txt: Register user and create new profile sequence diagram textual explanationSequence Diagrams/Successful_Scan.pngSuccessful scan sequence diagramSequence Diagrams/Successful_Scan_Textual_Explanation.txt: Successful scan sequence diagram textual explanationSequence Diagrams/View_History.png: View scan history sequence diagramSequence Diagrams/View_History_Textual_Explanation.txt: View scan history sequence diagram textual explanation
- State Machine Diagrams
State Machine Diagrams/App_State_Machine.png: Applicaiton state machine diagramState Machine Diagrams/App_State_Machine_Textual_Explanations.txt: Applicaiton state machine diagram textual explanationState Machine Diagrams/Device_State_Machine.png: Device state machine diagramState Machine Diagrams/Device_State_Machine_Textual_Explanations.txt: Device state machine diagram textual explanation
- Requirements Traceability Matrix
Traceability Matrix/TraceabilityMatrix.pdf: Requirements traceability matrix
- Use Cases
Use Cases/UseCasesForm.pdf: Use cases documentUse Cases/UseCasesDiagram.png: Use case diagram
- Videos
Videos/LoginAndCUDProfile.mp4: Video demonstrating login and create, update, delete profileVideos/RegisteringUserSequenceDiagramDemo.mp4: Video demonstrating user registration and profile creationVideos/BatterySequenceDiagramDemo.mp4: Video demonstrating battery charging and depletionVideos/Successful_Scan.mp4: Video demonstrating process of pairing device performing successful scanVideos/ViewHistorySequenceVideo.mp4: Video demonstrating viewing of historical data
- QT Creator
- QT Charts
- run this command in the terminal
sudo apt install libqt5charts5-devto download QtCharts
- run this command in the terminal
- Unzip the file
Team26RaDoTechSimulation.zip - Open .pro file located in
RaDoTechSimulation/RaDoTechSimulation/RaDoTechSimulation.proin QT Creator - Clean the project
- Build the project
- Run the project
- To see images on the Project please put/copy the images folder/directory (Team26RaDoTechSimulation/images/) in the following path /home/student/Desktop/Final/3004-Final-Project