Posts by SM1312

    Hi marcelvanherk,

    Good afternoon. I am changing my existing Conquest installations to connect with MySQL Community Server 8.4.4.

    In MySQL 8.0, mysql_native_password is being disabled and from 9.0, its being removed completely in favour of caching_sha2_password.


    This being the case, Conquest can only connect with MySQL Server if its mysql_native_password

    How to make it work with caching_sha2_password?

    Any help would be appreciated. Thanks

    marcelvanherk


    In webserver/htdocs/api.dicom/posters.lua, there is already a function poststow(path) which takes filepath.
    I would like to add another similar function but instead of a filepath, it would take the binary dicom file content as argument.

    I could try this myself but I am not sure how to structure those remotecodes for such a function?
    If its not a bother, it would be very helpful if you could add such a function to the webserver.

    Thank you.

    Hi marcelvanherk


    Conquest Version: 1.5.0d


    When querying metadata, there is a minor incompatibility if the result is converted to JSON.

    The reason being the Value Representation for DS allows optional + at the start of either a fixed point number or a floating point number.

    Most of the programming languages don't care about the + at the front of a number but JSON treats it invalid.

    If metadata result has to be converted into a valid JSON, its quite tedious in JS or similar languages. But its quite simple in the C++ source code.

    I believe the issue can be rectified in the source Conquest-DICOM-Server/src/dgate/src/dgate.cpp

    by just adding this if (*q == '+') q++; after Line 7847 (Please verify this!!!)


    Would it possible to accommodate this change in a new minor release for [tt]dgate.exe[tt]?
    Thank you for your consideration.

    marcelvanherk

    When viewing the data (headers) in Conquest, I see the value without any problem.

    The problem is only when I query the webserver of Conquest. I am not sure whether the issue is with lua or php code inside \webserver\htdocs\api\dicom.

    I tried to call the specific getmetadata(...) function in rquery.lua from command line directly using dgate. But I believe the syntax is wrong and I can't get any result to debug this more.

    dgate64.exe "--lua:dofile(\"./webserver/htdocs/api/dicom/rquery.lua getmetadata <AETITLE> <STUDYUID> <SERIESUID> <INSTANCEUID>\")"

    Could you please look into this? Thank you.

    Hi marcelvanherk


    Conquest Version: 1.5.0c


    I am using the webserver to query the metadata from conquest:


    http://127.0.0.1/api/dicom/rs/studies/<UID>/series/<UID>/instances/<UID>/metadata


    For the tag 3004, 000E (DoseGridScaling), I get the value 0 (Postman API result)


    Whereas the actual value is 6.66056188E-9 (Taken from CQ webserver - header in browser)


    I also double checked by writing the API output to a file through curl but the value is 0.


    This rounding causing a major issue as its not accurate and the data from the API is treated as 0 from then on.

    What's causing this issue? I suppose PHP can handle such small values without any problem as it follows double precision floating point (64 bit)!!!
    Could you please guide me to rectify this behaviour?

    Thank you so much.

    marcelvanherk

    Thanks Marcel.


    I did try the above like:


    [lua]

    Association = local list = {}; local list2={}

    ImportConverters =1

    ImportConverter0 = list[Data.SeriesInstanceUID]= Data.SeriesInstanceUID; list2[Data.StudyInstanceUID]= Data.StudyInstanceUID

    EndAssociation = local f=io.open(list2[1], 'wt') f:write(table.concat(list, '\n') f:close()


    But I get lua error in the console, for the line io.open(list2[1], 'wt') as list2 is nil when I restarted the server after changing dicom.ini.
    I thought EndAssociation will only be called after something comes in. May be I am understanding incorrectly?
    Please guide on me to properly configure dicom.ini to record data in a single association.

    Also, could you please clarify one more thing?

    In ImportConverters or ExportConverters, can I call two scripts in one converter?

    Currently, I call a lua script like this:


    ExportConverters = 1

    ExportConverter0 = process series after 10 by F:\myApp\processSeries1.lua "%u"|"%i"

    Can I call two lua scripts instead of one in the same converter?

    Thank you.

    marcelvanherk

    >> You can just use processStudy, and write a simple query to extract all series in that lua file.

    But the issue with this is that it would retrieve all series belonging to that study. I want only those series which came in at the time before processStudy got triggered!!!

    marcelvanherk

    Ah alright which makes it so hard to get my use case right. ImportConverters works fine when a single series comes in.

    Code
    ImportConverters = 2
    ImportConverter0 = process series after 15 by F:\Programming\CORA\myDev\artemis-wspark\processSeries.lua "%u"|"%i"|"%V0020,000E"|"%V0020,000D"|"%V0008,0060"|"%V0008,103E"|"%V0018,1030"
    ImportConverter1 = process study after 30 by F:\Programming\CORA\myDev\artemis-wspark\processStudy.lua "%u"|"%i"|"%V0020,000D"|"%V0010,0010"

    processSeries and processStudy gets called in order when a single series comes in. So no problem.

    But wWhen multiple series' (say 3) come in, the current order is:


    processSeries - for series 1
    processStudy

    processSeries - for series 2

    processSeries - for series 3

    How I would like the order to be is:


    processSeries - for series

    processSeries - for series 2

    processSeries - for series 3

    processStudy


    I am not sure how to achieve my desired order with either ImportConverters or ExportConverters !!!? ||

    marcelvanherk

    What you can do to test is replace your two batch files by two lua files, and see if it fails in the same way. This would exclude a problem in WinExec itself. In lua the parameters are in command_line.

    As per suggestion, I replaced the batch files with lua scripts,

    Code
    ExportConverters = 2
    ExportConverter0 = process series after 15 by F:\myApp\processSeries.lua "%u"|"%i"|"%V0020,000E"|"%V0020,000D"|"%V0008,0060"|"%V0008,103E"|"%V0018,1030"
    ExportConverter1 = process study after 30 by F:\myApp\processStudy.lua "%u"|"%i"|"%V0020,000D"|"%V0010,0010"

    There is no issue with the scripts but now the order of their execution is not always the same.
    I expect the ExportConverter0 to be triggered first always and then ExportConverter1 but sometimes ExportConverter1 gets executed before ExportConverter0 (FYI - When I had batch scripts, this order issue never occurred even though the delay was just 5 seconds b/w series and study)
    I even increased the delay between the series and the study to 15 seconds yet the issue persists.

    This issue doesn't happen consistently. Sometimes it executes in order and sometimes it doesn't.
    Not sure how to resolve this! :/

    Any help would be appreciated. Thank you.

    marcelvanherk,

    Sorry, probably I wasn't clear with my issue:

    Now, I just have simple ExportConverter0 = process series after 10 by F:\myApp\processSeries.lua "%u" with just one argument.

    However, in the lua script file, I just try to get that argument and print it.

    Neither this

    Code
    local sender = ...
    print(sender)

    Nor this

    Code
    print(args[0])

    Works for me. I am not sure how to unpack the arguments.


    When I look it up, everything points to ... should be the way to unpack. Not sure what am I doing wrong?