Hamilton Technology Co-operative Develops Cloud-on-a-keychain

May 3rd, 2012

Community Technology Co-operative Think|Haus in Hamilton Ontario has developed what is thought to be the first true “mobile cloud” technology. By using patent-pending DropletsTM technology, the co-operative has developed a way to create a mobile cloud environment, implemented as a simple keychain that can be taken anywhere by the user.

“Everyone knows that the challenge with last year’s cloud technology is that it was tied to the internet. Our mobile cloud fits on a keychain, which allows the user to take the cloud with them wherever they go, finally achieving the ultimate in mobile computing” says Joey Coleman, spokesperson for Think|Haus.

Cloud technology is seen as a solution to many challenges in IT today. Making it mobile offers a great advancement to end-users. With both bluetooth and standard WiFi interfaces, the Cloud-on-a-Keychain (CoaK) technology offers a powerful, scalable compute platform in a compact form factor.

“This is really a platform strategy” says Coleman. “Now that we have the compute engine worked through, we’re beginning work on the Data-as-a-Service components. When combined with the power of today’s smartphones, this offering will solve many of the mobility and data access challenges we have today”.

Learn more about Cloud-on-a-Keychain at Thinkhaus.org

Author: benderd Categories: Uncategorized Tags:

Not sure about AppsForHealth? Then tonight’s mixer is for you!

April 24th, 2012

Tonight we are hosting an AppsForHealth Mixer Event at the Mohawk College Arnie at 7pm. If you are interested in the event but don’t know where to start, then this event is for you. We will have judges, challenge sponsors and contestants there to get inside tips on the contest, the rules and the challenges. If you don’t already have a team or a partner this is the time to find one.

Learn more at http://appsforhealth.ca/index.php?option=com_content&id=132

See you at the Mohawk College Arnie (Fennell & West Fifth Hamilton) at 7pm!

eHealth Corporate Profile - iNTERFACEWARE

March 30th, 2012

iNTERFACEWARE is a Toronto based company that make a HL7 interface engine called Iguana. Iguana is trending strongly to become one of the most popular engines on the market. Founded in 1997, iNTERFACEWARE has a strong track record and a great deal of experience in integrating healthcare systems inside and between hospitals and regional authorities.

Like many Canadian Healthcare Technology companies, iNTERFACEWARE does a significant amount of their business in the USA. I recently spoke to Eliot Muir, the CEO of iNTERFACEWARE, who reported to me that the company has won it’s first large scale eGate conversion project with a large hospital out of Detroit.  This was a opportunity that arose after coming out of the recent HIMSS 2012 conference in Las Vegas.

Eliot said what really sold the team on Iguana was the speed at which one of team was able to convert and test no less than 4 eGate interfaces within one day.  Two of these were simple ADT interfaces, two were more complicated. Either way when it comes to creating healthcare systems interfaces, in my opinion that is extremely fast.

Eliot demonstrated to me the unique new approach that the company has developed to make building interfaces more efficient than ever before. Instead having a traditional complicated GUI “mapping” approach that most integration engines adopt, Iguana uses a novel web-based interactive tool which visually shows the data flowing through code. It really is quite impressive.

Iguana has long been popular in the vendor space but the company is starting to make rapid progress in the large hospital market and in the large scale HIE market for integration.

For more information visit www.interfaceware.com

Author: benderd Categories: Uncategorized Tags:

Ontario eHealth & mHealth Company Profile Series

March 30th, 2012

Over the next 3 months I plan to write a series of 12 articles profiling eHealth & mHealth companies operating in Ontario & Canada. Most of these companies are small and medium enterprises with some real innovative ideas and technologies.

Author: benderd Categories: Uncategorized Tags:

Apple position on supporting Adobe Flash

February 5th, 2012

Many people (mostly students) have asked me why Apple does not support Flash. Here is an article where Steve Jobs explains his motivations for not supporting Flash:

http://www.apple.com/hotnews/thoughts-on-flash/

Author: benderd Categories: Uncategorized Tags:

PIVL & IVL … new Everest 1.0 functionality demo

September 2nd, 2011

