Dec 26, 2009

How readable is your blog?

We all want to write an easy-to-comprehend blog post. Something, everyone could read and understand easily. I have always thought, it would be nice to have an automated tool to review/rate the readability of my post, before it's posted online. And, i found this website online, which rates the readability of the given text and rates the easiness-to-read based on algorithms such as Flesch readability test.

Go the url, paste your post and test the readability. The paragraph above has 58.90 on readability test, which means, it can be read easily by anyone aged 16 years and above.

http://www.addedbytes.com/code/readability-score/

QA on online businesses.

Stackoverflow site redefined the concept of community discussion web sites, with it's intuitive yet really simple discussion board. The user interface makes the conversations highly productive. Now, another site focussing on Q&A about online businesses is using the same discussion board software (never new it can reused). There are already of ton of interesting discussions. Check it out here http://www.gatejumper.net/.

Passion and focus will rock your career.

Read this awesome post on being "jack-of-all-king-of-none". Makes lot of sense. An excerpt from the post below:
"In work, jumping from one thing to the next doesn’t necessarily pay off. You will undoubtedly end up competing with people who have focused on one thing for much longer than you have. Those people will eventually become really great at that one thing. If you’re only good at that one thing, you’ll lose in a competitive marketplace. The other things you’re also good-but-not-great at probably won’t help you land jobs or customers."
Read the full post here.

How to evaluate competence of PM candidates?

This is a tricky one for most of us. Interestingly, ASAPM has something called National Competence Baseline, a defined set of parameters for evaluating PM candidates. Eventhough the objective of these parameters were for the certification offered by the body, it also helps evaluate potential PM candidates during the recruitment process. The document outlining the parameters can be found here.

How do you quality check a Project Mangement Candidate?

Most of us have played both the roles of interviewer and interviewee. Interviewers at times(or most of the times) tend to interpret the situation from their own context, without following any objective goals. The discussion thread in linkedin here has some interesting thoughts and captures a realistic picture of interview process.

Dec 25, 2009

How to reduce XAP size

Image representing Microsoft Silverlight as de...Image via CrunchBase
Large XAP size will result in longer downloading and loading time, thereby requiring large bandwidth and better PC configuration for snappy user experience.

If your Silverlight XAP size is large (>1 MB), better be thinking about reducing the size to improve performance and ultimately, the user experience. Here are few tried and tested ways to do it.

1) Split the XAP into two or more till an optimal size is reached. For an app that has login followed by viewing the actual app, you could split the login and user profile into two xaps. This way the login process seems pretty fast. Only disadvantage of this approach is your XAP files containing duplicate copies of assemblies such as the ones from the SDK. But, there is a solution to this problem. The next optimization technique explains it.

2) Application library caching. All XAP files refer to one or more assemblies from SDK and are mostly packaged with your XAP file. If you had two XAP files containing the same assemblies, the duplicate assemblies will get downloaded with the XAP. Why not just cache the duplicate assemblies in browser and avoid downloading them again? That's what app library caching does. It allows you to separate out the common assemblies from the XAP and allow them to be cached in the browser. Read this blog post on configuring app library caching. In addition to the article, you can use the emm utility from here to generate the extmap files.

3) Compress the XAP better. XAP is basically an archive of files. It seems the XAP files are not compressed for download optimization, but for browser rendering optimization. You could compress them better by doing the following.
 - Rename the xap extension to zip.
 - Extract the zip to a folder.
 - Archive it again with zip or rar formats with best possible compression ratio.
 - Rename the archive back to xap
Most people have reported a much reduced XAP size, but again it depends on the content type such as image, text etc.

Good luck!

Dec 20, 2009

Blogger spam robots s***.

Well, can you imagine Blogger taking down a genuine blog account with 88000 visitors/day without notice?

It happened to a site two days back. Couple of jottings from the site owner.

"Blogger's spam-prevention robots detected that my blog had characteristics of a spam blog. However, Automated spam detection is inherently fuzzy, and so there are lots of false positives--with this being one of them!"

"Blogger has no phone support and its online forum about this issue indicates that a Blogger representative needs to review the situation and this may take some time."

