Skip to content

google/dicomproxy

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Disclaimer

This is not an official Google product. DICOMweb is a trademark of the National Electrical Manufacturers Association, Secretariat for the DICOM Standards Committee.

DICOMweb Proxy

A simple proxy from legacy DIMSE DICOM network protocols to DICOMweb requests. Currently supported are C-STORE to STOW-RS (for data uploads) and C-FIND Modality Worklist to UPS-RS (for worklist queries).

Authentication

OAuth2 Bearer tokens are used to authenticate with the receiving service; we currently use Google Cloud Service Account credentials to create OAuth tokens, using the OAuth scope https://www.googleapis.com/auth/lifescience.dicomweb.

To use such a service account, follow the instructions for Creating a service account, and download the private key in JSON format. Save it to a file named service_account_creds.json in this folder.

Launching the Proxy

Configuration Parameters

  • Receive Port: defaults to 4008. May be overridden by specifying the com.google.health.dicomproxy.receive-port system property. This is used for both C-STORE and C-FIND (MWL) requests.
  • DICOMweb URIs. The proxy expects at least one URI to be specified (for Upload and/or Worklist mode).
  • Temporary storage location: defaults to temp-data in the current directory. May be overridden by specifying the com.google.health.dicomproxy.temp-folder system property.
  • Service Account Credentials file: Defaults to service_account_creds.json in the current directory. May be overridden by specifying the com.google.health.dicomproxy.service-account-creds-json-file system property.

Sample Command Line

If running on a Unix-type system (this includes Linux and Mac), this will run the proxy with sample destination:

./gradlew run \
    -Dcom.google.health.dicomproxy.upload-uri=https://medicalimaging.googleapis.com/projects/sample-project/programs/sample-program/studies \
    -Dcom.google.health.dicomproxy.worklist-uri=https://medicalimaging.googleapis.com/projects/sample-project/programs/sample-program/worklist \
    -Dcom.google.health.dicomproxy.temp-folder=/tmp/dicomweb-data/ \
    -Dcom.google.health.dicomproxy.receive-port=12345 \
    -Dcom.google.health.dicomproxy.service-account-creds-json-file=my_service_account.json

Known Issues / Future Improvements

This proxy should currently be thought of as a working prototype; it has not been hardened for long-term production uses. Patches are welcome! This is a short list of some items which should be considered before deploying this for real-world use cases.

Authentication and API Support

The authentication used by this proxy is currently targeted to the DICOMweb APIs hosted at medicalimaging.googleapis.com. If you are working with a different DICOMweb implementation, you may want to modify the code in this package to fit your requirements.

Data Management / Cleanup

This proxy doesn't yet handle cleanup / removal of temporary data that is no longer needed. It also doesn't yet have a way, upon restart, to resume uploads that were incomplete or queued (in the case of a crash).

Configuration / Installation

There is not yet an installation procedure defined for this software, and all configuration is done via command-line (Java System Property) parameters.

Logging

Currently all log statements are simply printed to the console.

AE Title Support

The DICOM proxy software does not currently care about DICOM AE titles; it is a so-called "promiscuous receiver", and will accept any valid connections regardless of called or calling AE titles. Future improvements (patches are welcome!) may include mapping AE titles to upload or query destinations, to support proxying to multiple DICOMweb instances.

About

No description, website, or topics provided.

Resources

License

Code of conduct

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages