|
1 | | -# IRB approval sample |
| 1 | +# Institutional Review Board (IRB) Sample |
2 | 2 |
|
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. |
4 | 53 | ```bash |
5 | 54 | docker pull redis:latest |
6 | 55 | ``` |
7 | 56 |
|
| 57 | +Next, we build the components of the demo by running: |
8 | 58 | ```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