My favorites | Sign in
Project Home Downloads Wiki Issues Source
Project Information
Members
Links

OMHE (Open Mobile Health Exchange): A Microsyntax for Devices, Machines, & Humans:

NOTE: This wiki is still active but the source code for the project is now maintained on github.com. http://github.com/videntity/python-omhe

OMHE (Open Mobile Health Exchange), pronounced "ooommm" is an open-source microsyntax for text messaging (mobile SMS), Twitter®, medical devices, and other "short text capable" systems. It is a community work product of microsyntax.org. Its called OMHE because its the nirvana of health informatics..open, free, and simple.

OMHE follows the basic syntax:

[command]<value>#<tags>

...or...

[command]=<value>#<tags>

So the '=' sign is optional to make it easy to work on a telephone keypad when needed. For example, to report weight (either automatically reported by a scale or by human, you could say things like.

wt155

...or...

weight=100.0k#afteryoga

The examples above illustrate two ways of communicating the same piece of information, 'weight'.

Use OMHE as format for sending blood pressure, blood glucose, weight, pedometer readings, pain levels, and other common information exchanged between people, health care providers and medical devices.

OMHE is designed to be easily typed on a mobile phone, while at the same time, easy for computers to read, write, and understand (i.e. machine readable/writeable).

Although OMHE is simple enough for manual human entry, its not always necessarily typed directly by humans. For example, many applications may present the user (human) with a graphical user interface (GUI), but still use OMHE as the underlying data format. You can think of OMHE like its own markup language. You can use OMHE for "machine-to-machine" communication too. OMHE serves as an open source output message format for medical devices such as pedometers, blood glucose meters, heart monitors, weight scales, and other hardware.

Why was OMHE Created?:

OMHE was created for the greater good and in the interest of improving public health. Specifically, OMHE can increase electronic communication between people & physicians, OMHE promotes behavior change & disease prevention. All health data formats belong in the public domain, but most are proprietary or closed to the general public. OMHE, on the other hand, has no royalties, no fees, and no groups to join to access the format. OMHE is quite purposefully made freely available to all in an effort to lower health care costs and promote interoperability. Power to the people.

Setup python-omhe parser library for Linux or Mac:

From a console, type:

 sudo easy_install https://github.com/aviars/python-omhe/tarball/master 
Note you will need administrator privileges to complete this command because you are writing files to your system and not your local directory own by you.

Setutools should already be instaled on Mac and many Linux distributions. However, if the above command does not work, you might be missing setuptools. To install on Ubuntu, type:

 sudo apt-get install setuptools
 

If you wan to install to a different directory or do not have root privileges then use the '--install-dir' option. To install on Ubuntu type:

 easy_install  --install-dir=/home/foo/yourpath' https://github.com/aviars/python-omhe/tarball/master 
Make sure to add your install path to your $PYTHONPATH environment variable;

How Can You Help?:

If you want to help make OMHE better, we would love to have more volunteers. Please read the open source section near the bottom of this page.

What is OMHE? - Nuts and Bolts Technical Details:

To understand OMHE, let' first talk about what OMHE is not. :-)

What OMHE is NOT:

OMHE does NOT define the how the information is transported, such as text message (SMS), Twitter, BlueTooth, RS232, USB, RF, or other means, but OMHE is certainly compatible with all of these means or data transport. OMHE does not define any particular device such as brand X's pedometer, blood pressure meter, weight scale, blood glucose meter. Instead, OMHE provides medical device manufactures a royalty-free, open-format to make their devices communicate more with a broader array of systems and services. For all you propeller heads out there, you can think of OMHE loosely in terms of a model-view-controller (MVC) framework. OMHE serves the "data model" role, wheres the "view" can be though of as the transport medium (SMS, Twitter, email, etc.), and the "controller" is any application which "does something meaningful" with the data.

Don't worry its not too hard to understand. OMHE is simple and designed to make life easier. OMHE is simply a super-short, well-defined, format designed to foster communication of health information between all devices, machines, and humans. OMHE is designed for use by any person (mortal or developer), system, or device capable of sending a short text string of 160 characters or less.

OHME simply defines an open-source way to encode information such as blood pressure, steps per day, blood glucose, weight, and similar information. The complete list of OMHE COMMANDS can be found below in the Command Reference section. This wiki page you are reading serves as the official OMHE reference.

Name Value Pairs:

An OMHE string is an ASCII string of 160 characters (bytes) or less made up or one or more OMHE commands. An OMHE string is is simply a string made up of one or more name-value pairs(commands) separated by white spaces. All OMHE commands require an COMMAND NAME, but not all OMHE commands require a VALUE. Two or more letters make the COMMAND_NAME or KEY. The following section, if present and until whitespace or "#" is encountered is the VALUE. You can also separate the a command's NAME and VALUE with an equals "=" sign. OMHE is very simple and 2 dimensional in this way. A parsed OMHE string can represented (or thought of )like a named array, a dictionary ( or other similar structure depending on your development language).

Tags:

The '#' symbol lets you TAG each command as needed.This helps you add context, additional information, and the ability to support custom application behavior. In this respect, OMHE commands are extensible. You simply add TAGS to the end every COMMAND by prefixing each with a '#' symbol.

Reserved Characters:

The only reserved characters are "=", "#" ,"|", "*", and " ". As these have special meaning and are used in the parsing process. Whitespace " " and stars "*" are both legal OMHE command delimiters. The equals "=" sign delineates a command name from its value (and tags if present).

CHARACTER(s)USECOMMAND NAMEVALUETAGS
" "Separates commandsINVALIDVALID W/ ESCAPEVALID W/ ESCAPE
"="Separates command name from command valueINVALIDVALID, but cannot begin with "=", unless escaped.VALID W/ ESCAPE
"#"Identifies and separates tags.INVALIDINVALIDINVALID
"|"Reserved for future useINVALIDINVALIDINVALID
"*"Reserved for future useINVALIDINVALIDINVALID

Naming Conventions:

Also each command must begin with either a defined OMHE COMMAND_NAME or your own command made up of at least 2 characters. When defining your own commands, you'll need to add support to any parser to recognize your new command.

The concept of namespaces will be supported in future version as our group figures out the best approach. We anticipate that most namespaces will be implied by the application, but the option will exist to explicitly tie a command to a particular namespace. In fact, OMHE itself can be conceptualized as a namespace.

Design Philosophy:

OMHE was designed with ultimate simplicity in mind and borrows from the JSON design philosophy. A key design consideration behind OMHE is the notion of creating a very stable and reliable format.

As a general rule, when an OMHE comand status is "ACCEPTED", it will not change, however, NEW commands can and will be added. We want to make sure you can rely on OMHE formats to not break things. With an eye to ensure stability over time, we seek to ensure using OMHE syntax now will not break later when new commands are added.

A public registry is being designed to submit new commands.

Examples:

#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
wt=123.4l
wt86k
weight=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 (These are INCORRECT):
wt
wt=
weight=

#Note that some commands do not require value.  The most common example is when you
are trying to summon some piece of information. For example, 'getbloodpressure' or its short form 'gbp'.

#This is CORRECT
gbp

#This is INCORRECT and will FAIL
gbp=

# Report the start of a menstrual cycle (correct):
# (Correct) mcycle is another example of 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 Blood Pressure with just numbers (must be exactly 9 digits in the form SSSDDDPPP):
bp=150099070

#Check In:
ci I just did 100 push ups!  East my dust-o amigos!


# 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:
sendhc=nurse@mydoc.com#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:
sendphrnurse@mydoc.com#ccr

# Send a copy of your personal health record to someone in XML microformat:
sendphr=nurse@mydoc.com#microformat

Responses:

OMHE has started response messages defined as well. For example 'ok' means everything wen through. So if you send the message 'shc=aviars@foo.bar', an OMHE service may send back an message beginning with 'ok'. So an "ok" response might look like:

ok. Your health record was successful delivered to aviars@foo.bar. 

You might also encounter an error. an error should return the error "code" as the first part of the message, followed by any additional information. Using the above example, sending 'shc=aviars@foo.bar' may result in 'er7' if the network is unavailable. An erro might look something like:

er7. Your send health card request failed due to a network error. Please try again. 

Below is the table of response codes....

Response Definitions:

RESPONSE CODENAMECODE NUMBERDETAILSSTATUS
okOK0 This means its all good, everything is a-okayPROPOSAL
errUNKNOWN MISC ERROR1There was an unknown error. Here are the details.PROPOSAL
er2UNSUPPORTED FUNCTION2 This OMHE command you sent is not supported bu this service.PROPOSAL
er3NOT AUTHORIZED3 You are not authorized to use this service. Maybe you need to sign up?PROPOSAL
er4BAD REQUEST4 the request was invalid. Invalid syntaxPROPOSAL
er5USER NOT FOUND5 No user account was foundPROPOSAL
er6INVALID PASSWORD OR CREDENTIAL6Invalid pin or passwordPROPOSAL
er7NETWORK ERROR7A network error occurred.PROPOSAL

Representing OMHE Data in XML, JSON, and Other Formats:

The OMHE message is just an encoded text string, however, there are ways to represent OMHE data in other formats. OMHE has an XML schema (XSD) so the information can be converted, represented, and validated in XML. Similarly, OMHE has a corresponding JSON format. JSON Examples and be found by clicking the downloads tab above. In addition, herehttp://code.gogle.com/p/microformat is an XML container microformat that can be used in conjunction with OMHE.

Parser Rules (How to Build an OMHE Parser) and Conventions:

If you are building your own OMHE parser, then it should follow these simple rules. An OMHE decoder MUST accept all well-formed OMHE messages. An OMHE message MUST be an ASCII string of 140 characters or less. An OMHE decoder MAY also accept non-OMHE text. Any parser you create MUST NOT produce an error if extra information is supplied. An OMHE encoder MUST only produce well-formed OMHE text. This is consistent with Postel's Law: "Be liberal in what you accept, and conservative in what you send." We allow for OMHE supersets. In other words, you can add your own commands.

An OMHE message string is nothing more than the text being sent, however, we can represent OMHE message as XML, JSON or other delimited format for convenience. A Python based API can be downloaded for reading and writing the OMHE format. Libraries for various other languages are in planning. Please consider contributing your time and energy to this open source effort. If you create a language or platform specific version, please consider submitting it here. Start by joining the Google Group.

Open Source Development:

OMHE is volunteer open source project under Microsyntax.org. We are looking for people who want to help refine the format as well as help with building tools in various programming languages that encode and decode OMHE messages. So if you like to write code and are interested in furthering mobile health applications, please consider volunteering for this open source project.

CommandReference

Reporting and Adding Information (to some arbitrary system):

COMMANDNAMEKNOWN ALIASESSTATUSOPTIONSNOTESEXAMPLES
ciCheck Inci, checkin, check-in BETA # tags are allowed. Stop using an OMHE service.ci=Howdy Partner, checkin=Just ate a tofo.#lunch Gross!t
bpBlood Pressure bloodpressureBETA Use either a 'd' or a front slash '/' to delineate between systolic and diastolic readings. Either 'd' or '/' is required for a valid message. Use 'p' to denote pulse. # tags are allowed.The first number always represents systolic pressure. The second number is always the diastolic pressure. the third number is always pulse (if given). Systolic acceptable range: 50-400. Diastolic acceptable range:20-200. Pulse acceptable Range: 30-200.bp90d123p70, bp=102d80p70, bp140d80p60, bp=140/80p60, bp=120080060

rhrResting Heart RaterestingheartratePROPOSAL Tags are allowed. Acceptable range is 30-150Express the heart rate at restrhr60, resthearrate=55
hrHeart RateheartratePROPOSAL Tags are allowed. Acceptable range is 30-200Express the heart rate at during exercise. This is usually acquired one time per minute hr60, hearrate=55
lhrLactate Threshold Heart Rate lthr, lactateheartratePROPOSAL Tags are allowed. Acceptable range is 30-210Express the heart rate during exercise.lhr60, lactatehearrate=55
v02V02 Maximum Heart Rate vo2 vo2maxheartratePROPOSAL Tags are allowed. Acceptable range is 30-210Express the V02 maximum heart rate.hr60, hearrate=55
wtWeightweight BETA Use the 'k' suffix to denote kilograms. Use the 'l' suffix to denote pounds(lbs). Use '.' or 'p' to indicate 1/10ths of the weight unit. # tags are allowed.If the 'l' or 'k' is not supplied then the weight unit is inferred based on geography. For example, pounds as a weight unit is implied in the United states.wt125, wt=125l, wt85k, wt=155.5l, weight=134p7
bgBlood Glucose Levelbloodglucose BETA Only # tags are allowed. Used to express a blood glucose level. Range:0-500bg120, bg135, bg=124
bmiBody Mass Index bodymassindexBETA Only # tags are allowedUsed to express a body mass index value. Range:0-100bmi20, bmi20p5, bmi19.7, bmi=15.2 bmi=12.3#foo
fmFat MassfatmassBETA'k' suffix indicates kilograms. 'l' suffix indicates lbs. lbs is assumed if no weight provided. # tags are allowedUsed to express a body fat mass.fm12 fm=20, fm=20k, fatmass=20l#foo
ffmFree Fat MassfreefatmassBETA'k' suffix indicates kilograms. 'l' suffix indicates lbs. lbs is assumed if no weight provided. # tags are allowedUsed to express a body's free fat mass.ffm12 ffm=20, ffm=20k, freefatmass=20l#foo
pbfPercent Body FatpercentbodyfatBETAValid range is 5-80. # tags are allowedUsed to the percent of weight that is made up of body fat.pbf12.6 pbf=20, percentbodyfat=41#foo
lipLipid Profile (including total cholesterol, HDL, LDL and triglycerides)chol, chlBETAOnly # tags are allowedUsed to express total cholesterol, HDL, LDL, and triglycerides. All values are required. The first number is total cholesterol, followed by HDL, LDL, and triglycerides, respectivelylip190h44l126t99
stStepssteps, spd, fitbitPROPOSAL# tags are allowedRecords the number of steps taken in a day. Optionally indicate time in minutes. (This is normally a reading from a pedometer).st=7540, st=1200, st=5050m480#hike
kmKilometerskilometersPROPOSAL # tags are allowedRecords the number of kilometers traveled. Optionally indicate time in minutes.(This is normally a reading from a pedometer)km7.5, km5m20#park, km=7.5
miMilesmilesPROPOSALOnly # tags are allowedRecords the number of miles traveled. Optionally indicate time in minutes.(This is normally a reading from a pedometer).mi5m30#forest, mi21.0, mi=21.0
swSwimswimPROPOSAL # tags are allowedRecords the number of meters swam. Optionally indicate time in minutes.sw1000, swim1200m60#swimmeet, swim=4000
ceCardiovascular ExercisecardioPROPOSAL Only # tags are allowedCardiovascular exercise. Optionally indicate time in minutes.ce, ce45, ce=45#gym
wbeWeight Bearing ExerciseliftPROPOSAL Only # tages are allowedWeight bearing exercise. Optionally indicate time in minutes.wbe, wbe45 wbe=40
mcMenstrual Cyclemooncycle, mcycle, cyclebeads BETA Only # tags are allowedFirst day of period. mcycle, mcycle#start
spSleepPROPOSALsleepOnly # tags are allowedIndicates number of hours slept.sleep8, sleep1.5#nap
caCaloriescaloriesPROPOSALOnly # tags are allowedNumber of calories consumed.calories300, c900#bigmac
pnPainpainBETAOnly # tags are allowedPain (general) on a scale of 0-10. 0=none, 10=maxpain=0, pain9#back, pain=5#neck
mdMoodmoodBETAOnly # tags are allowedLevel of happiness, mood, or general feeling of well being on a scale of 0-10. 0=none, 10=maxmood9, mood=1
hrPersonal Health RecordBETAhealthrecordOnly # tags are allowedReport/add a PHR by URL reference. 'hr' may be followed by a valid URL.hr#someinfo, hr=http://foobar.com/myphr.xml#ccr, hr=https://myphr.foo/mypage.pdf
hcHealth CardBETAhealthcardOnly # tags are allowedReport/add a Health benefits card by URL reference. 'hc' may be followed by a valid URL.hc#someinfo, hc=http://myplan.com/mycard.xml, hchttp://mysite.com/myplan.pdf#bcbs
dciDICOM ImagediacomPROPOSALOnly # tags are allowedReport/add a DICOM image via URL reference. 'dicom' may be followed by a valid URL.dcihttp://mydicom/myimage.tif, dci=
dsrDICOM Structured reportsdiacomstructuredreportsPROPOSALOnly # tags are allowedReport/add a DICOM structured reports via URL reference. 'dsr' may be followed by a valid URL.dsrhttp://mydicom/mystructuredreport.dat, dsr=https://mydicom/mystructuredreport.dat
vtsVoice TranscripsvoicetranscriptsPROPOSALOnly # tags are allowedReport/add a voice transcript via URL reference. 'vts' may be followed by a valid URL.vtshttp://myserver.com/myvoicets.dat, vts=https://myserver.com/myvoicets.dat
snmSnomed CTsnomedPROPOSAL Only # tags are allowedReport/add a SNOMED data block via URL reference. 'snm' may be followed by a valid URL.snmhttp://mysnomed/mydata.dat, snm=
labLab Datanon PROPOSAL # tags are allowedReport/add a Lab result via URL reference. 'lab' may be followed by a valid URL.lab#someresult, lab=http://mylab/myresult.xml#hl7, lab=http://mylab/myresult.pdf
rxMedication Prescriptionmed, prescriptionPROPOSAL# tags are allowedUsed to to indicate a prescription regimen. An identifier, such as Pillbox id, follows 'med' to indicate the prescription or OTC medicine.medasprin, rx21736652#pillbox rx82732304#rxnorm#foo
didMedication Regimen or other Activity Adherencegoterdun, diditPROPOSAL # tags are allowedUsed to to indicate adherence prescription drug regimen or other activity. An identifier, such as pillbox id, follows 'did' to indicate the medication.did=armstretch, did=21736652#pillbox did82732304#rxnorm#foo
clMedical ChecklistchecklistPROPOSALA value is required. # tags are allowedCreate a new medical checklist of type Value. Value is a pointer to JSON tasklist.cl=emergency, cl=http://foo.com/emergency.json
tskTask from ChecklisttaskPROPOSALA value is required. The value represents a pointer to a pending checklist task. # tags are allowedComplete a task on a checklist.task=push_the_button, tsk=4
zeoZeo Sleep ScoresleepscoreBETAA number between 1-100 is required. # tags are allowedA sleep score generated by the Zeo sleep machine (http://myzeo.com).zeo=77, sleepscore99

Commands for Getting and Sending Information to Others:

COMMANDNAMEKNOWN ALIASESSTATUSOPTIONSDETAILSEXAMPLES
gbgGet Blood Glucose Level getbg, getbloodglucose PROPOSAL Only # tags are allowed. Get recent blood pressure measurements.getbg, getbg#chart, getbg#omhe
sbgSend Blood Glucose Level sendbg, sendbloodglucose PROPOSAL Only # tags are allowed.Send most recent blood glucose measurements to someone.sendbgbrian@mydoc.com, sendbg3042218972#chart#fax
gbmiGet Body Mass Index getbmi, get bodymassindex PROPOSAL Only # tags are allowedGet recent body mass index measurements.getbmi, getbmi#chart, getbmi#omhe
sbmiSend Body Mass Index sendbmi, sendbodymassindex PROPOSAL Only # tags are allowedSend recent body mass index measurements.sendbmiaviars@foo.com, sendbmi650979555#fax#chart, sendbmiaviars@foo.bar#chart#url
gbpGet Blood Pressure getbp, getbloodpressure PROPOSAL Only # tags are allowed.Get recent blood pressure measurements.getbp, getbp#chart getbp#omhe
sbpSend Blood Pressure sendbp, sendbloodpressure PROPOSAL Only # tags are allowed.Send recent blood pressure measurements to someone.sendbpaviars@foo.com, sendbp650979555#fax#chart, sendbpaviars@foo.bar#chart#url
gwtGet Weight getwt, getweight PROPOSAL Only # tags are allowed Get recent weight measurements.getwt, getwt#chart, getwt#omhe
swtSend Weight sendwt, sendweight PROPOSAL Only # tags are allowed Send recent weight measurements to someone. sendwt, sendwt650979555#fax#chart, sendwtaviars@foo.bar#chart
gstGet Steps getst, getsteps PROPOSAL Only # tags are allowed Get recent steps per day measurements.getspd, getspd#chart, getspd#omhe
sstSend Steps sendst, sendsteps PROPOSAL Only # tags are allowed Send recent steps per day measurements to someone sendspd, sendspd650979555#fax#chart, sendspdaviars@foo.bar#chart
gkmGet Kilometers getkm, getkilometers PROPOSAL Only # tags are allowed Get recent kilometers per day measurements.getkpd, getkpd#chart, getkpd#omhe
skmSend Kilometers sendkm, sendkilometers PROPOSAL Only # tags are allowed Send recent kilometers per day to someone. sendkpd, sendkpd650979555#fax#chart, sendkpdaviars@foo.bar#chart
gmiGet Miles getmi, getmiles PROPOSAL Only # tags are allowed Get recent miles per day measurements.getmdp, getmpd#chart, getmpd#omhe
smiSend Miles sendmi, sendmiles PROPOSAL Only # tags are allowed Send recent weight measurements to someone. sendmpd, sendmpd650979555#fax#chart, sendmdpaviars@foo.bar#chart
gceGet Cardiovascular Exercise getce, getcardio, getcardioexercise PROPOSAL Only # tags are allowed Get recent cardiovascular exercise measurements.getcm, getcm#chart, getcm#omhe
sceSend Cardiovascular Exercise sendce, sendcardio, sendcardioexercise PROPOSAL Only # tags are allowed Send recent cardiovascular exercise measurements to someone. sendcm, sendcm650979555#fax#chart, sendcmaviars@foo.bar#chart
gwbeGet Weight Bearing Exercise getwbe, getweightbearingexercise PROPOSAL Only # tags are allowed Get recent weight bearing exercise minutes.getwbe, getwbe#chart, getwbe#omhe
swbeSend Weight Bearing Exercise sendwbe, sendweightbearingexercise PROPOSAL Only # tags are allowed Send recent weight bearing exercise minutes to someone. sendwbe, sendwbe650979555#fax#chart, sendwbeaviars@foo.bar#chart
gswGet Swim getsm, getsm PROPOSAL Only # tags are allowed Get recent swim measurements.gwbe, getwbe#chart, getwbe#omhe
sswSend Swim sendsm, sendswim PROPOSAL Only # tags are allowed Send recent swim measurements to someone. ssw, sendsw6503339555#fax#chart, sendswim=aviars@foo.bar#chart
gmcGet Menstral Cyclegetmc, getmcycle, getmooncycle PROPOSAL Only # tags are allowed Get recent menstral cycle start dates.gmc, getmcycle#calendar, getmc#omhe
smcSend Menstral Cycle sendmc, sendmcycle, sendmooncycle PROPOSAL Only # tags are allowed Send recent mentral cycle start dates to someone. smc, sendmc650979555#fax#chart, sendmooncycleaviars@foo.bar#calendar
gspGet Sleep getsp, getsleepPROPOSAL Only # tags are allowed Get recent sleep measurements.gsp, getsp#chart, getsleep#omhe
sspSend Sleepsendsp, sendsleep PROPOSAL Only # tags are allowed Send recent sleep measurements to someone. ssp, sendsp650979555#fax#chart, sendsleepaviars@foo.bar#chart
gcaGet Caloriesgetca, getcalories PROPOSAL Only # tags are allowed Get recent caloric measurements.gca, getca#chart, getcalories#omhe
scaSend Caloriessendca, sendcalories PROPOSAL Only # tags are allowed Send recent caloric measurements to someone sendca, sendca=650979555#fax#chart, sendcaloriesaviars@foo.bar#chatr
gpnGet Paingetpn, getpain PROPOSAL Only # tags are allowed Get recent pain measurements.gpn, getpn#chart, getpain#omhe
spnSend Painsendpn,sendpainPROPOSAL Only # tags are allowed Send recent pain measurements to someone. sendn, sendpain650979555#fax#chart, sendpainaviars@foo.bar#chatr
gmdGet Moodgetmd, getmood PROPOSAL Only # tags are allowed Get recent weight readings.getmd, getmd#chart, getmood#omhe
smdSend Moodsendmd, sendmood PROPOSAL Only # tags are allowed Send recent weight measurements to someone sendhappy, sendhappy650979555#fax#chart, sendhappyaviars@foo.bar#chat
ghrGet Personal Health Recordgethr, gethealthrecordPROPOSAL Only # tags are allowed Get recent PHR.ghr, gethr#pdf, gethr#omhe, ghr#ccr
shrSend Personal Health Recordsendhr, sendhealthrecord PROPOSAL Only # tags are allowedSend recent PHR to someone shr, sendhr650979555#fax#chart, sendhraviars@foo.bar#chat
ghcGet Health Cardgethc, gethealthcardPROPOSAL Only # tags are allowed Get recent health benefits card.gethc, gethc#chart, gethc#omhe
shcSend Health Cardsendhc, sendhealthcard PROPOSAL Only # tags are allowed Send recent health benefits card to someone sendhc, sendhc650979555#fax#chart, sendhcaviars@foo.bar#chart

Commands for Billing, Eligibility, and Authorization:

We are especially seeking comment and input on this section Billing experts, join the OMHE_microsyntax Google group to participate

COMMANDNAMEKNOWN ALIASESSTATUSOPTIONSDETAILSEXAMPLES
icnICD 9 Diagnosis Code icdnine PROPOSALOnly # tags are allowedReport/add an ICD9 code. icdnine must be followed by a valid icd9 code.icn8929, icdnine=6421#foo
ictICD 10 Code icdten PROPOSALOnly # tags are allowedReport/add an ICD10 code. icdten must be followed by a valid icd10 code.ict8929, icdten=6421#foo
cptCPT Code none PROPOSAL'm' delineates CPT modifiers. # tags are allowedReport/add an CPT procedure code. 'cpt' must be followed by a valid cpt code.cpt12345.1, cpt12345.1m23m12, cpt=43261#foobar
cpCo-Pay copay PROPOSAL# tags are allowed.Report a co-pay amount. 'copay' must be followed by a number.cp10, copay=5.00 copay=20#USD

Commands for Population / Public Health Reporting:

We are especially seeking comment and input on this section USAID, NGOs, public health experts, students, and others please help us build out this section. Join the OMHE_microsyntax Google group to participate

COMMANDNAMEKNOWN ALIASESSTATUSOPTIONSDETAILSEXAMPLES
PROPOSALPROPOSALnonePROPOSAL PROPOSALPROPOSALPROPOSAL

Commands for Food & Caloric Intake:

We are especially seeking comment and input on this section. Join the OMHE_microsyntax Google group to participate

COMMANDNAMEKNOWN ALIASESSTATUSOPTIONSDETAILSEXAMPLES
PROPOSALPROPOSALnonePROPOSAL PROPOSALPROPOSALPROPOSAL

Helper & Convenience Commands:

PROPOSAL: Any Helper & Convenience may be appended to any other OMHE message.

For example, the following is a valid OMHE message:

bp120/80p60#dt20100101:122005Z#tzo-5

COMMANDNAMEKNOWN ALIASESSTATUSOPTIONSDETAILSEXAMPLES
hpHelphelp BETA # tags are allowed. Ask an OMHE service for help. help, helpbg, help=hc, helpweight
okOK - an affirmative responseokay, y BETA # tags are allowed. Anser yes or confirmok, y
staStartstart, begin BETA # tags are allowed. Start using an an OMHE service or begin an enrollment.start, starthc, startwt
stoStopstop, end BETA # tags are allowed. Stop using an OMHE service.stop, stophc, stopwt
idIdentification Number or User Name user, identificationumber, usernameBETA noneA username or account number with no spaces. Provided as a convenience function, this often not required because it this can inferred by the phone number twitter name or other transport-level identifier.id3478342, idBeGoodJ
hidHardware Identification Number or Stringhardwareid BETA noneA unique identifer to identify the hardware device. Provided as a convenience function, this often not required because it this can inferred.hid3478342, hid 00:03:0d:47:dd:72#mac
pwPasswordpw, pass, password PROPOSAL none A password with no spaces. Provided as a convenience functionpw5555, password=mypass, pass=8
piPinpin PROPOSAL none A pin with no spaces. Provided as a convenience functionpi5555, pin=7777, pin=8
dtDateTime StampdatetimePROPOSALnoneFormat: 'date:timeZtimezone offset'. In other words, 'yyyymmdd:hhmmssztz'. Provided as a convenience function, the date is often inferred from the sending device or transport protocol. In OMHE datetime must be expressed in UTC (i.e. Zulu time) and the must be provided. The ':' separates the date and the time and the letter 'z' separates the timezone offset from the datetimedt20091218:123045z-5, datetime20101220:235945z0, dt=20091218:123045z+1
tzTime Zone OffsettimezonePROPOSALnoneAn integer between -12 and +12. Provided as a convenience function, timezone offset.tz11, tz=-5 tz=+5
tmTimetimePROPOSALUse 'a' or 'p' to designate AM or PM respectively; otherwise a 24-hour clock is assumed.Format: 'hhmm', 'hhmmss', hhmm[a|p]' or 'hhmmss[a|p]'. Provided as a convenience function, the time is often inferred from the sending device or transport protocol.In OMHE date is always expressed in UTC (i.e. Zulu) date time.tm1230, time1450, time830a, time=730a, tm2305, tm230559, tm110559p
uuUniversal Unique IdentifieruuidPROPOSALnoneA Universal Unique Identifier which can be used as a transaction identifieruu550e8400-e29b-41d4-a716-446655440000, uuid550e8400-e29b-41d4-a716-446655440000, uu=550e8400-e29b-41d4-a716-446655440000

Creating & Sharing Your Own Commands:

Add you own commands like so:

 fb84754
 foo=bar
 cat=fluffy

Your commands just need follow the OMHE syntax structure. You'll may need to tweak a parser to recognize your new command, but this should be fairly simple.

Sharing Your Commands:

We invite you to contribute your commands here so others may use them. We will try and keep all of the parsers current with the latest commands. Please submit your suggestions in "Issues" here on Google Code or in join and send a note to the OMHE Google Group. http://groups.google.com/group/omhe_microsyntax

Powered by Google Project Hosting