REDCap: A Tool for Collecting Clinical Trials Data
In the course of my day job I tend to get drawn into interesting niche projects because of my Linux expertise. Recall that the Mothership (that corporate entity located somewhere on the East coat which pays me fairly well to work for them) is *shudder* a Windows shop, primarily.
However, Open Source Software is making not-too-subtle encroachments into even this bastion of All Windows All The Time. I got a call one day a couple of weeks ago from a semi-stressed project leader who at the suggestion of the client was being encouraged to use an application built entirely out of open source components. We have it running on a virtual Linux server. It’s called REDCap, and was developed by Vanderbilt University. Basically, it is a web-based interface to an underlying mysql engine. It is a highly specialized database tool developed specifically to support data collection for clinical studies.
Understand, REDCap is built entirely from open source components, but it is not FOSS. In order to be allowed to use it, you must join the REDCap Consortium. Nothing wrong with that, I assure you. In fact, I’m quite pleased to see pressure coming down from the government client encouraging (translated: We’re making you an offer you can’t refuse...) their contractors to take advantage of certain open source products.
What is it that makes REDCap special? Good question. After tinkering with our REDCap install for about a week now, I can say that it is a very well designed, tight system which serves a very specific purpose (data collection for clinical studies), and serves it well. Plus it provides a simple, yet flexible API to allow the users of it to get info in and out of the REDCap databases. Using the provided API, it turns out to be a snap to develop php scripts that allow the system integrator to interface REDCap with other running systems. Even those running *shudder* Windows.
Sorry about the *shudder* thing. Can’t help myself.
Anyhow, as I was saying, using fairly simple php scripts, it is easy to get data into and out of the REDCap repository. Here’s one small example of how to export data out of a REDCap database:
#!/usr/bin/php <?php // // Export Screening Data // # the class that performs the API call require_once('RestCallRequest.php'); # arrays to contain elements you want to filter results by # example: array('item1', 'item2', 'item3'); $records = array(); $events = array(); $fields = array(); $forms = array(); # an array containing all the elements that must be submitted to the API $data = array('content' => 'record', 'type' => 'flat', 'format' => 'csv', 'records' => $records, 'events' => $events, 'fields' => $fields, 'forms' => $forms, 'token' => '59E3E2981CDCB7D1BF1817C8024BD51B'); // Doug # create a new API request object $request = new RestCallRequest("https://redcap.xxx.org/redcap/api/", 'POST', $data); # initiate the API request $request->execute(); /********* Handle the return from the API *********/ # OPTION 1: for testing purposes and small datasets you can just output the data to screen # get the content type of the data being returned $response = $request->getResponseInfo(); $type = explode(";", $response['content_type']); $contentType = $type; # set the content type of page //header("Content-type: $contentType; charset=utf-8"); #print the data to the screen //echo $request->getResponseBody(); # the following line will print out the entire HTTP request object # good for testing purposes to see what is sent back by the API and for debugging //echo '<pre>' . print_r($request, true) . '</pre>'; # OPTION 2: save the output to a file $the_date = getdate(); //print_r ($the_date); $month = $the_date['mon']; $year = $the_date['year']; $day = $the_date['mday']; $minutes = $the_date['minutes']; $hours = $the_date['hours']; $seconds = $the_date['seconds']; $path = "/usr/local/redcap/output/"; $filename = $path . "Screening_Data-" . $month . "-" . $day . "-" . $year . "-" . $hours . "." . $minutes . "." . $seconds . ".csv"; file_put_contents($filename, $request->getResponseBody()) ?>
What might not be obvious from this example is that access control is accomplished via a token system that allows the REDCap administrator to easily manage access permissions to the system. Bottom line: REDCap is good stuff. That fact that it is sort of being shoved down the throats of certain Windows shops is a small added bonus.
The developers of REDCap have requested that we cite their work whenever we use it.
|Alice, the Turtle of the Modern Age||Mar 07, 2014|
|Using Django and MongoDB to Build a Blog||Mar 05, 2014|
|What virtualization solution do you use/manage at work?||Mar 04, 2014|
|Our Assignment||Mar 04, 2014|
|March 2014 Issue of Linux Journal: 20 Years of Linux Journal||Mar 03, 2014|
|Have Resume - Will Travel||Feb 28, 2014|
- Using Django and MongoDB to Build a Blog
- Our Assignment
- Alice, the Turtle of the Modern Age
- Sign Up to Win a Silicon Mechanics Swag Pack!
- Linux Systems Administrator
- Senior Perl Developer
- Technical Support Rep
- March 2014 Issue of Linux Journal: 20 Years of Linux Journal
- RSS Feeds
- Tech Tip: Really Simple HTTP Server with Python
- You have to be careful there
1 week 3 days ago
- Wonder when LJ is going to
1 week 4 days ago
- Puerto Rico Free Software
1 week 5 days ago
1 week 6 days ago
- I hate voice commands
1 week 6 days ago
- usabilty --- AGAIN with this nonsense
2 weeks 16 min ago
- Don't make excuses
2 weeks 4 hours ago
- Sorry to let you know, but
2 weeks 4 hours ago
- Ridiculous statement. Not a
2 weeks 1 day ago
2 weeks 1 day ago