It's ridiculous that Google can do such silly things. It's basic common sense that, someone "human" MUST evaluate a suspicious blog account that's been in existence for couple of years with such a high volume of visitors. This is the irony of highly automated systems. But, this is also the sheer mistake of Google policies and support for blogspot!

Be warned that, this could happen to you and me ;)

EHR adoption in United States today.

U.S.Image via Wikipedia
Only 10% of hospitals and 17% of doctors currently have at least a basic electronic health record system in place, and fewer than 2% of hospitals use electronic records in all departments, according to the New England Journal of Medicine. The government's goal is to change the digital landscape over the next 5 years, ensuring security to electronic health records for all Americans by 2014. Fail to go digital by 2015, and your organization will face graduated financial penalties.

There is a webinar on the topic here. BTW, i am not affiliated to this company in any way.
Reblog this post [with Zemanta]

Nov 30, 2009

HL7 v2 and V3 comparison.

There are tons of articles on the web about HL7 v2 and v3 comparison. This is just one of them.

HL7 has been a dominant force in the Healthcare IT systems and continues to remain so primarily with its messaging standard v2.x. With the introduction of v3, HL7 has taken a major step to overcome the limitations or sometimes dead-ends in v2.x implementation. Below is a quick summary of those differences from an Healthcare IT implementation perspective. There is also a link to a very good presentation on the differences.

Differences between HL7 v2 and v3:
HL7 V2
  • Not “Plug and Play” – it provides 80 percent of the interface and a framework to negotiate the remaining 20 percent on an interface-by-interface basis
  • Historically built in an ad hoc way because no other standard existed at the time
  • Generally provides compatibility between 2.X versions
  • Messaging-based standard built upon pipe and hat encoding
  • In the U.S., V2 is what most people think of when people say “HL7″
HL7 V3
  • Approaching “Plug and Play” – less of a “framework for negotiation”
  • Many decades of effort over ten year period reflecting “best and brightest” thinking
  • NOT backward compatible with V2
  • Model-based standard built upon Reference Information Model (RIM) provides consistency across entire standard
  • In the U.S., Clinical Document Architecture (CDA) is what most people in the U.S. think of when people say “HL7 V3″
  • V3 messaging hasn't taken off much when compared to the V3 documents adoption.


Video on HL7 v2 and v3 comparison:

http://www.neotool.com/download/videos/Dec4_Fast15_HL7_V3_Insights.swf

Useful links on HL7:
http://www.hl7standards.com/blog/
Reblog this post [with Zemanta]

Nov 17, 2009

Someone says - If the comments are ugly, the code is ugly

I read a blogpost on coders that says
Good programs do not contain spelling errors or have grammatical mistakes. I think this is probably a result of fractal attention to detail; in great programs things are correct at all levels, down to the periods at the ends of sentences in comments.
Sounds interesting?

Read more here - http://www.itworld.com/development/84780/if-comments-are-ugly-code-ugly

Nov 9, 2009

How to fund a startup by Paul Graham

A blog post written by Paul Graham talks everything about funding a startup, to the skills sets needed by startups, and lot more. It's a good two hours read though.

Quick snapshots from the post.
I was surprised recently when I realized that all the worst problems we faced in our startup were due not to competitors, but investors. Dealing with competitors was easy by comparison.

Another way to fund a startup is to get a job. The best sort of job is a consulting project in which you can build whatever software you wanted to sell as a startup. Then you can gradually transform yourself from a consulting company into a product company, and have your clients pay your development expenses.

Fear of failure is an extraordinarily powerful force. Usually it prevents people from starting things, but once you publish some definite ambition, it switches directions and starts working in your favor.

Angels are individual rich people. Angels who've made money in technology are preferable, for two reasons: they understand your situation, and they're a source of contacts and advice.


Some angel investors join together in syndicates. Any city where people start startups will have one or more of them. In Boston the biggest is the Common Angels. In the Bay Area it's the Band of Angels. You can find groups near you through the Angel Capital Association.


Y Combinator: Innovative early stage seed funding for startups.



