Question about upgrading, Label Support, OHIF, Postres DB, etc

I pulled the osimis/orthanc:master-full-unstable image and tried a total rebuild of a dev setup with that. I have a few questions because it looks like I need to update my Postgres DB for label support. I am using postgres 15 but I must have had an older version of Orthanc without label support when I initialized that ? However, upgrading must be a bit more of a problem (i.e. from 13 on a production system).

It is a dev setup with a Laravel PHP Framework front end that I proxy to the Orthancs using NGINX (i.e. https://mydomain.com/pacs-1, https://mydomain.com/pacs-2) for Explorer and Stone, but the PHP can also make API calls directly within the Docker Network via the container name ā€˜domainā€™. I might have some issues yet using the OHIF plugin (see the NGINX conf at the bottom).

Not clear why the Jobs function would be deprecated.

The startup log is below and my questions pertain to these.

  1. W0620 00:44:19.198974 OrthancPlugins.cpp:5543] Performance warning: Plugin has registered a custom database back-end with an old API (version 3) (Do I need to upgrade the DB)
  2. W0620 00:44:19.598201 PluginsManager.cpp:157] Using DB orthanc_ris for MWL Storage ( that is probably correct) (I have my own handler using Python via the e.g. in the book)
  3. W0620 00:44:19.709791 main.cpp:1669] The custom database back-end has no support for labels
  4. W0620 00:44:19.717139 PluginsJob.cpp:73] Your plugin is using the deprecated OrthancPluginCreateJob() function

My Postgres containers here are: postgres:15.3

  1. W0620 00:44:19.205441 PluginsManager.cpp:157] Root URI to the Orthanc-Explorer 2 application: /ui/ (that might be a problem ?)
