Compression help!

  • Current setup:
    Conquest: v1.4.16
    Windows Server 2008 x64
    16GB of RAM
    Two XEON 2GHz processors
    Drives E & F for storage


    I've got a situation where my dicom.ini file is set as this for compression:


    Code
    # Configuration of compression for incoming images and archivalDroppedFileCompression = j2IncomingCompression = j2ArchiveCompression = as


    The above settings works great for the majority of the studies that are stored on conquest for us because they arrive uncompressed. The remaining studies are ones that are sent from a GE archive that are stored as JPEG Lossless. When those JPEG Lossless studies arrive on conquest from the GE archive they are compressed again according to Conquests compression settings in the dicom.ini file. Those studies/images store fine and their file size for the images looks appropriate, but those studies cannot be imported to other workstations and viewed. When a workstation queries Conquest and finds one of these JPEG Lossless studies in question that has arrived from the GE archive, the study transfers successfully and everything looks great until it is viewed and we see this error on the workstations (GE Centricity) 'Data validation for display failed'. This situation only happens to CT exams, all other modalities appear to behave just fine.


    My question is, can I use a 'importconverter' rule based on calling AE Title and use compression rules with them? Like when 'AETITLE1' calls I can tell it to store 'as' and when 'AETITLE2' calls I can tell it to store 'j2'. If this is possible would I then need to change my 'IncomingCompression' to 'un' or 'as'?


    I will include a copy of my dicom.ini for reference in case any question come up.



    Thanks for all of your help on this !

  • Hi,


    This may be an issue with 1.4.16 new compression code. Try version 1.4.16e first which has a fix in J2. There is a compression of in importconverter as well which may work for you.


    Code
    IncomingCompression = as
    [lua]
    ImportConverter0 = if Association.Called = 'AE1' then script('compression AS') else script('compression J2');


    The compression command works instantaneous, therefore you need to set IncomingCompression to AS.


    Marcel

  • Marcel,


    We have more than one GE Archive where studies could be sent to Conquest from, so in your code below:


    Code
    ImportConverter0 = if Association.Called = 'AE1' then script('compression AS') else script('compression J2');


    could I use more than one 'Called AE Title' or should I have a ImportConverter for each 'Called AE Title'? Like the following:


    Code
    ImportConverter0 = if Association.Called = 'AE1', 'AE2' then script('compression AS') else script('compression J2');


    OR


    Code
    ImportConverter0 = if Association.Called = 'AE1' then script('compression AS') else script('compression J2');


    Code
    ImportConverter1 = if Association.Called = 'AE2' then script('compression AS') else script('compression J2');
  • Marcel,


    So, using your new rule shouldn't it be using 'Association.Calling' instead of 'Association.Called'?


    Code
    # ImportConvertersImportConverter0 = if Association.Calling = 'RADARCH' then script('compression AS') else script('compression J2');ImportConverter1 = if Association.Calling = 'RADARCH3' then script('compression AS') else script('compression J2');


    ...except it is not compressing any other images from other AE Titles and is storing them uncompressed...because I changed my 'IncomingCompression = as'


    [code[RADARCH4] UPACS THREAD 5: STARTED AT: Wed Sep 14 09:03:39 2011
    [RADARCH4] Calling Application Title : "CATHROUTE "
    [RADARCH4] Called Application Title : "RADARCH4 "
    [RADARCH4] Application Context : "1.2.840.10008.3.1.1.1", PDU length: 16384
    [RADARCH4] Presentation Context 0 "1.2.840.10008.5.1.4.1.1.1" 1
    [RADARCH4] *** Importconverter0.0 error: if Association.Calling = 'RADARCH' then script('compression AS') else script('compression J2')
    [RADARCH4] *** Importconverter1.0 error: if Association.Calling = 'RADARCH3' then script('compression AS') else script('compression J2')
    [RADARCH4] Written file: f:\imagedata\images\20110914\CR\117603\1.2.392.200036.9107.500.303.4338.20110914.84349.104338.dcm
    [RADARCH4] UPACS THREAD 5: ENDED AT: Wed Sep 14 09:03:39 2011
    [RADARCH4] UPACS THREAD 5: TOTAL RUNNING TIME: 0 SECONDS
    [RADARCH4] *** Queue: holding processing of file f:\imagedata\images\20110914\CR\117603\1.2.392.200036.9107.500.303.4338.20110914.84349.104338.dcm[/code]


    I know I'm doing something wrong, can you tell what is wrong in my dicom.ini file?


  • Sorry, use double ==


    Code
    [lua]
    ImportConverter0 = if Association.Calling == 'RADARCH' then script('compression AS') else script('compression J2');
    ImportConverter1 = if Association.Calling == 'RADARCH3' then script('compression AS') else script('compression J2');


    Marcel

  • marcel,


    I tried your code above as:


    Code
    [lua]ImportConverter0 = if Association.Calling == 'RADARCH' then script('compression AS') else script('compression J2');ImportConverter1 = if Association.Calling == 'RADARCH3' then script('compression AS') else script('compression J2');


    and I got back this error:


    Code
    [RADARCH4] UPACS THREAD 5: STARTED AT: Thu Sep 15 07:49:19 2011
    [RADARCH4] Calling Application Title : "RADARCH "
    [RADARCH4] Called Application Title : "RADARCH4 "
    [RADARCH4] Application Context : "1.2.840.10008.3.1.1.1", PDU length: 0
    [RADARCH4] Presentation Context 0 "1.2.840.10008.5.1.4.1.1.1" 1
    [RADARCH4] Presentation Context 1 "1.2.840.10008.5.1.4.1.1.1" 1
    [RADARCH4] Presentation Context 2 "1.2.840.10008.5.1.4.1.1.1" 1
    [RADARCH4] *** lua syntax error [string "if Association.Calling == 'RADARCH' then script('compression AS..."]:1: 'end' expected near '<eof>' in 'if Association.Calling == 'RADARCH' then script('compression AS') else script('compression J2');'
    [RADARCH4] *** lua syntax error [string "if Association.Calling == 'RADARCH3' then script('compression A..."]:1: 'end' expected near '<eof>' in 'if Association.Calling == 'RADARCH3' then script('compression AS') else script('compression J2');'
    [RADARCH4]


    Question... does [lua] need to be on its own line or does it have to be in the dicom.ini at all?


    Thanks

  • Hi,


    I indeed forget the 'end' as well. Lua scripts are more user friendly than normal conquest scripts, but the syntax is slightly different from C I am used to. The way to call lua scripts is shown in the lua post on the forum.


    Correct statements are (likely to be) - in the lua block:


    [lua]
    ImportConverter0 = if Association.Calling == 'RADARCH' or Association.Calling == 'RADARCH3' then script('compression AS') else script('compression J2'); end


    or outside the [lua] block


    ImportConverter0 = lua "if Association.Calling == 'RADARCH' or Association.Calling == 'RADARCH3' then script('compression AS') else script('compression J2'); end"


    Marcel

  • Marcel,


    Thanks - the code works now! :)


    I'm getting some errors when compressing to J2 on a few select studies that I can't figure out - I was hoping you might have an idea what is happening?


    I've noticed this on some XA and some CT exams - here is the log:



    its where it states, ***[CompressJPEGL]: could not find the image data.


    The file sizes of these images are usually around 2KB to 6KB - really small and cannot be displayed when imported to a workstation. Give error, 'decompression failed' when the study gets opened on a workstation after being imported.


    When I don't use the [lua] script and I go back to 'incomincompression = j2' the file size goes backup to 16MB or so as these are clips from our cath lab.


    Thanks

Participate now!

Don’t have an account yet? Register yourself now and be a part of our community!