Image representing Y Combinator as depicted in...Image via CrunchBase
Y Combinator out of SF bay area provides seed funding for Startups. The unique thing about YC is their approach to funding. YC identifies aspiring startups at the early stage and provides seed funding and ecosystem to prepare the startups for the next stage.

More about YC from YC..
At Y Combinator, our goal is to get you through the first phase. This usually means: get you to the point where you've built something impressive enough to raise money on a larger scale.

We make small investments (rarely more than $20,000) in return for small stakes in the companies we fund (usually 2-10%).

We're hackers ourselves, and we've spent a lot of time figuring out how to make things people want.

help founders deal with investors and acquirers.

We introduce founders to lawyers who will often, because of the YC connection, agree to defer payment for legal work.

We advise about what to patent, and when.

One of the least publicized things we do, for obvious reasons, is mediate disputes between founders. No startup thinks they're going to need that, but most do at some point.

Instead of submitting a business plan or making a slide presentation, you just fill out an application form.
Reblog this post [with Zemanta]

Nov 8, 2009

When is a web-based EHR (not) a good choice?

Web-based EHRs are gaining popularity due to following reasons:
- they don't require hardware setup at the doctor's office and therefore hardware costs and cost associated with setting it up and maintaining it is not required.
- the data is automatically backed up by the vendor in a centralized server. backups are no more the doctor's responsibility.
- software upgrades are automatically done by the vendor automatically, sometimes with additional cost. but, the doctor doesn't have to burden themselves with the upgrade process and the risk associated with it.
- accessible anywhere, anytime. the EMR is accessible from any corner of the world 24x7 with just a PC and a web browser.
- no worries about risk management. what if a natural disaster strikes or a fire accident happens at the doctor's office? zero impact, as the patient data is maintained in a different location presumably protected from such disasters and all risk-mitigating measures taken.
- the patient data is interoperable in/out with other EHR systems, providing insight into the patient's complete health history

With all those overwhelming benefits behind, there are few flip-side things inherent with web-based EHRs:
- access to patient data when the internet is down or the vendor server is down, especially during times of emergency(maybe during a surgery).
- bandwidth requirements of the software. ideally, the software shouldn't require heavy internet bandwidth. but, reality may differ.
- how secure is the patient data outside your walls when sent or received from the server.
- what are the measures taken by the company to protect against identity thefts?

The decision to or not to choose a web-based EHR is purely need-based. But, a lot of thought process needs to go in before making the final call.

New EHR certification body.

With Healthcare IT at the center of the Healthcare Stimulus, the 'meaningful use' and 'EHR certification' terms have taken center stage. CCHIT has remained as the only approved body to certify EHR systems. Now, a new company Drummond Group has come forward to create another EHR certification body. Refer to the link below for more details.


This is a welcome change, as providers and EHR vendors have been scrambling to CCHIT sometimes with satisfying feedback from CCHIT and sometimes otherwise.

Nov 6, 2009

HL7 announces EHR Specification

HL7 announced yesterday that is has published the healthcare industry’s first ANSI (American National Standards Institute)-approved standard that specifies the functional requirements for regulated clinical research in an electronic health record system (EHR-S). The HL7 EHR Clinical Research Functional Profile for EHR systems is based upon the HL7 EHR Work Group’s EHR System Functional Model Release 1, which is also an ANSI-approved American National Standard.
The EHR Clinical Research Functional Profile defines high-level requirements critical for using electronic health record data for regulated clinical research, and provides a roadmap for integrating the information environment that must support both the patient care and the downstream clinical research processes. Pharmaceutical, biotechnology, clinical research technology vendor, healthcare technology vendor, and federal regulatory stakeholders from the United States and the European Union collaborated for two years to identify and address a broad list of data protection, regulatory and ethical research requirements.

To see the full press release, please click here.

DeepDyve: Like iTunes for Scientific and Medical Papers

DeepDyve: Like iTunes for Scientific and Medical Papers & Research

Posted using ShareThis

Oct 28, 2009

Cleaning up temp data in PC

