Conquest DICOM server 1.4.14 released

  • Today, a new version 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.


    The main new features are:


    Better web access (scriptable) with several viewers (OCX and server side), much more forwarding and scripting options, bug fixes in worklist code, and several small bug fixes.


    You can find it at:


    Where: http://www.xs4all.nl/~ingenium/dicom.html


    Marcel

  • Many items were fixed from the 1.4.14beta, there is one still open, and new ones are being found:


    1) Littleendianexplicit cannot be enabled as described in http://www.image-systems.biz/forum/viewtopic.php?f=33&t=1408. NOTE: THIS PROBLEM SEEMS ALREADY TO BE FIXED IN 1.4.14, and 1.4.15alpha


    2) manual of dgate --modifypatid: is incorrect, reverse parameters. Fixed in next release 1.4.15alpha.


    3) Some worklist clients require setting WorkListReturnsISO_IR_100 = 0. Turning this to 0 or OFF, my CR accepted the worklist. I checked the value sent for 0008,0005 in the DICOM literature and found Character Sets defined by DICOM Part 3, C.12.1.1.2 Specific Character Set 2008 version on page 902 of 1097. It shows that the value should be "ISO_IR 100". Fixed in next release 1.4.15alpha.


    4) The series move from the web page for remote servers specifies patientID and seriesUID only: Ok for conquest not for some other servers. Fixed in next release 1.4.15alpha.


    5) The virtualserver and web page remote query sends queries/moves with UIDs padded with a space instead of a NULL (dgate.cpp issue). Fixed in next release 1.4.15alpha.


    6) The remote query from the web page takes some shortcuts which means that queries/moves at the series level do not work for all PACS systems, as they will not return enough query information. Will work for conquest servers though.


    7 ) In some cases a rejected association gives "***multiplex: connection terminated" instead of useful information (in the past there was no message at all).


    8 ) The linux install script using mysql has -DPOSTGRES in the compile line instead of -DMYSQL. There may also be a problem defining SQLLEN as SDWORD in this case (not confirmed). This is the correct command line for this file: g++ -I/usr/local/mysql/include -I/usr/include/mysql -DUNIX -DNATIVE_ENDIAN=1 -DNOINTJPEG -DUSEMYSQL total.cxx -o dgate -lpthread -L/usr/local/mysql/lib -L/usr/lib/mysql -lmysqlclient. Further the scripts run fine on Ubuntu8.10 or other debian based linuxes with apache2 installed. Fixed in next release 1.4.15alpha.


    9) Bigendian transfer syntax is not working (never worked). May be fixed in 1.4.15alpha.


    10) 0008,0061 is not in the dicom dictionary. Fixed in next release 1.4.15alpha.


    11) DcmMove (move triggered by web server or delayed move by export converters) has no dicom dictionary; will fail when using Explicit syntaxes (these are not yet used). Fixed in next release 1.4.15alpha.


    12) Native mysql database name not saved correctly in dicom.ini: forgot to re-save dicom.ini after creating the database. Fixed in next release 1.4.15alpha.


    13) I still believe Conquest is correct because "The SOP class Extended Negotiation is not supported and ignored". This means that date and time range matches are done independently which is correct according to the standard. However, it also should mean that hierarchical queries are not supported while in fact they are. So there is a bug there.


    14) Crash because BindField(1,....) is never called in UpdateOrAddToTable in dbsql.cpp. Thanks Tego! Fixed in next release 1.4.15alpha.


    15) Install as multiple services fails since the port number "5678 " is not trimmed prior to conversion to integer. The same applies to installing a next server on the same machine. Fixed in next release 1.4.15alpha.


    16) A null character is be written from ServerCommand to HTML output if it has an odd length. Fixed in next release 1.4.15alpha.


    17) The dbaseIII driver and probably other database drivers as well do not work on linux64 bits: to fix replace "long" by "int" in struct dbase_header in odbci.hpp. Also replace *(long *) by *(DWORD *) in odbci.cpp. Fixed in next release 1.4.15alpha.


    18) The level and windows in kpacs viewer for jpeg coded data must be a bug in the kpacs viewer used to generate the OCX web viewer and kpacs viewer, which has not been updated for quite a while. Maybe you can ask if Andreas can shed some light on this issue. It must interpret a tag added by the DCMTK jpeg coder (did you update to 3.5.4 included in dgate 1.4.14?). I believe that ImageRescaleSlope and ImageRescaleIntercept are changed.


    19) the code calling the kpacs viewer does not really handle multi-frame objects very well.


    20) Suggest to make drop, merge, modpatid and modimage not call exportconverters. Fixed in next release 1.4.15alpha.


    21) It is useful to show the database type on startup, add DT_NONE to allow running the server without database during install. Fixed in next release 1.4.15alpha.


    22) I will by default disable the hostname (as c-move destination) feature for the upcoming release. It was already present in the original UCDavis code. Fixed in next release 1.4.15alpha. Use wildcard mapping in acrnema.map for the same effect if wanted.


    23) Trailing spaces on BrowseThroughDBF value (and others?) make that the flag is not recognized in GUI. Fixed in next release 1.4.15alpha.


    24) Add some code to recognize corrupt files BEFORE the dreaded out of memory error. Fixed in 1.4.15alpha. NOTE: this change is experimental.


    25) Crash with sqlite under linux, see: http://www.image-systems.biz/f…p?=33&t=1722&p=5444#p5444. Partly fixed sofar in next release 1.4.15alpha.


    26) Document and extend use of 7za to upack dicom files when dragging and dropping. Stop it from blinking command line windows. It should support: 7z, ZIP, GZIP, BZIP2 and TAR; ARJ, CAB, CHM, CPIO, DEB, DMG, HFS, ISO, LZH, LZMA, MSI, NSIS, RAR, RPM, UDF, WIM, XAR and Z. It now only supports gz files with one dicom object, if you put 7za.exe in the dicom server directory. Fixed in next release 1.4.15alpha.


    27) In some (unclear) circumstances, BrowseThroughDBF gives 'Access violation at address 004D9379 in module 'conquestdicom server.exe'. Read of address 00000'. This crash is in the MiTeC DBFTable (MDBF) in function GetData. One possible fix is to install the BDE! Note: reproduces when installing for sqlite, clearing worklist, and then going to browser. Crash stays until restarting server. Fixed in next release 1.4.15alpha.


    28) Allow printing landscape for NxN image printing from GUI. Fixed in 1.4.15alpha


    29) Add substring matching, e.g., ifmatch "%Vxxxx,yyyy", "*ct*; forward to CT. Fixed in 1.4.15alpha.


    30) Vista requires "run as administrator" if UAC is on: the registration of the OCX else fails with a message (which is harmless). Fixed in 1.4.15alpha.


    Marcel

  • Open feature requests:


    Web browser:
    Upload DICOM images from WEB page.
    Multiple viewers side by side.
    Accession number display.
    Some dicom object editing.


    Database entries:
    TransducerData


    Server:
    Character replace import converter
    Large dicom objects


    Marcel

  • I noticed in the dicom.ini for this version there are options for different viewers for the web..
    where could I get a copy of the "aiviewer" applet, I'm assuming its the viewer by Takahiro Katoji - but when I drop that applet.jar file in the dir, it doesn't work.
    maybe I'm not sticking it in the right place, but if you could point me in the right direction, or where to download the correct applet, I'd really appreciate it.


    Thanks,


    --Jason


  • Hi,


    you are quick! I did not want to release this yet. It is the AiViewer of Takahiro Katoji and off course you can try it out. The classes are to be in htdocs/dicomviewer100/dicomviewer. But it requires some changes to work. In particular: in DicomFile.Java find din.skip and replace it with the appropriate din.read; also in DicomFile.Java:


    After:


    Code
    catch(Exception e){ System.out.println("DicomFile.Exception: " + e.getMessage() ); }


    Add:


    Code
    if(dicomPart10){ Part10flag = dicomPart10 = false; System.out.println("here"); isLtlEndian = Part10Endian2; vrType = Part10vr2; }


    And in Viewer.Java:


    After


    Code
    dicURL = this.getParameter("dicURL", "none");


    Make the following change:



    Have fun, no warranties though!


    Marcel


    P.S. Just noticed their site is down. Try the one on this site: http://www.pacsone.net/download.htm. Let me know your progress.

  • Hi,


    here is my modified AiViewer by Takahiro Katoji (katoco@mars.elcom.nitech.ac.jp or katoco@tomo.ne.jp) that might work with Conquest 1.4.14. It is modified from dicomviewer100.zip downloaded 15 august 2007. See changes.txt for a desription of my changes.


    ftp://ftp-rt.nki.nl/outbox/Mar…server/dicomviewer101.zip


    To enable it, download and install the Java JRE, put the contents as is (including subdirecties) of the ZIP file in htdocs, and edit the dicom.ini in cgi-bin to say:


    [webdefaults]
    ....
    viewer = aiviewer


    Good luck.


    Marcel

  • This is not a big issue for me because I have no reason not to use nki but:


    I still have issues viewing non-NKI image format through the built-in kpacs viewer. Whenever I switch my server to jpeg lossless the images seem fairly normal in any non-kpacs viewer but the server side viewer and the kpacs web viewer (and the kpacs viewer launched from server browser) have issues with the level and contrast. In kpacs if I crank the W/C over in the multi-thousands the image shows up normal. It's odd. This happens if the images is ever jpeg (if i store it jpeg and serve it to the web viewer as n4, un, or j2 it has this issue). If I store it as nki compression, and serve it as j2 it has this problem. If I store it as nki compression and serve it as un, or nki I have no issues.


    Again it only seems to be the kpacs viewer and server-side viewer with issues. If I grab the image from url (one of the url's used for the viewer) and save as .dcm when it's stored as jpeg and served as j2 then I can open it in ezdicom and view it and it looks normal.


    Your kpacs web viewer is still my favorite one from what I've looked at and I really like getting the images from dgate since it presizes and compresses on the server. I just look forward to flip option(s).

  • Hi lhendricks,


    the flip option is in the 1.4.14 OCX (you may need to re-register it) and in the 1.4.14 server.


    The level and windows in kpacs viewer for jpeg coded data must be a bug in the kpacs viewer used to generate the OCX web viewer and kpacs viewer, which has not been updated for quite a while. Maybe you can ask if Andreas can shed some light on this issue. It must interpret a tag added by the DCMTK jpeg coder (did you update to 3.5.4 included in dgate 1.4.14?). I believe that ImageRescaleSlope and ImageRescaleIntercept are changed.


    The serverside viewer uses the same code that is used to generate bitmaps on other web pages, it uses a very simple auto level and window algorithm. You can set level and window in that viewer, though manually.


    Marcel

  • Quote from marcelvanherk

    Jason,


    see what happens in the java console.


    Marcel


    don't get a whole lot in the console just -


  • Jason, how are your images stored? I can only get the Dicomviewer to work when the images are received and stored uncompressed.


    With jpeg lossless storage I could not get images even served by dgate.exe as uncompressed (Not sure if it changes the file to an uncompressed format or just leaves it alone, though). I have mag0 mapped and going directly to the file did not work, either.


    I changed to uncompressed on the server and sent a test study and that opens in the dicomviewer without the EOF related Nullpointer error.


    **I still get EOFException but it shows the image anyway. If I try to do more than one slice, though, it fails. I think I finally just gave up on this viewer. I had these types of issues with every server I tried to use it on.



    Other problems I had with dicomviewer: the basic example references Dicom.dic which is not found in the zip file on his site. I could not use conquest's dicom.dic I had to go find and download the Dicom.dic from the Dicomviewer example. This was the only way I got it to work at all.

  • Hi Jason,


    I think it cannot find the VRs for rows and columns (0028,0010) and (0028,0011).


    Could these be in a sequence? Maybe try some other types of images like CT or MRI (not multiframe). To check that the correct image is delivered, "view source" in your browser and copy one slice url (until the *). If you pass that to your browser as address it should download the DICOM file (named dgate).


    If all else fails you will have to debug the java code. The "here" is a leftover of my efforts :D. You can start by setting debuglevel to a higher value and recompile.


    EDIT: the fail on the second slice occured for me as well but I had fixed in my release of the viewer: dicomviewer101.zip (above). You did use that one - the fix is a rest of Part10 flags after the exception handling. In any case, that viewer is buggy... I also added dicom.dic to the release zip tonight.


    I am playing around with ImageJ but I now believe it is not possible to get it to display a stack from the server without recoding some of its innards. Hope someone will pick that up from me.


    Marcel

  • OK -- Just since I was playing with this viewer I am testing this: I prefer the current OCX version over any web viewer I've seen so far. I took my test subject (which was sent and stored uncompressed) and served dicomviewer the images directly from the mag0 mapping and they work fine in dicomviewer.


    If I pass the images via http with dgate.exe as cgi I get the EOFException. When sent and stored uncompressed dgate.exe will serve a viewable image to dicomviewer but it still gives an EOFException and when you use any feature on the viewer IE hardlocks. If it was stored as j2, or served as j2 it gives EOFException and shows nothing.


    These are CT images. If it is sent and received by conquest uncompressed does the file get altered at all? It only seems like when the file passes through dgate to be compressed or via cgi that I get issues with dicomviewer. Although no other viewers have had issues with these files that I've seen. I think with a little better error handling the dicomviewer could be made to work without an issue at least on uncompressed format. Unfortunately his website is down and I don't know if he's ever updating it.

  • Hi,


    the dicomviewer does not support compression, so conquest must uncompress before sending. This does not modify the file.


    I have seen the EOFexception as well, but it did not give any problems with my test data.


    There are small differences how java reads from a cgi client and from a file. I noticed the .skip() calls did not work, but there may be other issues as well.... You can try if this is the problem by saving the file from the CGI link (cut and past from a viewer page source) and then serving it as file to dicomviewer - I noticed differences in behavior, while it is really the same data.


    In any case, someone should further debug dicomviewer101 for it to be useful. The authors probably won't.


    Marcel

  • Hi Marcel,


    i have got many problems with the new version 1.4.14. in the makelinux_mysql-run,


    and I use debian 4.0r3 (etch) and mysql-server 5.0.32-7etch6.
    (g++ 4.1.1-21)


    I'm very happy with the working test-installation under v. 1.4.13 in environment above.


    Unfortunately I get with 1.4.14 many errors like this:


    -


    These errors I can't resolve by changing (correcting) the programm code.


    Do you or anybody can help me in this situation?


    Many thanks
    dicomixrt

Participate now!

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