GithubHelp home page GithubHelp logo

dicomproxy's Introduction

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.

dicomproxy's People

Contributors

davegwatson avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.