Saturday, October 19, 2013

Life beyond Visual

Qt Project Logo
[update 24 March 2023: latest HRZ software can be found on HRZ website - www.hrzkit.com]

The request to add Modality Worklist SCU to a product is common. This time, the product was already capable of exporting DICOM Images but didn't have any network capabilities. The guys from Marketing asked to send the DICOM files to a PACS and add Modality Worklist Query. Very reasonable and makes perfect sense. Only when I got the detailed system requirements did I realize that this project is going to be challenging after all but for different reasons.
Most of our custom software development projects at H.R.Z. are Windows Technology. We do some Java and iOS from time to time but that's not very common. This time we were asked to develop with Qt.

Qt is a cross-platform application framework. The programming language is C++ and there's a pre-processor called MOC on top of that and GUI framework which now, looking backwards, I can say that is actually very good. Originally developed by Trolltech and later acquired by Nokia, Qt offers a wide range of compilers for many target operating systems and hardware ranging from Handhelds and Cell Phones, embedded linux, Mac OS-X and of course Windows. Apparently Qt is more popular in Europe then in the United States, Maybe because of anti-corporate trends in the old continent or maybe simply because its free.

I wanted to take this project. It was an opportunity to see how our DICOM library, RZDCX, performs outside of its C#/.NET comfort zone. We already had at least two respectable customers utilizing RZDCX and Qt in their medical device products that have completed the development cycle and had thousands of units sold worldwide, so I knew it's possible, but while they were using Microsoft Compiler that offers the full comfort of ATL, this project required MinGW compiler which was new to us. Before I could say yes, I had to verify that Qt + MinGW can talk with our DICOM Toolkit so we had to do a little research and evaluation project and that's exactly what we did.

Qt and COM

Like many open-source projects, when it comes to documentation, Qt documentation is inferior to MSDN for example and even to Apple Developer Center. After digging deep into the internet and separating the wheat from the chaff we were able to compile a short cookbook on using COM in Qt. Qt framework includes a class called QAxObject that inherits from QAxBase. These two classes is enough but luckily there's a pre-processor tool called dumpcpp that makes things much easier. dumpcpp generates C++ wrapper classes for type libraries (typelib). With dumpcpp, using RZDCX becomes very easy. Here's our Cookbook.
Using COM Objects in Qt

Monday, September 23, 2013

Standalone DICOM Viewer at last

[update 24 March 2023: latest HRZ softwarecan be found on HRZ website - www.hrzkit.com]

For years I avoided developing a DICOM Viewer. In my mind, developing a DICOM viewer was just too much work for a small team. Well, not any more. The new DICOMIZER is now capable of displaying DICOM Studies, series and images and is equipped with the common display tools. It turned out that with RZDCX the work of making a DICOM Viewer is not so complicated.
DICOMIZER 2.0.7 Start Screen

Its been a busy period for H.R.Z. Software Services LTD. We've made lots of new projects and along the way tried to keep up with new developments. One of the good things we found out while dining theses projects is that RZDCX performs very well with development tools other then Microsoft Visual Studio. For example, we are now completing a DICOM software with Qt that uses RZDCX DICOM Toolkit for the DICOM layer.

In this post I would like to review quickly the new features in the latest DICOMIZER release.

The DICOM Conversion Wizard

This part of DICOMIZER didn't change much. The one thing we've added is the option to add DICOMIZER to the destination folder when creating a DICOM CD as can be seen in the screenshot below.


So now, when converting files to DICOM you can also add the DICOMIZER.exe application to the root folder of the converted data. And, when you double click the DICOMIZER.exe it will automatically display the files in the DICOMIDIR. So this leads us to the DICOM Viewer.

DICOMIZER is a standalone DICOM Viewer

So now, DICOMIZER is a standalone DICOM Viewer. You can view DICOM files simply by dragging a file or a folder on to the DICOMIZER icon as you can see in this short video.
Alternatively, start DICOMIZER and then drag files on the window or click the view button.
BTW, To view the content of the DICOM file data elements, click CTRL+H.
To scroll between frames, use the down and up arrows.

Query/Retrieve SCU

We've added a Query/Retrieve SCU so you can search the PACS and see that your images are there and retrieve them back by double clicking the row.

So check the new DICOMIZER. It can be downloaded from our new download page:
http://downloads.roniza.com/dicomizer

Wednesday, July 10, 2013

Sneak Peek into DICOMIZER 2.0.5 DICOM Viewer

[update 24 March 2023: Latest releases of HRZ software can be found on HRZ website - www.hrzkit.com]

We are working hard on the upcoming release of DICOMIZER 2.0.5 with integrated DICOM Viewer. This project really shows how easy it is to build DICOM applications with RZDCX. The DICOMIZER and DICOM Viewer are written using C# and use RZDCX DICOM SDK for all the DICOM Services: Storage, Query/Retrieve, Modality Worklist Query, Reading DICOMDIR and Creating new DICOM Objects.
Actually it all started when I decided to gather all our code examples, test applications and code snippets and combine them all together into one big demo Application. We took the DICOMIZER and added to it The Modality Worklist SCU Example. It made sense so we've added the Query/Retrieve SCU Example too. Then, after releasing DCXIMG.GetBitmap, it became very clear that the best way to demonstrate it is by writing a little DICOM Viewer. And so, here we are drifting away into something I always avoided but now can't really remember why.

The main panel has now 7 buttons. You can see the version id as well. This helps.

DICOMIZER 2.0.5 Main Menu
When you drag a DICOM file or even an entire folder and drop them on the DICOMIZER window, the DICOM Viewer display them.

The DICOM Viewer showing a DICOM CT Study

You can drag DICOM files on the DICOMIZER Application or Shortcut icons and they will display.

At this point, we have three areas on the window:

  • The top panel shows the Patients and Studies.
  • The left panel shows Series thumbnails
  • The center main panel shows the current image.
Scroll through the series' images is done using the up and down arrows or using the toolbar.
That's all for now, the rest you case see (the toolbar icons are quite standard from the BIR document).
Make sure to like us on Facebook and get frequent updates or stay tuned here.


Wednesday, June 5, 2013

H.R.Z. Software Services LTD and the New Logo

Im exited to announce a change of our business entity to "H.R.Z. Software Services LTD". This change is a result of a tremendous growth in the scale and number of projects that we've been doing.
The growth we're experiencing has a lot to do with the popularity of this blog. I've been getting a lot of great feedback from readers and that's a tremendous feeling. The blog statistics graph is showing it very clearly. I call it "The success graph". Thank you all for reading and for the great feedback (mostly through the contact us form). Please continue reading, commenting and asking questions.


There's also a Facebook page that you can follow if you like or like if you follow.

To celebrate the change we have a new logo. Here's a short video that shows the design process of the logo from pen scribble on paper of the H.R.Z. letters to the somewhat rough edges logo.



The transition is technical and does not affect our products and services that all continue just as before.

Wednesday, May 29, 2013

Using the DICOM File Meta Information to Identify a DICOM file

[update 24 March 2023: Latest releases of HRZ software can be found on HRZ website - www.hrzkit.com]

I know I shouldn't do this but I'll do it anyway and apologize for not posting as frequent as before. This is for very good reason that I'm very busy with everyday work. One little example is the new DICOMIZER 2.0 released just few days ago and this is just a tiny project that my involvement in was really limited to giving some guidelines to the team. Naturally, the new DICOMIZER uses RZDCX. It is written in C# and uses the new features of version 2.0.3.0 of the DICOM Toolkit that all of them were requested by readers of this blog and of course our loved customers. I hope to release some code snippets from the new release soon but in this post, just before getting to the main subject (identifying DICOM files), I want to describe the new GetBitmap call of DCXIMG that returns a bitmap in memory and is used in the new DICOMIZER when you drag a DICOM file on top of the application. Here's a screenshot.

The little code that do the trick follows.