A decentralized web application using ReactJS, Flask, Solidity, IPFS and the Ethereum Blockchain to store and view all medical documents securely.
The app has 2 main users:
- Patient
- Doctor (in development)
Patients can:
- Upload a document to the blockchain. The document is added as a node in IPFS which returns a hash. The hash is then stored on the blockchain
- View the uploaded documents.
- Analyse the uploaded documents. The text from the document is extracted and NER(Named Entity Recognition) is performed on the text using BERN(Biomedical Entity Recognition and multi-type Normalization tool.)
- Analyse their reports to find keywords related to Drugs or Diseases.
- Add a trusted doctor to view their medical documents.
Doctors can:
- Upload a medical document about a certain patient to the blockchain.
- View a certain patient's uploaded document.
Number | Description |
---|---|
1 | User scans and uploads a medical record. |
2 | The record is then encrypted from the client side and sent to the Flask Server. |
3, 4 | The Flask server sends this encrypted file to the IPFS network for storage. Once stored, it returs back a file hash. |
5 | The file hash is then returned back to the client app. |
6 | The hash is then stored securely on the Ethereum Blockchain |
7 | The user can then choose to perform NER(Named-Entity-Recognition) on the data in the medical record. This is the make the user aware about the complex terms and data in the report. The record is sent to the Flask server. |
8, 9 | The Flask server runs the BERN model on the recieved data after performing OCR on the report to get the text from the scanned medical record PDF. The medical keywords are then passed back to the Flask server. |
10 | The Flask server sends this data back to the client app and the client can view the keywords and click on it for more information |
11 | The doctor can view the medical record(s) of ONLY his/her patient. |
Ethereum is an open source, public, blockchain-based distributed computing platform and operating system featuring smart contract functionality.
The InterPlanetary File System is a protocol and peer-to-peer network for storing and sharing data in a distributed file system. IPFS uses content-addressing to uniquely identify each file in a global namespace connecting all computing devices.
- React.js
- Web3.js
- Ganache-cli
- Truffle
- Solidity
- Metamask
- Flask
- Ipfs
- Pytesseract
git clone https://github.com/sherwyn11/Medi-Care.git
cd blockchain
npm install
npm start
- First start IPFS daemon
cd server
python app.py
(This project is still under development)
How Can Blockchain Keep Medical Records Secure?
© 2020 Sherwyn D'souza