Skip to content

ShanoirUploader FAQ

michaelkain edited this page Mar 12, 2024 · 38 revisions

This page summarizes known issues/questions and solutions while installing and using ShanoirUploader within the hospital environment.


PKIX path error

The error is PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target javax.net.ssl.SSLHandshakeException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target

Solution Import the server certificate into the local cacerts keystore of Java; cert download of https://shanoir.irisa.fr pem file or https://shanoir-ofsep.irisa.fr pem file on using Firefox. Once the cert is imported, ShUp can connect to the server. USE the CHAIN cert (from Firefox)!

The same has to be done for qualif as well, so twice import-cert. Example below with Java 17, adapt for Java 8 etc.

C:\ProgramFiles\Java\jdk-17\bin>keytool -importcert -file c:\temp\shanoir(-ofsep)-irisa-fr.pem


ShanoirUploader: better see all logs for DEBUG

Replace javaw.exe with java.exe in .bat/.sh file, when you start ShUp. All logs will come to the console.


ShanoirUploader: new download not displayed in "Import tab", after click on downloadOrCopy

ERROR [org.shanoir.dicom.importer.UploadJobManager] [82] javax.xml.bind.UnmarshalException

  • with linked exception: [org.xml.sax.SAXParseException; systemId: file:/XXXX/.su_v7.0.1/workFolder/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx_2023_xx_xx_xx_xx_xx_xxx/upload-job.xml; lineNumber: 1; columnNumber: 1; Fin pr\E9matur\E9e du fichier.] 2023-07-25 14:48:00 ERROR [org.shanoir.uploader.action.init.StartupStateContext] [44] java.lang.NullPointerException at org.shanoir.uploader.nominativeData.CurrentNominativeDataController.processFolder(CurrentNominativeDataController.java:211) at org.shanoir.uploader.nominativeData.CurrentNominativeDataController.processWorkFolder(CurrentNominativeDataController.java:192) at org.shanoir.uploader.nominativeData.CurrentNominativeDataController.(CurrentNominativeDataController.java:50) at org.shanoir.uploader.action.init.ReadyState.load(ReadyState.java:45) at org.shanoir.uploader.action.init.StartupStateContext.nextState(StartupStateContext.java:42) at org.shanoir.uploader.action.init.PacsConfigurationState.load(PacsConfigurationState.java:36)

Solution: Close and stop ShUp. Go in the file explorer (e.g. Windows explorer) into the workFolder, see above /XXXX/.su_v7.0.1/workFolder, and delete the folder with the error (xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx_2023_xx_xx_xx_xx_xx_xxx). Or clean the entire workFolder to free more space.


ShanoirUploader: query pacs does not work, su.log: not able to sort tree

ERROR [org.shanoir.uploader.action.FindDicomActionListener] [392] Not able to sort tree java.lang.NullPointerException at org.shanoir.uploader.action.FindDicomActionListener.sortTree(FindDicomActionListener.java:332) at org.shanoir.uploader.action.FindDicomActionListener.actionPerformed(FindDicomActionListener.java:222)

Solution: Some PACS, e.g. Telemis, do not support Patient Root Query, so the Study Root Query has to be used. This means: only query with studyDate (examDate) and/or studyDescription to solve the problem.


ShanoirUploader: start-up fails after login box, error with authentification

In the su.log we find the following: "handshake_failure" during login.

Solution: Maybe ShUp has been started under Windows with double-click on the .jar file. ALWAYS use the start-shup-windows-java.bat file!


ShanoirUploader: query pacs works, but nothing happens after click on downloadOrCopy

In the su.log we find the following: 0 DICOM files could be downloaded; error with download from PACS

Solution: Contact PACS admin and ask for enabling c-move for AET shanoir-uploader.


ShanoirUploader: empty imports overview table

After step 1) (selection of exam, completion of patient information and click on downloadOrCopy) nothing happens, the step 2) (the import overview table) remains empty, no entry appears. In su.log we find no error message and the log stops after having logged a successful downloadOrCopy of a number of files.

Version: an older version from 2021 is used.

Running ShUp from the command line shows the following error:

Exception in thread "Thread-20" java.lang.NoClassDefFoundError: javax/xml/bind/JAXBException at org.shanoir.uploader.action.DownloadOrCopyRunnable.run(DownloadOrCopyRunnable.java:82) at java.base/java.lang.Thread.run(Thread.java:834) Caused by: java.lang.ClassNotFoundException: javax.xml.bind.JAXBException at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:581) at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178) at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521) ... 2 more

