What's this?

Well I was recently diagnosed with Type-1 Diabetes. I've been collecting lots of data related to my condiiton using OnTrack, and wanted to do more interesting things with it. Hence this.

For now all it does is ingest a CSV file, parse it into some nice JSON, and stuff it into MongoDB.

Install

gem install insulin

Also requires MongoDB. Instructions for installing Mongo on Ubuntu are here.

Usage

To suck in some data

insulin ingest </path/to/on_track_export_file.csv>

This will take that file, parse it, and push the JSON into a number of collections in a MongoDB database called 'insulin'. You can view them with something like

$ mongo insulin
MongoDB shell version: 2.0.6
connecting to: insulin
> db.events.find({serial : 266})
{ "_id" : ObjectId("4ff07b371508cc259c8a8f0c"), "serial" : 266, "timestamp" : ISODate("2012-06-28T09:21:05Z"), "tzoffset" : "+0100", "timezone" : "BST", "unixtime" : 1340875265, "day" : "thursday", "date" : "2012-06-28", "time" : "10:21:05 BST", "type" : "medication", "subtype" : "humalog", "tag" : "breakfast", "value" : 4, "notes" : { "food" : [ "2 bacon", "2 toast" ], "note" : [ "test note" ] } }
> 

Current output options are

insulin day DATE
insulin month DATE
insulin week DATE

Example:

$ insulin day 2012-07-01
2012-07-01
    09:41:47 BST | breakfast       | glucose    |               |  6.4 mmol/L
    09:57:09 BST | breakfast       | medication | humalog       |  4.0 x10^-5 L
    12:40:43 BST | lunch           | weight     |               | 59.0 kg
    13:54:04 BST | lunch           | glucose    |               |  5.0 mmol/L
    14:03:05 BST | lunch           | medication | humalog       |  4.0 x10^-5 L
    18:56:25 BST | dinner          | glucose    |               |  4.9 mmol/L
    19:03:37 BST | dinner          | medication | humalog       |  6.0 x10^-5 L
    21:06:01 BST | after dinner    | glucose    |               |  3.5 mmol/L
    22:32:32 BST | bedtime         | glucose    |               |  7.5 mmol/L
    22:46:12 BST | bedtime         | medication | lantus        | 14.0 x10^-5 L

    average glucose: 5.46 mmol/L

A weekly PDF summary can be generated and mailed out

insulin pdf you@yourdmomain.com

The PDF class is currently a bit hacky, I'm still learning the excellent prawn gem. Requires a local SMTP server, too

You can also run the tests, if you're into that sort of thing:

bundle exec rspec

Postfix setup

OnTrack allows you to mail the exported CSV files to an email address. This page explains how to configure Postfix to extract those files. I now have this set up so that I mail from OnTrack to [email protected], the CSVs get dropped into a directory, and then 'insulin ingest' runs periodically on the newest file in that directory.

Next steps

  • Generate custom CSVs for spreadsheeting
  • Do some analysis
  • Generate some more detailed output (latest HbA1c, BP, etc)
  • Give it a meteor front-end (might require some help from Chris). Graphs, yo
  • Connect to the Google Drive API to pull the exported CSVs (OnTrack will push there) and push spreadsheetable CSVs
  • Possibly connect to this API to extract carb values from plain-text food descriptions (this may be a little ambitious, we'll see)

Project built using DDD (Diabetes-Driven Development)