I managed to work this into a client’s workflow for mass converting and watermarking DICOM images. I did this with the ever cool, Imagemagick… sween$ composite -gravity SouthEast devarb-watermark.png 0015.DCM output.png |
![]() |
I managed to work this into a client’s workflow for mass converting and watermarking DICOM images. I did this with the ever cool, Imagemagick… sween$ composite -gravity SouthEast devarb-watermark.png 0015.DCM output.png |
![]() |
It happened! What happened Dave? Something Wonderful!
As of July 28th, 2008, Ruby gets a DICOM library. A straight up pure Ruby implementation with no external dependencies. Thanks to the hard work of Christoffer Lervag I can re-think my use of jruby and iterate all over dicom headers like Chewie rips out a hyper drive… all with ruby sweetness like Yukihiro Matsumoto intended.
Ok, so I have a half ass blog post on possibly the coolest 10 method ruby library since Warnock’s GapMinder plug-in lowered my productivity for an evening, but I have to apologize… this gift fell from the sky, and I have only been able to play with 2 methods (of 10) so far, so bear with it as I hack through it over the next few days.
Though the library in its 2 day infancy only supports file level I/O, I already have to say that Mirth may already be replaced when it comes to databasing dicom values … I think a marriage of this library and active-record are in short order, check a full header dump below.
We got our Plugfest on! For awhile now I have wanted a “booth” like atmosphere for powerful OSS products… and this year, thanks to Paul Nagy, we got it. I got a chance to show off Mirth who played the integration role in the demonostration. I have to thank Jeff Peters from Webreach for providing the cool swag and everything I needed to represent this outside of his organization. Of course, I need to thank Spectrum Health for letting me have some professional hack time at these venues, and would like to thank SIIM for letting Paul’s brain child come of fruition, I hope it gets a chance next year and a shot a refinement. With that being said, it was the first Plugfest. I immediately would like to say that the tables should NOT have been in the center of the room, but rather against the walls, or in aisleways, much like a vendor show. We could have been facing folks one at a time instead of trying to “talk in circles” literally. This also would have given the opportunity to set up some A/V and video screencasting distribution a little smoother. Another point, Mirth was somewhat of a star, and I needed more representation. I think I underestimated that, and next year, Im going to beg Webreach to send somebody out to help. At the ring of the bell, I was instantly swamped and intimidated, but obliged most interested best I could with sample channels, some swag from the webreach camp, and put my MacBook to work by ripping 12 adhoc CD’s with the screencasts, sample channels and webinars. Participants to the plugfest were cordial to say the least, and some had already deployed some interesting integrations with the product. I would have liked more time, (how about an all day thing Paul?) to see what they have done, but the evil of moderating is participating sometimes becomes a challenge. Can you believe I missed the dcm4chee table altogether and it was right next to me? This is ok however, since I got this cool dcm4che.org hat hat to wear all over the Emerald City, and was also knighted with cool polo shirts from Webreach and dcm4che (PACS Mafia).
| ![]() |
|
Have you ever seen an Optimus 3 Keyboard?. Cool toy, fairly inexpensive, and can be hacked to work in about any environment… even Radiology. The idea here is to give some control outside of the diagnostic workstation, and offer a “press of the button” type service in the event of issue… and it was entirely possible due to the OSS Driver, OM3 Controller… |
If you are a Ruby fan and have toyed with AppleScript in anyway to automate your Mac, take a look at RubyOSA a gift from Apple that provides a bridge for Ruby to the Apple Event Manager. As an example, I created a quick script and screencasted the functionality. Here is the low down on what the script does: It opens OsiriX, grabs the current version, opens OsiriX, retrieves a an image from a remote url, selects the image, opens it, and tops it all off by exiting the application. Screencast includes some functionality to talk to other applications with input from another (OsiriX 2 IChat). Osirix RubyOSA API | ![]() |
![]() |
This is not super amazing. It was however fun, and thanks to this cool little app from Hiroaki I was able to control OsiriX with a wii remote. You can skip through a series, either up or down, zoom, step forward or backward through a stack and stop/browse with the trigger button. Im pretty sure if I would have spent more than an hour hacking it I could have dug for more functionality, (I do know however the nunchuck had no effect). At any rate below is a cheap video to show the functionality.
|
|
So here is the story, with a not-so-agile ending, but effective solution. Our EKG system is robust enough to send out various |
Goal: Receive Message from EKG system, and place resulting PDF on a remote filesystem with the name, fin, mrn of the patient as its filename. This sub-intellectual blathering on the interwebs outlines: - how I stripped the pdf from the HL7 message - how I used my own custom java class in Mirth. - how Mirth and iText saved the day for the second time in the solution. Mandantory Screencast Freshly Brewed Java Strip/Encode Class Convert a PDF Version using Mirth Channel |
![]() |
Now this is cool. It is flat out well done, easy to deploy, and utilizes all the lightweight image viewing .js stunts that I had tried to showcase in WADO on RAILS. |
If you like Albert Gnandt’s Beagle as a Linux user, you will like Brainsite Quicklook Generator as a Mac User. If you use the new quick look functionality in Leopard, you can now utilize it for the dicom scattered all over your file system. | ![]() |
|
Welp, RSNA lasted 2.5 days for me… aside for having limited time and $6 dollar bottles of water, here is a rundown of my points of interest: Max Warnock, a 5th level Triple Store Cleric, gave me an example benefit of the Semantic Web by showing me the inside skinny on an up and coming gem for Rails ( ActiveSesame ?). tgcp bigfile.dat sween.host.com:/home/users/sween Jobs had a presence there, locked and loaded with OsiriX. Maris is on the top of my hacking list and pre-empted the conference with the release of Open Eye. |
![]() |
One thing I was particularly hyped up about in the up and coming OsiriX was the XML-RPC capabilities to remote control the app. This opened the door for all kinds of integration with RIS and Teaching File Systems and hours of fun annoying your buddy while reviewing cases! |
|
Remember This? I lost it. I don’t remember deleting it, I think I just plain couldn’t locate it anywhere… odd, but nonetheless since I had a few folks wanting to take a peak at how it was done, I re-wrote it, and here it is. Things I added: lightbox2 and suckerfish lightbox… I was messing with the js anyway, and threw it into the rebuild. Pretty cool how lightbox2 groups images now, it allows you to walk through the stack! The suckerfish hack is quite cool too, but not as useful in a viewing type app as it would be in more like a teaching file viewer for key images. |
If you haven’t bothered to check in at the Mothership, ClubPACS got a long awaited face lift and some added functionality. RSS, tagging, search… Taking the Fear out of Filmless with Drupal. | ![]() |
|
Driven by complete laziness, I used IKVM to hook up some C# foo with existing java libraries for HL7. The solution was very easy, but the requirement was Winforms and C# it had to be (for me). It would only have been a matter of converting LineReader2.java to C# to get a pure implementation of Mike Litherlands LightHL7Lib java library, but the project is in the books now, and here is my post regardless. I didn’t get much into the IntegrateLib over at NULE.ORG (though IKVM brought it over flawlessly), but I did manage to get basic message parsing going with the same coolness as its native JAVA existence. I guess consider the JAVA version from the Hall of Justice and consider the C# version Bizarro from the Legion of Doom. |
![]() |
By Request, here is the link to the presentation and screencasts I gave at SIIM Section 12 |