Dicom server 1.4.16(k) released !

  • Today, the new version 1.4.16 of the Conquest DICOM server is released.


    I would like again to thank all the users of the forum who reported problems, suggested changes, and helped testing and documenting. In particular I would like to thank Bruce Barton for supplying the new JPEG and JPEG2000 code.


    The main new features are:


    JPEG and JPEG2000 support built-in; lua scripting


    You can find it at: http://www.xs4all.nl/~ingenium/dicom.html


    For production use, please apply the latest update (just copy the exe files for windows; for linux copy the cpp/cxx/hpp files and recompile):


    ftp://ftp-rt.nki.nl/outbox/mar…r/ConquestUpdate1416k.zip


    See the buglist below for issues addressed in 1.4.16k (released July 1, 2012)


    Marcel

  • List of known bugs/wishes in 1.4.16; updated up to release 1.4.16k


    Open (mostly related to a GUI release):
    1) Ports 5679 and 1155 in use by Vista. Modify port ranges and test availability of port on fresh install.
    2 ) Web interface fails to query studies and series in databases with really old definition (no patient name in study).
    5) Setting TruncateFieldNames to anything other than 10 creates issues in deletepatient, prefetch, wado, web server, archiving
    6) just observed a reproducible deadlock in 1.4.16beta on a dual core machine if the move reciever breaks the connection during reception of a PET scan (small objects). Needs to be investigated, but did not reproduce on 1.4.16. The deadlock resolved after 5 minutes (TCPIPTimeout).
    7) lua should use lua51.dll to correctly allow loading DLL packages. To do.
    30) Use newer postgres client DLLs to avoid SSL issue.
    36) default install uses dbaseIII instead of sqlite. Not reproduced. Closed.
    37) a 3.2 GB MR spectroscopy object crashes a 64 bit server on viewing/loading.
    40) jasper compile issue on linux: http://forum.image-systems.biz/viewtopic.php?f=33&t=3681
    46) the query/move page does not pad the textual query strings with spaces but with NULLs. Fixed in 1.4.17
    55) dictionary update for structured dose reporting. In 1.4.17
    65) Error in manual for set/get sequence items. Fixed in 1.4.17
    73) retire j1 in GUI and manual. In 1.4.17.
    76) The VirtualServerPerSeries flags are incorrectly listed in the manual
    78 ) When starting Windows GUI and answering NO to the question regarding "continue export or no" the file is not deleted and the NO answer is ignored. Must stop the dgate server and delete the file manually. Alex. Not reproduced - file locked? Using FileRename and backup instead in 1.4.17.
    80) Switching between lossy jpeg and jpeg2000 does not work from windows gui, need to edit dicom.ini directly. Fixed in 1.4.17
    81) LossyQuality has a very different scale for jpeg2000 (rate, 1-10 differs) as for jpg (quality, 50-100 differs)
    83) describe application of serverside viewer in manual
    84) Delete of exportfailures should be logged; maybe allow backup (rename) of these files on delete. In 1.4.17
    85) XRayRadiationDoseSRStorage<tab>1.2.840.10008.5.1.4.1.1.88.67<tab>sop
    90) Increase convert_to_bmp resolution for print jobs or make it configurable. Fixed in 1.4.17
    97) Look at tab order in query/move page (thx jasper). In 1.4.17
    98 ) after only log to file, debuglog checkbox does not function anymore


    Fixed in 1.4.16k:
    53) revisit changing BitStored etc after jpeg(2000) (de)compression. Changed in 1.4.16k
    66) LossyQuality parameter does not work for JPEG; attempted fix in 1.4.16j reported not to work; however It works when you change dicom.ini and kill and restart the server. Or use dgate --lua:Global.LossyQuality=75. Header (0028,2110) CS [00] # 2 LossyImageCompression remains set to "0". The latter is fixed in 1.4.16k
    67) OverLapVirtualGet deadlocks if virtualserver deliveres slices (per series) in opposite order as expected. Fixed in 1.4.16k
    69) move mkdir etc defines in dgate.cpp up to line 2220; Fixed in 1.4.16k
    70) A query for ImageType equals 'ORIGINAL\\PRIMARY\\M_FFE\\M\\FFE' goes wrong with MYSQL; Fixed in 1.4.16k
    71) in lua Object:Read will screw up Object (set internal DDO pointer to NULL) if the read fails, i.e., there is no way to check the result of a read. Fixed and failure returns nil in 1.4.16k
    72) The "virtual server per series" op of virtualserver does not provide filtering, and may keep running after all requested image are collected causing a crash. Fixed in 1.4.16k
    74) lua dicommove() and dicomquery() destroys the passed data object; and does not report failure. Destroy fixed in 1.4.16k; but do not report failure.
    75) an interupted c-store is not marked as failure in 1.4.16: http://forum.image-systems.biz/viewtopic.php?f=33&t=13688. This behavior can be changed with the RetryForwardFailed flag, and is probably not a bug.
    79) Transfer syntax UID is listed twice, in header and in data. http://forum.image-systems.biz/viewtopic.php?f=33&t=13814. This only happens with the 'as' compression, considered but left unchanged in 1.4.16k
    82) Efilm modality query is (sql syntax error) due to DT_MSTR in postgreSQL. Fixed in 1.4.16k


    new in 1.4.16k:
    77) animated GIF sometimes has images out of order. Probably just window&level changes.
    86) reading path_translated variable crashes web interface dgate.exe. Fixed in 1.4.16L
    87) on tomcat there is a . in the server path which screws up the cgi link generaration. Add #ifdef UNIX ext=NULL; #endif. Fixed in 1.4.16L
    88 ) Allow console printfs without \n to the windows GUI. Fixed in 1.4.17.
    89) update sqlite driver to fix disk error messages (there is a temporary release on the forum). In 1.4.17
    91) Bruce fixed an error where k-pacs sends one empty transfer syntax. Fixed in 1.4.16L
    92) Add mkdir and/or system lua function; script('mkdir' .. x .. '\\') requires trailing backslash; Fixed in 1 4.17.
    93) text/plain WADO output may not have a null byte appended if odd length (firefox will not display the text then). Fixed in 1 4.17.
    94) Crash in 'Print image on local dicom printer', if you call it twice without browsing to another image. Fixed in 1.4.17
    95) Note that DT_MSTR allows one entry to match multiple records, but if you pass more than one entries these are matched as a substring in order, creating a partial AND of entries, not an OR of entries as may be the intention. I should clearly document our behavior, and add the IMAGETYPE fix to let broken virtual servers work correctly with our clients.
    96) Should JPEG decompression and recompression change elements like 0008,2211 (see ajjg's post)
    99) Server fails when compiled on Ununtu 12.04.1 64 bits; see: http://forum.image-systems.biz/viewtopic.php?f=33&t=14219
    100) some .v2 tests test last 4 instead of last 3 characters (affects regen and V2 compression). Fixed in 1.4.17
    101) it might be nice to create the database folder if it does not exist
    102) reports of incorrect transmission after compile on Ubuntu12.04.1 (64 bit) - cross compile solves issues
    103) V2 and NKI compression fails to compress. Fixed in 1 4.17.


    Closed
    3) All formats: level and windowing overflows at high pixel values. To be recomfirmed. This has not been seen anymore and is probably fixed.
    4) uploading from the web server does not work in linux. It also does not work from IIS. IIS (and probably the linux issue) is fixed in 1.4.16i.
    8 ) dgate.exe does not work as CGI client for IIS server. Please use an older dgate.exe version for now. Fixed in 1.4.16a
    9) Postgres driver does not compile under linux, because of Sleep in line 3227 in odbci.cpp. Fixed in 1.4.16a
    10) dsize and size are not implemented for the serversideviewer, only for loose slices. Fixed in 1.4.16c
    11) flush of ini file cache implemented only partially, should also reset stored timestamp of ini file. Fixed in 1.4.16a
    12) ini file reader will read beyond selected section, e.g., rename of [lua] to [nop] puts things below in main section. Fixed in 1.4.16a
    13) crash when reading V2 image with jpeg compression - which has been forbidden in later releases. The data goes through the RLE decompressor which sets data to NULL. Fixed in 1.4.16a, but requires setting AllowDICOMErrors to 1
    14) forced outgoing syntax of e.g., J2 will not compress SR etc, making an invalid outgoing stream. I guess if any image is uncompressable, the outgoing should fall back to UN. Hm, not sure if this is really true, LittleEndianImplicit is always part of the transfer syntaxes.
    15) multiplex - connection terminated with very high load from 10-parallel forwarder. This failure has to do with reading dgatesop.lst. Added additional debug log info in 1.4.16c, but not fixed yet. Lennert made an important change in 1.4.16d; see if this helps... I also made an important fix in the association code in 1.4.16g
    16) full lua web page generation is not functional. Fixed in 1.4.16a
    17) "save to" converters and other save commands do not save sequences because MakeCopy does not copy sequences. Fixed in 1.4.16a
    18 ) spurious messages from jpeg decompression in 1.4.16a. Fixes in 1.4.16b
    19) compression mode "UJ" is broken due to "UI" etc code. Fixed in 1.4.16b
    20) Check that that DcmMove (dgate --movestudy/studies) only selects PatientRootMove when required. In 1.4.16b
    21) A small leak in the dicom decoder causes memory fragmentation and eventual out of memory. Fixed in 1.4.16b
    22) leaks in many dgate -- commands. Fixed in 1.4.16f
    23) archiving commands (nightlymove) such as dgate -au crash the server. Fixed in 1.4.16c
    24) do not put v2 files into exported zip. Fixed in 1.4.16d
    25) heapinfo and getch do not compile in 1.4.16b/c. Fixed in 1.4.16d
    26) clean disconnect as fixed by lennert. Fixed in 1.4.16d.
    27) WADO generates DICOM objects without application/dicom header. Fixed in 1.4.16d.
    28 ) Default anonymizer does not clear patient address (0010,1040). Fixed in 1.4.16e.
    29) crash on RLE palette demo image: http://forum.image-systems.biz…33&t=3215&start=45#p10503. These images have odd length pixel data VR's. A fix is enabled in 1.4.16h.
    31) lua deletedicomobject function does not work. Fixed in 1.4.16e.
    32) a mixup of J1 and k2: http://forum.image-systems.biz…ic.php?f=33&t=3521#p10709. Fixed in 1.4.16e.
    33) %i %s and %m do not work in most scripts started from lua (not from ImportConverter). Fixed in 1.4.16f.
    34) Getpixel etc crash server on image without pixel data. Fixed in 1.4.16e.
    35) %QX crashes server if aliasfileX does not exist. Fixed in 1.4.16f.
    38 ) Lua forward crashes with NULL database (actually even without a null db). Fixed in 1.4.16f.
    39) aliasfile reading incorrect and lua dbquery dbquery crashes: http://forum.image-systems.biz/viewtopic.php?f=33&t=3663. Fixed in 1.4.16g.
    41) lua sequence issue: http://forum.image-systems.biz…=33&t=3215&p=10998#p10995. Fixed in 1.4.16g.
    42) issue with J1 and J2 compression. Fixed in 1.4.16g.
    43) The org, dest and script clauses in forward did not work; added channel clause. Fixed in 1.4.16g.
    44) The read list of requested presentation contexts was never cleared eventually overflowing in some cases causing selection of incorrect compression types leading to all sort of problems. Fixed in 1.4.16g.
    45) failed to rewrite jpeg as v2 in archival crashed system. Fixed in 14.16g.
    46) forward to host:port did not work because compression was not initialized. Fix in 1.4.16g.
    47) WADO dcm uses wrong (".wado") tempfile extension; therefore cannot use jpg. Fixed in 1.4.16h.
    48 ) Fix logged AE title in retrieve error message (in nkiqrsop.cxx). In 1.4.16i.
    49) YBR_FULL decoding was off and did not work with deplaning; restored original float code and VR get in 1.4.16h
    50) NULL database leaked. Fixed in 1.4.16h
    51) Wado does not decompress. http://forum.image-systems.biz/viewtopic.php?f=33&t=3711. Fixed in 1.4.16i
    52) dsize parameter in dicom.ini for webserver defaults to 32 or so; to fix set e.g., dsize=2048 in there. Making default 0 crashes server. Fixed in 1.4.16i.
    54) passed script in submit and scheduletransfer command is not read correctly. Fixed in 1.4.16i.
    56) Two virtualservers; retrieve requires data from both; server 2 times out --> server 1 stops transfer with hanging thread. Fixed in 1.4.16j
    57) Reading tags in lua returned nil for empty. Fixed in 1.4.16i.
    58 ) Reverse CGI key test to allow query string where e.g., mode= appears twice, hit on first. In 1.4.16i.
    59) Disable WEB push to self, and zip from remote server (which was invalid anyway). In 1.4.16i.
    60) WebPush check is not implemented for all push links. Fixed in 1.4.16j
    61) running dgate.exe in CGI mode without query_string crashes cgi app. Fixed in 1.4.16j
    62) The name StudyModality does not read from the dictionary. Case error (KeyWord) in dgate.dic. Fixed in 1.4.16j
    63) Server can crash when browsing from webserver into series on remote server when 'mark' is active. Fixed in 1.4.16j
    64) Imagefilelister only works for local, imagefinder not documented. Fixed in 1.4.16j
    68 ) DICOM printing fails in 1.4.16; Fixed in 1.4.16j


    --------------------------------------
    Wish list:


    Open
    1 ) Allow underscores in AE: http://forum.image-systems.biz/viewtopic.php?f=33&t=1847.
    2) Safer printing: thread-safe and no drops; http://forum.image-systems.biz/viewtopic.php?f=33&t=1844
    3) Add current thread number to each line logged so that a simple sort before parsing daily log files would solve this problem. Probably lua scripts can provide logging at the requested level of detail and with thread number.
    5) self learning query cache prefetch; cache local query data.
    6) use typecodes for our private tags (for explicit syntaxes)
    7) make ModalitiesInStudy a computed field.
    8 ) Cache computed items in database: clear when writing or deleting image, set when querying.
    9 ) Allow setting some web variables like address and port from the scripted pages (could be done with frames). Can be added in lua, but not done yet.
    12) allow selection of database from lua script
    13) Save as button in kpacs OCX
    14) put some info about possibility of query page (e.g., double click) into memo on startup. In 1.4.17
    15) when switching to UID mode, query/move on Birthdate instead of patient name
    23) allow 'earliest' date replacement method for database updates.
    24) Implemement C-GET
    26) CRC for any lossless compression method
    27) start time for nightly move
    28 ) load balancing for archiving operations
    29) sort order for browser
    33) better handling of frames in K-PACS (web) viewer
    36) option to never send undefined sequence lenghts.
    37) delay GUI test of server. In 1.4.17
    38 ) load object into server from lua (you can send it using e.g. script('forward ....')
    39) mail from lua
    43) return failure / succes for dgate -- commands
    104) Allow Start...EndAssociation events to share data


    Closed
    4) Make LossyQuality configurable in ImportConverter, forward statement and/or queryconverter. In 1.4.16k
    10) "move image/series/study/patient from AE to AE org AE" command. Most easily added to lua. In 1.4.16b
    11) allow creation of zip files from the web interface. In 1.4.16c.
    16) lua access to large VR's (e.g., Data.GetVR, Data.SetVR, getvr(object, g, e), setvr(object, g, e, data). In 1.4.16a
    17) full lua db access (in 1.4.16b), truncatefieldname (best script in lua)
    18 ) handle ' *' query correctly. In 1.4.16c
    19) heapinfo() function in lua. In 1.4.16b
    20) lua endassociation entry; also lua clienterror. In 1.4.16c.
    21) large scale in-place recompression method. Use dgate --modifystudy In 1.4.16d.
    22) Allow RejectedImageConverter to overrule that an error message is sent back and/or retry entering. Added retry command in 1.4.16c
    25) recompress to other extension. In 1.4.16d.
    30) lua filename generator (in 1.4.16j)
    31) Add RejectedImageWorkListConverter for worklistmode=2 fallback. In 1.4.16d.
    32) add unfixkodak to forward statement. Instead added more general "script" to forward statement in 1.4.16f.
    34) # operator for sequences in lua. In 1.4.16e.
    35) temp folder setting. In 1.4.16h.
    40) add "dest" clause to forward to set called AE. In 1.4.16f, working in 1.4.16g.
    41) add tomono and crop commands to importcpnverters. In 1.4.16f
    42) allow retrieveconverter0 to modify command, and add private tag ConquestMoveOriginatorAE 9999,0900. In 1.4.16i
    44) allow setting worklist encoding to ISO_IR 192 (maybe by passing 192 as value in config). In 1.4.16i
    46) Flexible delete on studydate: http://forum.image-systems.biz/viewtopic.php?f=33&t=3792. Use a lua script in 1.4.16k
    48 ) configurable move: http://forum.image-systems.biz…2c1855093215540a83#p12383. Use a lua script in 1.4.16k
    49) add studymodality to get script command. Use a lua script in 1.4.16k
    50) add the lua equivalent of "process study with". In 14.16j.
    51) SOAP web processing through lua. In 1.4.16i.
    52) GetPixel etc on other dicom objects (http://forum.image-systems.biz…370&hilit=getpixel#p12370). In 1.4.16i.
    53) Allow using POST for other http messages, e.g, soap. In 1.4.16i.
    54) Allow using sql/move/query in web interface. In 1.4.16i.
    55) defaultpage (error catch) and anypage (disable web pages) options. In 1.4.16i.
    56) Added optional markseries and markstudy pages if passing value 'key' down into them; Add shoppingcart option; enabled if configured and passing value 'key'. In 1.4.16i.
    57) Added WebPush configuration to allow disabling push options; show more config items. In 1.4.16i.
    58 ) lua can run script on any dicom object; lua dictionary(). In 1.4.16i.
    61) pure wado bridge. In 14.16j.
    62) [lua] and "lua" ExportConverters. In 1.4.16j.
    63) Allow filenames without .dcm extension (reverse .dcm check and more forgiving regen). In 1.4.16k


    To get a list of bugs fixed in 1.4.16 please have a look in the bug lists for the earlier 1.4.16 releases. Please report any bugs you find!

  • Hi,
    I put the new "dgate.exe" in my web server "Microsoft IIS under XP", but it does not work.
    The 1.4.16 beta version "degate.exe" works fine.
    Is there any modification needed to the web server or dicom.ini ?


    Thanks

  • Hi,
    Thank You for your reply, the attached dicom.ini file worked fine with all previous releases, just when I put the 1.4.16 dgate.exe in the "C:\Inetpub\wwwroot" folder, the web interface gives CGI Timeout.


    Sorry I dont know why I Could not upload any attachment, I put it as a code !!


    Thanks



  • Hm,


    The main change I implemented is adding the 'post' method to allow uploading of files to the server. Maybe IIS generates CONTENT_LENGHT also for GET requests? Is a test script in IIS that would list the environment for a simple ?mode=top request?


    For now, you can use the older dgate.exe as web interface as temporary solution. If you feel like it, go into:


    ftp://ftp-rt.nki.nl/outbox/MarcelVanHerk/dicomserver


    And test a few versions between 1.4.16alpha and 1.4.16. If 1.4.16beta4 works, and 1.4.16rc1 fails, this limits the search region for me.


    Marcel

  • Hi,


    I just reproduced the bug (it took me a while to find an IIS server on an old windows2000 computer). It is due to a difference in behavior for a GET/POST message compared with apache. I fixed the bug locally. I will release an update if required, but if you can use an older dgate.exe as CGI client for a while I can wait a bit longer and maybe get some other bugs to be fixed (a full release takes me several hours of work).


    Marcel

  • I downloaded and installed a new Conquest server last night. I'm using an SQL Server for my database. During the setup the system said it was going to use the password conquest1415, which was validated by the dicom.ini settings. The Conquest server wouldn't connect to the SQL database until I manually changed the password on the database side to conquest1415. I'm not sure if it passed a password for conqeust1416 or what but the default settings didn't work correctly.


    Brady

  • Hi,


    The optional 1.4.16a update is here. To see if you need it check the buglist in this topic.


    ftp://ftp-rt.nki.nl/outbox/mar…r/ConquestUpdate1416a.zip


    This fixes: IIS bug
    read of V2 stored and jpeg compressed images
    lua web pages
    missing sequences in "save to" stored images
    and adds GetVR and SetVR lua commands for large VRs


    Marcel

  • Hi Marcel,
    with 1.4.16 version I have experienced memory leak problems on recompressing new incoming or previously archived (with Conquest v1.4.15) FUJI CR images to J1:


    20110419 08:19:38 ***[JPEG Library]: Insufficient memory (case 4)
    20110419 08:19:56 ***VR:ReAlloc out of memory allocating 30131200 bytes


    20110419 08:24:45 ***Failed to create thread for child
    20110419 08:24:46 ***VR:ReAlloc out of memory allocating 8678592 bytes


    20110419 12:50:38 Accepted compression: j1
    20110419 12:50:38 ***VR:ReAlloc out of memory allocating 10428216 bytes


    After each of that blocks Conquest went down without restarting itself, however
    Only that helps is manual start to windows service.


    dicom.ini, most of parameters have default values:
    KeepAlive = 60
    IgnoreOutOfMemoryErrors = 1
    DecompressNon16BitsJpeg = 1
    UseBuiltInJPEG = 1

  • The Conquest itself has:
    DroppedFileCompression = j1
    IncomingCompression = j1
    ArchiveCompression = j1


    However, the leak may occur recompressing CR studies (stored as J1 with Conquest v1.4.15) to UN to be sent to KPACS-clients that prefer UN-compression.

  • Will the 1.4.16a .zip update work to solve the problems encountered on a new build/install on Linux (Ubuntu maverik amd64)? I believe I encountered everything on your list today before I found the errata posted here. Will the source files in the zip archive build?


    -- Dave

Participate now!

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