Skip to content

Commit 0dbf76f

Browse files
Update IRB readme
Signed-off-by: Marcus Brandenburger <[email protected]>
1 parent d472bca commit 0dbf76f

File tree

1 file changed

+63
-4
lines changed

1 file changed

+63
-4
lines changed

samples/demos/irb/README.md

Lines changed: 63 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,69 @@
1-
# IRB approval sample
1+
# Institutional Review Board (IRB) Sample
22

3-
Get redis
3+
This demo implements an FPC-based IRB experiment approval services to protect the confidentiality of data being used in analytical experiments.
4+
The problem addressed here is relevant in a healthcare context, where sensitive patient data is processed in clinical trails.
5+
Multiple participants, namely, data providers, experimenter, and principal investigators are collaborating to conduct analytical research using sensitive data.
6+
7+
We show a prototype of an application that performs analytical experiments on data such that:
8+
- Any constraints on the use of the data are respected (consent).
9+
- The confidentiality of data and policies for its use is maintained.
10+
- Analytical experiments must be approved by an IRB which ensures that the description and implementation of the experiment are appropriate.
11+
- Analytical experiments are executed in an SGX container (Graphene) that can attest to the integrity of the computation.
12+
13+
The demo was presented at the Hyperledger Global Forum (HLGF) 2021. Check the recordings on [youtube](https://www.youtube.com/watch?v=MU4BpZp8A1Y).
14+
15+
Note that the demo source code here is a simplified version of the demo presented at HLGF21, to fully focus on the FPC implementation.
16+
In particular, the experiment is not protected with SGX and the WebUI component is not present.
17+
The full source code for the HLFG21 presentation is located in the [irb-demo](https://github.com/hyperledger/fabric-private-chaincode/tree/irb-demo/samples/demos/irb) branch.
18+
19+
The IRB use case requires the interaction between the participants.
20+
A typical application flow begins with the data registration and consent, following the approval protocol, and finally executing the experiment and publishing the results.
21+
We use [Fabric Smart Client](https://github.com/hyperledger-labs/fabric-smart-client) to implement the complex interactions.
22+
23+
## What the demo shows
24+
25+
The demo runs in the terminal and demonstrates the application flow.
26+
In particular, the demo starts a Fabric network with multiple organizations participating and hosting fabric peers.
27+
The Fabric Smart Client installs the FPC Chaincode that implements the IRB experiment approval service.
28+
29+
Once the network is ready, the application flow begins with the investigator, creating a new study.
30+
Next, the data provider registers and uploads new patient data to the systems, assigning the data to be used in the study.
31+
Now we have a study and data to process.
32+
33+
The experimenter proceeds with creating a new experiment and asks the investigator for approval.
34+
Once the approval arrived, that is, the investigator has reviewed the experiment proposal and submitted an approval to the IRB experiment approval service, the execution of the experiment is triggered.
35+
36+
Finally, the experimenter requests an evaluation pack from the IRB experiment approval service, that contains the access information to collect the patient data.
37+
The evaluation pack is passed to the experiment instance, which fetches the patient data, performs the experiment computation, and returns the result.
38+
Note that the patient data is encrypted in a way that only an approved experiment instance can decrypt the data.
39+
More details on that, see the HLGF21 presentation.
40+
41+
## Code structure
42+
- `/chaincode` contains the FPC chaincode that implements the IRV approval service
43+
- `/experimenter` contains the analytic experiment code based on [PyTorch](https://pytorch.org/).
44+
- `/pkg` contains implementations for various components, including crypto, container management, etc.
45+
- `/protos` contains the message definitions used in this application
46+
- `/views` contains the protocol implementation for the data provider, experimenter, and investigator.
47+
- `irb_test.go` is the starting point of the demo.
48+
- `topology.go` defines the Fabric network used in this demo.
49+
50+
## Setup
51+
52+
The demo uses redis to store the data provided by the patients. Get a redis docker image.
453
```bash
554
docker pull redis:latest
655
```
756

57+
Next, we build the components of the demo by running:
858
```bash
9-
make build test
10-
```
59+
make build
60+
```
61+
62+
## Run the demo
63+
64+
To run the demo just use the `test` target.
65+
You will see the output of the interaction between the participants in your terminal.
66+
67+
```bash
68+
make test
69+
```

0 commit comments

Comments
 (0)