Skip to content

Improving data transparency in clinical trials using blockchain smart contracts [blockchain]

License

Notifications You must be signed in to change notification settings

120BPM/true-clinical

 
 

Repository files navigation

Improving Data Transparency in Clinical Trials Using Blockchain Smart Contracts
===============================================================================

Paper
=====

https://f1000research.com/articles/5-2541/v1

4th October 2016 

Authors: Timothy Nugent, David Upton and Mihai Cimpoesu

Package contents
================

src/Regulator.sol - the solidity smart contract code for the Regulator contract
src/ClinicalTrial.sol - the solidity code smart contract code for the a Clinical Trial contract
src/start-ethereum-node.sh - script to start a local Ethereum node
src/workflow.js - the main nodejs script that interacts with the blockchain
src/run-workflow.sh - script that will execute the workflow steps
src/read-from-blockchain.sh - script that reads trial data from the blockchain
logs/run-workflow.log - output from running src/run-workflow.sh
logs/read-from-blockchain.log - output from running src/read-from-blockchain.sh

Getting started
===============

This code has been tested on OSX 10.11.5 and Ubuntu 14.04. Code is written using Bash and Javascript - you will need to install nodejs:

https://nodejs.org

We use the testrpc npm module in order to reproduce the exact conditions the workflow scripts need to run the tests. It is important that you reset the blockchain every time you run through these steps. In order to reset, just restart the start-ethereum-node.sh script.

Running the scripts
===================

The steps needed are as follows:

1) Run 'npm install' to install all dependencies mentioned in package.json

2) Install 'testrpc' as a global npm module

npm install -g ethereumjs-testrpc

3) Run the script to start a local Ethereum node

./start-ethereum-node.sh

4) In another terminal, run the script that will execute the workflow steps

./run-workflow.sh

This script will:

	-Deploy a Regulator smart contract
	-Add a CRO/pharma to this contract - in this case Roche
	-Upload the trial protocol (data/TrialProtocol.pdf) to IPFS, running locally
	-Deploy a Clinical Trial smart contract - in this case for Tamiflu, including the IPFS hash linking to the protocol
	-Add 500 subjects to the trial
	-Add 5 data points for each subject

5) Run the script to read data from the blockchain contracts
./read-from-blockchain.sh

...............................
blockNumber= 3005
drug name= Tamiflu
ipfs hash= QmTZKpCqqFcUsmXWzffmLkYNCwrYkTvhkAXdquzNWij1z4
number of subjects= 501
patient ident= s0/1985-04-03
patient ident= s1/2006-4-1
	 data=  44/mg/89/NONE added at 2016-10-04T16:14:49+01:00
	 data=  50/mg/68/NAUSEA added at 2016-10-04T16:14:49+01:00
	 data=  27/mg/44/HEARTBURN added at 2016-10-04T16:14:49+01:00
	 data=  42/mg/33/COMA added at 2016-10-04T16:14:49+01:00
	 data=  96/mg/54/HEADACHE added at 2016-10-04T16:14:49+01:00
patient ident= s2/2007-5-13
	 data=  10/mg/29/COMA added at 2016-10-04T16:14:49+01:00
	 data=  79/mg/44/NAUSEA added at 2016-10-04T16:14:49+01:00
	 data=  53/mg/21/HEADACHE added at 2016-10-04T16:14:49+01:00
...............................

6) Log files for these scripts can be found in the logs directory

Problems
========

Please contact us:

Mihai Cimpoesu mihai.cimpoesu@gmail.com
Timothy Nugent tim.nugent@thomsonreuters.com
David Upton dupton0@gmail.com

About

Improving data transparency in clinical trials using blockchain smart contracts [blockchain]

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • JavaScript 95.9%
  • Shell 4.1%