Solution: Verify the Java version with java -version. If it is Java 11, install Java 8 to make it work. Java 9 and 10: add the flag "--add-modules java.xml.bind" just behind the java.exe command in start-shup-windows-java.bat. This error only occurs using an older version of ShUp with a newer JDK. The latest version on GitHub includes JAXB itself and does therefore not produce the above error.


ShanoirUploader: PACS config correct, but error in log calling-aet not recognized

It might happen with some GE Healthcare PACS, that the DICOM server echo does NOT work, even when all the config values are correct. In that case, please try a query and everything is completely operational, just the echo is causing a problem.

Solution: Edit the file "dicom_server.properties" manually and directly query without using the echo.


ShanoirUploader: single VM with ShUp installed, usable by multiple users in parallel

Feedback from one installation site: 2 different users on their own sessions in one VM, with their own AET and ports (but same PACS called) except the web port (8080 for both):

  1. Query/retrieve different exams from different patients
  2. Send it to the shanoir server at the same time for both steps and it works perfectly.

ShanoirUploader: double-click on .bat under Windows and nothing happens

It might happen, that we double-click on the start-shup-windows.bat and nothing happens really. We only see very shortly the command line window, that closes directly afterwards and nothing can be found in the log files.

Solution: Install Java 11 as now required for ShUp and set the JAVA_HOME to Java 11. An older version of Java installed will lead to the strange behaviour above.


ShanoirUploader: click on Import/Importer, nothing happens

In the su.log the following can be found:

2021-09-08 11:35:37 ERROR [org.shanoir.uploader.action.ImportDialogOpenerNG] [75]

java.lang.NullPointerException

at org.shanoir.uploader.action.ImportDialogOpenerNG.getStudiesWithStudyCards(ImportDialogOpenerNG.java:119)
at org.shanoir.uploader.action.ImportDialogOpenerNG.openImportDialog(ImportDialogOpenerNG.java:59)
at org.shanoir.uploader.nominativeData.CurrentNominativeDataController$1.mouseClicked(CurrentNominativeDataController.java:112)

Solution: Create a study card to make the import work.


ShanoirUploader asks for proxy settings, but the testURL is accessible

In the su.log the following can be found:

Caused by: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target

In some hospital networks, HTTPS streams are redirected to a server for analysis. This means that the certificate verification chain goes through the hospital CA and java needs to be able to go and check the root certificate in the Windows TrustedRoot store.

Solution: Open the startup file of your environment: start-shup-windows-java.bat or start-shup-linux-mac-java.sh and add the following property:

javaw -Djavax.net.ssl.trustStoreType=WINDOWS-ROOT

In start-shup-windows-java.bat or start-shup-linux-mac-java.sh:


@ECHO OFF IF EXIST "%JAVA_HOME%\bin\javaw.exe" ( ECHO Starting ShanoirUploader application "%JAVA_HOME%\bin\javaw.exe" -Djavax.net.ssl.trustStoreType=WINDOWS-ROOT -jar shanoir-uploader-7.0.0-jar-with-dependencies.jar -Xms128m -Xmx512m -Xnoclassgc org.shanoir.uploader.ShanoirUploader ) ELSE ( java.exe -version >nul 2>&1 IF %ERRORLEVEL% NEQ 0 ( echo ERROR : Java is not properly installed or configured on your machine pause ) ELSE ( javaw -Djavax.net.ssl.trustStoreType=WINDOWS-ROOT -jar shanoir-uploader-7.0.0-jar-with-dependencies.jar -Xms128m -Xmx512m -Xnoclassgc org.shanoir.uploader.ShanoirUploader ) )


This tells Java to use the local trust store, where the certificate root of the hospital can be found.


PACS Telemis

The PACS Telemis does not support, see its DICOM conformance statement the Patient Root Query Level. Therefore PACS queries have to be done on the Study Root Query Level. For ShUp this means, that in the GUI to query Telemis only Study Description and Study Date should be used and both together in the best way. The ShUp user will have to look up the study description and the study date in the PACS and enter it into ShUp, to have the most precise query.

Solution: Use studyDate and studyDescription only to send StudyRoot queries only.


Error during startup of DcmRcv: Cannot assign requested address: JVM_Bind (Damien)

In case that this error happens, ShUp terminates during startup. This error can occur if the IP address of the machine has changed, where ShUp is installed. To solve the problem the following steps have to be done (in that case on a Windows machine):

