findscu: SCU d'interrogation DICOM (C-FIND)
SYNOPSIS
findscu [options] peer port [dcmfile-in...]
DESCRIPTION
findscu est une application qui implémente un SCU pour la Query/Retrieve Service Class ainsi que pour la Basic Worklist Management Service Class. findscu ne prend en charge que la fonction d'interrogation au moyen du message C-FIND. Elle envoie des clés d'interrogation à un SCP et en attend les réponses. L'application peut être utilisée pour tester des SCP de la Query/Retrieve Service Class et de la Basic Worklist Management Service Class.
PARAMÈTRES
peer hostname of DICOM peer
port tcp/ip port number of peer
dcmfile-in DICOM query file(s)
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
options réseau
-k --key [k]ey: gggg,eeee="str", path or dictionary name="str"- remplace la clé de correspondance. modèle d'information de la requête :
-W --worklist- utilise le modèle d'information Modality Worklist (par défaut)
-P --patient- utilise le modèle d'information patient root
-S --study- utilise le modèle d'information study root
-O --psonly- utilise le modèle d'information patient/study only. version du protocole IP :
-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 : FINDSCU)
-aec --call [a]etitle: string- définit l'AE Title appelé du pair (par défaut : ANY-SCP). représentations de valeur postérieures à 1993 :
+u --enable-new-vr- active la prise en charge des nouvelles VR (UN/UT) (par défaut)
-u --disable-new-vr- désactive la prise en charge des nouvelles VR, convertit en OB. syntaxes de transfert de transmission proposées :
-x= --propose-uncompr- propose toutes les TS non compressées, VR explicite à ordre d'octets local en premier (par défaut)
-xe --propose-little- propose toutes les TS non compressées, VR explicite little endian en premier
-xb --propose-big- propose toutes les TS non compressées, VR explicite big endian en premier
-xd --propose-deflated- propose la TS deflated explicit VR little endian ainsi que toutes les syntaxes de transfert non compressées
-xi --propose-implicit- propose uniquement la TS implicit VR little endian. niveau de compression deflate (uniquement avec --propose-deflated) :
+cl --compression-level [l]evel: integer (default: 6)- 0=non compressé, 1=le plus rapide, 9=meilleure compression. autres options réseau :
-to --timeout [s]econds: integer (default: unlimited)- délai d'expiration pour les demandes de connexion
-ts --socket-timeout [s]econds: integer (default: 60)- délai d'expiration pour le socket réseau (0 pour aucun)
-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)
--repeat [n]umber: integer- répète n fois
--abort- interrompt l'association au lieu de la libérer
--cancel [n]umber: integer- annule après n réponses (par défaut : jamais)
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
+tla --anonymous-tls- utilise une connexion TLS sécurisée sans certificat. 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 au format de fichier PEM (par défaut)
-der --der-keys- lit les clés et certificats au format de 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- liste les 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é # disponible uniquement si la bibliothèque TLS sous-jacente prend en charge # toutes les fonctionnalités TLS requises pour ce profil
+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é TLS de base (obsolète) # disponible uniquement si la bibliothèque TLS sous-jacente prend en charge 3DES
+pa --profile-aes- profil de connexion de transport sécurisé 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- liste les 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. indication du nom de serveur :
--no-sni- n'utilise pas SNI (par défaut)
--request-sni [s]erver name: string- demande 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)
-ic --ignore-peer-cert- ne vérifie pas le certificat du pair
options de sortie
-od --output-directory [d]irectory: string (default: ".")- écrit les fichiers de sortie dans le répertoire existant d. correction automatique des données :
+dc --enable-correction- active la correction automatique des données
-dc --disable-correction- désactive la correction automatique des données (par défaut). réponses C-FIND :
+sr --show-responses- affiche toujours les réponses dans le journal
-sr --hide-responses- n'affiche pas les réponses dans le journal
-X --extract- extrait les réponses dans un fichier DICOM (rsp0001.dcm...)
-Xx --extract-xml- extrait les réponses dans un fichier XML (rsp0001.xml...)
-Xs --extract-xml-single [f]ilename: string- extrait toutes les réponses dans le fichier XML f indiqué
-Xlo --limit-output [n]umber: integer- limite à n le nombre de réponses extraites vers un fichier (par défaut : illimité)
NOTES
Chaque fichier indiqué sur la ligne de commande est envoyé au SCP dans le cadre d'une requête C-FIND. Le fichier d'interrogation doit être un jeu de données DICOM valide contenant la partie jeu de données d'un message C-FIND-RQ. Il peut par exemple être créé avec l'utilitaire dump2dcm à partir d'un script comme dans l'exemple suivant :
# query patient names and IDs
(0008,0052) CS [PATIENT] # QueryRetrieveLevel
(0010,0010) PN [] # PatientName
(0010,0020) LO [] # PatientID
Les attributs individuels de chaque fichier envoyé peuvent être modifiés ou complétés à l'aide de l'option -k. Par exemple, la commande :
findscu -P -k "(0010,0010)=HEWETT*" caesar 5678 patqry.dcm
envoyée au SCP caesar sur le port TCP/IP 5678, donne la valeur "HEWETT*" à tout attribut PatientName présent dans patqry.dcm. Si cet attribut est présent, il est remplacé ; s'il est absent, il est inséré. L'option -k peut être indiquée plusieurs fois. La partie valeur (après le '=') peut être omise, auquel cas l'attribut est envoyé avec une longueur nulle.
Dans les versions antérieures de findscu , les clés de tag étaient indiquées sans les parenthèses entourant le numéro de groupe et d'élément, par exemple "0010,0010" au lieu de "(0010,0010)". Il est recommandé de passer à la nouvelle syntaxe ; l'ancienne syntaxe reste toutefois fonctionnelle.
Par ailleurs, -k accepte aussi des noms de dictionnaire à la place des tags d'élément pour indiquer des éléments DICOM. Par exemple, l'appel findscu ci-dessus s'écrit alors comme ceci :
findscu -P -k PatientName="HEWETT*" caesar 5678 patqry.dcm
Il est également possible de spécifier des séquences, des items et des attributs imbriqués à l'aide de l'option -k. Dans ce cas, une notation spéciale de "chemin" doit être utilisée, par exemple :
findscu -W -k "(0040,0100)[0].Modality=CT" caesar 5678
Cet appel interroge un serveur de liste de travail sur l'hôte caesar pour toute procédure planifiée pour les modalités CT, en spécifiant le tag (0040,0100) "Scheduled Procedure Step Sequence" et un attribut "Modality" dans le premier item de cette séquence avec la valeur "CT". Les détails de cette notation de chemin figurent dans la documentation de dcmodify.
Si aucun fichier n'est indiqué sur la ligne de commande, l'interrogation doit être entièrement spécifiée au moyen d'une ou plusieurs options -k. Si plusieurs fichiers d'interrogation sont fournis, findscu envoie plusieurs requêtes C-FIND au SCP.
Chaque jeu d'identifiants de réponse reçu est affiché dans le journal, sauf si l'option –hide-responses , l'une des variantes –extract ci-dessous, –quiet ou une configuration de journalisation appropriée est utilisée. Dans ces cas, l'affichage dans le journal peut néanmoins être forcé avec l'option –show-responses.
Par ailleurs, les jeux de données de réponse peuvent également être extraits sous forme de fichiers DICOM individuels (avec l'option –extract) ou de fichiers XML (avec l'option –extract-xml). Le format de sortie de ce dernier est décrit par le fichier dcm2xml.dtd (dont l'élément de premier niveau est "data-set"). Pour les fichiers XML, le Specific Character Set est automatiquement associé à un encodage XML approprié. Lorsque ce n'est pas possible, par exemple dans le cas des jeux de caractères ISO 2022, les caractères non-ASCII et ceux inférieurs à #32 sont stockés sous la forme "&#nnn;", où "nnn" désigne le code de caractère numérique. Notez que cela peut produire des références d'entité de caractère non valides (comme "" pour ESC) et amener la plupart des analyseurs XML à rejeter le document.
Autrement, tous les jeux de données de réponse d'une association peuvent être extraits vers un unique fichier XML avec l'option –extract-xml-single. L'élément de premier niveau du document XML est "responses" (avec un attribut "type" valant "C-FIND"). Les jeux de données individuels sont stockés comme décrit ci-dessus. Si la prise en charge de la conversion de jeu de caractères est activée, l'encodage UTF-8 est utilisé, c'est-à-dire que tous les jeux de données sont convertis en encodage UTF-8 (ce qui est vivement recommandé afin d'éviter les problèmes de caractères non-ASCII lorsque différents jeux de caractères sont utilisés).
Conformité DICOM
L'application findscu prend en charge les classes SOP suivantes en tant que SCU :
FINDPatientRootQueryRetrieveInformationModel 1.2.840.10008.5.1.4.1.2.1.1
FINDStudyRootQueryRetrieveInformationModel 1.2.840.10008.5.1.4.1.2.2.1
FINDPatientStudyOnlyQueryRetrieveInformationModel 1.2.840.10008.5.1.4.1.2.3.1
FINDModalityWorklistInformationModel 1.2.840.10008.5.1.4.31
L'application findscu propose des contextes de présentation pour l'une des classes SOP prises en charge mentionnées ci-dessus, selon les options de ligne de commande (-P , -S , -O ou -W). En principe, les syntaxes de transfert suivantes sont prises en charge :
LittleEndianImplicitTransferSyntax 1.2.840.10008.1.2
LittleEndianExplicitTransferSyntax 1.2.840.10008.1.2.1
DeflatedExplicitVRLittleEndianTransferSyntax 1.2.840.10008.1.2.1.99 (*)
BigEndianExplicitTransferSyntax 1.2.840.10008.1.2.2
(*) si compilé avec la prise en charge de zlib activée (voir la sortie de –version)
Les syntaxes de transfert réellement proposées, ainsi que leur ordre, peuvent être définies au moyen des options –propose.
L'application findscu ne prend pas en charge la négociation étendue.
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).
ENVIRONNEMENT
L'utilitaire findscu 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é.
Selon les options de ligne de commande spécifiées, l'utilitaire findscu tente de charger des tables de correspondance de jeux de caractères. Cela se produit lorsque DCMTK a été compilé avec la bibliothèque oficonv (ce qui est le cas par défaut) et que les tables de correspondance ne sont pas intégrées à la bibliothèque (par défaut lorsque DCMTK utilise des bibliothèques partagées).
Les fichiers de tables de correspondance sont attendus dans le < datadir> de DCMTK. La variable d'environnement DCMICONVPATH peut être utilisée pour indiquer un autre emplacement. Si un autre emplacement est indiqué, ces tables de correspondance remplacent également toutes les tables intégrées.
FICHIERS
< datadir>/dcm2xml.dtd - fichier de définition de type de document (DTD)
VOIR AUSSI
movescu(1), dump2dcm(1), dcmodify(1)
COPYRIGHT
Copyright (C) 1994-2025 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany.