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.

Tuesday, March 12, 2013

HL7Kit Pro 2.0

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

At last, HL7Kit pro 2.0 is out! The new kit features complete integration between DICOM and HL7 and comes up with the DICOM Modality Worklist SCU (as an option) fully pre-configured out of the box. After installation, the package can serve both HL7 orders and DICOM modality worklist queries with no additional configuration. To complete the package we've added the Modality Worklist client so you can see the full cycle.
As before, the kit comes with free evaluation download. The price for the kit has not change but the DICOM Server comes as an extra. More updates soon as we complete new video tutorials and users manual.
The kit relays on SQL Server and installer looks for a pre-installed SQLEXPRESS instance. Check the downloads on roniza.com

Tuesday, January 29, 2013

IHE Connect-A-Thon

Connect-A-Thon, pronounced like Marathon, is a huge geek party of healthcare IT enthusiasts. Its an event organized by IHE where healthcare IT and medical device vendors test their products' interoperability.

IHE develop and publish technical frameworks for the different domains of healthcare. There's Technical frameworks for Anatomic Pathology, Cardiology, Eye Care, IT Infrastructure, Laboratory, Patient Care Coordination, Patient Care Device, Pharmacy, Quality, Research and Public Health, Radiation Oncology, Radiology.

The technical frameworks (TF) are detailed document very much like software specifications that describe integration profiles, i.e. scenarios, with descriptions of actors and transactions much like the text of a play or a movie. Every actor has the transactions that it can perform to cary out a task.

Let's do an example. I've written a lot about DICOM Query Retrieve and Modality Worklist. IHE describe these services in the the radiology (RAD) scheduled workflow (SWF) integration profile. query and Retrieve are transactions RAD-14 and RAD-16 and in the documents that IHE publish these transactions are described in very detail down to the level of required and optional keys for the request and the response of the modality and the image manager (the name for PACS actor in IHE TF).

During the connect-a-thon all the participants perform tests scenarios together and IHE monitors validate the results by going over the logs and watching the transactions being performed on the event hall. At the end of the connect-a-thon IHE publishes an excel spreadsheet with the list of vendors and the actors that have successfully tested their systems and passed the tests. for example, if you develop an ultrasound machine then in the excel it will look like a line with your company name and system name and it will state that you've tested your system as RAD SWF IM. So for example a vendor that would like to buy your product can open this spreadsheet and verify that your product integrate well with another vendors' PACS that he consider buying. If both systems participated in the event and performed the same transactions then theres a better chance that they can work together well.

But there's more value in the connect-a-thon then just getting your name on the excel sheet which I don't underestimate at all but this year I've come to Chicago with a clear mission: to test my customer's product with as many other products as possible in an environment as close as possible to a real hospital installation. There's no other opportunity to achieve this goal within a week that matches the connectathon. This is a real value that every software or product development manager can justify. So if you work for a medical device company and develop or test interfaces like HL7, CDA, DICOM XDS and haven't yet participated in a connectathon, go to your boss and make her read this paragraph and if he (or she) doesn't send you to register for one of the coming connect-a-thons right on the spot then either there are very good reasons why not to (and I can't think of many but for budget constraints) or he's a complete ___ ____!

Monday, January 28, 2013

Live from the IHE NA Connect-A-Thon in Chicago

Hi,

IHE NA Connect-A-Thon 2013 about to begin
I'm in the NA Connect-A-Thon now and the show is about to begin. I'll try to update more and explain about this amazing event later this week. Now we're busy configuring.

The connect-a-thon is a great way to test your systems as many vendors gather in the same place at the same time to run tests together.

I'll add more details later.


Tuesday, December 25, 2012

C# Tricks


I did some UI work in C# lately and discovered all kind of cool new stuff. So cool, I couldn't resist sharing it with the world.

Lets say we have a multi-threaded application that throws tasks (TPL) in the back-end.

The tasks report back and we want to reflect it in the UI but we should update UI always in the main thread. We use Invokefor and in many places in the code we have chunks of the kind:

void SomeFunction()
{
  if (this.InvokeRequired)
    this.Invoke(new MethodInvoker(SomeFunction)
  else
  {
     // Here goes some UI functionality
  }
}

this is the form we are working in for example.

With .NET 3.0 we have Action so we can write one function like this

        void DoUiStuff(Action a)
        {
            if (this.InvokeRequired)
                this.Invoke(new MethodInvoker(a));
            else
                a();

        }

Then whenever we want a UI action we write a lambda expression for example:

DoUiStuff(() => progressBar.Visible = true);

or even a code block like this:

DoUiStuff(() =>
            {
              progressBar.Visible = false;
MessageBox.Show("Done!");
});

Fun ...