There are two interesting data types in the HL7v3 DT specification which can be used for describing sets of things, they are IVL (interval) and PIVL (periodic interval). In an attempt to make Everest data types even richer, we’ve added some functions that make dealing with these types easier.

First, lets deal with IVL. In Everest, the IVL class allows the specification of an Interval or range of values. For example, if I want to describe an interval with a range of 0 L to 10 L, I would use this code:

IVL<PQ> range = new IVL<PQ>(
     new PQ(0, "L"),
     new PQ(10, "L")
) { LowIncluded = true, HighIncluded = true };

Now, for example, let’s say I want to test if 1 L is a valid measure according to this range, I can use the new Contains() method:

PQ test = new PQ(1, "L");
bool isInRange = range.Contains(test); // result is true

New to Everest as well is the concept of IUnitConverters, an IUnitConverter implementation allows the PQ data type to convert values between units of measure. Since we didn’t want to infringe upon license issues we’re just including a simple SI Unit converter (that can only handle basic SI units like L, m, and g) with Everest 1.0 (that an PQ can natively convert dates/times). With an assigned unit converter, we can test if 100 mL is valid in this range:

PQ.UnitConverters.Add(new SimpleSiUnitConverter());
PQ test = new PQ(100, "mL");
bool isInRange = range.Contains(test); // result is true because 0.1 L is in range

This functionality is also extended to another quite useful class, PIVL. Before I describe PIVL, I should mention that the Contains() method on PIVL requires that the phase be translatable by the period (ie: The template parameter T must implement IPqTranslatable<T>).

PIVL allows us to repeat an interval over a specified period. This is best illustrated with time, so lets do a simple PIVL that describes Fridays between 9:00 am and 5:00 pm:

IVL<TS> nineToFive = new IVL<TS>(
    DateTime.Parse("2011-09-02 09:00 AM"),
    DateTime.Parse("2011-09-02 05:00 PM")
);
PIVL<TS> repeated = new PIVL<TS>(
    nineToFive,
    new PQ(1, "wk")
);

Notice to get the “every Friday 9 - 5″, I repeat a Friday (Fri Sept 2, 2011) every week. Now, lets test if 11:30 AM on Saturday January 1, 2000 meets the criteria of the PIVL:

TS y2kLunch = DateTime.Parse("2000-01-01 11:30 AM");
bool isIncluded = repeated.Contains(y2kLunch ); // Returns false

To get TRUE from the contains method, we’d need to pick a Friday (any Friday) in the time range specified. I’ve picked 2:15 PM on Friday, December 29, 1989:

TS randomFriday = DateTime.Parse("1989-12-29 2:15 PM");
bool b = repeated.Contains(randomFriday); // returns true

We think that by putting these functions into Everest, we’re making it more useful for developers to interact with some of the more complex data types.

One last note, the conversion functions for time were actually tricky in the PQ type. The conversions are based on the number of Ticks in each of the time units. The reason this decision was made is that a PQ instance may have no knowledge of “which” time period it is bound to (for example “1 mon” may mean 28, 30 or 31 days).

This means that PQ’s convert method is reliable for any unit where ticks are predictable (us, ms, s, min, hr, d, and wk). When ticks aren’t predictable we’ve used very basic math (example: mon = a / 12). The A (annum) value is fixed to 315,569,260,000,000 ticks (the number of ticks in a non-leap year) which means there is some drifting when calculating over very long periods of time.

Of course, it is always possible to write a better IUnitConverter for time ;)

Author: Justin Categories: Uncategorized Tags:

Everest QA - The Tests Expand

August 12th, 2011

Some news from the Everest front, finally got the new unit tests working and covering more features in Everest. We’re over to 7,200 tests that cover roughly 60-70% of functionality (depending on which assembly we instrument).