My PC drains the hard drive quite often. Most of the time, it's due to temp data hidden in folders unknown to me. If you have the same problem, use the CCleaner tool. It does a good job of analyzing temporary files hidden in every corner of your PC hard drive. It's a freeware! Feel free to donate and support the effort.
Reblog this post [with Zemanta]

Oct 27, 2009

Posting XML, HTML code in blogger.

I am sure, many of the bloggers would have faced the problem of posting XML/HTML code in blogspot. It ignores the XML/HTML posted without encoding.

The simplest fix is to get them encoded using the below site and post it!
http://centricle.com/tools/html-entities/

Thanks to Steve for his post.

ELMAH for live website diagnosis.

It's the Firebug of Webservers.

Some of the tricky problems with live websites are
- Unhandled server side exceptions
- Environmental issues that can't be logged at application level

Diagnosis for these would require turning off the custom errors and limiting to local server. But, this doesn't do live monitoring of errors for you to look back the errors.

ELMAH helps monitor the websites for unhandled exceptions. The best part is that, it requires only few config changes to get plugged into your website and monitor for errors.

I have been using it on IIS for live site diagnosis, which is crucial for production sites. For my ASP.NET website, i did the following to plug in the ELMAH.

1) Download ELMAH online. Just google!
2) Add the following keys to the web config file under key. If you already have httpHandlers and httpModules keys, then just add the child nodes to them.

    <httpHandlers>
      <add verb="POST,GET,HEAD" path="elmah.axd" type="Elmah.ErrorLogPageFactory, Elmah"/>
    </httpHandlers>
    <httpModules>
      <add name="ErrorMail" type="Elmah.ErrorMailModule, Elmah"/>
      <add name="ErrorLog" type="Elmah.ErrorLogModule, Elmah"/>
      <add name="ErrorFilter" type="Elmah.ErrorFilterModule, Elmah"/>
    </httpModules>
3) Copy the following ELMAH files to your website bin directory
Elmah.dll, Elmah.pdb, Elmah.xml

4) Browse the url "http://localhost/yourwebsite/elmah.axd" to see the ELMAH page. 

Snapshot below.








Tons of articles have been written about ELMAH. Few you might want to read:

ELMAH home page

Hanselman blog article

Dotnetslackers blog post
Reblog this post [with Zemanta]

Oct 23, 2009

GE announces investment fund for promising new HealthIT solutions.

General Electric Co.Image via Wikipedia

GE has announced that the company has created a $250 million fund to invest in HealthIT companies with promising solutions for reducing cost and innovation in technology.

The first recepient of the fund is ONI Medical Systems, Inc., a provider of magnetic resonance imaging services headquartered in Wilmington, Mass.

For all those with great HealthIT ideas, this is the best time to give a shot. This is a big news for to-be entrepreneurs, given that the recession is forcing investment funds to scale down to essential utilities such as green energy and stay away from new ideas.
Reblog this post [with Zemanta]

Oct 16, 2009

HealthVault Apps - Troubleshooting errors.

Microsoft HealthVaultImage via Wikipedia
After having spent time writing and troubleshooting HealthVault apps, the overall feedback is "that's easy". There were moments of troubleshooting that might take time, if you are not familiar with Digital Certificates and their usage in HealthVault client side authentication. Listed are few errors you are most likely to face the first time and right places to look for the quick fix. The errors were mostly faced while performing HealthVault authorization using the Offline Access mode.

Error 1: System.Security.Cryptography.CryptographicException: Keyset does not exist
Reason: 
You don't have the correct certificate installed on the machine that is hosting your HV app. 
[or] Your application showing up in the HV application manager doesn't match with the configuration page in HealthVault configuration site.This happens when you are importing a pfx file into the server that is hosting your HV app. If so, fix it!
More details:
Look up this URL for more detailed troubleshooting help. 
General troubleshooting tips:
1) Use the troubleshooter app that comes with HV SDK installation. It's a great diagnosis tool. It can be found mostly here "C:\Program Files\Microsoft HealthVault\SDK\DotNet\WebSamples\Troubleshooter" depending on your installation path.
2) If you are using SSL for your HV hosted app, remember to add the following key to your config file

