Limit viewing of images

  • Hi


    I have central conquest pacs server that is working fine that is connected to 20 sites. Daily almost hundreds of images are received. Each site has a separate storage location and that part is also working fine.


    When a users the Central PACS it sees images from other sites also. Some how can i limit this. That certain AETs or Patient IDs or Referring Physicians can view only images from certain site or sites. In other words, instead of setting up separate PACS Server for each site i want to handle the same task via one central server.


    Please guide.


    --HM

  • Hi,


    you can read the calling AE in each query, the question is which DICOM elements that you add to the query to limit the visibility; e.g.,


    if Association.Calling=='AE1' then Data.InstitutionalDepartmentName = 'Department1' end


    This is all possible, and can be changed to accept any AE


    Data.InstitutionalDepartmentName = Departments[Association.Calling]


    but you will have to figure out which DICOM element would be a proper filter. Here e.g. departments would be table loaded from a separate file using a dofile() statement.


    Marcel

  • Hi Marcel!


    I tried with Department Name option but this option doesn't let me stop the Clinic A to view images from other Clinics. As, there is a very long list of AETs that need to be added in script and practically not possible as new workstation is added on as required basis.


    Is it possible that in QUERY and RETRIEVE CONVERTER i can query some database table of Clinics AET and return results to user on basis of that query.


    Can you add this feature in new release that certain AETs can also access (read only or write only or both) to Particular MAG location. This will further secure the data integrity.


    --HM

  • Hi,


    Any converter can execute a dbquery to look in any database and filter on any DICOM element in the database. Unfortunately, you cannot filter on MagDevice as this can only be read (used internally).


    The MAG location is stored per image, so it can be used in image queries. A solution would be to use AE titles which can be interpreted, e.g. blablaNn where N is the MAG location. Try this then:


    QueryConverter0 = Data["9999,0801"]=""
    QueryResultConverter0 = if Data["9999,0801"]~=MAG..Association.Calling:Sub(7,7) then Data.SOPInstanceUID = "9999" end


    It queries the MAG location and invalidates any query result not on MAGn. It would be better to call script ('destroy'); but this is not implemented for query results. Untested and may be slow. If you can find a good way to script your request I can


    Marcel

  • Hi Marcel!!


    After lot of brainstorming sessions for almost a week. I decided and test this solution but facing some issues, your guidance is required to make it a success story.


    Solution::


    (1) I set a hospital code (Private Tag, in DICOMSTUDIES Table) A, B, C and so on for each hospital that is sending images to PACS.

    (2) Create a new table named HOSPITALAET and insert AETs of all hospitals with their corresponding hospital codes.


    (3) When user query PACS i need to run another query first that first get the CALLING AET, search do that exist in HOSPITALAET table, if yes then get the hospital code and return results on that basis.


    I had done steps 1 and 2 but struck in step 3. Please guide.


    --HM

  • Hi,


    was very busy with a botched release. Now working.


    with lua command dbquery you can access any data in any table the database, and you can access Association.Calling to get the client's AE. If there is a database field which identifies the hospital you can add this to a QueryConverter.


    In a skeleton:


    [lua]
    QueryConverter0 = Data.InstitutionName = dbquery('HOSPITALAET', 'InstitutionName', [[AE=']]..Association.Calling..[[']])[1][1]


    (Sql equivalent: select InstitutionName from HOSPITALAET where AE='xxxxxx'). In the lua code [1][1] represents the 1st field of the 1st returned record.


    regards,


    Marcel

Participate now!

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