⚠️ Ceci est un site de traduction non officiel, sans lien avec DCMTK / OFFIS. Pour des informations faisant autorité, consultez la page originale (https://support.dcmtk.org/docs/dcmsend.html).

dcmsend: SCU simple de stockage DICOM (émetteur)

SYNOPSIS

dcmsend [options] peer port dcmfile-in...

DESCRIPTION

dcmsend est une application qui met en œuvre un SCU (Service Class User) pour la classe de service Storage. Contrairement à l'utilitaire bien connu storescu, dcmsend propose moins d'options et s'avère donc plus simple d'emploi - ce qui explique d'ailleurs le terme "simple" dans le titre. L'objectif principal de cette application est d'envoyer un grand nombre de fichiers DICOM à un SCP (Service Class Provider) de la classe de service Storage. dcmsend prend en charge à la fois les associations multiples (l'une après l'autre) et la décompression des instances SOP DICOM si nécessaire pour les transférer.

PARAMÈTRES

peer        hostname of DICOM peer

port        tcp/ip port number of peer

dcmfile-in  DICOM file or directory to be transmitted

OPTIONS

options générales

-h --help
affiche cette aide et quitte
--version
affiche les informations de version et quitte
--list-decoders
affiche la liste des syntaxes de transfert des decoders et quitte
--arguments
affiche les arguments de ligne de commande développés
-q --quiet
mode silencieux, n'affiche ni avertissements ni erreurs
-v --verbose
mode détaillé, affiche les détails du traitement
-d --debug
mode débogage, affiche les informations de débogage
-ll --log-level [l]evel: string constant
(fatal, error, warn, info, debug, trace) utilise le niveau l pour la journalisation
-lc --log-config [f]ilename: string
utilise le fichier de configuration f pour la journalisation
+v --verbose-pc
affiche les contextes de présentation en mode détaillé

options d'entrée

+f --read-file
lit le format de fichier ou le jeu de données
+fo --read-file-only
lit uniquement le format de fichier (par défaut)
-f --read-dataset
lit le jeu de données sans les informations méta du fichier. fichiers d'entrée :
+rd --read-from-dicomdir
lit les informations sur les fichiers d'entrée à partir du DICOMDIR
+sd --scan-directories
parcourt les répertoires à la recherche des fichiers d'entrée (dcmfile-in)
+sp --scan-pattern [p]attern: string (only with --scan-directories)
motif pour la correspondance de noms de fichiers (caractères génériques) # peut-être pas disponible sur tous les systèmes
-r --no-recurse
ne parcourt pas les répertoires de manière récursive (par défaut)
+r --recurse
parcourt de manière récursive les répertoires spécifiés

options de traitement

-dn --decompress-never
ne décompresse jamais les jeux de données compressés
+dls --decompress-lossless
décompresse uniquement les compressions sans perte (par défaut)
+dly --decompress-lossy
décompresse à la fois les compressions avec et sans perte. niveau de compression deflate :
+cl --compression-level [l]evel: integer (default: 6)
0=non compressé, 1=le plus rapide, 9=meilleure compression. autres options de traitement :
-nh --no-halt
ne s'arrête pas au premier fichier d'entrée invalide ni en cas d'échec de stockage
-nip --no-illegal-proposal
ne propose aucun contexte de présentation qui ne contient pas la syntaxe de transfert par défaut (si nécessaire)
-nuc --no-uid-checks
ne vérifie pas les valeurs UID des fichiers d'entrée

options réseau

-i4 --ipv4
utilise uniquement IPv4 (par défaut)
-i6 --ipv6
utilise uniquement IPv6
-i0 --ip-auto
utilise une résolution DNS pour déterminer le protocole IP. titres d'entité applicative :
-aet --aetitle [a]etitle: string
définit mon AE Title appelant (par défaut : DCMSEND)
-aec --call [a]etitle: string
définit l'AE Title appelé du pair (par défaut : ANY-SCP). gestion des associations :
+ma --multi-associations
utilise plusieurs associations (l'une après l'autre) si nécessaire pour transférer les instances (par défaut)
-ma --single-association
utilise toujours une seule association. autres options réseau :
-to --timeout [s]econds: integer (default: unlimited)
délai d'attente pour les requêtes de connexion
-ta --acse-timeout [s]econds: integer (default: 30)
délai d'attente pour les messages ACSE
-td --dimse-timeout [s]econds: integer (default: unlimited)
délai d'attente pour les messages DIMSE
-pdu --max-pdu [n]umber of bytes: integer (4096..131072)
définit la PDU de réception maximale à n octets (par défaut : 16384)
--max-send-pdu [n]umber of bytes: integer (4096..131072)
limite la PDU d'envoi maximale à n octets

options de sortie

general:

  +crf  --create-report-file  [f]ilename: string
          create a detailed report on the transfer
          (if successful) and write it to text file f

NOTES

Utilisation typique

Un cas d'usage typique de dcmsend consiste à envoyer à un SCP de stockage des instances SOP arbitraires stockées sous forme de fichiers DICOM. La commande suivante permet précisément de faire cela :

dcmsend --verbose <peer> <port> *.dcm

Si les fichiers DICOM sont stockés dans une hiérarchie de répertoires sous le répertoire "IMAGES", la commande suivante peut être utilisée :

dcmsend -v <peer> <port> --scan-directories --recurse IMAGES

Il est également possible de spécifier plusieurs répertoires et de combiner les approches précédentes (en utilisant à la fois des noms de fichiers et de répertoires) :

dcmsend -v +sd +r <peer> <port> IMAGES_1 IMAGES_2 test.img *.dcm

Si les instances SOP sont référencées à partir d'un fichier DICOMDIR, l'option –read-from-dicomdir (ou +rd) permet d'envoyer tous les fichiers DICOM référencés sans avoir à les charger au préalable pour la négociation de l'association :

dcmsend -v <peer> <port> --read-from-dicomdir DICOMDIR

Et là encore, toutes les approches ci-dessus peuvent être combinées comme suit :

dcmsend -v +sd +r +rd <peer> <port> IMAGES_1 IMAGES_2 test.img DICOMDIR *.dcm

L'option par défaut –read-file-only garantit que seuls les fichiers DICOM (c'est-à-dire ceux qui possèdent un méta-en-tête et le mot magique "DICM" après le préambule) sont traités. En général, lorsqu'on traite un grand nombre de fichiers, il est également judicieux de ne pas s'arrêter au premier fichier d'entrée invalide ou en cas d'échec de stockage. Cela peut être obtenu en utilisant l'option –no-halt. Notez, toutefois, qu'un "échec de stockage" ne signifie pas que le statut DIMSE de la réponse C-STORE indique une erreur. Cela signifie que la requête C-STORE n'a pas pu être envoyée au SCP de stockage.

