Thursday, June 3, 2010

RZDCX DICOM Toolkit 1.0.1.4 Released

A new release of RZDCX - Fast Strike DICOM Toolkit is now available on RZ web site at http://www.roniza.com/products/downloads.

This version include some bug fixes, new features and new sample applications.

The complete documentation can be found online in the following link: http://www.ganilo.net/RZDCX/1.0.1.4/index.html

A table with a list of the changes and modifications, some of them were already available in release 1.0.1.3 can be found at the end of this post.

I'm going to take this opportunity to start a new thread in this blog that discusses professional aspects of software development in general and DICOM programming specifically.

Today I'm going to talk a bit about the DICOM File Meta Infomration AKA File Meta Header.

When saving a DICOM object to file, the application that saves the file should add to the DICOM object a header.
This header is comprised of:

  1. A preamble - 128 bytes that can be anything but are usually set to 0 (0x00),
  2. The DICOM magic number i.e. 4 bytes equals to DICM and
  3. A set of DICOM attributes of group 0002 (0x0002) encoded using Expilict Little Endian Transfer Syntax.
It is important to remember that the file meta information should be re-created by the saving application and that it is not part of the DICOM object and thus should be removed before sending the object by C-STORE for example.

The roles of the elements in group 0002 are: 
  1. To specify the transfer syntax that is used for the DICOM object itself that may be different then LEE,
  2. To identify the saving application.
The first role is obvious but why do we need #2? Well, suppose that you find out that you have a problem with files that come from a specific application, so you can add code to your application that checks the application UID and version in the file meta header and cope with the problem accordingly.

In RZDCX, you can get the elements of the header simply by writing the following code (C#):
DCXOBJ obj = new DCXOBJ();

// Read the file
obj.openFile("DCMFILE");
// Get the header
DCXOBJ meta = obj.FileMetaInfo;

Now you can read elements from the header using getElementByTag.

DCXELM transferSyntax = meta.getElementByTag((int)DICOM_TAG_ENUM.TransferSyntaxUID);

So now you're asking how do I change it and the answer is you don't. Why not? because if you change it and someone finds a problem with the DICOM objects you create how can he know that it was generated by RZDCX :)






186todoclosed1.0.1.2COLOR Print is not workingedit
Reported by XX: Color print session is not working with current RZ evaluation version. It throws an exception while Creating Page. Both Color and Gray Scale printing should be possible
185newclosedAdd support for PRINTER SOP Class as SCUedit
Requested by XX
184codeclosedMPPS Set Request returns success even if the MPPS is deletededit
Need to verify following report:RZ API IDCXREQ::SendMPPSNSetRquest is giving the status as success in case of updating the deleted instance in server. The expected behavior is it should throw an exception or else there should be some callback mechanism which tells us the status as failure. Our suggestion: RZ needs to provide an implementation to verify the existence of created instance in server. OR IDCXREQ::SendMPPSNSetRquest should throw an exception in case of trying to update the deleted instance OR RZ should provide call back mechanism which gives the status as FAILURE in above scenario.
183newclosedModify MWL SCU to include date range queryedit
Use for example e->Value = "20100101-20101231";
182codeclosedCreate single project example with SCM SCU and SCM SCPedit
make a single example program with both listener and a Storage Commit SCU that shows how to send and receive storage commit requests and results
181newclosedAdd license restricted API to modify META header elementsedit
Check special license flag to allow/block this option. Add parameter to special call of save to file
180codeclosed1.0.1.1getElementByTag does not return NULL if element not found in objectedit
Needs verification. Code review suggests this bug doesn't exist. Reported by XXXX.
179newclosedAdd example for private tags in RZDCX Sample Applicationsedit
A simple example, can be added to create DICOM object example
178todoclosedAdd example of Multi-Frame Image creationedit
For Bankuzi

No comments:

Post a Comment