The HealthVault team offers a .NET SDK available at http://www.msdn.com/healthvault. Additionally, a number of open source libraries offer higher-level abstractions for interacting with the HealthVault platform. This section outlines the level of abstractions available in each of these libraries.
The HealthVault .NET SDK is the official software development kit available from Microsoft for working with the HealthVault platform. The HealthVault team maintains this SDK and provides interfaces for all HealthVault interfaces.
This SDK does not support the HealthVault Client APIs for mobile phones, but it does support the HealthVault Client APIs for Windows Applications. The Shell Redirect Interface is supported, but not all capabilities are supported. Notably, this is the only SDK that supports signing health items and streaming large files to HealthVault. HealthVault uses Azure, Microsoft’s cloud storage service, to store these large files.
Throughout this book, we will be looking at code that uses this SDK, and refer to it as the HealthVault .NET SDK. Officially each major release of this SDK is supported for two years, and the SDK is currently compatible with .NET framework version 2.0.
The source code of this SDK is available for reference, but the license terms don’t allow modifications to the SDK.
This is the second most popular SDK for the HealthVault platform. The HealthVault open source Java SDK is available under a very permissive open source license at http://healthvaultjavalib.codeplex.com. This SDK was developed by members of the HealthVault team and provides interfaces for most HealthVault interfaces. The source code of the SDK is available under the Microsoft Public License, and modifications and redistribution of this code are permitted for commercial and noncommercial purposes.
Notably, this SDK supports the HealthVault Client APIs for Android mobile phones, and it provides a complete abstraction layer for Shell redirect interfaces. But it does not support Patient Connect, asynchronous processes, signing of health items, or streaming large files to HealthVault. However, there are samples or documentation available for signing and streaming.
Additionally, the SDK provides an object wrapper for thing types using code generation tools. If these classes don’t meet your needs, you can use the method schemas and create suitable wrappers.
This SDK is fully available for JDK 1.6; however, raw authentication is supported for JDK 1.4. The SDK is community supported, and patches for bug fixes or missing functionality are welcomed.
The HealthVault team provides an open source and community-supported library for the iOS platform available at https://github.com/microsoft-hsg/HealthVault-Mobile-iOS-Library. This library provides basic functionality to authenticate mobile clients. It doesn’t provide support for any additional HealthVault features.
Applications such as iTriage (http://www.itriagehealth.com/) have used this library to create HealthVault iOS applications.
This library is available under the Apache 2.0 open source license, and modifications and redistribution of this code are permitted for commercial and noncommercials purposes.
Like the iOS library, the Windows Phone library at http://healthvaultwp7.codeplex.com/ provides an authentication abstraction for Windows Phone mobile clients. Applications such LiveScape (http://livescape.mobi/) have used this library to create HealthVault-enabled Windows Phone applications.
This library is available under the Apache 2.0 open source license, and modifications and redistribution of this code are permitted for commercial and noncommercials purposes.
In Chapter 5, we will walk through a detailed application that shows how to work with HealthVault mobile interfaces.
The HealthVault team has helped create Python, PHP, and Ruby libraries. These libraries are primarily driven by partners and provide the basic authentication layer for working with the HealthVault service. Applications such as TrailX (Python), Teladoc (PHP), and podfitness (Ruby) have used these libraries to create successful HealthVault applications.
These libraries are available under the Apache 2.0 open source license, and modifications and redistribution of this code are permitted for commercial and noncommercial purposes.
Table 3-5 summarizes the functionality available in various HealthVault libraries.
Table 3-5. HealthVault SDK and open source libraries
SDK library | Distribution | Supported platform | Features available | License and support |
---|---|---|---|---|
HealthVault .NET | MSDN | Windows XP, Vista, 7 (.NET 2.0) | All HealthVault features | Microsoft Reciprocal License (MS-RL) Microsoft supported |
Java | Codeplex | JDK 1.6 JDK 1.4 (limited) | Authentication, method wrappers, thing-type wrappers | Microsoft Public License (MS-PL) Community support |
Java | Codeplex | Android (1.6+) | Authentication, thing-type wrappers | MS-PL Community support |
iOS | GitHub | iOS 4.0+ | Mobile authentication | Apache 2.0 Community Support |
Windows Phone | Codeplex | Windows Phone 7+ | Mobile authentication | Apache 2.0 Community support |
Python | Google Code | Python 2.7 | Authentication (basic) | Apache 2.0 Community support |
PHP | SourceForge | PHP | Authentication (basic) | Apache 2.0 Community support |
Ruby | RubyForge | Ruby | Authentication (basic) | Apache 2.0 Community support |