Si plus de 128 contextes de présentation sont nécessaires, ce qui correspond au nombre maximal autorisé par la norme DICOM, une nouvelle association est démarrée une fois la précédente terminée. Si ce comportement n'est pas souhaité, il peut être désactivé au moyen de l'option –single-association. De plus, les options –decompress-xxx permettent de préciser si seuls les jeux de données compressés sans perte sont décompressés (si nécessaire), ce qui est le comportement par défaut, ou si les jeux de données compressés avec perte le sont également.

Afin d'obtenir à la fois une vue d'ensemble et des informations détaillées sur le transfert des instances SOP DICOM, l'option –create-report-file permet de créer un fichier texte correspondant. Ce fichier n'est toutefois créé qu'en dernière étape, si l'application ne s'est pas terminée auparavant (avec une erreur).

Parcours des répertoires

Indiquer des répertoires en paramètre de la ligne de commande n'a de sens que si l'option –scan-directories est également spécifiée. Si les fichiers des répertoires fournis doivent être sélectionnés selon un motif de nom particulier (par exemple au moyen de caractères génériques), l'option –scan-pattern doit être utilisée. Notez que ce motif de fichiers ne s'applique qu'aux fichiers situés dans les répertoires parcourus, et que, si d'autres motifs sont spécifiés sur la ligne de commande en dehors de l'option –scan-pattern (par exemple pour sélectionner d'autres fichiers), ceux-ci ne s'appliquent pas aux répertoires indiqués.

