Netbeans 6 vs 3rd Rail

Ok, I have to admit that I have been waiting for the new Ruby/Rails development environment from CodeGear (they are the development tools division of Borland), and finally it is released.

At the moment my primary rails development environment is Netbeans 6 beta 1, and being an Eclipse fan, I really wanted to see some action in Eclipse front. My expectations got higher while I was downloading the trial version of 3rd Rails, since the feature matrix had some very nice remarks. First of all, please to all other teams building developer tools for rails: a better console would be nice! Just pressing the up arrow can repeat the last command, can’t it???

3rd Rail has many well thought little gems like this, for example you get a nice console with autocomplete and when you press the up arrow, you get the last command. It might not be important for you, but it matters to me. Jruby also seems to be supported, and that’s nice. Ok, the rest of the feature set seemed impressive too, so I started to test them. The first thing I noticed is that the rails browser view does not have “views” of a Rail app, but has models and controllers. That looked kinda weird, but later I’ve realized that the connection to views is handled through dependencies view, which requires a little bit getting used to. Now I can get used to this, though I’d still like an option to see views in the rails browser view. However there are things that makes it hard to use this feature. First, there is known issue which causes the dependencies view to be updated only when a piece of text is selected. So when I select index method in my controller, dependencies get updated, but when I move around using the keyboard, they stay the same. When this is fixed, it’ll be more usable. I could not manage to get the navigation between controllers and views as claimed in help. When I’m browsing code in a controller, I was supposed to be able to switch to view by holding ctrl+alt and clicking method name, but this does not work. It works the other way though. Still, I’d like to be able to do this using the keyboard, like in Netbeans

As I worked on it more, I realized that 3rd rails has still got some issues. For example, importing an existing project did not work, when I checked the checkbox that makes to project copied to my workspace. When I left the project where it is, I could open it. The real show stopper for me was that I could not find any support for fast debug in 3rd Rail. Sorry CodeGear, but I use it, and all other major competitors provide it. Finally, I wanted to see who else is working on 3rd rails, and checked out CodeGear’s community pages. Guess what, I could not find any forums, or community, maybe that’s my fault but I’d like to be able to get in touch with other users.

So for the moment I’ll stay with Netbeans. I think that 3rd Rails will be a nice product, and I’ll keep checking for the updates. I guess CodeGear hurried a little bit on this one, but I’m sure they’ll make it better. I won’t lie to you, I really like Borland, for a very long time, they produced great tools and technologies, and I want them to continue doing so. I have developed plugins for Eclipse and I still continue to do so, so I can guess that it is not always very easy to use a framework, and when your work depends on an infrastructure that’s provided by others things become complicated no matter how good that infrastructure is. Let’s wait and see, and I hope we’ll have a new ruby ide.

The world is not a perfect place. Well, not yet…

Ruby on Rails is nice. It’s really nice. For most of my web development, I would not hesitate to use it. There are some aspects of it that I really like, and you can read a lot of things written by many others, explaining why rails is nice.

The major problem is about scalability, and the way people see rails. It’s a young technology, and for those of us who have projects with certain demands, there is not much to do when it comes to choosing technology. For a large scale healthcare project that will use millions of records, I’d really like to use rails, but I know that it would be an adventure to talk about this in a meeting where there are people who will pay the money. Probably (actually most of the time. these days ) they will not be aware of ruby or rails, and when they hear that the project for which they will be paying will be built on a technology that they have never heard of, they will not be happy. The problem is not always about the technology, but also about the maturity of it, the brand of the technology. When you say Java or .NET, people do not usually object. Both of these technologies, especially Java has been a dependable, mature solution for quite some time.

The thing is, I want to use good features of rails, and be able to provide scalability and stability. There are many out there who claim that this is possible with rails, and I think it can be done after some work on rails setup. However, Sun Microsystems has been supporting JRuby for a while, which is a complete implementation of ruby language in Java. It is now at a point where you can run a rails application and deploy it to a J2EE application server. Now this is great news! Develop using the productivity enhancing aspects of rails, deploy on an industrial strength java application server. Along the way, you also have the option of using millions of Java components and libraries, which can be accessed by jruby.