Took a while to get them all working but it was worth it! We found and corrected lots of new juicy bugs (see: http://te.marc-hi.ca/issue/default.aspx?project=af66d54e-d41e-4ac1-8b44-d0d3ca6cabf0&showall=true for more info). Many of the additional unit tests are designed to test the new formatter architecture in the new version of Everest but there are some in there testing improved data type functionality as well. The tests work out (rougly) to:

Formatter Tests ~ 6,000
Data Types ~ 1,000
Other Features ~ 200

I’ve left a screen shot of our build log to show just how much work has gone into QA for the upcoming release of Everest!

Unit Test

Author: Justin Categories: Uncategorized Tags:

Everest 1.0 Data Type Operations

July 28th, 2011

We’ve been busy updating the Everest datatypes in preparation of Everest 1.0, and have decided to take the route of implementing operators over some of the suggested R2 operations (who really wants to call num1.Add(num2.Multiply(num3)) instead of num1 + num2 * num3)?

To illustrate some of the new functionality, I’ve decided to write some simple programs illustrating the operators in use. For the first example, I’ve redone the 1st year computer science undergrad “birthday” program:

TS now = DateTime.Now;
Console.WriteLine("How old are you?");
PQ age = Console.ReadLine();
Console.WriteLine("You were born in {0}", now - age);

The program illustrates subtracting a PQ from a TS, as long as a valid PQ (with a valid unit of time) is input, we should get a timestamp output. Pretty simple but illustrates some of the functionality. Here is some sample output:

How old are you?
21 a
You were born in 19900728112451.050-0400

We can also do other units of measure for time such as weeks:

How old are you?
32 wk
You were born in 20101216173201.726-0400

We can also use these operators to do scalar operations on PQ types, for example, this basic parimeter of a circle program:

REAL pi = Math.PI;
Console.WriteLine("What is the radius of the circle?");
PQ rad = Console.ReadLine();
Console.WriteLine("Perimeter of the circle is {0}", 2 * pi * rad);

The program assigns Math.PI to a REAL and then multiples that by the entered radius to get the perimeter:

What is the radius of the circle?
30 m
Perimeter of the circle is 188.495559215388 m

Or, with different units:

What is the radius of the circle?
30 [ft_i]
Perimeter of the circle is 188.495559215388 [ft_i]

 Much more to come!

Author: Justin Categories: Uncategorized Tags:

Everest Update - Summer 2011

June 29th, 2011

We’re back focused on our HL7v3 API Framework called Everest again this summer in the MARC-HI lab.

Now at over 1,333+ unique downloaders, we have had quite a lot of interest in Everest in the past 2 years since it’s release. We are currently working on the top three requested features for Everest - HL7v3 Universal Support for NE2010, Native Java Platform Support, and HL7v3 Datatypes R2 support.

The current release of Everest (1.0 RC2 — available here) already includes support for the Universal Version of HL7v3 (UV release NE2008) and support for IHE PIXV3 and PDQV3 profiles ( http://www.ihe.net/Technical_Framework/upload/IHE_ITI_Suppl_PIX_PDQ_HL7v3_Rev2-1_TI_2010-08-10.pdf ). Included in the latest Everest Release are examples on how to execute those transactions. We have even field-tested that functionality with multiple vendors at the eHealth Interoperability showcase.

As of this week we have an alpha build of the native Java Platform edition of Everest (we have been calling it “jEverest” — hey we’re software engineers not marketers). We’re hoping to do the initial public release of this expanded platform for testing by September, with a production quality release in the late fall of this year (say October / November). Cathedral vs. Bazaar arguments accepted….

Everest has been designed from the beginning to handle “plug and play” XML formatting, Datatypes, Communications channels, etc. As Canada Health Infoway has now announced the planned adoption of HL7v3 Datatypes R2, we will include this functionality in our fall release.

Some interesting Everest statistics as of June 2011:

- approximate lines of code: 83,000

- approximate number of unique classes: 1004

- approximate number of unit tests: 3267

- estimated code coverage of unit tests: 72%

- approximate man-hours of design, development and testing: 18,000 hours

- approximate investment so far: USD$900,000

- license type: Apache 2 Open Source

Author: benderd Categories: Uncategorized Tags:

Happy Birthday Everest!!!

June 28th, 2011

Wow - it feels like only yesterday that Everest was just a gleam in the eye of a young Justin Fyfe, but it was 3 years ago today that he committed the first version of the design document for Everest (our HL7v3 API Framework) into our version control system. We celebrated that magical event today in our lab with a pizza party and cake (candles were confiscated by College security). Here’s to 3 more years, Everest!

 

Happy Birthday Everest!

Happy Birthday Everest!