Ainsi, le troisième des exemples ci-dessus parcourt de manière récursive les répertoires IMAGES_1 et IMAGES_2 et transmet les fichiers contenus dans ces deux dossiers ainsi que dans tous leurs sous-dossiers (grâce à l'option +r). De plus, dcmsend transfère "test.img" ainsi que tous les fichiers portant l'extension "dcm" présents dans le dossier de travail courant. Notez qu'indiquer des noms de répertoires sans activer l'option +sd n'a pas de sens.

Conformité DICOM

dcmsend prend en charge, en tant que SCU, l'ensemble des classes SOP Storage, y compris les classes privées. Par défaut, l'application vérifie l'UID de classe SOP du fichier DICOM afin de garantir que seules des instances SOP valides sont envoyées. Cette vérification peut être désactivée avec l'option –no-uid-checks.

dcmsend prend également en charge toutes les syntaxes de transfert définies par la norme DICOM. Les syntaxes de transfert privées ne peuvent être utilisées que si la vérification de l'UID est désactivée avec l'option –no-uid-checks. Notez, toutefois, que seul un nombre limité de syntaxes de transfert peuvent être converties vers la syntaxe de transfert par défaut DICOM (Implicit VR Little Endian). L'option –list-decoders permet de lister les syntaxes de transfert prises en charge nativement ou par des decoders. La sortie se présente généralement comme suit :

Transfer Syntaxes supported natively:
- Little Endian Implicit
- Little Endian Explicit
- Big Endian Explicit

Transfer Syntaxes supported by decoders:
- Deflated Explicit VR Little Endian
- JPEG Baseline
- JPEG Extended, Process 2+4
- JPEG Spectral Selection, Non-hierarchical, Process 6+8
- JPEG Full Progression, Non-hierarchical, Process 10+12
- JPEG Lossless, Non-hierarchical, Process 14
- JPEG Lossless, Non-hierarchical, 1st Order Prediction
- JPEG-LS Lossless
- JPEG-LS Lossy (Near-lossless)
- RLE Lossless

dcmsend cherchant à rester aussi simple que possible pour l'utilisateur, des contextes de présentation à proprement parler "illégaux" peuvent par défaut être proposés au SCP. Ceci s'explique par le fait que, selon la norme DICOM, le SCU doit toujours proposer la syntaxe de transfert par défaut DICOM dans au moins un contexte de présentation associé à chaque syntaxe abstraite (c'est-à-dire chaque classe SOP). Cette exigence est levée si le SCU n'a accès à l'instance SOP que sous une forme compressée avec perte, ou si les données de pixels décompressées seraient trop volumineuses pour être encodées. L'option –no-illegal-proposal permet d'imposer un comportement strictement conforme à DICOM, c'est-à-dire qu'aucun contexte de présentation potentiellement illégal ne sera proposé, mais l'instance SOP correspondante sera rejetée (si nécessaire). Notez, toutefois, que la taille des données de pixels décompressées n'est pas vérifiée.

La syntaxe de transfert par défaut pour "Lossless JPEG Compression", "Lossy JPEG Compression", etc., n'est pas toujours proposée comme l'exige pourtant la norme DICOM. La même limitation s'applique aux autres schémas de compression. Consultez la section 10 de DICOM PS 3.5 pour plus de détails.

JOURNALISATION

Le niveau de détail de la journalisation des différents outils en ligne de commande et des bibliothèques sous-jacentes peut être spécifié par l'utilisateur. Par défaut, seules les erreurs et les avertissements sont écrits dans le flux d'erreur standard. L'option –verbose permet également de signaler des messages d'information tels que les détails du traitement. L'option –debug permet d'obtenir plus de détails sur l'activité interne, par exemple à des fins de débogage. L'option –log-level permet de sélectionner d'autres niveaux de journalisation. En mode –quiet, seules les erreurs fatales sont signalées. Dans de tels cas d'erreur très graves, l'application se termine généralement. Pour plus de détails sur les différents niveaux de journalisation, consultez la documentation du module "oflog".

Si la sortie de la journalisation doit être écrite dans un fichier (éventuellement avec rotation des fichiers journaux), vers syslog (Unix) ou le journal des événements (Windows), l'option –log-config peut être utilisée. Ce fichier de configuration permet également de diriger uniquement certains messages vers un flux de sortie particulier et de filtrer certains messages en fonction du module ou de l'application qui les génère. Un exemple de fichier de configuration est fourni dans < etcdir>/logger.cfg.

LIGNE DE COMMANDE

Tous les outils en ligne de commande utilisent la notation suivante pour les paramètres : les crochets entourent les valeurs facultatives (0-1), trois points de suspension à la fin indiquent que plusieurs valeurs sont autorisées (1-n), et la combinaison des deux signifie de 0 à n valeurs.

Les options de la ligne de commande se distinguent des paramètres par un signe '+' ou '-' en tête. En général, l'ordre et la position des options de la ligne de commande sont arbitraires (c'est-à-dire qu'elles peuvent apparaître n'importe où). Toutefois, si des options s'excluent mutuellement, c'est la dernière occurrence, la plus à droite, qui est utilisée. Ce comportement est conforme aux règles d'évaluation standard des shells Unix courants.

De plus, un ou plusieurs fichiers de commandes peuvent être spécifiés en utilisant un signe '@' comme préfixe du nom de fichier (par exemple @command.txt). Un tel argument de commande est remplacé par le contenu du fichier texte correspondant (les espaces multiples sont traités comme un séparateur unique, sauf s'ils apparaissent entre deux guillemets) avant toute évaluation ultérieure. Notez qu'un fichier de commandes ne peut pas contenir un autre fichier de commandes. Cette approche simple mais efficace permet de regrouper des combinaisons courantes d'options/paramètres et évite des lignes de commande longues et peu lisibles (un exemple est fourni dans le fichier < datadir>/dumppat.txt).

CODES DE SORTIE

L'utilitaire dcmsend utilise les codes de sortie suivants lorsqu'il se termine. Cela permet à l'utilisateur de vérifier la raison pour laquelle l'application s'est terminée.

général

EXITCODE_NO_ERROR                         0
EXITCODE_COMMANDLINE_SYNTAX_ERROR         1

erreurs de fichier d'entrée

EXITCODE_CANNOT_READ_INPUT_FILE          20 (*)
EXITCODE_NO_INPUT_FILES                  21
EXITCODE_INVALID_INPUT_FILE              22
EXITCODE_NO_VALID_INPUT_FILES            23

erreurs de fichier de sortie

EXITCODE_CANNOT_WRITE_OUTPUT_FILE        40 (*)
EXITCODE_CANNOT_WRITE_REPORT_FILE        43

erreurs réseau

EXITCODE_CANNOT_INITIALIZE_NETWORK       60
EXITCODE_CANNOT_NEGOTIATE_ASSOCIATION    61
EXITCODE_CANNOT_SEND_REQUEST             62
EXITCODE_CANNOT_ADD_PRESENTATION_CONTEXT 65

() En réalité, ces codes ne sont actuellement pas utilisés par dcmsend*, mais servent d'espace réservé pour le groupe de codes de sortie correspondant.

ENVIRONNEMENT

L'utilitaire dcmsend tente de charger les dictionnaires de données DICOM spécifiés dans la variable d'environnement DCMDICTPATH. Par défaut, c'est-à-dire si la variable d'environnement DCMDICTPATH n'est pas définie, le fichier < datadir>/dicom.dic est chargé, sauf si le dictionnaire est intégré à l'application (par défaut sous Windows).

Il est préférable de conserver le comportement par défaut et de n'utiliser la variable d'environnement DCMDICTPATH que lorsque des dictionnaires de données alternatifs sont nécessaires. La variable d'environnement DCMDICTPATH a le même format que la variable PATH des shells Unix, en ce sens que les deux-points (":") séparent les entrées. Sur les systèmes Windows, le point-virgule (";") est utilisé comme séparateur. Le code du dictionnaire de données tente de charger chaque fichier spécifié dans la variable d'environnement DCMDICTPATH. C'est une erreur si aucun dictionnaire de données ne peut être chargé.

VOIR AUSSI

dcmrecv(1), storescu(1), storescp(1)

Copyright (C) 2011-2025 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany.