decentralizedhealthcarebackend
https://github.com/maastrichtu-ids/decentralizedhealthcarebackend
Science Score: 52.0%
This score indicates how likely this project is to be science-related based on various indicators:
-
✓CITATION.cff file
Found CITATION.cff file -
✓codemeta.json file
Found codemeta.json file -
✓.zenodo.json file
Found .zenodo.json file -
○DOI references
-
○Academic publication links
-
○Academic email domains
-
✓Institutional organization owner
Organization maastrichtu-ids has institutional domain (www.maastrichtuniversity.nl) -
○JOSS paper metadata
-
○Scientific vocabulary similarity
Low similarity (10.8%) to scientific vocabulary
Scientific Fields
Repository
Basic Info
- Host: GitHub
- Owner: MaastrichtU-IDS
- License: other
- Language: Jupyter Notebook
- Default Branch: migrate-to-fastapi
- Size: 80.6 MB
Statistics
- Stars: 1
- Watchers: 3
- Forks: 2
- Open Issues: 15
- Releases: 0
Metadata Files
README.md
🤝 License accoUntability and CompliancE (LUCE)
A Blockchain-based data sharing platform for monitoring data license accountability and compliance.
🗺️ Architecture
The architecture of LUCE is shown below.

- Users:
- Hospital: represents medical institutions that need to access and input data.
- Patient: Patients whose data is being managed and exchanged.
- Institution: Other entities that may need access to the data, possibly for administrative or research purposes.
- LUCE Data Exchange Interface:
- The interface supports different platforms, and it communicates with a backend using a RESTful API, a popular choice for web services.
- LUCE Data Exchange modules:
- Data Exchange: This module is responsible for the transfer of data between parties.
- Consent: It ensures that data is not exchanged without the consent of the data owner.
- Privacy: A module dedicated to maintaining privacy.
- Smart contract: uses blockchain technology to enforce contracts regarding data access and usage.
- Storage:
- On-Chain Storage: Utilizes blockchain technology, storing shared data and meta-data.
- Off-Chain Storage: Utilizing local storage or cloud storage, to store the raw data and administrative data
🚀 How to launch LUCE
1. Install docker
2. Launch LUCE
Clone the repository:
bash
git clone https://github.com/MaastrichtU-IDS/DecentralizedHealthcareBackend
cd DecentralizedHealthcareBackend
To launch LUCE, run:
docker compose up
🧩 Technical overview
Each component of the LUCE stack is deployed in a different docker container, defined in docker-compose.yml
Django API
User login and access to the contract is managed by a python Django API
Code in the backend folder. Django settings in backend/src/luce/lucehome/settings.py
Webapp
React-native (expo) JavaScript webapp for users to upload and search for contracts. It uses the Django API
Code in the frontend folder
Zero-Knowledge Proofs
Snarkjs-based server for generating Zero-Knowledge Proofs (ZKPs).
Code in the zkp_service folder
Database
LUCE use PostgresQL to keep user information, you can configure it in Django project settings
Ganache
Ganache is used to deploy an Ethereum blockchain network for LUCE, available through HTTP
ℹ️ How to access LUCE
You can access with LUCE API, or with app
For http request user
- Step 1: register
- Step 2: login > Once logged in, you can get a token which is necessary for later operation
- Step 3: upload data
For more details, please refer to Understanding the Login Related Process
🧑💻 Development Manual
For how to maintain the documentation, please refer to: Documentation mantaince
For how to develop in LUCE, please refer to: LUCE development tips
Install development dependencies:
bash
pip install hatch uv
npm install -g expo-cli
Compile requirements.txt from pyproject.toml:
bash
uv pip compile pyproject.toml -o requirements.txt
- Start the database and blockchain in docker for development:
bash
docker compose -f docker-compose.dev.yml up
- Start the backend:
bash
cd backend
hatch run dev
- Start the frontend:
bash
cd frontend
npm install
npm run start
Tips
- if you encounter the issue:
brownie.exceptions.ContractNotFound: No contract deployed at 0xDa574613C62f6DB9FFE8dCC5a8b079Ba37e29390,please go to
luce_vm/brownie, removebuild/deploymentfolder in the brownie directory, and then runbrownie compile
- If you got the response:
{
"error": {
"code": 400,
"message": "validation error",
"status": "ERROR",
"details": "luce registry was not deployed"
},
"data": {}
}
please deploy a LUCERegistry contract in admin/deployRegistry/ endpoint.
Owner
- Name: Maastricht University IDS
- Login: MaastrichtU-IDS
- Kind: organization
- Email: info-ids@maastrichtuniversity.nl
- Location: Maastricht, Netherlands
- Website: https://www.maastrichtuniversity.nl/research/institute-data-science
- Twitter: um_ids
- Repositories: 191
- Profile: https://github.com/MaastrichtU-IDS
Institute of Data Science at Maastricht University
Citation (CITATION.cff)
cff-version: 1.2.0
message: "If you use this software, please cite it as below."
authors:
- given-names: Visara Urovi
email: v.urovi@maastrichtuniversity.nl
affiliation: Institute of Data Science, Maastricht University
- email: vincent.emonet@gmail.com
given-names: Vincent Emonet
affiliation: Institute of Data Science, Maastricht University
orcid: https://orcid.org/0000-0002-1501-1082
- given-names: Vikas Jaiman
affiliation: Institute of Data Science, Maastricht University
- given-names: Kun Li
affiliation: Institute of Data Science, Maastricht University
- given-names: Arno Angerer
title: "LUCE: A Blockchain-based data sharing platform for monitoring data license accountability and compliance"
doi: 10.48550/arXiv.2202.11646
repository-code: https://github.com/MaastrichtU-IDS/DecentralizedHealthcareBackend
date-released: 2022-02-23
# url: https://github.com/MaastrichtU-IDS/DecentralizedHealthcareBackend
GitHub Events
Total
- Push event: 17
Last Year
- Push event: 17
Issues and Pull Requests
Last synced: 9 months ago
All Time
- Total issues: 58
- Total pull requests: 53
- Average time to close issues: 17 days
- Average time to close pull requests: 11 minutes
- Total issue authors: 2
- Total pull request authors: 2
- Average comments per issue: 0.6
- Average comments per pull request: 0.08
- Merged pull requests: 51
- Bot issues: 0
- Bot pull requests: 0
Past Year
- Issues: 2
- Pull requests: 0
- Average time to close issues: N/A
- Average time to close pull requests: N/A
- Issue authors: 1
- Pull request authors: 0
- Average comments per issue: 0.0
- Average comments per pull request: 0
- Merged pull requests: 0
- Bot issues: 0
- Bot pull requests: 0
Top Authors
Issue Authors
- klifish (24)
- Giacomo-Terragni (7)
Pull Request Authors
- klifish (29)
- dongyang-cs (1)
Top Labels
Issue Labels
Pull Request Labels
Dependencies
- actions/checkout v3 composite
- python 3.9 build
- postgres latest
- trufflesuite/ganache v7.7.3
- node 16 build
- 407 dependencies
- big-integer ^1.6.42
- circomlib ^2.0.0
- circomlibjs ^0.1.7
- ffjavascript ^0.2.50
- koa ^2.13.0
- koa-bodyparser 4.4.0
- koa-router 12.0.0
- snarkjs ^0.6.0
- web3 ^1.3.4
- Django ==2.2
- Jinja2 ==2.10.1
- MarkupSafe ==1.1.1
- Pillow ==9.0.1
- PyYAML ==5.1.1
- Pygments ==2.4.2
- Send2Trash ==1.5.0
- aiohttp ==3.8.1
- aiosignal ==1.2.0
- async-timeout ==4.0.2
- asynctest ==0.13.0
- attrdict ==2.0.1
- attrs ==19.1.0
- backcall ==0.1.0
- base58 ==2.1.1
- bitarray ==1.2.2
- bleach ==3.1.0
- certifi ==2019.6.16
- cffi ==1.15.0
- chardet ==3.0.4
- charset-normalizer ==2.0.11
- cryptography ==36.0.1
- cycler ==0.11.0
- cytoolz ==0.11.2
- decorator ==4.4.0
- defusedxml ==0.6.0
- django-cors-headers ==3.11.0
- django-extensions ==2.2.1
- django-filter ==21.1
- djangorestframework ==3.12.4
- entrypoints ==0.3
- eth-abi ==1.3.0
- eth-account ==0.3.0
- eth-keyfile ==0.5.1
- eth-keys ==0.2.4
- eth-rlp ==0.1.2
- eth-typing ==2.3.0
- eth-utils ==1.10.0
- fonttools ==4.29.1
- frozenlist ==1.3.0
- hexbytes ==0.2.0
- idna ==2.8
- importlib-metadata ==4.10.1
- ipfshttpclient ==0.8.0a2
- ipykernel ==5.1.1
- ipython ==7.6.1
- ipython-genutils ==0.2.0
- ipywidgets ==7.5.0
- jedi ==0.13.3
- jsonschema ==3.2.0
- jupyter ==1.0.0
- jupyter-client ==5.3.1
- jupyter-console ==6.0.0
- jupyter-contrib-core ==0.3.3
- jupyter-contrib-nbextensions ==0.5.1
- jupyter-core ==4.5.0
- jupyter-highlight-selected-word ==0.2.0
- jupyter-latex-envs ==1.4.4
- jupyter-nbextensions-configurator ==0.4.1
- kiwisolver ==1.3.2
- lru-dict ==1.1.6
- lxml ==4.4.0
- matplotlib ==3.5.1
- mistune ==0.8.4
- multiaddr ==0.0.9
- multidict ==6.0.2
- nbconvert ==5.5.0
- nbformat ==4.4.0
- netaddr ==0.8.0
- notebook ==5.7.8
- numpy ==1.21.5
- packaging ==21.3
- pandocfilters ==1.4.2
- parsimonious ==0.8.1
- parso ==0.5.0
- pexpect ==4.7.0
- pickleshare ==0.7.5
- prometheus-client ==0.7.1
- prompt-toolkit ==2.0.9
- protobuf ==3.19.4
- psycopg2 *
- ptyprocess ==0.6.0
- py-solc-x ==1.1.1
- pycparser ==2.21
- pycryptodome ==3.8.2
- pyparsing ==3.0.7
- pyrsistent ==0.14.11
- python-dateutil ==2.8.0
- pytz ==2019.1
- pyzmq *
- qtconsole ==4.5.2
- requests ==2.22.0
- rlp ==1.1.0
- semantic-version ==2.8.5
- six ==1.12.0
- sqlparse ==0.3.0
- terminado ==0.8.2
- testpath ==0.4.2
- toolz ==0.10.0
- tornado ==6.0.3
- traitlets ==4.3.2
- typing-extensions ==4.0.1
- urllib3 ==1.25.3
- varint ==1.0.2
- wcwidth ==0.1.7
- web3 ==4.9.2
- webencodings ==0.5.1
- websockets ==6.0
- widgetsnbextension ==3.5.0
- yarl ==1.7.2
- zipp ==3.7.0