Will be updating this page as i see more errors. Hopefully, i don't have to :)


Reblog this post [with Zemanta]

Sep 30, 2009

Computer hardware giants at risk due to Cloud computing.

IBM Cloud ComputingImage by Ivan Walsh via Flickr

With the SaaS and Cloud getting prominence, hardware IT giants scrambling for survival strategies.

With Cloud computing gaining popularity(adoption is still a question) and companies planning to get rid of hardware and software infrastructure, maintenance and labor costs, there is a huge risk of pure-hardware vendors such as Dell, Xerox, Gateway losing their fortunes.

With move to Cloud computing, the present customers of these hardware vendors won't have a need to maintain infrastructure, hardware and labor costs, as it will all be taken care of by the Cloud or Data Center management company chosen by the customer. This could give a huge savings and easy of maintenance, scalability and reliability of their hardware infrastructure.

What this means for hardware vendors is that, their revenue from selling hardware to companies becomes a smaller portion of their revenue. The only source of revenue would then be the consumer notebooks and desktops. Selling hardware directly to data centers would be a hard sell with lesser margins due to volumes.

The good news is the consolidation has already started happening. Dell buying the Perot Systems(outsourcing software services vendor), Xerox buying ACS(again an outsourcing software services vendor) are early signs of the trend. You can expect to see more in the near future, as the hardware vendors don't have much choice!

Reblog this post [with Zemanta]

Sep 27, 2009

Inherit User Control in Silverlight

Inheriting a user control is very common across winforms and web controls. Doing the same in Silverlight requires certain addtional steps and tweaks.

Our goal here is to create a variant of the DatePicker control that comes as part of Silverlight toolkit. Let's call it DatePicker2. I am going to create a modified version of datepicker that would display a watermark text and also disable user from typing into the text box.

Step 1:
Create a silverlight class library project

Step 2:
Add a new Silverlight user control to the project. The control XAML code will look like this:
< Usercontrol
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Width="400" Height="300"
>
< Grid x:Name="LayoutRoot" Background="White">
< /Grid>
< /Usercontrol>
Step 3:
Add a namespace declaration for the DatePicker control. Let's call it "myctl".
Rename the Usercontrol to "myCtl:DatePicker" to inherit the control.
The modified XAML code will look like this:
< myCtl:DatePicker x:Class="MyControls.DatePicker2"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:myCtl="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls"
Width="400" Height="300"
>
< Grid x:Name="LayoutRoot" Background="White">
< /Grid>
< /myCtl:DatePicker>
Step 4:
Switch to view the code.
Add an override for OnApplyTemplate method of the base UserControl from which DatePicker is already inherited. Add the code to display watermark text and disable the text box. With the changes, the code will look this:
namespace MyControls
{
public partial class DatePicker2 : DatePicker
{
public override void OnApplyTemplate()
{
base.OnApplyTemplate();
DatePickerTextBox box = base.GetTemplateChild("TextBox") as DatePickerTextBox;
box.Watermark = "to enter a date click this icon -->";
box.IsEnabled = false;
}
}
}
Step 5:
Make sure to add the "System.Windows.Controls" assembly from Silverlight toolkit.
Lastly, do the following steps on the news added DatePicker2 XAML file.

1. Right-click the file in “Solution Explorer”.

2. Change the “Build Action” to “Resource”.

3. Save the project and rebuild.

Step 6:
Add the DatePicker2 control to a test XAML page and test it out!

Reblog this post [with Zemanta]

Sep 23, 2009

IQueryable Count method takes longer to execute.

For those new to Entity Framework and facing the performance issues, you are in the right place.

In my case, i have a database with around 300 tables and growing. This results in the entity framework taking a lot of time(around 2-3 mins) to execute the first query over the EF. The reason for this is the generation of views by the EF when executing the queries for the first time after rebuilding the code.

There are couple of solutions to overcome those.
- Pre-generation of views during the code build process [Check the link]
- Lazy loading of EF [Check the link]
- Other performance points to look at [Check the link]

Pre-generation of views helps the most as it clears the major impact on the performance.