W0620 00:44:19.140575 main.cpp:2034] Orthanc version: mainline (20230619T133209)
W0620 00:44:19.141013 OrthancConfiguration.cpp:57] Reading the configuration from: "/tmp/orthanc.json"
W0620 00:44:19.182808 main.cpp:911] Loading plugin(s) from: /run/orthanc/plugins
E0620 00:44:19.182892 PluginsManager.cpp:234] Inexistent path to plugins: /run/orthanc/plugins
W0620 00:44:19.182899 main.cpp:911] Loading plugin(s) from: /usr/share/orthanc/plugins
W0620 00:44:19.197881 PluginsManager.cpp:261] Registering plugin 'postgresql-index' (version mainline)
W0620 00:44:19.198942 PluginsManager.cpp:157] The index plugin will use 8 connection(s) to the database, and will retry up to 16 time(s) in the case of a collision
W0620 00:44:19.198974 OrthancPlugins.cpp:5543] Performance warning: Plugin has registered a custom database back-end with an old API (version 3)
W0620 00:44:19.200194 PluginsManager.cpp:261] Registering plugin 'stone-webviewer' (version mainline)
W0620 00:44:19.201510 PluginsManager.cpp:261] Registering plugin 'postgresql-storage' (version mainline)
W0620 00:44:19.202535 PluginsManager.cpp:157] The PostgreSQL storage area is currently disabled, set "EnableStorage" to "true" in the "PostgreSQL" section of the configuration file of Orthanc
W0620 00:44:19.204401 PluginsManager.cpp:261] Registering plugin 'orthanc-explorer-2' (version mainline)
W0620 00:44:19.205441 PluginsManager.cpp:157] Root URI to the Orthanc-Explorer 2 application: /ui/
W0620 00:44:19.207138 PluginsManager.cpp:261] Registering plugin 'tcia' (version mainline)
W0620 00:44:19.223979 PluginsManager.cpp:261] Registering plugin 'osimis-web-viewer' (version 1.4.2.0-9d9eff4)
W0620 00:44:19.224483 PluginsManager.cpp:157] Initializing the Web viewer
W0620 00:44:19.225493 PluginsManager.cpp:157] Using GDCM instead of the DICOM decoder that is built in Orthanc
W0620 00:44:19.226581 PluginsManager.cpp:261] Registering plugin 'housekeeper' (version mainline)
W0620 00:44:19.226608 PluginsManager.cpp:157] Housekeeper plugin is initializing
W0620 00:44:19.228622 PluginsManager.cpp:261] Registering plugin 'connectivity-checks' (version mainline)
W0620 00:44:19.229389 PluginsManager.cpp:261] Registering plugin 'serve-folders' (version mainline)
W0620 00:44:19.230832 PluginsManager.cpp:261] Registering plugin 'worklists' (version mainline)
W0620 00:44:19.230857 PluginsManager.cpp:157] Sample worklist plugin is initializing
W0620 00:44:19.231637 PluginsManager.cpp:157] Worklist server is disabled by the configuration file
W0620 00:44:19.235079 PluginsManager.cpp:261] Registering plugin 'python' (version mainline)
W0620 00:44:19.235131 PluginsManager.cpp:157] Python plugin is initializing
W0620 00:44:19.235513 PluginsManager.cpp:157] Using Python script "combined.py" from directory: /python
W0620 00:44:19.235534 PluginsManager.cpp:157] Force global loading of Python shared library: /usr/lib/x86_64-linux-gnu/libpython3.9.so.1.0
W0620 00:44:19.235585 PluginsManager.cpp:157] Program name: /usr/local/bin/Orthanc
W0620 00:44:19.598201 PluginsManager.cpp:157] Using DB orthanc_ris for MWL Storage.
W0620 00:44:19.602926 PluginsManager.cpp:261] Registering plugin 'dicom-web' (version mainline)
W0620 00:44:19.610092 PluginsManager.cpp:157] URI to the DICOMweb REST API: /dicom-web/
W0620 00:44:19.611001 PluginsManager.cpp:157] DICOMWeb PublicRoot: /dicom-web/
W0620 00:44:19.611029 PluginsManager.cpp:157] URI to the WADO-URI API: /wado
W0620 00:44:19.614102 PluginsManager.cpp:261] Registering plugin 'ohif' (version mainline)
W0620 00:44:19.635215 PluginsManager.cpp:261] Registering plugin 'gdcm' (version 1.5)
W0620 00:44:19.637113 PluginsManager.cpp:157] Orthanc will use GDCM to decode transfer syntax: 1.2.840.10008.1.2.4.90
W0620 00:44:19.637163 PluginsManager.cpp:157] Orthanc will use GDCM to decode transfer syntax: 1.2.840.10008.1.2.4.91
W0620 00:44:19.637175 PluginsManager.cpp:157] Orthanc will use GDCM to decode transfer syntax: 1.2.840.10008.1.2.4.92
W0620 00:44:19.637181 PluginsManager.cpp:157] Orthanc will use GDCM to decode transfer syntax: 1.2.840.10008.1.2.4.93
W0620 00:44:19.637188 PluginsManager.cpp:157] Throttling GDCM to 4 concurrent thread(s)
W0620 00:44:19.637734 PluginsManager.cpp:157] Version of GDCM: 3.0.10
W0620 00:44:19.637806 main.cpp:1702] Using a custom database from plugins
W0620 00:44:19.637816 OrthancInitialization.cpp:519] Storage directory: "/var/lib/orthanc/OrthancStorage"
W0620 00:44:19.709791 main.cpp:1669] The custom database back-end has *no* support for labels
W0620 00:44:19.709843 HttpClient.cpp:1199] The verification of the peers in HTTPS requests is disabled
W0620 00:44:19.711143 LuaContext.cpp:94] Lua says: Lua toolbox installed
W0620 00:44:19.711873 LuaContext.cpp:94] Lua says: Lua toolbox installed
W0620 00:44:19.712306 ServerContext.cpp:515] Disk compression is disabled
W0620 00:44:19.712331 ServerIndex.cpp:381] No limit on the number of stored patients
W0620 00:44:19.712337 ServerIndex.cpp:401] No limit on the size of the storage area
W0620 00:44:19.712343 ServerIndex.cpp:420] Maximum Storage mode: Recycle
W0620 00:44:19.715033 ServerContext.cpp:244] Reloading the jobs from the last execution of Orthanc
W0620 00:44:19.717139 PluginsJob.cpp:73] Your plugin is using the deprecated OrthancPluginCreateJob() function
W0620 00:44:19.717381 PluginsJob.cpp:73] Your plugin is using the deprecated OrthancPluginCreateJob() function
W0620 00:44:19.717510 PluginsJob.cpp:73] Your plugin is using the deprecated OrthancPluginCreateJob() function
W0620 00:44:19.718898 JobsEngine.cpp:272] The jobs engine has started with 4 threads
W0620 00:44:19.718953 main.cpp:295] Security risk in DICOM SCP: C-FIND requests are always allowed, even from unknown modalities
W0620 00:44:19.718959 main.cpp:300] Security risk in DICOM SCP: C-FIND requests for worklists are always allowed, even from unknown modalities
W0620 00:44:19.718963 main.cpp:305] Security risk in DICOM SCP: C-GET requests are always allowed, even from unknown modalities
W0620 00:44:19.718966 main.cpp:310] Security risk in DICOM SCP: C-MOOVE requests are always allowed, even from unknown modalities
W0620 00:44:19.720387 main.cpp:1317] DICOM server listening with AET PACS1 on port: 4242
W0620 00:44:19.720434 HttpServer.cpp:2036] HTTP compression is disabled
W0620 00:44:19.720450 main.cpp:1048] ====> Remote access is enabled while user authentication is explicitly disabled, your setup is POSSIBLY INSECURE <====
W0620 00:44:19.720472 main.cpp:1172] Remote LUA script execution is disabled
W0620 00:44:19.720476 main.cpp:1184] REST API cannot write to the file system.
W0620 00:44:19.721570 HttpServer.cpp:1794] HTTP server listening on port: 8042 (HTTPS encryption is disabled, remote access is allowed)
W0620 00:44:19.721590 main.cpp:923] Orthanc has started
W0620 00:44:19.722822 PluginsManager.cpp:157] DICOM server Started, in Python Plug-In
W0620 00:44:19.723331 PluginsManager.cpp:157] Starting Housekeeper worker thread
W0620 00:44:19.726926 PluginsManager.cpp:157] Housekeeper: everything has been processed already !

In my nginx.conf proxy I have something like this. Iā€™m investigating that, but it seems to work to proxy to multiple orthanc instances based on:

map $request_uri $pacs {
"~^(?<u>\/pacs\-\d\/)?" $u;
"default" "NONE";
}

The location block is like:

location  ~^\/pacs\-\d\/  {

See: GitHub - TeslaGov/ngx-http-auth-jwt-module: Secure your NGINX locations with JWT
auth_jwt_enabled on;
auth_jwt_redirect on;
auth_jwt_location COOKIE=JWTVIEWER;
auth_jwt_extract_request_claims sub;
auth_jwt_loginurl ā€œ/custom_errorā€;

And the proxypass block like below:

Youā€™re not really suppose to do that, but it seems pretty reliable.

        if ($pacs = '/pacs-1/') {
			rewrite /pacs-1/(.*) /$1 break;
			proxy_pass http://pacs-1;
        }
        if ($pacs = '/pacs-2/') {
			rewrite /pacs-2/(.*) /$1 break;
			proxy_pass http://pacs-2;
        }

The PG version was incorrect in the unstable version. Should be fixed by tomorrow:

1 Like