If this initiative takes off, web development in enterprise shops will have a very strong option in the near future, next to existing ones. More to come on this one. For the impatient, this might be interesting.

The world is not a perfect place. Well, not yet…

Ruby on Rails is nice. It’s really nice. For most of my web development, I would not hesitate to use it. There are some aspects of it that I really like, and you can read a lot of things written by many others, explaining why rails is nice.

The major problem is about scalability, and the way people see rails. It’s a young technology, and for those of us who have projects with certain demands, there is not much to do when it comes to choosing technology. For a large scale healthcare project that will use millions of records, I’d really like to use rails, but I know that it would be an adventure to talk about this in a meeting where there are people who will pay the money. Probably (actually most of the time. these days ) they will not be aware of ruby or rails, and when they hear that the project for which they will be paying will be built on a technology that they have never heard of, they will not be happy. The problem is not always about the technology, but also about the maturity of it, the brand of the technology. When you say Java or .NET, people do not usually object. Both of these technologies, especially Java has been a dependable, mature solution for quite some time.

The thing is, I want to use good features of rails, and be able to provide scalability and stability. There are many out there who claim that this is possible with rails, and I think it can be done after some work on rails setup. However, Sun Microsystems has been supporting JRuby for a while, which is a complete implementation of ruby language in Java. It is now at a point where you can run a rails application and deploy it to a J2EE application server. Now this is great news! Develop using the productivity enhancing aspects of rails, deploy on an industrial strength java application server. Along the way, you also have the option of using millions of Java components and libraries, which can be accessed by jruby.

If this initiative takes off, web development in enterprise shops will have a very strong option in the near future, next to existing ones. More to come on this one. For the impatient, this might be interesting.

Second hand healthcare data? Yes please!

Please ask yourself what is the holy grail of healthcare information systems? Your answer might not be same as everybody else’s but you can be sure that quite many people will name “interoperability”.

Interoperability has been one if the most demanding, challenging demands of healthcare, and to be honest despite all the work, the problem still remains. However, at least we have standards like HL7 which has been alive for the last 20 years, we have initiatives like OpenEHR, EN 13606 etc. You can spend a lifetime on these subjects, and I actually know people who have done so, but for the moment let’s try to dream of that sweet future where we have no interoperability problems.

In this feature, since you can easily plug in to any data source “technically”, you can now move healthcare data around, save lives and be happy and rich (this part of the dream is for heatlhcare IT people) Right?

Wrong! By that time (I’m afraid to give a year) you’ll still have the issue of privacy, and legal constraints related to it. So even if you were able to seamlessly connect data sources, you’d still have a hard time moving people’s data around, since you need to deal with legal issues.

People have the right to demand that their sensitive information is handled and used in a proper manner. The proper manner is a vogue definition, but it is for sure that anonymity for health related data is a strong demand. Considering the very large amount of data that we are collecting in healthcare, there appears to be a very promising opportunity: all this healthcare data can be reused. Research, analysis, quality assurance, performance benchmarks, you name it.

It is very hard to find actual health data, since you can’t just go to care provider and request their data for the last 10 years, whatever your intension is. Even if you do not care about the format of the data, you can’t, unless you get data that  can not be used to identify people in the care process. If however, you can get data in a form that is still consistent (same patient’s data for say 2 years) but de-identified, you have a very interesting opportunity. Actually both parties have an interesting opportunity, you can reuse existing data for a completely different purpose, and the care provider, patient or community can benefit from the outcomes.

To accomplish this, we need de-identification. This is a well recognized requirement. Jamia has this document that provides a good starting point. NHS is also aware of this requirement, and Sapior provides a product that is also being used in the NSH. Sapior provides this link which says that according to EC, pseudonymised data is not subject to data protection act! This is very interesting news actually, since it might basically open the doors for a second hand healthcare data market in EU.

