tiny_pacs.client

DICOM Client component implementation.

Classes

Client(bus, config)

Simple component that can create DICOM Client for provided AE Title.

ClientConfig(*[, on])

Configuration of the Client component.

DICOMClient(local_ae, remote_ae)

DICOM Client implementation.

FindRoot(value[, names, module, qualname, ...])

Roots for C-FIND.

MoveRoot(value[, names, module, qualname, ...])

Roots for C-MOVE

Exceptions

CEchoError(status, *args)

C-ECHO failure

CFindError(status, *args)

C-FIND failure

CMoveError(status, *args)

C-MOVE failure

CStoreError(status, *args)

C-STORE failure

DICOMClientError(status, *args)

DICOM Client error.

DestinationUnknownError

C-MOVE destination unknown failure

class tiny_pacs.client.FindRoot(value, names=<not given>, *values, module=None, qualname=None, type=None, start=1, boundary=None)[source]

Bases: Enum

Roots for C-FIND.

PAITNET = '1.2.840.10008.5.1.4.1.2.1.1'

Patient root SOP Class UID

STUDY = '1.2.840.10008.5.1.4.1.2.2.1'

Study root SOP Class UID

class tiny_pacs.client.MoveRoot(value, names=<not given>, *values, module=None, qualname=None, type=None, start=1, boundary=None)[source]

Bases: Enum

Roots for C-MOVE

PATIENT = '1.2.840.10008.5.1.4.1.2.1.2'

Patient root SOP Class UID

STUDY = '1.2.840.10008.5.1.4.1.2.2.2'

Study root SOP Class UID

exception tiny_pacs.client.DICOMClientError(status: Status, *args: object)[source]

Bases: Exception

DICOM Client error.

Base class for all DICOM-related client interaction errors.

Variables:

status – DICOM error status code

Initializes the error.

Parameters:
  • status (statuses.Status) – DICOM error status code

  • args – exception message arguments

exception tiny_pacs.client.CEchoError(status: Status, *args: object)[source]

Bases: DICOMClientError

C-ECHO failure

Initializes the error.

Parameters:
  • status (statuses.Status) – DICOM error status code

  • args – exception message arguments

exception tiny_pacs.client.CFindError(status: Status, *args: object)[source]

Bases: DICOMClientError

C-FIND failure

Initializes the error.

Parameters:
  • status (statuses.Status) – DICOM error status code

  • args – exception message arguments

exception tiny_pacs.client.CStoreError(status: Status, *args: object)[source]

Bases: DICOMClientError

C-STORE failure

Initializes the error.

Parameters:
  • status (statuses.Status) – DICOM error status code

  • args – exception message arguments

exception tiny_pacs.client.CMoveError(status: Status, *args: object)[source]

Bases: DICOMClientError

C-MOVE failure

Initializes the error.

Parameters:
  • status (statuses.Status) – DICOM error status code

  • args – exception message arguments

exception tiny_pacs.client.DestinationUnknownError[source]

Bases: Exception

C-MOVE destination unknown failure

class tiny_pacs.client.ClientConfig(*, on: bool = False)[source]

Bases: ComponentConfig

Configuration of the Client component.

The client has no settings of its own (device settings come from the Devices component); this model exists so the component provides its own config type to the loader like every other component.

Create a new model by parsing and validating input data from keyword arguments.

Raises [ValidationError][pydantic_core.ValidationError] if the input data cannot be validated to form a valid model.

self is explicitly positional-only to allow self as a field name.

model_config: ClassVar[ConfigDict] = {'extra': 'forbid'}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class tiny_pacs.client.Client(bus: EventBus, config: ClientConfig | dict[str, Any])[source]

Bases: Component[ClientConfig]

Simple component that can create DICOM Client for provided AE Title.

Component initialization.

Subscribes to GetClient.

Parameters:
  • bus (trolleybus.EventBus) – event bus

  • config (ClientConfig or dict) – component configuration

config_model

alias of ClientConfig

get(remote_aet: str) DICOMClient[source]

Gets a DICOM client for provided AE Title

Parameters:

remote_aet (str) – remote AE title for the client

Raises:

DestinationUnknownError – raised if component can not find settings for provided AE Title

Returns:

DICOM Client

Return type:

DICOMClient

class tiny_pacs.client.DICOMClient(local_ae: str, remote_ae: DeviceConfig | dict[str, Any])[source]

Bases: object

DICOM Client implementation.

Provides some convenience wrappers around common services in the SCU role.

Variables:
  • msg_id – current message ID

  • local_ae – local AE Title

  • remote_ae – remote AE Title

  • aet – ClientAE instance for accessing DICOM services

  • log – logger

Initializes the client.

Parameters:
echo() None[source]

Sends C-ECHO message (verification SCU)

Raises:

CEchoError – raised when the C-ECHO-RSP status indicates a failure

find(ds: Dataset, root: FindRoot = FindRoot.STUDY) Iterator[Dataset][source]

Makes a Q/R C-FIND request

Parameters:
  • ds (pydicom.Dataset) – C-FIND request (search parameters)

  • root (FindRoot, optional) – C-FIND root, defaults to FindRoot.STUDY

Raises:

CFindError – raised if a C-FIND-RSP status indicates a failure

Yield:

C-FIND results

Return type:

Iterator[pydicom.Dataset]

store(ds: Dataset | str, sop_class_uid: UID | None = None, transfer_syntax: UID | None = None) None[source]

Send a C-STORE request with provided dataset

Parameters:
  • ds (pydicom.Dataset | str) – dataset to store (filename or dataset itself)

  • sop_class_uid (uid.UID, optional) – dataset SOP Class UID, defaults to None

  • transfer_syntax (uid.UID, optional) – dataset Transfer Syntax UID, defaults to None

store_with_asce(asce: AssociationRequester, ds: Dataset | str, sop_class_uid: UID) None[source]

Make a C-STORE request with existing association

Parameters:
  • asce (asceprovider.AssociationRequester) – existing association

  • ds (pydicom.Dataset | str) – dataset to store (filename or dataset itself)

  • sop_class_uid (uid.UID) – dataset SOP Class UID

Raises:

CStoreError – raised if C-STORE failed

move(ds: Dataset, root: MoveRoot = MoveRoot.STUDY, dest_ae: str | None = None) None[source]

Makes a C-MOVE request to destination AE Title (or self, if not specified)

Parameters:
  • ds (pydicom.Dataset) – C-MOVE request dataset

  • root (MoveRoot, optional) – C-MOVE root, defaults to MoveRoot.STUDY

  • dest_ae (str, optional) – destination AE Title, defaults to None

move_instance(study_uid: UID, series_uid: UID, instance_uid: UID, dest_ae: str | None = None, asce: AssociationRequester | None = None) None[source]

Makes a C-MOVE request for a single instance to destination AE Title (or self, if not specified)

Parameters:
  • study_uid (uid.UID) – Study Instance UID

  • series_uid (uid.UID) – Series Instance UID

  • instance_uid (uid.UID) – SOP Instance UID

  • dest_ae (str, optional) – destination AE Title, defaults to None

  • asce (asceprovider.AssociationRequester, optional) – existing association, defaults to None