views:

94

answers:

1

Hi, I am interested in the idea of using Tweets/SMS/Identica or other short text status update systems to track Observations of Daily Living (or ODLs). The basic notion is that you send status updates to Twitter or Identi.ca or perhaps just an SMS message or whatever in a format that can be later mined to show patterns.

You could use it to track exercise, diets, your movie preferences, anything you like.

To do this you need to have a syntax that allows both humans and computers to easily parse your status updates. The syntax should be dense, which supports the low character counts, but still human readable.

This idea is not new and there are lots of twitter apps out there for tracking exercise and eating habits. Twitter is already essentially a short text ODL medium, which you can easily see by looking at searched for #feeling http://search.twitter.com/search?q=%23feeling or searches for #hurts http://search.twitter.com/search?q=%23hurts or applications intended to mine the wealth of ODL data already going to twitter: http://www.tweetfeel.com/

By using Twitter to track ODLs, you stop fighting to force people to use a given integration engine created just for that, like Google Health and HealthVault, and instead focus on improving the value of the ODL tracking system that people are already using, like Facebook or Twitter. But to do that, you need a generalizable approach for entering ODLs and for data mining those entries, so that you can get meaning at a higher, or at least different, level.

There are also several syntaxs available for generalizing the approach to use Twitter to track whatever you like. These are the ones that I am most interested in. So far I know about several:

Daytum has a twitter syntax. It uses direct messages and looks like this:

d daytum item : amount 
// simple data label and value
d daytum item [category, category] : amount
// same thing but with tagging...

Your.flowingdata.com has a richer syntax. It also uses direct messaging.

// yfd works with "action" and "value" pairs
d yfd weigh 160
d yfd exercised arms
d yfd watched Back to the Future
// but can be made more complex with units
d yfd drank 2 water
d yfd drank 1 coke
// and timestamps 
d yfd played xbox at 20:00
d yfd goodnight at 11:00pm
d yfd goodnight at 11pm

For each action yfd will ask you some information about the data type, asking you to choose between:

Categorical - If you're interested in the occurrence of the same action with different units e.g. ate corn Event - If the point of interest is when something happens e.g. goodnight or pooped Counter - If you're mostly interested in total times you've done something e.g. smoked 5 cigarettes Measurement - If you want to see the trend over time of some value e.g. weigh 160 or blood-pressure 170

Pretty clever no?

The last one that I know about is the Grafitter syntax. So far this is pretty neat concept because it uses hashtags in a very clever way...

//hashtag with comma separated tags
#mood(happy,elated,drunk)
#mood(sad,sober)
// scales, like not busy
#busy(1)
// very busy
#busy(5)
//straight up numbers
#lbs(250)
#worked(10)

Tweet your eats uses DMs as well, and lets you include what you ate, as well as including calorie/fat/point tracking. So the syntax looks like

d tyeats #breakfast One bowl of cereal *c500
// the *c500 marks the tweet as 500 calories

Of course it is important to note the very common natural language patterns that are employed by different ODL generating software that is already logging to twitter, like runkeeper, which typically produces something like:

@meattwitter Just completed a 4.50 km run with @runkeeper. Check it out! http://rnkpr.com/aaaaa #RunKeeper

So now for my question(s)?

What other significant ODL syntax am I overlooking? Is DM the right way to do data collection or should you focus on hashtags? What other important "natural" ODLs are happening other than runkeeper etc? Does anyone know of any formal research on this issue (ODL syntax in social media status updates)? Does anyone know of any existing Open Source projects that implement this types of things?

update: Paul pointed out that the OMHE project does this kind of thing. http://code.google.com/p/omhe/ Here is the OMHE syntax, which already has a python based parser..

#The basic OMHE syntax follows this basic format"
[COMMAND_NAME]<VALUE><#[TAG]>

# Reporting WEIGHT (This is correct):
wt123.4

# In the previous example, COMMAND_NAME=wt and VALUE=123.4

# Reporting WEIGHT (Also Correct):
wt=123.4

# In the previous example, COMMAND_NAME=wt and VALUE=123.4

# Reporting WEIGHT with _TAGS_ (Also Correct) :
wt=123.4#mytag#myothertag

# The previous example has two tags: 'mytag' and 'myothertag'

# Weight is a command that requires a value (Incorrect):
wt

#You can never have an equal sign without a value. (Also Incorrect):
wt=

# Here is an OMHE string with two commands separated by white space " ".
# Says the command 'wt' (weight) has a value of '195' and blood glucose is 150.
wt195 bg=150

# Report the start of a menstrual cycle (correct):
# (Correct) mcycle is a command where value is not required 
mcycle

# Report the first day of a menstrual cycle:
# Notice we can still add tags even if no value is given 
mc

# Report the start of a menstrual cycle (Incorrect):
# You can't provide an equals "=" sign without a value: 
mc=

# Report the adherence to a health directive such as taking medication (correct):
# (Correct) did is a command where value is not required 
did

# Report the adherence to a health directive  to stretch arm (correct):
did=ARMSTRETCH

# Send Blood Glucose Level:
bg125

# Send Blood Pressure:
bp100d120p65

# Send Blood Pressure using the equals sign style:
bp=100d120p65

# Send Weight:
wt145
wt=145 #Express weight using the equals sign style
w78k   #Express weight in kilograms
wt145l  #Explicit express weight in pounds (lbs)
wt245.8 #Express fractional weight
wt245p8 #Another way to express fractional weight

# Send blood glucose, patient identifier, a note, and the date:
bg145 id213762732467234 nAllGood d20090117

# Sending blood glucose with a simple note tag (with spaces):
bg145#I'm*feeling*very*tired*today

# Report the start of a menstrual cycle:
mcycle

# Get a copy of your health benefits/insurance card:
gethc

# Send a copy of your health benefits card to someone via fax:
sendhc=6509840982#fax

# Send a copy of your health benefits card as a pdf to someone via email:
[email protected]#pdf

# Get a copy of your personal health record:
getphr

# Get a copy of your personal health record as a pdf:
getphr#pdf

# Get a copy of your personal health record in CCD format:
getphr#ccd

# Send a copy of your personal health record to someone in CCR format:
[email protected]#ccr

# Send a copy of your personal health record to someone in XML microformat:
[email protected]#microformat

My goal is to write a parser and data display tools under open source licenses and I am generally looking for what types of things I should support. So if you can think of other questions I should have asked to make a requirements list for such a project let me know!! For instance, I know that there are decent implementations of parsers for the standard Twitter syntax of mentions, DMs, replies and so forth, should what I am discussing extend that work, or be implemented entirely in parallel.

For the time being I am happy to assume that the system will not support "private" logging, unless someone can tell me how to do that in a succinct manner.

Thanks,

-FT

A: 

Hey, Fred... have you seen OMHE: http://code.google.com/p/omhe/

Or the work going on in the OpenMRS messaging community... (search for messaging from the OpenMRS website)...

Those might give you some hints on messaging syntaxes, given that SMS lengths are fairly analogous to tweet lengths. :)

Hope this helps.

Paul Biondich
Should have known that first good answer should come from a friend ;)
ftrotter
should explicitly say that SMS is a target as well... changed it..
ftrotter