English:

  1. Open the command prompt (cmd)
  2. Type the command ipconfig
  3. Check Ethernet (normaly) IPv4 address and copy the IP address
  4. Open {user_home}/.su/dicom_server.properties
  5. Copy the new IP address as value for local.dicom.server.host and save
  6. Call the PACS admin to change the IP address for the AET (defined in local.dicom.server.aet.calling)

French:

  1. Ouvrir invite de commande (cmd)
  2. Entre la commande ipconfig
  3. Analyser Ethernet (normalement) IPv4 address et copier l'address IP
  4. Ouvrir {user_home}/.su/dicom_server.properties
  5. Copier la nouvelle address IP comme valeur pour local.dicom.server.host et enregistre
  6. Appeler l'administrateur du PACS pour changer l'address IP pour l'AET (definé dans local.dicom.server.aet.calling)

Therefore the local PACS admin will have to be contacted to do this change. If the IP address is changed only dicom_server.properties, but not in the PACS C-FIND will work, but not C-MOVE: the following error will appear in the logs:

2019-01-16 15:15:22 ERROR [org.dcm4che2.tool.dcmqr.DcmQR] [1249] At least one object couldn't be transfered

java.io.IOException: At least one object couldn't be transfered

at org.dcm4che2.tool.dcmqr.DcmQR.query(DcmQR.java:1228)
at org.shanoir.uploader.dicom.query.DcmQR.query(DcmQR.java:26)
at org.shanoir.uploader.dicom.DicomServerClient.getFilesFromServer(DicomServerClient.java:181)
at org.shanoir.uploader.dicom.DicomServerClient.retrieveDicomFiles(DicomServerClient.java:109)
at org.shanoir.uploader.action.ProcessDicomActionListener$3.run(ProcessDicomActionListener.java:243)
at java.lang.Thread.run(Unknown Source)

2019-01-16 15:15:22 ERROR [org.shanoir.uploader.dicom.DicomServerClient] [184] 2019-01-16 15:15:22 ERROR [org.shanoir.uploader.dicom.DicomServerClient] [135] Download of 0 DICOM files for serie 1.3.12.2.1107.5.2.36.40296.2017111013000447788260208.0.0.0 has failed.


MacOSX or maybe Linux: error=13, Permission denied

--- Error:

2019-01-18 09:12:04 ERROR [org.shanoir.util.runtime.exec.ShanoirExec] [699] exec : java.io.IOException: Cannot run program "/Users/xxx/.su/pseudonymus/MacOSX/PseudonymusShanoir": error=13, Permission denied Caused by: java.io.IOException: error=13, Permission denied at java.lang.UNIXProcess.forkAndExec(Native Method) at java.lang.UNIXProcess.(UNIXProcess.java:248) at java.lang.ProcessImpl.start(ProcessImpl.java:134) at java.lang.ProcessBuilder.start(ProcessBuilder.java:1029) ... 44 more

Solution: /{user.home}/.su_v6.0.4/pseudonymus/MacOSX/chmod 755 PseudonymusShanoir


Dynamic IP address of machine, configure PACS

I am wondering how this can work in an environment with dynamic IP address, so I think host names should be used. E.g. when the AET in the PACS is configured for wifi-laptop-nantes.chu-xxx.fr and the same host name is in the dicom_server.properties it could work as well. This could be possible depending on each PACS or maybe all of them..


ShUp does not start up (v5.2)

In the su.log the following can be found:

2019-11-06 15:43:11 INFO [org.shanoir.uploader.action.init.InitialStartupState] [88] DicomServer properties successfully initialized. 2019-11-06 15:43:11 INFO [org.shanoir.uploader.action.init.InitialStartupState] [90] ShanoirServer properties successfully initialized. 2019-11-06 15:43:11 INFO [org.shanoir.uploader.action.init.InitialStartupState] [92] Auto Import properties successfully initialized. 2019-11-06 15:43:11 INFO [org.shanoir.uploader.action.init.InitialStartupState] [94] Shanoir Uploader properties successfully initialized. 2019-11-06 15:43:11 INFO [org.shanoir.uploader.action.init.InitialStartupState] [96] Shanoir Uploader proxy properties successfully initialized. 2019-11-06 15:43:11 INFO [org.shanoir.uploader.action.init.InitialStartupState] [103] Language properties successfully initialized.

Solution: ShUp has maybe been started with Webstart, what is not supported anymore.


ShUp upload does not work, exception during startup, but credentials are correct (v5.2)

In the su.log the following can be found:

-- Error: URL ShanoirUploaderService is not correct (exception)

Solution: shanoir.server.upload.service.qname.local.part=UploadFileService (remove "2" at the end)

Clone this wiki locally