googlecloudplatform / weasis-chcapi-extension Goto Github PK
View Code? Open in Web Editor NEWWeasis plugin adding support for the Google Cloud Healthcare API
License: Apache License 2.0
Weasis plugin adding support for the Google Cloud Healthcare API
License: Apache License 2.0
Using TravisCI
seems like extension does not perform update of auth token when it's expired
Specify fuzzymatching=true for QIDO requests. See http://dicom.nema.org/medical/dicom/current/output/html/part18.html#sect_8.3.4.2.
Using https://github.com/GoogleCloudPlatform/weasis-chcapi-extension/releases/tag/v3.0.8 with Weasis 3.6 on MacOS installed using native installer.
I tried putting the client_secrets.json
file in /Applications/Weasis.app/Contents/app/
as well as adding google.client.secret=file:///Applications/Weasis.app/Contents/app/client_secrets.json
to ext-config.properties
, but it still loads the packaged client secrets in both cases.
I got the plugin working up to the point where I get a study in the list. When I double-click on it, I see the loading indicator in the Status
column "dancing" for several seconds, then stops, but nothing happens. The viewer does not open.
The last log entry I see in ~/.weasis/log/boot-0.log
is this:
07.08.2020 15:45:55.298 *CONFIG* [Google Dicom Explorer-pool-4-thread-1] com.google.api.client.http.HttpTransport: -------------- REQUEST --------------
GET https://healthcare.googleapis.com/v1beta1/projects/chuck-dev-[REDACTED]/locations/europe-west4/datasets/veye-feedback/dicomStores/veye-feedback/dicomWeb/studies/1.2.840.113745.101000.1186002.40721.8111.13846623
Accept: multipart/related; type=application/dicom; transfer-syntax=*
Accept-Encoding: gzip
Authorization: <Not Logged>
User-Agent: Google-HTTP-Java-Client/1.28.0 (gzip)
07.08.2020 15:45:55.298 *CONFIG* [Google Dicom Explorer-pool-4-thread-1] com.google.api.client.http.HttpTransport: curl -v --compressed -H 'Accept: multipart/related; type=application/dicom; transfer-syntax=*' -H 'Accept-Encoding: gzip' -H 'Authorization: <Not Logged>' -H 'User-Agent: Google-HTTP-Java-Client/1.28.0 (gzip)' -- 'https://healthcare.googleapis.com/v1beta1/projects/chuck-dev-[REDACTED]/locations/europe-west4/datasets/veye-feedback/dicomStores/veye-feedback/dicomWeb/studies/1.2.840.113745.101000.1186002.40721.8111.13846623'
07.08.2020 15:45:55.557 *CONFIG* [Google Dicom Explorer-pool-4-thread-1] com.google.api.client.http.HttpTransport: -------------- RESPONSE --------------
HTTP/1.1 200 OK
X-Frame-Options: SAMEORIGIN
Transfer-Encoding: chunked
Alt-Svc: h3-29=":443"; ma=2592000,h3-27=":443"; ma=2592000,h3-T050=":443"; ma=2592000,h3-Q050=":443"; ma=2592000,h3-Q046=":443"; ma=2592000,h3-Q043=":443"; ma=2592000,quic=":443"; ma=2592000; v="46,43"
Server: ESF
X-Content-Type-Options: nosniff
Vary: Referer
Vary: X-Origin
Vary: Origin
X-XSS-Protection: 0
Date: Fri, 07 Aug 2020 13:45:55 GMT
Content-Type: multipart/related; boundary=4ffba0f755780eec54b75fcc0e1d4c2f558da714b127b04b7431d4b6c770; transfer-syntax=*; type="application/dicom"
I am kinda suspecting that something is probably wrong with my GCP project setup. Is there any way I can debug this further?
extension fails to display series bigger than some limit(something near 70MB, 100MB definitely won't be displayed) but according to network activity it seems to be downloaded
20.05.2019 22:05:37.517 *ERROR* [Google Dicom Explorer-pool-5-thread-1] org.weasis.dicom.google.explorer.DownloadManager$LoadGoogleDicom: Error occured javax.net.ssl.SSLException: SSL peer shut down incorrectly at sun.security.ssl.InputRecord.readV3Record(InputRecord.java:596) at sun.security.ssl.InputRecord.read(InputRecord.java:532) at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:975)
The application should open the browser window for you instead of you having to look through the terminal output. This only happens on Linux, not Mac.
The component must be created in EDT:
org.pushingpixels.substance.api.UiThreadingViolationException: Component creation must be done on Event Dispatch Thread
at org.pushingpixels.substance.internal.utils.SubstanceCoreUtilities.testComponentCreationThreadingViolation(SubstanceCoreUtilities.java:1832)
at org.pushingpixels.substance.internal.ui.SubstanceOptionPaneUI.createUI(SubstanceOptionPaneUI.java:99)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at sun.reflect.misc.Trampoline.invoke(MethodUtil.java:71)
at sun.reflect.GeneratedMethodAccessor2.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at sun.reflect.misc.MethodUtil.invoke(MethodUtil.java:275)
at javax.swing.UIDefaults.getUI(UIDefaults.java:770)
at javax.swing.UIManager.getUI(UIManager.java:1016)
at javax.swing.JOptionPane.updateUI(JOptionPane.java:1882)
at javax.swing.JOptionPane.(JOptionPane.java:1845)
at javax.swing.JOptionPane.showOptionDialog(JOptionPane.java:857)
at javax.swing.JOptionPane.showMessageDialog(JOptionPane.java:666)
at javax.swing.JOptionPane.showMessageDialog(JOptionPane.java:637)
at javax.swing.JOptionPane.showMessageDialog(JOptionPane.java:608)
at org.weasis.dicom.google.api.ui.dicomstore.GoogleLoginTask.doInBackground(GoogleLoginTask.java:49)
at org.weasis.dicom.google.api.ui.dicomstore.GoogleLoginTask.doInBackground(GoogleLoginTask.java:24)
at javax.swing.SwingWorker$1.call(SwingWorker.java:295)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at javax.swing.SwingWorker.run(SwingWorker.java:334)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
UIDefaults.getUI() failed: createUI() failed for javax.swing.JOptionPane[,0,0,0x0,invalid,alignmentX=0.0,alignmentY=0.0,border=,flags=0,maximumSize=,minimumSize=,preferredSize=,icon=,initialValue=,message=Error occured on fetching google API.
Make sure you created OAuth Client ID credential
in Google Cloud console at https://console.cloud.google.com/apis/credentials
and copied your client_secrets.json to Weasis root folder.
Error message:400 Bad Request
{
"error" : "invalid_grant",
"error_description" : "Bad Request"
},messageType=INFORMATION_MESSAGE,optionType=DEFAULT_OPTION,wantsInput=false] java.lang.reflect.InvocationTargetException
java.lang.Error
at javax.swing.UIDefaults.getUIError(UIDefaults.java:731)
Right now a pop-up comes up with "unexpected error when fetching google api: null"
Instead, it would be nicer to handle this and pop up: "No DICOM Stores in Dataset"
12:06:26.464 ERROR [AWT-EventQueue-0] org.weasis.dicom.google.api.ui.dicomstore.AbstractDicomSelectorTask: Error on dicom task java.lang.NullPointerException
at org.weasis.dicom.google.api.GoogleAPIClient.fetchDicomstores(GoogleAPIClient.java:365)
at org.weasis.dicom.google.api.ui.dicomstore.LoadDicomStoresTask.doInBackground(LoadDicomStoresTask.java:37)
at org.weasis.dicom.google.api.ui.dicomstore.LoadDicomStoresTask.doInBackground(LoadDicomStoresTask.java:24)
The alpha endpoint of the Healthcare API is no longer public.
if study is multiseries, frames from all series will be displayed as one series.
if these series multiframe, then frames will be displayed with strange sequence - sorted by frame first
series0frame0-series1frame0-series2frame0-series0frame1...
also if sum of all series is more than some limit, extension will fail to display frames as described #6
I have installed Weasis v3.6.0 and downloaded the latest jar file v3.0.13 and followed the instructions for installing the plugin. I have placed the plugin in the plugins directory (which I created) and modified the ext-config.properties file to include the absolute path (felix.auto.start.85=file:///C:/Program%20Files/Weasis/app/plugins/weasis-chcapi-extension-3.0.13.jar). After starting, it never properly loads the jar file. Internal logs for the app do not show the plugin trying to load. What am I missing?
Upgrade com.fasterxml.jackson.core:jackson-databind to version 2.9.9 or later. There is a security vulnerability in the existing version.
Use limit/offset query parameters to allow viewing past the first 100 studies.
Right now Google sign-in happens when the plugin get's loaded. There should be a dedicated "Sign-in" button instead.
I am running Weasis 3.6.0. I did what is says in the "Installing plugin" readme section, but the plugin fails to initialize, throwing the following exception:
19.05.2020 07:43:52.437 *SEVERE* [main] org.weasis.launcher.FileUtil: Cannot install bundle weasis-chcapi-extension-3.0.7
java.lang.IllegalArgumentException: URI is not absolute
at java.base/java.net.URL.fromURI(URL.java:719)
at java.base/java.net.URI.toURL(URI.java:1139)
at org.weasis.launcher.AutoProcessor.installBundle(AutoProcessor.java:530)
at org.weasis.launcher.AutoProcessor.processAutoProperties(AutoProcessor.java:351)
at org.weasis.launcher.AutoProcessor.process(AutoProcessor.java:106)
at org.weasis.launcher.WeasisLoader.setFelix(WeasisLoader.java:248)
at org.weasis.launcher.WeasisLauncher.launch(WeasisLauncher.java:247)
at org.weasis.launcher.AppLauncher.main(AppLauncher.java:27)
19.05.2020 07:43:52.450 *SEVERE* [main] org.weasis.launcher.FileUtil: Cannot start bundle weasis-chcapi-extension-3.0.7
java.lang.IllegalArgumentException: URI is not absolute
at java.base/java.net.URL.fromURI(URL.java:719)
at java.base/java.net.URI.toURL(URI.java:1139)
at org.weasis.launcher.AutoProcessor.installBundle(AutoProcessor.java:530)
at org.weasis.launcher.AutoProcessor.processAutoProperties(AutoProcessor.java:389)
at org.weasis.launcher.AutoProcessor.process(AutoProcessor.java:106)
at org.weasis.launcher.WeasisLoader.setFelix(WeasisLoader.java:248)
at org.weasis.launcher.WeasisLauncher.launch(WeasisLauncher.java:247)
at org.weasis.launcher.AppLauncher.main(AppLauncher.java:27)
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.