Redirecting HealthVault Applications to the HealthVault Shell

One can redirect HealthVault applications to the HealthVault Shell for various reasons.

For example if you want to redirect a user to list of frequently asked questions, the url is this but one programmatically generate it as the code below :

    
        using Microsoft.Health.Web; 
///  
/// Redirect the user to HealthVault frequently asked questions    
///    
public void RedirectToHealthVaultFaq()    
{        
RedirectToShellUrl(ShellRedirect.To.Help, ShellRedirect.Help.FAQ);    
}

/// 
/// Template class for HealthVaultShellRedirects    
/// NOTE: Does not include all possible redirections   
///   
public static class HealthVaultShellRedirect
{
    public static class To
    {
        public const string Help = "help";
        public const string AppAuth = "appauth";
        public const string CreateAccount = "createaccount";
    }

    public static class Help
    {
        public const string FAQ = "topicid=faq";
    }
    public static class AppAuth
    {
        public const string AppId = "appid="; public const string Redirect = "redirect=";
    }
    public static class CreateAccount
    {
        public const string AppId = "appid="; public const string IsMRA = "ismra="; public const string PersistWCToken = "persistwctoken=";
    }
}

For complicated targets one can use the string builder class to build the query string.

For example if one wants to redirect a user to healthvault for account creation. (HealthVaultShellRedirect, class is defined in first sample)
:

 
///     
/// Redirect a user to create a new healthvault account    
///     
public void RedirectForAccountCreation()    
{        
    StringBuilder query = new StringBuilder(128);
    query.Append(HealthVaultShellRedirect.CreateAccount.AppId);
    query.Append(WebApplicationConfiguration.AppId);
    // We are doing this for only one record
    query.Append("&" + HealthVaultShellRedirect.CreateAccount.IsMRA + "false"); 
    // We dont need a persistent token, it might be useful for managing campaigns 
    query.Append("&" + HealthVaultShellRedirect.CreateAccount.PersistWCToken + " ");
    RedirectToShellUrl(HealthVaultShellRedirect.To.CreateAccount,            query.ToString());
}


/// 
///    
/// Redirect to HealthVaultShell for application authentication    
///  
public void RedirectToAppAuthPage()
{        
    StringBuilder query = new StringBuilder(128);
    query.Append(HealthVaultShellRedirect.AppAuth.AppId);
    query.Append(WebApplicationConfiguration.AppId);
    query.Append("&" + HealthVaultShellRedirect.AppAuth.Redirect);
    query.Append(HttpUtility.UrlEncode(Request.Url.AbsoluteUri));
    RedirectToShellUrl(HealthVaultShellRedirect.To.AppAuth, query.ToString());    
}

A complete list of possible To targets and their parameters is detailed in this HealthVault forums post. Please be advised that lot of the functionality there is advanced and serves as a good reference.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s