Posts by toskrip

    Hi,


    I am using the incoming folder of Conquest to automatically import new DICOM data which are coming from external application. From time to time it happened that some files fail to import (they are corrupted, no compliant and need to be fixed manually). Right now such files are not imported and deleted from incoming folder. I would like to keep them in external folder so I can try to fix them manually and import them afterwards.


    I was just wondering it there is a possibility to configure Conquest to archive non imported files for later analysis?


    best


    Tomas

    Hi,


    Actually I thought that the fact that it is not returning 0 after quitting is not a cause but a symptom that something went wrong during closing of the program.


    Currently it is not a big issue, because operating system will clean up and after cca 1 minute and it is possible to start conquest again. However it prevents to fully use conquest-pacs.sh because the restart option will never work properly (unless we introduce quite a log sleep to give OS time to clean up).


    I just thought that we should document this bug (I have it reproduced on multiple linux environments).


    best


    Tomas

    Hi Marcel,


    we have currently found one bug. In a linux environment when we want to use provided conquest-pacs.sh script using the start option is just fine. However problem starts when you want to stop it and start it again (or restart). It somehow does not release resources because we are getting:


    Failed to listen() - bind error


    And this is not just a problem with the script but with conquest termination itself. When I run it directly with dgate -v & and then try to quit it dgate --quit:


    Try to start again will give me the same Failed to listen() error. It seems like during quitting something went wrong and it does not return standard exit code 0.


    any ideas?


    best Tomas

    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

    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

    Hi,


    I will try it hopefully next week, I only loaded the the trunk from your website with multi slice example. I see that it is loading at once but I just see one slice. I thought that I load them and than e.g. the thumbnails of will be displayed in a special panel. Is it there or do you plan this type of functionality?


    best


    Tomas

    Small bugfix and more optional searching parameters via URL query strings.



    Tomas

    Hallo,


    I have a need to create web application where one of the feature should allow to access DICOM study and series data from Conquest. For this purpose I wrote a small lua script which reports the studies and series hierarchy of specified patient. I just want to share the script, maybe somebody else also find it useful.



    best


    Tomas

    Ok, now it is querying the values, but still have a problem to use them:


    Code
    images[k]["9999,0800"]


    seems to return null,


    actually it would be nice to know exactly how the userstructure returned from dicomquery fucntion looks like. I am new to lua and this is not apparent to me.


    thanks a lot


    Tomas

    Hi marcel


    I checked the samples, but I was unable to find there how it is possible to query the private items 0x9999, 0x0800 for the filename etc. so I can copy them afterwards. I would be grateful if you can elaborate this process in more details.


    I also found one problem script('rm ' .. directoryname) does not work for the directory... is there another command how I can delete created directory to clean up.


    tnx


    this is the script so far...




    best
    Tomas

    Hi Marcel,


    I would like to have one functionality, but I am not sure if it is supported so I rather ask you directly. I would like to provide a users a function where they can select patients which they are interested in and ConQuest will create a zip from the dicom files for selected patients that way that the hierarchy of files keeps the same as it is on the server. Basically the zip will have bunch of subfolders named with patient ids and in each subfolder there will the dicom data.


    Is there a possibility to do this in a lua script? Can you give me a hint what API I need to call to accomplish this. My idea is to have a script which will read patients ids from querystring and that it locates the data on ConQuest, zip them a provide to download.


    I would be grateful if you could point me to the good direction.


    best


    Tomas

    Hi all,


    Just a small update. I was able to integrate conquest DICOM zip download functionality directly into OpenClinica CRF from. It is possible to accomplish this, the same way as the viewer integration. Basically I have a new function in javascript file which is included into CRF which is looking like following:


    Code
    function downloadStudyData(divDICOMPatientID, divDICOMStudyID) { var patientIdValue = getFieldInput(divDICOMPatientID); var studyIdValue = getFieldInput(divDICOMStudyID); if (patientIdValue != "" && studyIdValue != "") { var url = "myproxyportal/pacs/dicomStudyDownload.faces?" + "&study=" + patientIdValue + ":" + studyIdValue; window.open(url, "_blank", "width=1100,height=600,scrollbars=1"); } else { alert("Warning: patientId and studyId must be specified in order to locate DICOM data on PACS server.")


    I redirect to my own java based web app, which is working as a proxy to ConQuest web server. (I dont want to expose ConQuest web directly). But for people who does not need this abstraction they can directly invoke link.lua mode of conqest web server (as it is already described in this thread). In that case the following a snapshot of code which can be added to link.lua to generate a download links:


    Code
    print([[<a href=# onclick="javascript:PopupCenter(
    ']]..script_name..[[?mode=zipstudy&study=]]..
    series[i].PatientID..':'..series[i].StudyInstanceUID..'&dum=.zip'..
    [[', 'Download', 400, 500)">[download DICOM study]</a>]])
    print([[<a href=# onclick="javascript:PopupCenter(
    ']]..script_name..[[?mode=zipseries&series=]]..
    series[i].PatientID..':'..series[i].SeriesInstanceUID..'&dum=.zip'..
    [[', 'Download', 400, 500)">[download DICOM series]</a>]])


    best


    Tomas

    Hi,


    My colleague actually located the source of the problem. It is in the DumpVR(VR *vr, FILE *f, int iDepth) function in dgate.cpp file.


    There is a declaration for array of chars for dicom object printing and the size of char array is only 256. This is not sufficient especially for RTStruct which can have contour points included and and also RTPlan wiith LeafPositionBoundaries element. After increasing the array size to 2048 it is working again. Maybe it would be wise to have some sort of string size checking on this place.


    best


    Tomas

    Hi,


    My feeling is that the bug is still related to the network communication layer. We tested the 1.4.17 on older linux with 2.* kernel and there it works fine. So the bug is showing up only on newer linux versions with kernel version 3.*


    Tomas

    Hi Marcel,


    I have found one bug in the 1.4.17 release which is, according to my testing, also present in the alpha and beta versions. I have a DICOM data with CT, RTDOSE, RTPLAN and RTSTRUCT modalities.


    When I try to view headers for RTSTRUCT and RTPLAN via the web interface I am getting segmentation fault error.
    Headers in CT and RTDOSE modalities are shown properly.


    Any idea what can cause this problem? Can somebody reproduce it?
    Running environment: 64bit Linux (Debian Wheezy), Postgres database


    best


    Tomas

    Hi,


    I do not see any real danger in it. This setup is kind of standard in cross site scripting. However if you can make it configurable, than it will be definitely safe. Even more you can let the user specify the origin server which their trust. And the cross site scripting will be available only for this server.


    trustServer = http://locahost or xxxx


    Access-Control-Allow-Origin: trustServer


    Tomas

    Hi Marcel,


    The WADO request which is generated is correct. I think the problem is how the HTTP response of WADO request link is formulated. In the header of the HTTP response there should be the following information and CORS should work after that:


    Access-Control-Allow-Origin: *


    Marcel, is it possible to change WADO response to include this information in the header?


    best


    Tomas