⚠️ 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/dcmrecv.html).

dcmrecv: SCP de stockage DICOM simple (récepteur)

SYNOPSIS

dcmrecv [options] port

DESCRIPTION

dcmrecv est une application qui implémente un fournisseur de classe de service (SCP) pour la classe de service de stockage. Contrairement à l'utilitaire bien connu storescp, dcmrecv propose moins d'options et peut donc s'avérer plus simple à utiliser, ce qui explique d'ailleurs le terme "simple" dans le titre. L'objectif principal de cette application est de recevoir un grand nombre de jeux de données DICOM envoyés par un utilisateur de classe de service de stockage (SCU) et de les enregistrer selon une structure de répertoires et de fichiers configurable.

PARAMÈTRES

port  tcp/ip port number to listen on

OPTIONS

options générales

-h --help
affiche cette aide et quitte
--version
affiche les informations de version 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 réseau

-i4 --ipv4
utilise IPv4 uniquement (par défaut)
-i6 --ipv6
utilise IPv6 uniquement
-i0 --ip-auto
utilise le profil de négociation d'association à double pile IPv6/IPv4 depuis le fichier de configuration :
-xf --config-file [f]ilename, [p]rofile: string
utilise le profil p du fichier de configuration f. titre d'entité d'application :
-uca --use-called-aetitle
répond toujours avec l'AE title appelé (par défaut)
-aet --aetitle [a]etitle: string
définit mon AE title et vérifie l'AE title appelé. autres options réseau :
-ta --acse-timeout [s]econds: integer (default: 30)
délai d'expiration pour les messages ACSE
-td --dimse-timeout [s]econds: integer (default: unlimited)
délai d'expiration pour les messages DIMSE
-pdu --max-pdu [n]umber of bytes: integer (4096..131072)
définit la pdu maximale reçue à n octets (par défaut : 16384)

-dhl --disable-host-lookup disable hostname lookup

options de sécurité de la couche transport (TLS)

-tls --disable-tls
utilise une connexion TCP/IP normale (par défaut)
+tls --enable-tls [p]rivate key file, [c]ertificate file: string
utilise une connexion TLS sécurisée authentifiée. mot de passe de la clé privée (uniquement avec --enable-tls) :
+ps --std-passwd
invite l'utilisateur à saisir le mot de passe sur l'entrée standard (par défaut)
+pw --use-passwd [p]assword: string
utilise le mot de passe indiqué
-pw --null-passwd
utilise une chaîne vide comme mot de passe. format du fichier de clé et de certificat :
-pem --pem-keys
lit les clés et certificats comme fichier PEM (par défaut)
-der --der-keys
lit les clés et certificats comme fichier DER. autorité de certification :
+cf --add-cert-file [f]ilename: string
ajoute le fichier de certificat à la liste des certificats
+cd --add-cert-dir [d]irectory: string
ajoute les certificats de d à la liste des certificats
+crl --add-crl-file [f]ilename: string
ajoute un fichier de liste de révocation de certificats (implique --enable-crl-vfy)
+crv --enable-crl-vfy
active la vérification CRL du certificat feuille
+cra --enable-crl-all
active la vérification CRL de la chaîne complète. profil de sécurité :
+ph --list-profiles
affiche la liste des profils TLS pris en charge et quitte
+pg --profile-8996
Profil TLS BCP 195 RFC 8996 (par défaut)
+pm --profile-8996-mod
Profil TLS BCP 195 RFC 8996 modifié # only available if underlying TLS library supports # all TLS features required for this profile
+py --profile-bcp195-nd
Profil TLS BCP 195 sans rétrogradation (obsolète)
+px --profile-bcp195
Profil TLS BCP 195 (obsolète)
+pz --profile-bcp195-ex
Profil TLS BCP 195 étendu (obsolète)
+pb --profile-basic
Profil de connexion de transport sécurisée TLS de base (obsolète) # only available if underlying TLS library supports 3DES
+pa --profile-aes
Profil de connexion de transport sécurisée TLS AES (obsolète)
+pn --profile-null
Communication non chiffrée authentifiée (obsolète, utilisée auparavant dans IHE ATNA). suite de chiffrement :
+cc --list-ciphers
affiche la liste des suites de chiffrement TLS prises en charge et quitte
+cs --cipher [c]iphersuite name: string
ajoute la suite de chiffrement à la liste des suites négociées
+dp --dhparam [f]ilename: string
lit les paramètres DH pour les suites de chiffrement DH/DSS. indication du nom de serveur :
--no-sni
n'utilise pas SNI (par défaut)
--expect-sni [s]erver name: string
attend des requêtes pour le nom de serveur s. générateur pseudo-aléatoire :
+rs --seed [f]ilename: string
initialise le générateur aléatoire avec le contenu de f
+ws --write-seed
réécrit la graine modifiée (uniquement avec --seed)
+wf --write-seed-file [f]ilename: string (only with --seed)
écrit la graine modifiée dans le fichier f. authentification du pair :
-rc --require-peer-cert
vérifie le certificat du pair, échoue s'il est absent (par défaut)
-vc --verify-peer-cert
vérifie le certificat du pair s'il est présent
-ic --ignore-peer-cert
ne vérifie pas le certificat du pair

