The right tools make any job easy. I've just had that proved to me again. Recently I was called upon to XDS-I enable a prototype that already worked with XDS. Now, you have to realize that while I know quite a bit about XDS, until about four weeks ago, I could honestly say I knew nothing about DICOM and get away with it. When I implemented XDS 4-5 years ago, it took me about 4-6 weeks of effort. When I implemented ATNA (TLS and Audit Trails), it took me about 2 weeks. I expected this DICOM project to take me 2-3 weeks of effort. Boy was I surprised with the real effort.
I spent about two days reading the DICOM specification, spent an hour talking to a DICOM expert (which if I had done sooner would have cut my DICOM reading in half), and a half day reading the XDS-I specification. Then I hit the web searching for DICOM toolkits written in Java. I found several, and after some detailed review, I picked a fairly reputable one to work with.
After adding 15 lines of Java code and modifying about 50 lines of a 600 line XSLT stylesheet, I had XDS-I enabled the application (it already understood XDS). The code and stylesheet modifications took about 2 hours to write.
An IHE profile in half a week; that's worth bragging about. But, I can go one better: Last Saturday night I used the implemention of the XDS-I that I had developed and the same toolkit to implement the PDI profile. It took me about six hours. Once again, the key was having the right tools.
Most of what I work with is open source, or freely available tools. I love Java, Tomcat, Xerces and Xalan. I use Eclipse as my Java IDE. One of the benefits of clearly written standards and integration profiles is that others are implementing them for me. That allows me to focus time and effort on improving other things. I don't need to do what others have done just to show I can do it better. I'd rather save my time and effort to work on things that others haven't done before.
I can no longer say that I know nothing about DICOM, but I can still honestly say that I didn't write one lick of code dealing with it. So, this year, I've been playing the role of a patient at RSNA IHE demonstration, and maybe next year I can play Radiologist.