Tuesday, September 9, 2014

Healthcare Standards: Where is the XSD for CCD?

Stumbled upon this blog post while doing my research and I thought this should be advertised more.



Healthcare Standards: Where is the XSD for CCD?

Saturday, August 9, 2014

Adopting Agile: Faster Waterfall is not Agile

Adopting Agile: Faster Waterfall is not Agile: Most of the organizations have a myth that if they have shorter release cycles they are agile. Here is a nice blog by my friend Tabassum. Read on...

Wednesday, July 23, 2014

②ality – JavaScript and more: A JavaScript survival guide

②ality – JavaScript and more: A JavaScript survival guide: Are you a programmer who is considering learning JavaScript, but unsure whether it is worth the pain? Then this blog post is for you:

Thursday, May 22, 2014

JavaScript For Loops and its Cousins

What?! JavaScript doesn't have a for-each loop? You gotta be kidding me!

That was my reaction to my co-worker whose code I was peer-reviewing. I suggested him to use a for-each loop instead of a vanilla for. And he said - "I don't remember seeing a foreach loop in JavaScript?!"

JavaScript has some interesting variations to the for loops and I feel they are not really that popular. So in a bid to learn and understand them I wrote a post on CodeProject. I hope you find it helpful. 


Tuesday, May 6, 2014

CCDA Generation Using Everest API

As explained in the previous post in this series, I evaluated some of the APIs available in the market and found Everest to be the best suited among them if you are trying to be within the confines of .net and generate HL7 documents based on standards such as CCDA or QRDA.

Please read the article on Code Project which includes a small Proof Of Concept console app that generates CCDA documents.

It is important to note that even QRDA documents can be generated using the same approach and API. 

Friday, February 7, 2014

Open Source APIs for CCDA Generation

This blog is a continuation of my previous blog post: How To Generate CCDA/CCD XML Docouments for MU 2014.

Here we evaluate five 3rd party open source APIs for CCDA generation that comply (as claimed by the APIs themselves) with MU 2014 standards. 

The objective is to assess the fitment and ease of integration with an existing EHR system so as to enable the latter to achieve 2014 EHR Certification for objectives such as:
170.314(b)(2) - Transitions of care - create and transmit transition of care/referral summaries
170.314(b)(1) - Transitions of care - receive, display and incorporate transition of care/referral summaries
170.314(e)(1) - View, download, and transmit to 3rd party

The comparison brings out the benefits/shortfalls of each of the products, and also makes recommendations. This blog also provides the ground work for further research that may need to be done keeping business priorities of the service provider.


So, Which API?

I sat down to do an evaluation in similar lines as what NHS Networks has done. I examined 5 products available in the market today and came up with these findings. 

Note: This evaluation is done keeping a .net based EHR system in mind. 

Model-Driven Health Tools (MDHT)

Technology: Java
Observations:
  • The most popular and mature product available in the market today.
  • Being Java based, doesn’t lend itself easily for use inside a .net library. 
  • The generated sample XML available here fails validation by NIST. (MDHT, you listening???)

Everest Framework

Technology: .net
Observations:
  • Extensive API. Can be used for various other things than just CCD generation. 
  • The generated sample XML passes validation by NIST.
  • There is a bit of a learning curve using the API because of lack of documentation.
  • If the XML changes in future, then we need to rely on the API to update as well. This is a potential risk. A possible way to mitigate this is to maintain the source code of the API and extend it ourselves.
  • It doesn’t lend itself to make CCD+ complaint XMLs.

HL7SDK

Technology: .net
Observations:
  • Wasn’t easily usable for a quick evaluation. 
  • Lack of documentation. User forum not very active.

CDAAPI

Technology: .net
Observations: 
  • Emerging, not rich enough yet.
  • Targeted towards NHS, UK.
  • Makes use of components of the Everest Framework previously mentioned.

NHapi

Technology: .net
Observations:
  • Confirms only to HL7 2.x.
  • Old API, not updated actively.

Conclusion

As of the time of writing this blog, Everest seems to be best choice available. In a later blog post I will cover how to use Everest API to generate CCDA documents with code samples. 

Thursday, January 16, 2014

jQuery Datepicker Issue: Month and Year dropdowns in IE have to click twice

While working on a legacy code base recently, I was facing an issue with the jQuery Datepicker. 

For some reason our customer's code is stuck with jquery-ui-1.8.13.custom.min.js. And the browsers mandated for the application is IE 9 with compatibility view with IE8 standards.

Issue

Load up a page with a Datepicker in it, with both the year and month dropdowns enabled. Click on one of the year/month dropdown lists, it appears and disappears. Click it again and it appears correctly.

After being clueless for few minutes, I realized some event is getting triggered right after the click event that is causing the dropdown list to collapse. Then I noticed this:

Reason

So the problem is jQuery Datepicker is binding two methods to the onchange and onclick events of the select. When I dug more and found this:

Hack

So I figured a quick hack is to get rid of the onclick method body in the plugin code itself. I could do that in the minified file (do it only if you know what you are doing!). Then a co-worker showed an even lower impact change, which is to remove the setTimeout() function body portion only – which, if doesn't break any of your existing functionality, is better.

On searching more I found that this is an issue with that version of the plugin tracked here but I am not sure which version has the fix.


Solution

Ideally I should override the onclick method using something like this. I am yet to try it because I have the "we-will-refactor-later" syndrome. 

Friday, January 10, 2014

How To Generate CCDA/CCD XML Documents for MU 2014

Most of the IT service providers in the healthcare space are busy taking steps towards getting Meaningful Use (MU 2014) certified. One of the key certification compliance criteria is the generation of various documents in XML format that adhere strictly to the CCDA or Consolidated Clinical Document Architecture. 

If you are new to these terminologies or the concepts then I recommend you go through these immensely helpful tutorials first:
  • The bible of all healthcare industry standards: HL7
  • Very nicely explained tutorials (videos) at: healthit.gov
  • Another one describing MU 2014 and CCDA (ppt) at: healthit.gov
So, you want to generate CCDA compliant document from your .net code.

But How? 

Well, there are 2 parts to the making of a CCDA document. 
  1. Prepare a .net type that mimics the XML. When serialized, this type will give us the XML that we want. Now, there are 3 ways to do this:
    • Hand-code the entire .net type(s). This requires in-depth analysis and understanding of the CCDA standard. Also considerable effort is required to develop and maintain the code when the standards change.
    • Download the schema XSDs as published by HL7 and then generate the .net type(s) out of it. This can be done by using tools like xsd.exe.
    • Use an API that already has such a .net object and exposes it to be used in the code. 
  2. Populate this .net type with the relevant data and serialize it to generate an XML out of it.
It is obvious that the API approach sounds the most cost effective and quick. In a later blog post we will evaluate a few APIs for this purpose. 

Sunday, December 8, 2013

Book Review: JavaScript: Pocket Reference 3rd Edition


- by 
David Flanagan

ToC
Paperback: 280 pages
Publisher: O'Reilly Media; Third Edition edition (April 25, 2012)

ISBN-10: 1449316859 | ISBN-13: 978-1449316853


This is not a javascript pocket reference. It's a guide and an excerpt of a complete reference. Recommended as long as you know what you are buying. 

I was hoping I can use this book as a quick reference to anything Javascript, but I didn't quite get that. A pocket reference should be more about coverage than explanation. This book explains some topics at length and doesn't care about many other topics. From a pocket reference you would expect lots of tables and pictures and charts covering the various methods, properties of built in types

This isn't a match to the 2nd edition of the same book, though the authors mentioned that this is intentional. I personally prefer a reference to be a reference first. What this book aims to be instead is a collection of some good portions from the book "6th edition of JavaScript: The Definitive Guide" by the same author.

However I do feel that, what it explains, it explains well. I am an experienced programmer. So, I skipped the basics and started straight from Ch 9. I found the concepts well explained and the examples quite useful. You can rely on this book for understanding the concepts that it covers. The author, no doubt, is one of the finest and you will know if you read the Definitive Guide.

Disclosure
I reviewed this book for O'Reilly's Blogger Review Program

Friday, November 2, 2012

Book Review: Hello! HTML5 & CSS3

- by
Rob Crowther

ToC
Paperback: 560 pages
ISBN-10: 1935182897 | ISBN-13: 978-1935182894

This is undoubtedly one of the best books out there on HTML5 & CSS 3, if not the best. The authors have explained everything clearly and simply. You will just glance through a chapter casually, try out the code snippets real quick and you will be a master of the concepts of that chapter; this book makes it that easy.

Correspondence between HTML4 elements and their drawbacks and how HTML5 elements improve on them is explained nicely and in a detailed manner. It is so easy to get excited to see such nice things HTML 5 can do and so easily. But unfortunately, very few browsers support only selected features yet.


You certainly need to have some experience of previous versions of HTML and CSS to be able to make the most of this book. But no extensive practical knowledge is required.


And don't forget they have a nice companion website too.

Disclosure

Saturday, October 1, 2011

Book Review: Dependency Injection in .NET


- by
Mark Seemann

ToC
Paperback: 584 pages
ISBN-10: 1935182501 | ISBN-13: 978-1935182504

I sat down to review this book and actually ended up writing one paragraph. Then I realized that all I am doing is basically presenting the reviews on Amazon in different words. The good reviewers have said it very nicely there and I won't be doing it any better than them. So, I thought why bother.

Let's just say this is an awesome book, an absolute must read for any .net developer or architect.

And I rest my case.

Disclosure
I am not affiliated to the authors or publishers of this book in any ways.

Sunday, May 22, 2011

Book Review: Entity Framework 4 in Action


- by
Stefano Mostarda | Marco De Sanctis | Daniele Bochicchio

Paperback: 576 pages | ISBN-10: 1935182188 | ISBN-13: 978-1935182184

I received the book from Manning Publications as part of the Manning Early Access Program (MEAP). This is the perfect book for learning and mastering Entity Framework. I started reading the book as a beginner to entity framework with very little prior work experience. The way the whole concept of ORM is introduced by the author is awesome. The authors have clearly explained the advantages and disadvantages of the ORM and compared Entity Framework with NHibernate, the most used ORM at the moment, well done.

The book is divided into 4 parts:
  1. Redefining your data access strategy
  2. Working with Entity Framework
  3. Mastering Entity Framework
  4. Applied Entity Framework.
These sections build up on EF 4 very gradually covering all basics on the way. If you are a novice, you will find it very easy  in terms of the learning curve. Folks at intermediate level need not be disappointed though. It doesn't miss out on the advanced topics or best practices while trying to make the beginners happy. It covers real life scenarios really well and points out the type of issues that you may run into along with the solutions. The name of the book contains "in action" and it does live up to it. Also I like the fact that I got an e-book along with the printed one. Makes it easy for searching. Though I would still prefer to read a printed copy.

But this is not a small book, this is more of a 'complete reference'. And the chapters in a way depend on scenarios or examples covered in previous ones. So if you pick up the book and start from the middle you may not find it easy to comprehend. The book comes with a sample app that the authors walk you through the book. Be aware that you may run into compilation issues at times and will have to debug through to add appropriate references to make the code run. This will not be a problem if you follow the book from page 1 instead of picking it up in the middle. I strongly recommend this book.

Also worth mentioning is that this book is much better than the asp.net book by the same authors and Manning.

Sunday, April 3, 2011

Book Review: ASP.NET 4.0 in Practice

- by
Daniele Bochicchio | Stefano Mostarda | Marco De Sanctis

ToC
Pages: 504 | ISBN: 978-1935182467

About a year ago Manning was kind enough to allow me to review a book of theirs, it was in the pipeline then and now out in the market. I had access to this book as part of their Early Access Program and reviewed it multiple times in the draft phases. Now that it is out in the market I thought it would be nice to blog about how it started and how it turned out in the end and provide a basic review for future buyers.

Overall, this is a great book for intermediate level programmers. And it is important to say right at the outset that it is NOT a book for beginners. In fact the foreword clearly says so. It doesn't aim to be a complete reference, rather it is a collection of best practices presented in a Q & A + Discussion manner.

Where it works

You can just pick up the book, read the theory, practice the code snippets given and you are ready to go. Don't be surprised if you end up using the code snippets in many real life problems in enterprise web development.

The chapters in Part 3 on-wards are independent of each other and presented in a capsule-course manner, so can be read by themselves.

Initially I commented that there isn't enough pictorial representation of concepts which they have taken care of somewhat.

Where it could be better

A beginner may not find the explanations easy enough to understand. The chapter flow is certainly not helping. (Ch 2 talks about EF?!) For a beginner, it will be difficult to understand certain advanced concepts such as "Path canonicalization vulnerabilities" in the chapter on Security and almost the entire chapter on Performance. Basics of these topics/problems need to be explained a bit more before a solution (and hence the asp.net advantage) is proposed.

Also I found the writing very incoherent. There are plenty of grammatical mistakes. Even without that, I feel, the authors are in a hurry to reach the code snippet and don't cover the theory behind it in-depth.

Conclusion

Good for intermediate level developers, but not good enough to get them to an expert level. Definitely not for beginners.

Disclosure

I am not affiliated to the authors or publishers of this book in any ways.

Saturday, October 16, 2010

C#: Quick Reference – Access Modifiers

C# Access Modifiers
Declared AccessibilityDescription
publicAccess is not restricted.
protectedAccess is limited to the containing class or types derived from the containing class.
internalAccess is limited to the current assembly.
protected internalAccess is limited to the current assembly or types derived from the containing class.
privateAccess is limited to the containing type.
Declared Accessibility Rules
ParentParent Default
Accessibility
Allowed
Declared
Accessibility
of the
Parent
Member
Default Accessibility
Allowed
Declared
Accessibility
of the
Member
namespacepublicNoneinternalinternal
public
enumpublicNonepublicNone
classinternalAllprivateAll
interfaceinternalinternal
public
publicNone
structinternalinternal
public
privateinternal
public
private
constructorprotectedAll
fieldprivateAll
delegateinternalinternal
public

Sunday, March 28, 2010

A Great Way to Learn Technology: Review Books

I recently wrote an article here about what I think is a great way to learn new technologies. As programmers we all know how important it is to be up to date the happenings in the fast evolving tech world. I hope this idea will help my fellow programmers.