options de sortie

-od --output-directory [d]irectory: string (default: ".")
écrit les objets reçus dans le répertoire existant d. génération de sous-répertoires :
-s --no-subdir
ne génère aucun sous-répertoire (par défaut)
+ssd --series-date-subdir
génère des sous-répertoires à partir de la date de série. génération du nom de fichier :
+fd --default-filenames
génère le nom de fichier à partir de l'UID d'instance (par défaut)
+fu --unique-filenames
génère un nom de fichier unique basé sur un nouvel UID
+fsu --short-unique-names
génère un nom de fichier unique court et pseudo-aléatoire
+fst --system-time-names
génère le nom de fichier à partir de l'heure système actuelle
-fe --filename-extension [e]xtension: string (default: none)
ajoute e à tous les noms de fichiers générés. mode de stockage :
-B --normal
autorise les conversions de format implicites (par défaut)
+B --bit-preserving
écrit le jeu de données exactement tel qu'il a été reçu
--ignore
ignore le jeu de données, le reçoit mais ne l'enregistre pas

NOTES

Utilisation typique

Un cas d'usage typique de dcmrecv consiste à recevoir des instances SOP envoyées par un SCU de stockage et à les enregistrer sous forme de fichiers DICOM. La commande suivante fait exactement cela :

dcmrecv --verbose <port> --config-file storescp.cfg default

Si vous préférez une structure de sous-répertoires créée automatiquement, des noms de fichiers plus courts et l'extension ".dcm" pour tous les fichiers DICOM, utilisez la commande suivante :

dcmrecv -v -xf storescp.cfg default <port> --series-date-subdir
                                           --short-unique-names
                                           --filename-extension .dcm

Dans le cas d'instances SOP très volumineuses, ou si le jeu de données doit être écrit exactement tel qu'il a été reçu (par exemple à des fins de débogage), le "mode bit preserving" peut être utilisé :

dcmrecv -v -xf storescp.cfg default <port> --bit-preserving

Les jeux de données reçus sont toujours enregistrés sous forme de fichiers DICOM avec la même syntaxe de transfert que celle utilisée pour la transmission réseau.

Conformité DICOM

En principe, l'application dcmrecv prend en charge toutes les classes SOP de stockage en tant que SCP, y compris les classes privées. Cela nécessite toutefois qu'un profil de négociation d'association correspondant soit chargé depuis un fichier de configuration. Le format et la sémantique de ce fichier de configuration sont documentés dans asconfig.txt.

