bitabs / HeartFailure

An application designed to receive, process and visualize data from ECG and Stethoscope external devices.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

js-standard-style

Project Briefing

In a normal healthy heart, during each heartbeat a set amount of blood enters the heart and is pumped out again. If you have heart failure, your heart cannot cope with pumping the full amount of blood in each heartbeat. The incidence of heart failure is increasing. Over half a million people in the UK have been diagnosed with heart failure. Heart failure is not a static disease and the patient’s condition might worsen rapidly which calls for a rapid treatment response.

The most common measure for home monitoring of Heart failure patients is body weight, which relates to the patient’s fluid balance. However, the benefits of such systems are limited. Therefore a system, which combines ECG and heart sounds, is proposed for home monitoring. The advantage of combining ECG and heart sounds is that they, in combination, measure both the mechanical and electrophysiological function of the heart in real-time. The challenges are many and include design of a system, which is easy and comfortable to use, and development of mobile applications for visualization and processing of the signals.

Aim

This project aims at designing a mobile application (App) capable of receiving data from an external device, process and visualize for the patient. The project may include setting up a remote server for data storing. At the end of the project, the student should submit a report. Source codes and hardware are delivered to the project proposer. This project can be completed in close collaboration with the student working with project ENK01.

Installation
git clone https://github.com/NaseebullahSafi/HeartFailure.git HeartFailure
cd HeartFailure
npm install
Run Application
cd HeartFailure
react-native run-ios        // Run Build for IOS
react-native run-android    // Run Build for Android
Folder Structure
HeartFailure
├── App                      // Main Application logic lies here
   ├── Components           // "Dumb" components are stored here.
      ├── Styles           // This folder contains the style files that match the naming of our components
   ├── Config               // All application specific configuration falls in this folder
   ├── Containers           // "Smart Component" lies here
      ├── Styles           // This folder houses our container styles
   ├── Fixtures             // All key API responses are housed here (Not used in our proj)
   ├── Images               // Static images used in our project are stored here
   ├── Lib                  // Reusable components outside our project
   ├── Navigation           // Cinfgures our application routing
   ├── Redux                // A place to store our Redux files (default setup from the scaffolding)
   ├── Sagas                // A place to store our Sagas (default setup from the scaffolding)
   ├── Services             // API calls to external services
   ├── Themes               // A place to contain styles shared across our project (fonts, colors, etc.)
   └── Transforms           // Working with APIs is to change data so
├── README.md
├── Tests                    // Unit testing directory              
   ├── Components           // Unit testing of our components
├── android                  // Access point to our android platform
   ├── app
   ├── build.gradle
   ├── gradle
   ├── gradle.properties
   ├── gradlew
   ├── gradlew.bat
   ├── keystores
   └── settings.gradle
├── ignite
   ├── ignite.json
   └── plugins
├── index.android.js
├── index.ios.js
├── ios                      // Access point to our IOS platform
   ├── HeartFailure
   ├── HeartFailure-tvOS
   ├── HeartFailure-tvOSTests
   ├── HeartFailure.xcodeproj
   └── IgniteProjectTests
└── package.json

External Libraries

Because this project uses Ignite CLI scaffolding, certain libraries have been installed by default, to organise the application and hold the basic structure. However, these libraries are not entirely reliant within our custom react-native components; bu they are still needed by Ignite CLI. For example, the libraries below are installed by the CLI to organise our project.

Libraries used by Ignite CLI Scaffolding

apisauce, convert-string, metro-bundler, ramda, ramdasauce, react, react-native-popup-menu, react-redux, redux, redux-form, redux-persist, redux-saga, reduxsauce, seamless-immutable

Below are some libraries that are used within our components. Some libraries from below are not integrated to certain components due to incompatibility issues, but can be used if integrated to react-native modules. For example: slayerjs is a node module which cannot be used within react-native.

Libraries used within our react-native custom components

react-native, firebase-mock, lodash, moment, prop-types, react-native-ble-manager, react-native-check-box, react-native-firebase, react-native-highcharts, react-native-svg, react-native-tab-view, react-native-timeago, react-native-vector-icons, react-navigation,

App/Fixture Directory

Within this folder, Ignite has generated some dummy data that is closely coupled with Redux. We can't remove these data as it breaks the whole application. Our application does not use Fixtures, and therefore, we do not deal with any of the data from there.

User's images

Dummy images have been taken from google images. Some Images may hold copyright, and some not.

Credits

Lead Developer - Naseebullah Ahmadi (@Naseebullahsafi)

License

The MIT License (MIT)

Copyright (c) 2018 Naseebullah Ahmadi

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

The software is provided "as is", without warranty of any kind, express or implied, including but not limited to warranties of merchantability, fitness for a particular purpose and noninfringement. In no event shall the authors or copyright holders be liable for any claim, damages or other liability, whether in an action of contract, tort or otherwise, arising from, out of or in connection with the software of the use of other dealings in the software.

About

An application designed to receive, process and visualize data from ECG and Stethoscope external devices.


Languages

Language:JavaScript 97.0%Language:Objective-C 1.6%Language:Java 0.7%Language:Python 0.6%