Hope this helps!
Reblog this post [with Zemanta]

Sep 15, 2009

PHR - Is it for you?

A medical record folder being pulled from the ...Image via Wikipedia

With the talk of healthcare stimulus, the healthcare IT is in a spotlight with everyone from healthcare IT companies, healthcare IT associations and obviously the fed making a strong case for adoption of PHR which is an abbreviation of Personal Health Record.
Personal Health Records refers to a digitized version of an individual's health history. The health information remains the same, but stored, presented and shared in ways not possible with a paper version of health history.
In traditional or non-electronic health records, the patient's health history such as doctor visits, symptoms, medications, surgeries, allergies, chronic illness, blood group etc are written or printed on a sheets of paper and stacked in the doctor's office shelves or cupboards. This has been the traditional and de factor way of storing your health history.
Is there anything wrong or fundamentally flawed in this approach? Certainly not. It has served the purpose of storing and referring your health information, whenever needed.
So, why do we need an electronic version of your health history? The answer is simple. It's the equivalent of your credit card. It has all the advantages of a credit card over carrying cash.
With credit/debit card,
You don't have to carry cash.
Your spending is tracked for you to view anytime.
Your spending reports helps you plan your expenses ahead.
Your financial ability is shared with people you would like to share. In this case, the stores where you make purchase can access your card balance before the purchase.
You don't have to wait in the queue to know your account balance or withdraw money. Just use the ATM machine.. day and night, whenever you like.
PHR has the same advantages as above. They are
Your health information is stored online and available to you 24 hours.
You own your health information. They are not locked up anymore in doctor's offices.
Your choose to share the health information with anyone you would like to share [Doctors, Nurse, Hygienist, Mom, Dad, Son, Daughter etc.]
Your health information now has intelligence to tell you more about your health and alert you on required actions such as your impending immunization, next doctor visit, your Body Mass Index etc.

Well.. just like credit cards come with their own problems, PHRs bring in concerns too..
Let's have a quick glance at those:
Your health information stored online is as safe as your credit card. If your credit card can be hacked or stolen, then your PHR can be too. This is a risk.. beyond your control!
You need to have minimal computer literacy to manage your own record. But, again one of your trusted well wishers can manage it for you.
Just like every other system in the world has its own advantages and disadvantages, PHRs have their own.
But, PHRs are anticipated to be ubiquitous given the benefits it brings to the human community and the healthcare system!

Reblog this post [with Zemanta]

Trace SQL statements in LINQ to SQL

For those curious about knowing the underlying SQL statements when executing a LINQ to SQL query, there is a way to trace to the debugger output in your Visual Studio.

Read the post in the following url that has a sample implementation.
http://www.u2u.info/Blogs/Kris/Lists/Posts/Post.aspx?ID=11
Reblog this post [with Zemanta]

Sep 14, 2009

SQL Server FILESTREAM - Is it for you?

SQL Server 2008 introduced a new feature called FILESTREAM, which in simple terms is an attribute for varbinary(max) data type. It allows the unstructured data such as BLOBs beyond a certain size to be stored on the file system instead of DB. This brings in new choices for storing BLOB data.

FILESTREAM in a few words:
- Stores BLOBs in the file system, but through the database thereby providing transactional consistency
- BLOB size is limited only by the available file storage space [Previously, BLOB size limited to 2gb]
- The underlying file system storage mapping can be to SAN or network paths.
- The BLOBs stored in file system can be accessed through DB, directly accessing file folds on OS, or by streaming the files through a network share.

FILESTREAM in more detail:
- The data belonging a DB instance enabled with FILESTREAM stores data on the file system in what is called a Data Container. The data container has the files created using cryptic names (based on guid) and maintained by the SQL Server, as the BLOB data undergoes change. Since the data container is also accessible through the file system, any incorrect tweaking of the container could lead to data corruption and render the container useless. This is a risk to monitor all the time and take preventive actions to avoid.
- We could create multiple data containers and map them to the SQL Server as filegroups thereby providing load balancing with multiple data storage sinks.

Some of the key questions from a broader deployment, maintainability, integrity perspective:
  1. How to handle data recovery in case of data container corruption?
  2. Can we just backup the DB without the file system data? [assuming data is in SAN, which need not be moved]
  3. I would like to back up or restore the DB and just remap the filegroup path information [that maps to SAN]. Is this possible?
Read the reference articles for more info.

References:
- http://msdn.microsoft.com/en-us/library/cc949109.aspx
- “How to: Set Up FILESTREAM on a Failover Cluster” ( http://msdn.microsoft.com/en-us/library/cc645886.aspx).
- http://research.microsoft.com/apps/pubs/default.aspx?id=64525
Reblog this post [with Zemanta]

Sep 5, 2009

HealthVault application architecture - Quick notes

Microsoft HealthVaultImage via Wikipedia

HealthVault application architecture primary revolves around the following:
- Where is data stored?
- When is data accessed?
- How is user authenticated?

Where is data stored?
#1 Stored only in HealthVault
#2 Most of the data stored in HealthVault and remaining in application data store
#3 Data duplicated in HealthVault and application data store

Among above, #1 and #2 doesn't require synchronization between HealthVault and Application data store. #3 does require synchronization between them, which makes the system either simple or complex.

When is data accessed?
- The application requires permission from user everytime accessing the data from HealthVault
- The application requires permission only once from user and can access HealthVault data anytime from then without requiring permission from the user

How is user authenticated?
- Require the user to authenticate every time the application is accessing HealthVault data
- Require authentication once and store the relevant information for authentication-free subsequent access

Conclusion:
Requiring permission from user everytime to access their health record would be an impediment to doctors or any health care staff for adopting EMRs. Also, this wouldn't work in times of medical emergency. On the other hand, given a free hand to EMR would make the system more user friendly by performing underlying authentication in a transparent manner. But, users should be cautious about such access requests.

For those interested in processes, CodePlex has a HealthVault solutions development framework here.
Reblog this post [with Zemanta]

About HealthVault

With healthcare stimulus in spotlight, healthcare industry has seen a buzz of activities with players ranging from software giants[Microsoft, Google, IBM etc], already established healthcare software companies[GE, Cerner, Eclipsys etc] to surging small players [eClinicalWorks etc] entering the fray for electronic health records and the ecosystem such as HIE, Electronic Records Bank etc.

With the brief intro above left behind, we will find more about HealthVault and it's impact on the healthIT ecosystem. Primarily, HealthVault can be considered as a health records bank where personal health records(PHR) are stored online and can be shared with others.

Usage of HealthVault depends on your need and purpose to access the health data on the HealthVault. It can be:
- [You are a patient] I am here to store my PHR online and i want to share it with my doctors and family members.
- [You are a doctor] I am here to view the health data of my patient and update their health record.
- [You are a software engineer] I am here to write a healthIT software(EMR, HIE) that interfaces with HealthVault data either to read or update or do both.
- [You are a healthIT manager or executive] I am here to understand how i can employ/benefit using HealthVault in my hospital/state healthIT systems.

If you are a patient or a doctor, you should read about PHR and EMR to know the benefits and visit HealthVault site for signup and usage. Primarily HealthVault allows entering health information as text, uploading past health data in CCR/CCD formats to name a few.

If you are a software engineer or healthIT manager or executive, then you are in the right place to know more about HealthVault. Check my labels cloud for more posts on HealthVault.
Reblog this post [with Zemanta]

Aug 20, 2009

Service endpoint binding not using the HTTP protocol

If you are invoking a WCF service and if you are getting the error
"This could be due to the service endpoint binding not using the HTTP protocol. This could also be due to an HTTP request context being aborted by the server (possibly due to the service shutting down). See server logs for more details."
Then, most probably you have a problem with enums exposed via WCF. [Even otherwise, this post will be useful to you].

Either case, SvcTraceViewer is your life saver. It helps trace the internal method invocations, plumbing etc in the WCF calls.

Steps to run traceviewer:
1) Configure the WCF to enable trace
2) Run the SvcTraceViewer
3) Open the trace log per the settings in your WCF config file
4) Look for errors. Mostly highlighted in red color.
Info for the above steps available here in the microsoft site.
5) You are not done yet. If it's caused due to enums(as in my case), you must read this blog post that explains the deeper issue underneath using enums in WCF.
Reblog this post [with Zemanta]

