Git Product home page Git Product logo

dicom-rst's Introduction

DICOM-RST Logo

DICOM-RST

DICOMweb-compatible gateway server with DIMSE and S3 implementations.

Documentation | Changelog


DICOM-RST is a robust DICOMweb-compatible gateway server that supports QIDO-RS, WADO-RS and STOW-RS independently of the PACS vendor, ensuring robust and performant transfers of large amounts of imaging data with high parallelism from multiple PACS to multiple clients.

This project is part of the Open Medical Inference methodology platform.

The OMI methodology platform aims to improve the quality of medical diagnoses and treatment decisions by using artificial intelligence (AI) to simplify time-consuming and repetitive tasks in medicine. To improve medical care, OMI is developing an open protocol for data exchange on the common framework of the Medical Informatics Initiative (MII). The project team is also actively involved in the MII interoperability working group.

OMI uses innovative methods to make AI models remotely usable for different hospitals. For example, the project is creating the technical requirements for a hospital to be able to use the AI of other hospitals to analyze image data - without having to keep it in its own data center. The semantically interoperable exchange of multimodal healthcare data is also to be facilitated. OMI is particularly focused on image-based multimodal AI models, which have the potential to achieve significant progress in the field of medical research and care. Funding is provided by the Federal Ministry of Education and Research (BMBF).

MII-Logo

OMI-Logo

Available Backends

DICOM-RST provides multiple backend implementations for the DICOMweb gateway server:

DIMSE: The DIMSE backend translates DICOMweb requests into DIMSE-C messages (e.g. WADO-RS to C-MOVE). This is the preferred backend for most users due to the broad availability and support of DIMSE services in picture archiving and communication systems.

S3: The experimental S3 backend downloads DICOM instances from S3-compatible storage. Currently, only the WADO-RS service is implemented.

DICOMweb Features

Note

Actual support may vary depending on the features implemented by the origin server.

Retrieve DICOM objects (WADO-RS)

https://www.dicomstandard.org/using/dicomweb/retrieve-wado-rs-and-wado-uri

Instance Resources

Description Path Support Status
Study Instances studies/{study}
Series Instances studies/{study}/series/{series}
Instance studies/{study}/series/{series}/instances/{instance}

Metadata Resources

❌ Metadata Resources are not supported.

Rendered Resources

❌ Rendered Resourced are not supported.

Thumbnail Resources

❌ Thumbnail Resources are not supported.

Bulkdata Resources

❌ Bulkdata Resources are not supported.

Pixel Data Resources

❌ Pixel Data Resources are not supported.

Search for DICOM objects (QIDO-RS)

https://www.dicomstandard.org/using/dicomweb/query-qido-rs

Resources

Resource URI Template Support Status
All Studies /studies{?search*}
Study's Series /studies/{study}/series{?search*}
Study's Series' Instances /studies/{study}/series/{series}/instances{?search*}
Study's Instances /study/{study}/instances{?search*}
All Series /series{?search*}
All Instances /instances{?search*}

Query Parameters

Key Description Support Status
{attributeID} Query matching on supplied value
includefield Include supplied tags in result
fuzzymatching Whether query should use fuzzy matching
limit Return only {n} results
offset Skip {n} results

Store DICOM objects (STOW-RS)

https://www.dicomstandard.org/using/dicomweb/store-stow-rs

Resources

Resource URI Template Support Status
Studies /studies
Study /studies/{study}

Manage worklist items (UPS-RS)

https://www.dicomstandard.org/using/dicomweb/workflow-ups-rs

❌ UPS-RS is not supported.

DICOM-RST Features

DICOM-RST provides additional features that are not part of the DICOMweb specification.

AET list

Returns a list of configured AETs.

Resource URI Template
AET List /aets

Health Check

Returns a simple OK if the connection is still healthy.

Resource URI Template
Health Check /aets/{aets}

Footnotes

  1. The DICOM-RST logo is adapted from the Rust logo owned by the Rust Foundation, used under CC-BY.

dicom-rst's People

Contributors

alexluft avatar dependabot[bot] avatar nickamzol avatar the-kenny avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

dicom-rst's Issues

Pull access denied for dicom-rst

In the Installation Guide, the following command is provided to start the docker container:

docker run -p 8080:8080 -p 7001:7001 dicom-rst

However, this results in the following error:

Unable to find image 'dicom-rst:latest' locally
docker: Error response from daemon: pull access denied for dicom-rst, repository does not exist or may require 'docker login': denied: requested access to the resource is denied.
See 'docker run --help'.

Apparently, docker does not recognize the image dicom-rst. Supplying the full name works:

docker run -p 8080:8080 -p 7001:7001 ghcr.io/umessen/dicom-rst:latest

I suggest the documentation be updated to get around this issue or someone tell me that I'm unable to use docker correctly. :)

Logos

Please add our OMI Logo and the MII Logo to the project and documentation.

OMI-Logo-neu-fhir

Configuration of the Docker Container

According to the Documentation, DICOM-RST needs to be configured via a configuration file (config.yaml) located next to the binary.

To me, a Docker novice, it is sadly unclear how I am supposed to get that configuration file into the docker image.
Can you elaborate this here or improve the documentation on that regard?

Thanks in advance!

Documentation of Routes with Examples

It would be nice to add examples to the routes such that the user could qucikly see how data retrieval works

eg. for retrieval of studies where xxx is the pacs server name

localhost:8080/aets/xxxx/studies

WADO-RS: Skip file parsing for faster reads

Do we really need to parse every DICOM file before sending them to the client?
I think we can just pass through the raw data (Vec<u8>), unless we want to change some attributes (is there some kind of lazy parsing in dicom-rs so we do not need to parse the entire file?).

Maybe introduce a new config option validate: <false|true>, as validation of data before sending seems like a good idea?

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.