eAPEM is a private blockchain based solution built for the problem statement submitted by Ministry of Health and Family Welfare in the Smart India Hackathon 2020. This application focuses on use of private blockchain to create and manage electronic health records on top of the existing Aadhaar Identity Infrastructure (UIDAI).
While desiging a system to be utilizied by a country like India, it is very important to keep in mind to tackle problems such as scalability, security and cost efficiency. Private blockchains offer all the above along with decentralization in a closed ecosystem.
The main idea of this application is to form a consortium of trusted parties and have a role based access system headed by a central authority which in our case would be the government i.e the parties can only make transactions and call functions which are permitted to them. This is taken care by the Certificate Authority or CA. For Eg: The phamacist present in the network can only query the prescriptions while a clinician can add/query reports and prescriptions.
The role of the Central authority would be to add and remove entities from the consortium. Other consortium members included in the application:
- Clinician: A clinician peer would be allowed to add/query reports and prescription.
- Radiologist: A radiologist peer can add/query reports and precriptions along with addition feature of adding medical images. The medical images added will be encrypted and stored securely on IPFS
- Pharmacist: A pharmacist peer can only query prescriptions.
- Health Care provider: A healthcare provider peer can query reports and prescriptions.
- Test Center: A test center peer can add reports only.
- Researcher: A researcher peer can download dataset and visualize medical data from different parts of country only if permitted by the user.
The users of the application/medical data holders are provided with a permission system. Using this permission system the record holders can add/revoke permission to a given organisation for accessibility of their medical records. The users are also provided with crypto incentives if they agree to share their data with researchers.
Since it might not actually be necessary for all the peers to store all the transactions, we use Private Data Collection technique to make sure that there is a better data storage management. For the Pharmacist Peers in our network, there is no need for them to store the data related medical reports since they can only access prescriptions and also considering constrains such as size of total data. Hence with the help of Private Data Collection, it is made sure that the Pharmacist stores only the data related to addition of Prescription reports while all the other peers can store the data related to both medical reports and prescriptions.
- Localisation of the application, i.e the application is avaiable to use in multiple languages.
- Easy to use mobile application for users: The users can use the mobile app to grant/revoke permission by just scanning organisation's QR code
- Test centers are provided with a OCR functionality. The data can be entered automatically by uploading a medical report.
- SMS Gateway is provieded for users through which they can use the functionalities by sending SMS.
- Data visualisation for researchers.
- Ethereum based crypto incentive system for users when they agree upon sharing their data for researcher purposes.
- Ready to download password protected report PDF's.
- Private API's to access the medical images stored on IPFS.
Make sure you have installed Docker and Nodejs v^8.13.0 < v10.10.0 for the web app
1. In the root directory first run ./start.sh : this will create the required containers
2. Then run ./setup.sh : this will connect the peers and install the chaincode
3. cd to ehr-api directory and run 'npm install'
3. Then run the enrollUsers.js files ( For all the users )
4. Finally, run 'npm start'
The application can then used at https://localhost:3000
The source code for mobile app is placed in the AarogyaMobileApp directory.
1. Install the Expo app in your mobile phone from AppStore or Google Play Store.
2. cd to AarogyaMobileApp directory and run 'npm install'.
3. You need to have a tunnel between the Web App api and Mobile App, we recommand to use ngrok.
4. Start a [ngrok](https://ngrok.com/) tunnel at port 3000 from your command prompt
5. The ngrok link needs to be put in webServer.js file present in the 'api' directory inside the 'src' directory of AarogyaMobileApp
6. After setting up the ngrok link, you can run 'npm start' from root of AarogyaMobileApp directory.
7. The app can then be used in the Expo app in the phone
Note: The Laptop/PC and the cellphone needs to be connected to the same Wifi network in order for Expo to work.
- Vaibhav Muchandi - vaibhavmuchandi
- Varun Shiri - varunks99
- Larina Maskren - Larii2024
- Naman Mehta - NamanMehta16
- Sujay Amberkar - SujayAmberkar
- Shramik Murkute - Shramik99
This project is licensed under the MIT License - see the LICENSE.md file for details