Par défaut, c'est-à-dire si aucun profil de négociation d'association n'est chargé, dcmrecv ne prend en charge que la classe SOP Verification en tant que SCP (avec la syntaxe de transfert par défaut, c'est-à-dire Implicit VR Little Endian).

À l'avenir, il pourrait y avoir des options supplémentaires permettant de spécifier directement la liste des contextes de présentation pris en charge (c'est-à-dire la combinaison d'une classe SOP et d'une syntaxe de transfert), c'est-à-dire sans charger de fichier de configuration.

Génération de sous-répertoires

L'option –series-date-subdir permet de générer des sous-répertoires (sous le répertoire de sortie indiqué) en fonction de la valeur de l'élément de données Series Date (0008,0021) du jeu de données DICOM reçu. Si cette valeur peut être extraite du jeu de données et est valide (c'est-à-dire qu'elle constitue un champ de date DICOM valide), la structure de sous-répertoires est la suivante :

<output-directory>/data/<year>/<month>/<day>/<filename>

Si la Series Date (0008,0021) ne peut pas être extraite ou n'est pas valide, la date système actuelle est utilisée pour la structure de sous-répertoires suivante :

<output-directory>/undef/<year><month><day>/<filename>

Dans les deux cas, comprend 4 chiffres décimaux, et ainsi que en comprennent 2.

Génération des noms de fichiers

Par défaut, les noms de fichiers utilisés pour enregistrer les jeux de données DICOM reçus sont générés selon le schéma suivant :

<short-modality-prefix>.<sop-instance-uid><filename-extension>

Si la même instance SOP est reçue deux fois, un message d'avertissement est signalé et le fichier existant est écrasé.

L'option –unique-filenames garantit que chaque jeu de données DICOM reçu est enregistré comme un fichier distinct, c'est-à-dire qu'aucun fichier ne devrait jamais être écrasé. Cela est réalisé en utilisant un identifiant unique (UID) nouvellement créé pour chaque nom de fichier généré (avec l'infixe ".X" afin d'éviter les conflits avec les valeurs réelles de SOP Instance UID). Le schéma de nommage de cette option est le suivant :

<short-modality-prefix>.X.<unique-identifier><filename-extension>

Lorsque l'option –short-unique-names est utilisée, les noms de fichiers sont générés par un générateur de noms pseudo-aléatoire, qui garantit également l'absence de conflits (c'est-à-dire que les fichiers existants ne sont pas écrasés). Voici le schéma de nommage :

<short-modality-prefix>_<pseudo-random-name><filename-extension>

se compose de 16 chiffres en notation hexadécimale.

Enfin, l'option –system-time-names permet de générer des noms de fichiers basés sur l'heure système actuelle :

<date><time>.<short-modality-prefix><filename-extension>

se compose de "" et

Limitations

Notez que l'option –bit-preserving ne peut pas être utilisée conjointement avec l'option –series-date-subdir, car le jeu de données reçu est enregistré directement dans un fichier et la valeur de la Series Date (0008,0021) n'est donc pas disponible avant la création du fichier.

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 dcmrecv 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 (*)

erreurs de fichier de sortie

EXITCODE_CANNOT_WRITE_OUTPUT_FILE        40 (*)
EXITCODE_INVALID_OUTPUT_DIRECTORY        45

erreurs réseau

EXITCODE_CANNOT_INITIALIZE_NETWORK       60 (*)
EXITCODE_CANNOT_START_SCP_AND_LISTEN     64
EXITCODE_INVALID_ASSOCIATION_CONFIG      66
EXITCODE_CANNOT_CREATE_TRANSPORT_LAYER   71

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

ENVIRONNEMENT

L'utilitaire dcmrecv 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é.

FICHIERS

< docdir>/asconfig.txt - documentation du fichier de configuration
< etcdir>/storescp.cfg - exemple de profil de négociation d'association

VOIR AUSSI

dcmsend(1), storescu(1), storescp(1)

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