Conquest 1.5.0d released

  • Hi Conquest users and friends,


    This is the 1.5.0d release. It fixes some bugs (CGET) and improves the web interface functionality, using Apache or the built-in webserver.


    You can download the release here:


    http://natura-ingenium.nl/dicomserver/dicomserver150d.zip


    This is the corresponding Github commit for 1.5.0c:


    https://github.com/marcelvanherk/Conquest-DICOM-Server/commit/7b8a36d2f836ec2f4bbb0704c463b706405331c2


    As usual you can update by extracting dgate.exe or dgate64.exe and conquestdicomserver.exe, but also quite a few other files have changed - mainly in the web interface, lua code and installer. The web interface no longer required cgi, but uses PhP instead.


    The latest source code (1.5.0d+) can be browsed on: https://github.com/marcelvanherk/Conquest-DICOM-Server


    Please report bugs and successes!


    Marcel

  • This is the buglist, starting with leftover bugs from earlier versions, per category:


    GUI bugs

    G1) browse tab does not work if user of server service and server gui are differerent.


    Web interface bugs

    DICOM Communication bugs

    C1) Multiple instance matching incomplete


    Installer bugs or limitations (low priority)

    I1) last line of dicom.ini does not read if no CR - futured

    I2) web installer should copy OHIF (in github) and luiz html folders and compile servertask

    I3) Web installer on windows does not offer a 'regen' by itself

    I4) Fedora uses /var/www, and nohup has an issue. Therefore provide specific web install scripts for other linux flavours, e.g. fedora.sh. Fedora also requires "sudo setenforce Permissive" for the web server and install to work; also acrnema.map must be copied locally to the cgi-bin/newweb folder rather than pointing to the server folder.

    I5) Oracle linux issues see below; add mysql/mariadb option

    I6) Running ConquestDicomserver from wine with dgate as linux service issues, replace c: temp filenames with z:/


    Unconfirmed bugs:

    U1) I was also expecting DicomObject:Read('stu\ser\sop') to work with virtual servers but I tested it again and sadly no luck there

    U2) Show header in wadoviewer (wado text) open sometimes as dgate.exe downloads

    U3) App/newweb may add HTML header to zip files if using userlogin (not confirmed)


    Below ---- newly found bugs for 1.5.0c will be collected (also see above)

    N1) Too long queries do not give a proper error message in GUI

    N2) Dicom printing from script or gui fails for compressed images

    N3) print text from lua should fail gracefully for too long output

    N4) Internal networking is unreliable on Centos7

    N5) data processed though incoming has CallingAE of 16 spaces in ImportConverter

    N6) progressbar in GUI fails to close on very short operations from browser

    N7) export:xx,,,,binary does not work

    N8) Change or modify should not allow empty patientIDs

    N9) Update license to Apache

    N10) The GUI ignores ACRNemaMap in dicom.ini

    N11) The supplied postgress DLL uses a deprecated login method can use libcrypto-3-x64.dll; libiconv-2.dll; libintl-9.dll; libpq(64).dll; libssl-3-x64.dll; libwinpthread-1.dll from recent release

    N12) I think autodelete only works when there is a single MAG device (-ff option).

    ----- 1.5.0d release -----

    N13) Weasis issue: \r\n missing in dicomweb multipart message before boundary (fix on Git)

    N14) Weasis issue: Ladle server responds with 200/OK should be 200 OK (fix on Git)

    N15) Ladle started in wrong folder under Linux (fix on Git)

    N16) linux/webviewer script should not stop ladle (fix on Git)

    N17) Provide sample links for Weasis in newweb/dicom.ini (fix on Git)

    N18) Update Linux prerequisites for PhP8.1 (fix on Git)

    N19) dicomread example overview.lua crashes server on Linux with segmentation fault; must pass SOPInstanceUID (fix on Git)

    N20) the filenames in overview.lua are only suitable for windows

    N21) print(servercommand('display_status:')) crashes on Linux if dgate runs as dgate -v (rights problem, fix on Git)

    N22) update outdated or unused viewer start files (e.g. weasis)

    N23) remove cgi-bin web interface, only support php

    N24) support minimal download eg without sources

    N25) deleting e.g. a RTPLAN from a study does not update StudyModality. Will not fix.

    N26) web installer must be made to run on PhP, as cgi is no longer mandated (fix on Git)

    N27) e.g. ImportConverter0 = process with C:\Windows\System32\ping.exe does not remove temporary file (fix on Git)

    N28) provide script to setup linux prerequisites, taking php version into account (fix on Git)

    N29) Crash Postgres on server startup (fix on Git)

    N30) conquest.service should no longer set StandardOutput=syslog and StandardError=syslog (fix on Git)

    N31) Update mariadb doc in linuxmanual; sudo apt install libmariadb-dev; grant all privileges on *.* to 'conquest';set password for conquest = password('conquest')

    N32) apt install mariadb-server iso mariadb (fix on Git)

    N33) The clonedb: test command requires VirtualServerFor0 to be defined

    N34) installer.lua fails if /usr/sbin is not on the path (apache2 a2query) (Fix on Git)

    N35) installer.lua does not work for dbaseiii and null

    N36) anonymizer does not process stage with # (MD5 non-reversible mapping)

    N37) download location seems broken


    Please tell me of any bugs you find.

  • If you want to install a reduced version of server 1.5.0d on Windows this is a list files of that are needed with full functionality:


  • If you want to try Conquest on Linux, this is an absolute minimal automatic install script:


    Code
    sudo apt install lua5.1
    wget https://raw.githubusercontent.com/marcelvanherk/Conquest-DICOM-Server/master/install/installer.lua
    lua5.1 installer.lua


    It will then ask to install prerequisites. If you allow that, then after it completes you must again run:


    Code
    lua5.1 installer.lua


    It will ask for an AE title (server folder name); then download all; compile it; configure it and install it.

    Afterwards the DICOM server and its web server will run.


    Note that the script installs or assumes Apache web server.

    This is what it looks like, with user input in bold:


    >lua5.1 installer.lua

    This will install Conquest dicom server and its prerequisites - continue? y/n: y

    Checking prerequisites....

    [OK] Operating system: GNU/Linux

    [OK] GNU Make 4.3

    [OK] g++ (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0

    [OK] gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0

    [OK] 7-Zip (a) [64] 16.02 : Copyright (c) 1999-2016 Igor Pavlov : 2016-05-21

    [OK] UnZip 6.00 of 20 April 2009, by Debian. Original by Info-ZIP.

    [OK] git version 2.34.1

    [OK] Lua 5.1.5 Copyright (C) 1994-2012 Lua.org, PUC-Rio

    [OK] Apache Server version: Apache/2.4.52 (Ubuntu)

    [OK] Apache PHP php8.1 (enabled by maintainer script)

    [OK] lua-socket

    Server not found - download Conquest DICOM server? y/n: y

    Give server AE (also folder name) (CONQUESTSRV1): CONQUESTSRV3

    Cloning into 'CONQUESTSRV3'...

    remote: Enumerating objects: 4051, done.

    remote: Counting objects: 100% (994/994), done.

    remote: Compressing objects: 100% (384/384), done.

    remote: Total 4051 (delta 637), reused 914 (delta 573), pack-reused 3057

    Receiving objects: 100% (4051/4051), 188.68 MiB | 8.09 MiB/s, done.

    Resolving deltas: 100% (2308/2308), done.

    [OK] Server folder: /home/marcel/test/CONQUESTSRV3

    Compile the server (this takes a while) y/n: y

    [OK] Compiled jpeg library

    [OK] Compiled openjpeg library (jpeg2000)

    [OK] Compiled charls library (jpegLS)

    [OK] Compiled sqlite3 library (database)

    [OK] Compiled dgate application (server core)

    [OK] compiled servertask (for web api)

    Give sudo password for installation operations: xxxxxx

    [OK] server compiled

    Failed to stop CONQUESTSRV3.service: Unit CONQUESTSRV3.service not loaded.

    Give server port (5678): 5680

    Configure the server? y/n: y

    [OK] server configured

    [OK] web server already configured, delete /var/www/html/app and /api to reconfigure

    Regen the database, this can take a long time if there is loads of data? y/n: y

    Dropping Existing tables (if-any)

    Worklist is empty

    Dropping worklist

    Dropping other tables

    WorkList Database

    Patient Database

    Study Database

    Series Database

    Image Database

    Regen Database

    Step 1: Re-intialize SQL Tables

    ***SQLITEExec error: no such table: DICOMWorkList

    ***SQLITEExec error: no such table: DICOMWorkList

    ***Failed SQLITEExec : DROP TABLE DICOMWorkList

    ***SQLITEExec error: no such table: DICOMPatients

    ***Failed SQLITEExec : DROP TABLE DICOMPatients

    ***SQLITEExec error: no such table: DICOMStudies

    ***Failed SQLITEExec : DROP TABLE DICOMStudies

    ***SQLITEExec error: no such table: DICOMSeries

    ***Failed SQLITEExec : DROP TABLE DICOMSeries

    ***SQLITEExec error: no such table: DICOMImages

    ***Failed SQLITEExec : DROP TABLE DICOMImages

    ***SQLITEExec error: no such table: UIDMODS

    ***Failed SQLITEExec : DROP TABLE UIDMODS

    Step 2: Load / Add DICOM Object files

    Regen Device 'MAG0'

    [Regen] /home/marcel/test/CONQUESTSRV3/data/0009703828/1.3.46.670589.5.2.10.2156913941.892665339.860724_0001_003000_14579035620001.dcm -SUCCESS

    [Regen] /home/marcel/test/CONQUESTSRV3/data/0009703828/1.3.46.670589.5.2.10.2156913941.892665339.860724_0001_002000_14579035620000.dcm -SUCCESS

    Regeneration Complete


    Install and start the server? y/n: y

    Created symlink /etc/systemd/system/multi-user.target.wants/CONQUESTSRV3.service → /etc/systemd/system/CONQUESTSRV3.service.

    ● CONQUESTSRV3.service - conquest dicom server service

    Loaded: loaded (/etc/systemd/system/CONQUESTSRV3.service; enabled; vendor preset: enabled)

    Active: active (running) since Sat 2023-09-09 23:47:42 BST; 303ms ago

    Main PID: 12723 (dgate)

    Tasks: 1 (limit: 9519)

    Memory: 5.0M

    CGroup: /system.slice/CONQUESTSRV3.service

    └─12723 /home/marcel/test/CONQUESTSRV3/dgate -w/home/marcel/test/CONQUESTSRV3 -v


    Sep 09 23:47:42 Paradigit systemd[1]: Started conquest dicom server service.

    Sep 09 23:47:42 Paradigit conquest-server[12723]: DGATE (1.5.0d, build Sat Sep 9 23:47:15 2023, bits 64) is running as>

    Sep 09 23:47:42 Paradigit conquest-server[12723]: Database type: built-in SQLite driver

    q

    Enter web interface? y/n:y

  • Code
    Good morning marcelvanherk, thank you for what you do.
    A question about this release...
    Is it possible to enable image retrieval without declaring the dicom hosts on the acrnema.map?
    I would like to enable retrive without any restrictions, is it possible to do this by placing * on the acrnema.map?
    Thank you
  • Hi,


    acrnema.map is not about restrictions (that is dgatesop.lst), but only to lookup the IP address and port of an AE.


    Solution 1: (for C-MOVE) if you control the AE of the host, you can use e.g. the V* in acrnema.map:


    Give your host e.g. AE = V127.0.0.1 then the line:


    V* * 1234 un


    Defines V127.0.0.1 as:


    V127.0.0.1 127.0.0.1 1234 un


    Solution 2: use a C-GET request.


    Solution 3: use DICOMWeb access.


    Solution 4: (for C-MOVE) use a script to add a client to acrnema.map as needed.


    Marcel

  • Code
    I'm sorry I did not understand.
    Let me start by saying that I have to use C-Move, how should I configure dgatesop.lst and acrnema.map if for example I have to enable cmove for the entire 192.168.1.x class? The goal is that all viewers of the 192.168.1.x class can retrieve without each of them being declared on the acrnema.map
  • This is possible as explained in the above reply in solution 1 and 4.


    Can you define the AE of the viewers to encode the .x in your example? E.g. AE=viewer.1 for 192.168.1.1?


    Then define in acrnema.map:


    viewer.* 192.168.1.* 1234 un


    to do the trick


    Marcel

  • Store images into database speed test in 2023 (old hardware with modern SSD, Debian 12, database on same hardware)

    Database test without transferring images.


    NULL driver: 4200 records / s

    sqlite: 2035 records / s

    postgres: 202 records / s

    postgres sync off: 600 records / s

    mariadb (innodb): 225 records / s

    mariadb (myisam): 680 records / s

    dbaseiii: 550 records / s

    Marcel van Herk is developer of the Conquest DICOM server together with Lambert Zijp.

    Edited once, last by marcelvanherk: Added myisam ().

Participate now!

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