Skip to content

Nodes

The nodes.yml file is a list of nodes that DICOM Capacitor will use to send and receive DICOM data.

Example Configuration

yaml
---
- AeTitle: STORE_SCP
  Aliases:
    - PACS
  HostName: 127.0.0.1
  Port: 104
  TransferSyntax:
  NodeRole: Storage
  BatchSize: 0
  MinimumLineSpeed: 0
  ProcessSchedule:
    - 00:00 - 23:59
  ProcessNetworks:
    - 192.168.100.4 / 255.255.255.0

AeTitle

  • Type: string
  • Default: DESTINATION

The AE Title that is used when initiating associations with this node. In the example above, clients that wish to send DICOM data to this node should use the Called AE Title STORE_SCP.

Capacitor will respond affirmatively to any C-ECHO and C-Store association intended for this AE Title, as well as this AE title prefixed with config.yml/aeTitlePrefix.

Aliases

  • Type: string[]
  • Default: []
  • Optional

A YAML array of aliases that DICOM Capacitor will use to identify the node. In the example above, associations intended for the PACS will be delivered to STORE_SCP instead.

Capacitor will respond affirmatively to any C-ECHO and C-Store association intended for these aliases.

BatchSize

  • Type: number
  • Default: "" (inherits from config.yml)
  • Optional

The number of DICOM images to process in a single batch. Any value other than blank overrides the value set in config.yml/batchSize for only this node.

HostName

  • Type: string
  • Default: 127.0.0.1

The IP address or hostname of the node.

Impersonate

  • Type: boolean
  • Default: false
  • Optional

When enabled, DICOM Capacitor will assume the AE Title of the original calling client when making outbound requests to this node, instead of using the myAeTitle from config.yml.

This is useful when the destination node needs to know the original source of the data. For example:

  • A PACS that uses the calling AE Title for routing or access control
  • A worklist server that filters results based on the requesting modality
  • Systems that log or track data by the originating AE Title

Example:

yaml
- AeTitle: PACS
  HostName: 192.168.1.100
  Port: 104
  Impersonate: true  # PACS will see the original modality's AE Title

When Impersonate is false (default), all outbound requests use the AE Title defined in config.yml/myAeTitle.

MinimumLineSpeed

  • Type: number
  • Default: "" (inherits from config.yml)
  • Optional

The minimum transmission speed, in KB/s, that DICOM Capacitor will use to determine if a storage operation has failed. This value overrides the config.yml/minimumLineSpeed setting for this node.

NodeRole

  • Type: string
  • Default: Storage

The role of the node.

Accepted values:

  • Storage - The node is a Storage SCP, and Capacitor will relay data to it
  • QueryRetrieve - The node is a Query/Retrieve SCP, and Capacitor will relay queries to it
  • Worklist - The node is a Worklist SCP, and Capacitor will relay queries to it, and cache (and mutate) the results
  • StorageCommitSCP - The node is a Storage Commitment SCP, and Capacitor will relay requests to it
  • StorageCommitSCU - The node is a Storage Commitment SCU, and Capacitor will relay requests to it

Specific roles may require and allow additional configuration in config.yml, nodes.yml, and mutations.yml.

Port

  • Type: number
  • Default: 104

The port that the node is listening on.

Priority

  • Type: number
  • Default: 0
  • Optional

The DICOM priority level for operations with this node. This affects the priority field in DICOM messages.

Accepted values:

  • 0 - Medium priority (default)
  • 1 - High priority
  • 2 - Low priority

SopClassPriorities

  • Type: string[]
  • Default: []
  • Optional

An ordered list of SOP Class UIDs used to prioritize the delivery queue for this storage destination. Earlier entries have higher queue priority. Items with the same resolved priority are still processed FIFO by creation time.

Use the special default entry to set where unlisted SOP classes should fall in the order. If default is omitted, unlisted SOP classes receive the lowest priority below every listed SOP class. If SopClassPriorities is omitted entirely, the node keeps normal FIFO delivery.

This setting applies only to NodeRole: Storage.

Use this when queue order matters clinically or operationally. A common example is sending small 2D acquisition images first so they are visible quickly at the destination, while lower-priority derived objects, documentation, or bulky secondary captures can wait behind them.

Behavior:

  • Priority is evaluated per queued item for this destination.
  • Higher-priority items can overtake older lower-priority backlog on the next send-batch refresh.
  • Items with the same resolved priority remain FIFO.
  • A batch already in flight is not interrupted.

This is different from other ordering controls:

  • Priority on the node is the DICOM message priority field, not queue scheduling.
  • SopClassPriorities changes backlog scheduling across queued files for one destination.
  • sortings.yml and Lua sorting are still the tools for ordering files within the same priority class or within a study/batch.

Example:

yaml
- AeTitle: PACS
  HostName: 192.168.1.100
  Port: 104
  NodeRole: Storage
  SopClassPriorities:
    - 1.2.840.10008.5.1.4.1.1.1      # Computed Radiography Image Storage
    - 1.2.840.10008.5.1.4.1.1.1.1    # Digital X-Ray Image Storage - For Presentation
    - default

Example: urgent 2D before routine backlog

yaml
- AeTitle: REVIEW_PACS
  HostName: 192.168.1.50
  Port: 104
  NodeRole: Storage
  SopClassPriorities:
    - 1.2.840.10008.5.1.4.1.1.1      # CR Image Storage
    - 1.2.840.10008.5.1.4.1.1.2      # CT Image Storage
    - default                        # normal queue position for everything else
    - 1.2.840.10008.5.1.4.1.1.7      # Secondary Capture Image Storage

Example: keep default FIFO, but push reports to the back

yaml
- AeTitle: ARCHIVE
  HostName: 192.168.1.60
  Port: 104
  NodeRole: Storage
  SopClassPriorities:
    - default
    - 1.2.840.10008.5.1.4.1.1.104.1  # Encapsulated PDF Storage

ProcessDelay

  • Type: number
  • Default: "" (inherits from config.yml)
  • Optional

The number of milliseconds to delay delivery of prepared studies for this specific node. This overrides the global config.yml/processDelay setting.

This is part of the "Adaptive Study Delivery Window" system. See config.yml/processDelay for more details.

Example:

yaml
- AeTitle: PACS
  HostName: 192.168.1.100
  Port: 104
  ProcessDelay: 30000  # Wait 30 seconds before delivery to this node

ProcessNetworks

  • Type: string[]
  • Default: []
  • Optional

A YAML array of CIDR ranges DICOM Capacitor will compare against all local network adapters to determine when to process data for this node.

Example:

yaml
ProcessNetworks:
  - 192.168.100.4 / 255.255.255.0  # requires specific subnet using mask
  - 192.168.100.0                  # requires specific subnet address
  - 192.168.100.4                  # requires specific ip address (no mask)

ProcessSchedule

  • Type: string[]
  • Default: []
  • Optional

A YAML array of time ranges that DICOM Capacitor will use to determine when to process data for this node.

Example:

yaml
ProcessSchedule:
  - 00:00 - 23:59
  - 13:30 - 17:00

TransferSyntax

  • Type: string
  • Default: "" (inherits from incoming image or config.yml)
  • Optional

The transfer syntax that Capacitor will use when sending data to this node. If this value is not provided, Capacitor will use the transfer syntax of the incoming image, or the value defined in config.yml/defaultTransferSyntax if set.

Accepted values are the same as those in config.yml/defaultTransferSyntax.