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.
- The Tiny Internet Project, Part I
- SUSECON 2016: Where Technology Reigns Supreme
- Download "Linux Management with Red Hat Satellite: Measuring Business Impact and ROI"
- Bitcoin on Amazon! Sort of...
- Android Browser Security--What You Haven't Been Told
- Free Today: September Issue of Linux Journal (Retail value: $5.99)
- Securing the Programmer
- The Many Paths to a Solution
- Linux Swap Space
Pick up any e-commerce web or mobile app today, and you’ll be holding a mashup of interconnected applications and services from a variety of different providers. For instance, when you connect to Amazon’s e-commerce app, cookies, tags and pixels that are monitored by solutions like Exact Target, BazaarVoice, Bing, Shopzilla, Liveramp and Google Tag Manager track every action you take. You’re presented with special offers and coupons based on your viewing and buying patterns. If you find something you want for your birthday, a third party manages your wish list, which you can share through multiple social- media outlets or email to a friend. When you select something to buy, you find yourself presented with similar items as kind suggestions. And when you finally check out, you’re offered the ability to pay with promo codes, gifts cards, PayPal or a variety of credit cards.Get the Guide