Conquest and html5+js DICOM viewer (DWV), dwv025 below

  • Hallo Yves,


    ok I tested it, so far it seems to work fine. One small issue I have, the progress bar is not displayed while loading the slices.


    I did a little bit testing with some testing DICOM studies I have in ConQuest:
    - CT modality seems to work ok
    - MR modality also fine
    - PET modality - there is some issue here the image is completely white
    - RT DOSE - sometimes not displayed, sometimes throwing index is out of range
    - RT Image - throws "cannot append a slice with different number of columns" (seems like number of images does not match)


    anyway very nice work, thanks for that. I am really looking forward to the future of this project. When I find some more time I will have a detailed look on the code and maybe I can help you to implement some additional functionality (especially for the ConQuest integration). What could be nice idea for the future is some kind of UI component faster scrolling between slices (I think scrollbar in image toolbar could work). Also DICOM study viewer which will load DICOM series in the study and provide user option to select one or more (multiple series at once) to display could be done.


    Actually I seen some nice videos of HTML 5 DICOM viewer here (good source for inspiration)
    http://www.youtube.com/user/pacs2u


    best


    Tomas

  • Hello People,
    i tried to open a sample .dcm file in the data Directory of the DWV files on my IIS-Server. The sample file came with DVW-Package. I tried it in the way:
    http://[URL[/viewer/?input=http://[URL]/viewer/data/cta2.dcm
    but i received an error.
    Can please anybody tell me how to open a file with the DWV Viewer ???
    Thank you very very much for an answer!!!


    Lodda

  • Hi,


    Can you please specify in more details what the error says. Because we can only guess, when we do not have more precise information.


    From what I see:
    - your url should look like this at the first place:
    http://[URL[/viewer/index.html?input=http://[URL]/viewer/data/cta2.dcm


    The other thing to check is if you have reading permission to the data folder, in other words, if you type:
    http://[URL]/viewer/data/cta2.dcm


    can you download the dcm file?


    Tomas

  • Marcel,


    I download the version 1.4.17e2, compile in my AMD Turion(tm) II Neo N40L Dual-Core Processor using ubuntu server and all works, but I try to use DWV viewer and no work, if I put in chrome http://192.168.254.50/cgi-bin/dgate?mode=top show conquest page and list patient, but if I put http://192.168.254.50/cgi-bin/dgate?mode=dwv show :


    Internal Server Error


    The server encountered an internal error or misconfiguration and was unable to complete your request.


    Please contact the server administrator at webmaster@localhost to inform them of the time this error occurred, and the actions you performed just before this error.


    More information about this error may be available in the server error log.


    Apache/2.4.7 (Ubuntu) Server at 192.168.254.50 Port 80




    my cfg files:


    # This file contains configuration information for the DICOM server
    # Example Linux version using SqLite
    # Copy this file to dicom.ini to use it




    [sscscp]
    MicroPACS = sscscp
    Edition = Personal


    # Network configuration: server name and TCP/IP port#
    MyACRNema = DCVD01
    TCPPort = 3991


    # Reference to other files: known dicom servers; database layout; sops
    ACRNemaMap = acrnema.map
    kFactorFile = dicom.sql
    SOPClassList = dgatesop.lst


    # Host for postgres or mysql only, name, username and password for database
    SQLHost = localhost
    SQLServer = ./data/dbase/conquest.db3
    Username = dontcare
    Password = dontcare
    PostGres = 0
    MySQL = 0
    SQLite = 1


    UseEscapeStringConstants = 0
    DoubleBackSlashToDB = 0
    #IndexDBF = 1
    #PackDBF = 0
    #LongQueryDBF = 1000


    # Configure database
    TruncateFieldNames = 10
    MaxFieldLength = 254
    MaxFileNameLength = 255
    FixPhilips = 0
    FixKodak = 0
    UIDPrefix = 99999.99999
    EnableReadAheadThread = 1
    PatientQuerySortOrder =
    StudyQuerySortOrder =
    SeriesQuerySortOrder =
    ImageQuerySortOrder =
    EnableComputedFields = 1
    TCPIPTimeOut = 300
    FailHoldOff = 60
    RetryDelay = 100
    QueueSize = 128
    WorkListMode = 0
    WorkListReturnsISO_IR_100 = 1
    DebugLevel = 0
    Prefetcher = 0
    LRUSort =
    AllowTruncate =
    DecompressNon16BitsJpeg = 1
    UseBuiltInJPEG = 1
    IgnoreOutOfMemoryErrors = 0
    PadAEWithZeros = 0
    FileNameSyntax = 3


    # Configuration of compression for incoming images and archival
    DroppedFileCompression = un
    IncomingCompression = un
    ArchiveCompression = as


    # Names of the database tables
    PatientTableName = DICOMPatients
    StudyTableName = DICOMStudies
    SeriesTableName = DICOMSeries
    ImageTableName = DICOMImages
    DMarkTableName = DICOMAccessUpdates
    RegisteredMOPDeviceTable = RegisteredMOPIDs
    UIDToMOPIDTable = UIDToMOPID
    UIDToCDRIDTable = UIDToCDRID


    # Banner and host for debug information
    PACSName = CONQUESTSRV1
    OperatorConsole = 127.0.0.1


    # Configuration of disk(s) to store images
    MAGDeviceThreshhold = 0
    MAGDevices = 1
    MAGDevice0 = ./data/



    CFG of apache2.


    #
    # This file contains configuration information for the conquest cgi web server;
    # it must be in the same directory as the dgate.exe in the web server script directory.
    # For wamp: dgate.exe runs if it is put in C:\wamp\Apache2\cgi-bin
    # The server home page is then "http://127.0.0.1/cgi-bin/dgate.exe?mode=top"
    # The cgi interface has been tested with wamp5, dgate4.12d, and ie6sp1
    #
    # modified 20070213: default to n4, note about ocx only required on client
    # modified 20080902: webreadonly ON; graphics and viewer configs; sample scripted web pages
    # modified 20101121: Added wadoservers section
    #


    [sscscp]
    MicroPACS = sscscp



    # database layout (copy dicom.sql to the web server script directory or point to the one in your dicom server directory)


    kFactorFile = .\dicom.sql
    TruncateFieldNames = 10



    # default IP address and port of DICOM server (may be non-local, web pages empty if wrong)
    # use version 1.4.14 up, if an older version some feautues will not work


    WebServerFor = 192.168.254.50
    TCPPort = 3991



    # path to script engine: ocx will not download images if wrong - shows as black square with controls
    # for wamp: dgate.exe runs if it is put in C:\wamp\Apache2\cgi-bin


    WebScriptAddress = http://192.168.254.50/cgi-bin/dgate



    # web or local location of ActiveFormProj1.ocx for download (include trailing / or \)
    # the activeX control will not download if wrong or security too high - shows as white square with red x
    # note: it only needs to be registered by the client, not the server!
    # for wamp: the ocx canNOT be in C:\wamp\Apache2\cgi-bin, I put it in c:\wamp\www (above cgi-bin)
    # - the default value is derived from WebScriptAddress


    WebCodeBase = http://192.168.254.50/



    # if set to 1, the web user cannot edit databases and (in future) other things
    #WebReadonly = 1
    WebReadonly = 0
    WebPush = 1


    # this is an optional virtual directory used to http: all images from mag0
    # this entry is experimental and unused except for viewer=seriesviewer2
    # in this mode (only) ocx will not download images if wrong - shows as black square with
    # controls - the default value is derived from WebScriptAddress


    WebMAG0Address = http://192.168.254.50/mag0


    # excerpt from C:\wamp\Apache2\conf\httpd.conf required for WebMAG0Address (un-# there)
    # or use the wamp traybar menu to create the alias


    #Alias /mag0/ "c:/dicomserver/data/"
    #
    #<Directory "c:/dicomserver/data">
    # Options Indexes MultiViews
    # AllowOverride None
    # Order allow,deny
    # Allow from all
    #</Directory>



    # these settings control size of slice and series viewers, max size of transmitted dicom images
    # (0=original), compression for images sent to the activex (may be un,n1..4,j1,j2), the size of
    # the icons in the image list, the image type used for icons and slice display, and the dgate
    # mode containing the viewer (may be seriesviewer, seriesviewer2, noviewer, serversideviewer,
    # or aiviewer - java code of the latter not included with 1.4.14).
    # note: all items require at least one space left and right of the '=' !



    [webdefaults]
    size = 560
    dsize = 0
    compress = un
    iconsize = 48
    graphic = gif
    #viewer = dwv
    # serversideviewer
    viewer = serversideviewer
    studyviewer = dwv
    #studyweasis
    # enter address (up to not including the ?) of the WADO server for each DICOM AE listed
    # the sample (for AE TESTWADOSRV) comes from the DICOM standard and is not valid
    # the default is the local conquest server (which could use virtualservers as WADO bridge)
    # These WADO entries are used in 'list .... on ....'


    [wadoservers]
    TESTWADOSRV = http://www.hospital-stmarco/radiology/wado.php


    # Here are scripted series viewers: ImageJA, dwv, flexviewer (=aiviewer), weasis
    # And one scripted study viewer: studyweasis


    [imagejaviewer]
    source = viewers/imagejaviewer.cq


    [dwv]
    source = viewers/dwv.lua


    [flexviewer]
    source = viewers/flexviewer.lua


    [weasis]
    source = viewers/LaunchWeasis.cq
    header = Content-Type: application/x-java-jnlp-file\


    # The scripted study viewer: studyweasis


    [studyweasis]
    source = viewers/LaunchWeasisStudy.cq
    header = Content-Type: application/x-java-jnlp-file\


    # These entries enable the OpenClinica - Conquest interface


    # default
    [DefaultPage]
    source = *.lua


    [OpenClinica]


    Source=(local)
    TargetServer=user@server.domain:
    password=xxxxx


    # Below here are all samples with no clear functionality


    # Here are some sample web pages to show how scripting works

    [sample]
    variable = sample 1
    source = samples/sample.cq


    # this creates web page http://xxxxx/cgi-bin/dgate.exe?mode=sample2
    # This sample posts a file
    # Note: in the header parameter newline is written as \


    [sample2]
    variable = sample 2
    header= Content-type: text/html\Cache-Control: no-cache\
    line0 = <HEAD><TITLE>Conquest DICOM server - %variable%</TITLE></HEAD>
    line1 = <BODY BGCOLOR='CFDFCF'>
    line2 = <H2>Conquest DICOM server - %query_string%</H2>
    line3 = <FORM ACTION="dgate.exe" METHOD=POST ENCTYPE="multipart/form-data">
    line4 = <INPUT NAME=mode TYPE=HIDDEN VALUE=soaprequest>
    line5 = <INPUT NAME=port TYPE=HIDDEN VALUE=5678>
    line6 = <INPUT NAME=address TYPE=HIDDEN VALUE=127.0.0.1>
    line7 = Upload file to enter into server (dcm/v2/HL7/zip/7z/gz/tar): <INPUT NAME=filetoupload SIZE=40 TYPE=file VALUE=>
    line8 = <INPUT TYPE=SUBMIT VALUE=Go>
    line9 = </FORM>
    line10 = </BODY>


    # this creates a web page scripted in lua http://xxxxx/cgi-bin/dgate.exe?mode=sample3
    #[sample3]
    #source = samples/sample3.lua


    # these entries create an experimental SOAP interface scripted in lua


    [wsdl]
    source = soap/wsdl.xml
    header = Content-type: text/xml\


    [soaprequest]
    source = soap/soaprequest.lua


    # these entries create an experimental JSON interface scripted in lua


    [sample4]
    source = json/json_sample.html
    header = Content-type: text/html\Cache-Control: no-cache\


    [jsonrequest]
    source = json/jsonrequest.lua


    # these entries create a simple eCRF interface
    # ..?mode=studyfinder&dest=CONQUESTSRV1&key=afc0501:baseline&query==2040XXXX


    # creates SQL database and enters information
    [markstudy]
    source = ecrf/markstudyseries.lua
    caption= Select for submission


    [markseries]
    source = ecrf/markstudyseries.lua
    caption= Select for submission


    # show SQL database and selects processing
    [shoppingcart]
    source = ecrf/shoppingcart.lua
    caption= Process selected data


    # process information
    [ecrfprocess]
    source = ecrf/ecrfprocess.lua


    # new query form
    [queryforecrf]
    source = ecrf/queryforecrf.lua


    ##################



    Do you have any idea where is my mistake? I'm a few days testing various options and really did not think yet .... figured it was the ip and I've tried in many ways, localhost or direct ip ...



    thanks for help,

  • Never worked, this is a new installation just to try to make the DWV work, this will be the new server based on debian, more can I format and switch to hundreds again, just changed the door so as not to conflict with each other in the e-micro terminal film, I want to make working not to use more windows here, so I tried all viewers, versions with java no longer work because they need signature, so I thought the initiative in html5 an optimal option.


    If you have a working example in linux with sqlite or any other format and can pass me already helps me a lot.


    I tried using 127.0.0.1 and also the name of the machine, no config URL worked for me.


    Thanks for help.

  • Hi,


    you need to configure the viewer in cgi-bin/dicom.ini. When navigating through the scans it should then open on the links. The default is serversideviewer. However, I have not tried DWV for a while.


    Marcel

  • Accurate, using the serversideviewer works viewing, just can not use the DWV, always gives 500 error, I changed all the settings that I knew and I could not really, that's why I decided to ask you for help :)


    if I put in chrome URL http://192.168.254.50/dwv/ show dwv page, I download and put in /var/www/html/dwv/ as explained in forum...


    I test dwv in chrome http://192.168.254.50/cgi-bin/dgate?mode=dwv
    I'm doing something wrong?


    more one detail, look this:


    [272617.551037] dgate[18480]: segfault at 4 ip 00000000004d456c sp 00007fff6c78aa60 error 4 in dgate[400000+1ff000]
    [273406.285137] dgate[18734]: segfault at 4 ip 00000000004d456c sp 00007fff38349020 error 4 in dgate[400000+1ff000]
    [274974.829277] dgate[19995]: segfault at 4 ip 00000000004d456c sp 00007fff208bb800 error 4 in dgate[400000+1ff000]
    [275119.542266] dgate[20111]: segfault at 4 ip 00000000004d456c sp 00007fffa23ec050 error 4 in dgate[400000+1ff000]
    [275653.671784] dgate[20463]: segfault at 4 ip 00000000004d456c sp 00007fff18bcc390 error 4 in dgate[400000+1ff000]
    [275822.704188] dgate[20527]: segfault at 4 ip 00000000004d456c sp 00007fff409fd300 error 4 in dgate[400000+1ff000]
    [275853.737840] dgate[20544]: segfault at 4 ip 00000000004d456c sp 00007fffdf898af0 error 4 in dgate[400000+1ff000]
    [277361.993733] dgate[21145]: segfault at 4 ip 00000000004d456c sp 00007fffa3c52b70 error 4 in dgate[400000+1ff000]
    [277576.700087] dgate[21376]: segfault at 4 ip 00000000004d456c sp 00007fff3a9bbc90 error 4 in dgate[400000+1ff000]
    [277587.163642] dgate[21388]: segfault at 4 ip 00000000004d456c sp 00007fffaf9f8aa0 error 4 in dgate[400000+1ff000]
    [277664.189487] dgate[21410]: segfault at 4 ip 00000000004d456c sp 00007fffdb0d8590 error 4 in dgate[400000+1ff000]



    if I click in reload using in chrome http://192.168.254.50/cgi-bin/dgate?mode=dwv , add more one line in dmesg :(


    Thanks for help.

  • Hi,


    you really need to open dwv from the same place as serversideviewer. The URL requires specification of the UIDs to watch. Without UIDs it will try to open everything....


    You need to refresh the series listing after changing dicom.ini to update the links to dwv.


    Marcel

  • Hi !


    Thanks for your work! In one of your posts Marsel have attached an excellent and very detailed instructions on connecting Weasis to the ConQuest. Thanks to her, I was able to quickly and easily organize web-access to my ConQuest server. Maybe you have an equally detailed instructions on proper connection and adjustment of DWV - viewer? Information in the file dwv.lua not very much :).


    Thank's


    Alex

  • Hi Marcel ! Many thanks for the quick response! ...Oh sure! I downloaded dwv-0.5.1. If I understand correctly, all files and folders from the archive should be copied to the "www" directory in Apachi2? And what exactly changes in dicom.ini should I do?


    viewer = dwv


    [Dwv]


    source = viewers / dwv.lua


    It's enough ?


    Thank you


    Alex

  • Hi guys -


    the more I learn and read about conquest - the more awesome it is!!!


    Any news on the topic with DWV integration. Can DWV already be setup as a default viewer, I'd like to add this functionality to our app and somehow bridge the data over CGI...
    For server I am using IIS8 with cgi.


    thank you guys!

  • Hi,


    Let me try to play a bit with the new latest dwv, or you can try it yourself. If you have a sample web site using DWV you just create a lua script that generates exactly that page and then you fill in the UIDs using the sample code in any of the existing viewers.


    Marcel

  • Hi,


    getting it to work was a bit of a puzzle. Here is a new dwv016.lua:


    Note: dwv-0.16.0.min.js is not part of the source code, downloaded separately


    Usage:


    In the dicom.ini of your web server, create the dwv016 viewer:
    [dwv016]
    source = viewers/dwv016.lua


    And set it as the default viewer:
    [webdefaults]
    viewer = dwv016


    Then copy the DWV 0.16.0 distribution files (e.g. with the src, ext and viewers folders) into a 'dwv016' folder in the web folder of your web server.


    dwv016.lua


    Note: it is still missing a few resources because the path is not set correctly. E.g. it cannot find http://127.0.0.1/resources/touch_drag.png


    Good luck with it.

  • Hi
    I wrote the Weasis-Conquest beginners guide and have been wanting to do same for dwv, but I could never get it working. So when Marcel asked me to rewrite the guide for the upcoming release of Conquest - and I saw he had kindly written new instructions for dwv I thought Id have another go


    And lo and behold I tried everything double checked etc and still couldn't get it to work


    But fortunately I was trying on another machine and whilst downloading the required dwv-0.16.0.min.js file from Yves site I decided to grab a copy of dwv016 from there rather than the normal download page


    And that it was it - this version of dwv016 works fine as described by Marcel and is NOT the same as the version on the normal website


    So go to https://github.com/ivmartel/dwv/releases and down load dwv-0.16.0.min.js and dwv.0.16.0.zip and follow the instructions above.


    I'm not entirely sure where the dwv-0.16.0.min.js file has to go - I suspect the dwv folder - I just put a copy everywhere!!


    Also when unzipping the dwv0.16.0.zip be careful that you extract all the files into your dwv016\ folder and not a dwv016\dwv016\


    Hope it all works


    Cheers Richard

Participate now!

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