fluxinc/dicom-capacitor

By fluxinc

Updated 11 days ago

Capacitor is a store-forward DICOM router.

Image
Networking
Integration & delivery
Data science
1

2.5K

fluxinc/dicom-capacitor repository overview

DICOM Capacitor

DICOM Capacitor is a powerful, programmable DICOM store-and-forward gateway built with .NET. It acts as a highly configurable intermediary for DICOM networks, enabling complex routing, filtering, and modification of DICOM studies.

Core Features

  • Advanced Routing: Route DICOM studies to different destinations based on rich criteria, including DICOM tag values and source AE Title.
  • DICOM Mutation: Modify DICOM tags on the fly. Add, update, or remove tags, and even query worklist nodes to enrich incoming data.
  • Filtering: Implement custom logic with built-in filters or create your own to control the flow of studies.
  • Store-and-Forward: Reliably caches incoming studies and forwards them to one or more PACS or viewers, with configurable retry logic.
  • Multi-Platform: The Docker image is built for multiple architectures, supporting both linux/amd64 and linux/arm64 (binary builds also support windows and osx, in both amd64 and arm64)
  • Extensible: Designed to be extended with custom filters and logic to fit complex workflow needs.

Quick Start

To get started with DICOM Capacitor, you can use the following compose.yaml file.

  1. Create a directory for your configuration and data:

    mkdir -p ./capacitor-data/config ./capacitor-data/cache ./capacitor-data/license
    
  2. Create a compose.yaml file:

    services:
      capacitor:
        image: your-dockerhub-username/dicom-capacitor:latest # Replace with your image name
        container_name: dicom-capacitor
        restart: unless-stopped
        ports:
          - "1040:1040" # Standard DICOM port
        volumes:
          # Mount a local directory for configuration, logs, and other data
          - ./capacitor-data/config:/data
          # Mount a local directory for the DICOM cache
          - ./capacitor-data/cache:/cache
          # (Optional) Mount a directory for license files
          - ./capacitor-data/license:/data/flux
        healthcheck:
          test: ["CMD", "echoscu", "-aec", "YOUR_AET", "localhost", "1040"]
          interval: 30s
          timeout: 10s
          retries: 3
    
  3. Run the container:

    docker-compose up -d
    

Configuration

The container is configured through a combination of command-line arguments and YAML files placed in the /data volume.

  • Entrypoint Arguments: The default entrypoint sets the primary data and cache paths: ENTRYPOINT ["dotnet", "DICOMCapacitorService.dll", "--path=/data", "--config.cachePath=/cache"]
  • Configuration Files: Place your config.yml, nodes.yml, mutations.yml, etc., inside the host directory mounted to /data (e.g., ./capacitor-data/config). The service will automatically load them on startup.
Volumes
  • /data: The primary persistent storage for configuration files (nodes.yml, config.yml), logs, and other application data.
  • /cache: The DICOM cache directory. DICOM instances are stored here temporarily before being forwarded to their destination. This directory is subdivided into states like new, prepared, failed, etc.
Ports
  • 1040: The default DICOM SCP port that the service listens on.

Tag summary

Content type

Image

Digest

sha256:37248e9ae

Size

169.5 MB

Last updated

11 days ago

docker pull fluxinc/dicom-capacitor