26.6.0 - cannot click on any study

I updated from 26.4.2 to 26.6.0. Clicking on a study row (in OE2) has no effect, and in the browser console I see:

index-BqSeN6iO.js:13 TypeError: Cannot read properties of undefined (reading 'SOPClassesInStudy')
    at Proxy.hasPdfReportIcon (main-n609udfM.js:165:111997)
    at Kp (index-BqSeN6iO.js:9:3449)
    at get value (index-BqSeN6iO.js:9:15520)
    at Object.get [as hasPdfReportIcon] (index-BqSeN6iO.js:13:17106)
    at Object.get (index-BqSeN6iO.js:13:15340)
    at Proxy.mounted (main-n609udfM.js:165:109411)
    at index-BqSeN6iO.js:13:12634
    at Zi (index-BqSeN6iO.js:13:38)
    at cs (index-BqSeN6iO.js:13:109)
    at Ia.t.__weh.t.__weh (index-BqSeN6iO.js:13:12514)

Reverting to 26.4.2 fixes it.

Daniel Drucker

Hi @ddrucker

Can you tell us more … I’m unable to reproduce here.

Hi @alainmazy ,

Clicking a study row in Orthanc Explorer 2 (plugin v1.12.1) does nothing for me because the frontend throws a JavaScript error on every study render: its hasPdfReportIcon getter unconditionally reads study.RequestedTags.SOPClassesInStudy, but OE2 only adds SOPClassesInStudy to its /tools/find query’s RequestedTags when EnableReportQuickButton is true.

Since that option defaults to false (and isn’t set in my orthanc.json), the list query sends an empty RequestedTags, Orthanc returns study objects with no RequestedTags field, and the getter crashes on undefined.SOPClassesInStudy.

That render error aborts the Vue component’s update cycle, so clicking a row flips the Bootstrap collapse open (pure CSS) but the series sub-component never mounts and no /series request fires — leaving an empty expansion.

Setting “EnableReportQuickButton”: true fixes it - but this is a regression, as it worked fine in the previous versions.

Daniel

Hi @ddrucker

The RequestedTags is empty only if you don’t display any of the Modalities, InstancesCount,SeriesCount and report button:

        if (uiOptions.StudyListColumns.indexOf('modalities') != -1) {
            state.requestedTagsForStudyList.push('ModalitiesInStudy')
        }
        if (uiOptions.StudyListColumns.indexOf('instancesCount') != -1 || uiOptions.StudyListColumns.indexOf('seriesAndInstancesCount') != -1) {
            state.requestedTagsForStudyList.push('NumberOfStudyRelatedInstances')
        }
        if (uiOptions.StudyListColumns.indexOf('seriesCount') != -1 || uiOptions.StudyListColumns.indexOf('seriesAndInstancesCount') != -1) {
            state.requestedTagsForStudyList.push('NumberOfStudyRelatedSeries')
        }
        if (uiOptions.EnableReportQuickButton) {
            state.requestedTagsForStudyList.push('SOPClassesInStudy'); // to detect PDF files
        }

So when we ask for a full configuration or more information, we are not kidding; there are hundreds of possible combinations and we appreciate not spending hours trying to replicate the issues.

BTW, as a workaround, adding the Modality in the StudyListColumns should also fix the issue while waiting for a release with this patch.

Hope this helps,

Alain

 

 


Every donation, no matter the size, helps us continue to improve and maintain this software. If you find it useful, please support us.

Here’s my config:

{
    "Name": "MICVNA",
    "DicomAet": "MICVNA",
    "Plugins": [ "/usr/share/orthanc/plugins", "/usr/share/orthanc/plugins-available/libOrthancOHIF.so" ],
    "StorageDirectory" : "/etc/orthanc/OrthancStorage",
    "UnknownSopClassAccepted": true,
    "RemoteAccessAllowed": true,
    "DicomWeb": { "Enable": true },
    "ConcurrentJobs": 4,
    "SaveJobs": true,
    "JobsHistorySize": 10,
    "OverwriteInstances" : true,

    // performance as per https://book.orthanc-server.com/faq/scalability.html
    "LimitFindResults": 100,
    "LimitFindInstances": 100,
    "StorageAccessOnFind": "Never",

    "OrthancExplorer2": {
        "Enable": true,
        "IsDefaultOrthancUI": true,
        "CustomLogoPath": "/etc/orthanc/mgb.png",
        "UiOptions": {
            "DateFormat": "MM/dd/yyyy",
            "StudyListSearchMode": "search-button",
            "DefaultOrdering": "DicomTag,StudyDate,DESC;Metadata,LastUpdate,DESC",

            // following line to unbreak 26.6.0 unable to click a row bug
            "EnableReportQuickButton": true,

            "EnableAnonymization": false,
             "StudyListColumns" : [
                 "PatientBirthDate",
                 "PatientName",
                 "PatientID",
                 "StudyDescription",
                 "StudyDate",
                 "AccessionNumber"
             ],
            "Modifications": {
                "AllowedModes": ["modify-new-uids", "modify-keep-uids", "duplicate"],
                "DefaultMode": "modify-keep-uids"
            }
        }
    },


    "PostgreSQL": {
        "EnableIndex": true,
        "Host": "postgres",
        "Port": 5432,
        "Database": "orthanc",
        "Username": "postgres",
        "Password": "mypassword"
    },

    "RegisteredUsers": {
        "ddrucker": "mypassword",
        "proxy2backend": "mypassword",
        "billingscripts": "mypassword"
    },

    // only allow the below modalities to talk to us
    "DicomCheckCalledAet": true,
    "DicomAlwaysAllowStore" : false,
    "DicomCheckModalityHost" : true,
    "DicomModalities": {
        // these hosts can store AND find
        "prisma": ["MCL_MRIP1", "172.29.158.6", "104"],
        "prisma2": ["AWP167109", "132.183.237.243", "104"],

        // router can store but NOT find
        "mic-dicom-router": {
            "AET": "mic-dicom-router",
            "Port": 11112,
            "Host": "172.29.20.211",
            "AllowFind": false
        },

        // these we can only send to - no find, no store
        "CompassMCL": {
            "AET": "CompassMCL",
            "Port": 104,
            "Host": "172.27.174.192",
            "AllowFind": false,
            "AllowStore": false
        }
    }
}