Aug 18, 2009

Checking NULL in LINQ and SQL

I stepped on a bit field in my table which has NULL as default value.

Checking in my LINQ code for not true condition as below just failed:
p.IsValidLicense != true
The row in the table had the value NULL and therefore i expected my query to return true, but in vain.

Then i executed it as SQL query in SSMS as below. Again unexpected result.
Where IsValidLicense <> 1
Time for google. Seems, the NULL issue has caused lot of miseries in the lives of a lot of people. Everyone just jumped in to answer my question.

The correct way to construct the query..

In SQL:
(IsValidLicense IS NULL OR IsValidLicense = 0)
In LINQ:
(p.IsValidLicense == null || p.IsValidLicense == false)
Hope this helps!
Reblog this post [with Zemanta]

Tutorials on LINQ to Entities and Entity Framework

Came across a couple of very interesting articles on Entity Framework and LINQ to Entities. The concept explanation is simple and easy to understand even for a beginner. Samples are great. Must read for anyone interested in getting a better idea of Entities.

Checkout the links. The ones i found interesting:

ADO.NET Entity Framework & LINQ to Entities - part 1
ADO.NET Entity Framework & LINQ to Entities - part 3
Reblog this post [with Zemanta]

Multiple filters in LINQ

It all started with a need to have multiple filter parameters in a LINQ query. I didn't want to cascade results from one filter to another.

Following describes the approach to build multiple, dynamic, conditional filters into a LINQ query.
The approach uses LINQKIT to achieve this.

Problem definition:
I have a questions table with columns questionid, question, questiontype, questionrating etc. And, i would like to filter based on questiontype and questionrating. Also, i would like to choose either or none of the filters dynamically while executing the LINQ query. My front end UI has two drop downs one each for questiontype and questionrating. I may choose to apply or ignore one or more of the filters during run time.

One way to achieve this would be using Expression trees in Entity framework. Another easier approach(explained below) would be to use the LINQKIT and PredicateBuilder.

Solution:
Given the above problem definition, i have used LINQKIT and PredicateBuilder to easily solve the problem. I have used OR condition filter in my sample below.

var conditions = PredicateBuilder.False();

//check the applicability of filters
IDictionary filterDict = new Dictionary();
long temp = 0;

if (filter.QuestionType != questionTypeEnum.none)
{
temp = (long)filter.QuestionType;
conditions = conditions.Or(e => e.Qbank_type.typeIdInt == temp);
}
if (filter.QuestionRating != questionRatingEnum.none)
{
temp = (long)filter.QuestionRating;
conditions = conditions.Or(e => e.Qbank_questionRating.ratingIdInt == temp);
}

questionsResult = objectContext.questionsSet.AsExpandable().Where(conditions).OrderBy(e => e.questionId);
Related articles for an interesting read.
PredicateBuilder
LINQKIT (includes PredicateBuilder)

Reblog this post [with Zemanta]

Aug 16, 2009

Ordering unit tests in Visual Studio

Unit testing framework in Visual Studio is very handy and encourages test-driven development.

The most important thing about tests is the ordering and that's why a separate kind of test called "Ordered tests" are available in Visual Studio.

Steps:
1) Create your unit tests
2) Create an ordered test and select the unit tests to be executed and the order of execution

Advantages:
1) You can add the unit tests multiple times, which helps in let's say you want to add data, delete data and delete data again. The first delete is positive testing and second delete being negative testing.
2) You can decide whether to continue on failure of any of the tests, that way you don't have to execute tests unnecessarily if a dependent test has failed.

Refer to this MSDN link for steps to create ordered tests.
http://msdn.microsoft.com/en-us/library/ms182631.aspx

To learn more on Test Driven Development(TDD)
http://en.wikipedia.org/wiki/Test-driven_development
Reblog this post [with Zemanta]