For USA, things seem to be a little bit shaky in legal domain. HIPAA de-identification rules provide guidance for de-identification but HIPAA does not seem to cover all institutions, so secondary health data related operations might be problematic in terms of legal constrains. The issue is well recognized, and seems to be goings somewhere both in UK and USA. I’d love to hear what’s going on in Australia by the way.

Finally, it seems to me that de-identification is a very good candidate for a service layer that sits on top of a EHR repository. Anyone hearing this from OpenEHR?

Check out web for open source de-identification, pseudonymization frameworks, and you’ll see that not much exists. IBM has a product for this purpose, but for healthcare, this still seems like an important requirement without serious effort for the solution. I’d love to be corrected about any of this, if there is something wrong with it.

Microsoft CUI, a brave attempt

User interface design in health related software is a big problem. On one hand, you have a set of technical people who have a set of skills and produce results based on those skills, and on the other hand you have medical people who demand various functionality. The problem is, the skills and approach of technical people produce outcomes which does not always satisfy the users. In fact medical people rarely seem to be satisfied with user interfaces provided to them.
I can’t remember how many times I have heard the following sentence from a doctor, when asked what he/she would like to see on the screen: “I want to see everything”. From a developer perspective fitting everything on screen has two basic issues: first, providing a lot of information on the screen does not mean that it can be easily used. Second: a lot information related to various factors in care process (current medication, prior treatments etc..) means collecting data from a lot of sources. Even if they are found in the same system, it is not easy for developer to put them on the same screen. The fundamental problem with developers is: we are continuously conditioned to think in terms of sub systems, clearly isolated from each other. Call it modules if you want, or frameworks, or libraries. “Divide and Conquer” is our motto. We do it for better performance of subsystems, and for better maintaining code later. Unfortunately, doctors are not interested in our technical success in managing a large chunk of code, they want “Unite and Conquer” for information when it comes to managing care process.

Now add different opinions from different doctors about how a user interface should be to this situation, add different UI requirements from different medical domains, (you do not think that you can serve radiology and laboratory with the same screen do you?) and you have… a nightmare. To be successful in user interface design for a medical software, you need input from doctors, whether they work for your company or not. Check out successful healthcare solutions in software domain, and most of the time, you’ll see a few doctors somewhere in a company.

Simply put, Microsoft CUI (Common User Interface) is an attempt to build common user interfaces for healthcare and is backed up by the work in NHS in UK. I call it an attempt, since I am so used to seeing medical people who are almost always unhappy with other’s decisions, but I am actually excited about it. IMHO it is really nice to have medical input channeled into a piece of software. It allows you to reuse hours of analysis and discussion with medical people, and it is priceless. The method taken by Microsoft for reference implementation is to start a project at codeplex, which can be reached at http://www.codeplex.com/mscui You can download a reference implementation in .NET . The guidelines are at http://www.mscui.net Nice things about this initiative are: it is being developed in collaboration with NHS. You can reach the programme from here . Thinking about the size of NHS, the outcome of MS CUI has a very serious advantage, it is evaluated by medical people in very large scale healthcare system.

Now to the things I wonder: What kind of licensing is used? Will I be able to come up with a Java Server Faces implementation of design guidelines? Will I be able to port components in codeplex to Java or Ruby or PHP? I’ll write down about these again after I work a little bit on the documents, but I assume NHS has been clever in this one, to allow a broader adaptation of developed guidelines. I think the discussion in OpenEHR mail list is a good sign for adoption (read here). I’d like to know what other initiatives think about this, like OHF, Mirth etc..

Another issue is if this can be reused in other counties. I do not mean the general internalization/localization (funny these two serve the same meaning in software) issue. I mean I’d like to see how the doctors in Turkey for example respond to these components, which is generated by input of doctors in NHS.