wlmscpfs: SCP DICOM de gestion des listes de travail de base (basé sur des fichiers de données)
SYNOPSIS
wlmscpfs [options] port
DESCRIPTION
wlmscpfs est une application qui implémente un fournisseur de classe de service (SCP) pour le service de gestion des listes de travail de base. L'application écoute sur le port TCP/IP indiqué les demandes d'association entrantes provenant d'un SCU de gestion des listes de travail. Lorsqu'une association est acceptée et qu'une interrogation de liste de travail est reçue, wlmscpfs recherche, dans un certain répertoire du système de fichiers indiqué via les options de programme prévues à cet effet, les fichiers de liste de travail correspondants, puis renvoie les informations trouvées au SCU de gestion des listes de travail appelant. Outre le traitement des interrogations de gestion des listes de travail, wlmscpfs prend également en charge la Verification Service Class en tant que SCP.
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
options multiprocessus
-s --single-process- mode mono-processus
--fork- crée un processus enfant par fork() pour chaque association (par défaut)
options d'entrée
-dfp --data-files-path [p]ath: string (default: .)- chemin d'accès aux fichiers de données de liste de travail. Traitement des fichiers de liste de travail :
-efr --enable-file-reject- active le rejet des fichiers de liste de travail incomplets (par défaut)
-dfr --disable-file-reject- désactive le rejet des fichiers de liste de travail incomplets
options de traitement
-cs0 --return-no-char-set- ne renvoie aucun jeu de caractères spécifique (par défaut)
-cs1 --return-iso-ir-100- renvoie le jeu de caractères spécifique ISO IR 100
-csk --keep-char-set- renvoie le jeu de caractères indiqué dans le fichier. Autres options de traitement :
-nse --no-sq-expansion- désactive l'expansion des séquences vides dans les messages de requête C-FIND
options réseau
-i4 --ipv4- utilise IPv4 uniquement (par défaut)
-i6 --ipv6- utilise IPv6 uniquement
-i0 --ip-auto- utilise la double pile IPv6/IPv4. Syntaxes de transfert réseau préférées :
+x= --prefer-uncompr- préfère l'explicit VR avec l'ordre d'octets local (par défaut)
+xe --prefer-little- préfère la TS explicit VR little endian
+xb --prefer-big- préfère la TS explicit VR big endian
+xd --prefer-deflated- préfère la TS deflated explicit VR little endian
+xi --implicit- accepte uniquement la TS implicit VR little endian contrôle d'accès réseau par hôte (TCP wrapper) :
-ac --access-full- accepte les connexions depuis n'importe quel hôte (par défaut)
+ac --access-control- applique les règles de contrôle d'accès par hôte. Représentations de valeur postérieures à 1993 :
+u --enable-new-vr- active la prise en charge des nouveaux VR (UN/UT) (par défaut)
-u --disable-new-vr- désactive la prise en charge des nouveaux VR, et convertit en OB. Niveau de compression deflate (uniquement avec --prefer-deflated) :
+cl --compression-level [l]evel: integer (default: 6)- 0=non compressé, 1=le plus rapide, 9=meilleure compression. 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
--max-associations [a]ssocs: integer (default: 50)- limite le nombre maximal d'associations parallèles
--refuse- refuse l'association
--reject- rejette l'association si l'Implementation Class UID est absent
--no-fail- n'échoue pas sur une interrogation invalide
--sleep-before [s]econds: integer- patiente s secondes avant find (par défaut : 0)
--sleep-after [s]econds: integer- patiente s secondes après find (par défaut : 0)
--sleep-during [s]econds: integer- patiente s secondes pendant find (par défaut : 0)
-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- désactive la résolution du nom d'hôte
options de sortie
-rfp --request-file-path [p]ath: string- chemin d'accès pour l'enregistrement des fichiers de requête
-rff --request-file-format [f]ormat: string (default: #t.dump)- format du nom des fichiers de requête
NOTES
Pour la plupart des options mentionnées ci-dessus, la portée sémantique est claire. Certaines options particulières sont toutefois si spécifiques qu'elles nécessitent une description détaillée, donnée dans ce passage.
Les options de jeu de caractères renvoyé sont destinées aux situations dans lesquelles wlmscpfs renvoie des valeurs d'attribut composées de caractères ne provenant pas du répertoire de caractères DICOM par défaut. Dans ce cas, l'option –return-iso-ir-100 permet par exemple de préciser qu'une réponse à une requête C-FIND de gestion des listes de travail d'une modalité doit contenir l'attribut Specific Character Set (0008,0005) de DICOM avec une valeur correspondante, indiquant le répertoire de caractères dont sont issus les caractères des valeurs d'attribut renvoyées (dans cet exemple, le répertoire ISO IR 100). Notez que wlmscpfs ne vérifie pas que toutes les valeurs renvoyées sont effectivement composées de ce répertoire de caractères ; l'application part du principe que c'est le cas.
En règle générale, l'attribut Specific Character Set (0008,0005) n'est inclus dans la réponse C-FIND que si celle-ci contient des attributs concernés par le jeu de caractères, c'est-à-dire ayant pour représentation de valeur PN, LO, LT, SH, ST ou UT.
Notez qu'une requête C-FIND traitée par cette application peut contenir l'attribut Specific Character Set (0008,0005) de DICOM, mais que cette application n'utilise jamais la valeur de cet attribut pour la correspondance. Par ailleurs, la présence de l'attribut Specific Character Set (0008,0005) de DICOM dans une réponse C-FIND renvoyée par cette application est toujours déterminée par l'option de jeu de caractères renvoyé indiquée au démarrage de l'application.
Les options –enable-file-reject et –disable-file-reject permettent d'activer ou de désactiver un mécanisme de rejet de fichiers garantissant que seuls des fichiers de liste de travail complets sont utilisés lors du processus de correspondance. Un fichier de liste de travail est considéré comme complet s'il contient toutes les informations de type 1 que le SCP pourrait avoir à renvoyer à un SCU dans un message de réponse C-FIND. Le tableau K.6-1 de l'annexe K de la partie 4 de la norme DICOM répertorie l'ensemble des attributs de type 1 correspondants (voir la colonne "Return Key Type").
Écriture des fichiers de requête
L'option –request-file-path permet d'écrire les requêtes C-FIND entrantes dans des fichiers texte. La valeur de l'option indique le répertoire cible dans lequel ces fichiers seront stockés. Tous les fichiers de requête sont enregistrés au format "dump" fourni par l'outil dcmdump et sont bruts, c'est-à-dire qu'ils sont écrits tels qu'ils arrivent à wlmscpfs, sans aucun traitement de tag appliqué par wlmscpfs.
L'écriture des fichiers de requête permet de préparer "de façon interactive" la base de données de listes de travail (pour wlmscpfs, les fichiers de liste de travail servis depuis le répertoire –data-file-path) en surveillant le répertoire des fichiers de requête. Lorsqu'un fichier de requête apparaît, il faut un certain temps pour mettre à jour les entrées de la base de données de listes de travail. Il est donc judicieux d'utiliser –request-file-path en combinaison avec l'option –sleep-before, qui permet d'indiquer le nombre de secondes que wlmscpfs doit attendre avant de commencer réellement à consulter la base de données de listes de travail. Notez que les fichiers de requête écrits avec –data-file-path ne sont pas automatiquement supprimés par wlmscpfs.
Si les fichiers de requête sont activés, wlmscpfs doit générer automatiquement des noms de fichiers dans le répertoire indiqué. Par défaut, le format est
- YYYY est l'année actuelle
- MM est le mois actuel
- DD est le jour actuel
- hh est l'heure actuelle (au format 24 heures)
- mm est la minute actuelle
- ss est la seconde actuelle et
- ffffff est la fraction de la seconde actuelle
Cela devrait convenir par défaut à la plupart des applications qui souhaitent utiliser des fichiers de requête tout en garantissant des noms de fichiers uniques. Pour modifier ce schéma de nommage, l'option –request-file-format peut être utilisée. Elle permet d'indiquer le modèle de nommage des fichiers utilisé par –request-file-path.
Pour plus de flexibilité, les espaces réservés suivants peuvent être utilisés dans le modèle fourni pour –request-file-format :
-
a : AE title appelant du SCU homologue
-
c : AE title appelé (AE title de l'application SCP de gestion des listes de travail)
-
i : identifiant (PID) du processus de l'application SCP de gestion des listes de travail qui traite la requête
-
p : ID patient s'il est présent, sinon une chaîne vide
-
t : horodatage au format YYYYMMDDhhmmssffffff
La valeur par défaut (c'est-à-dire la valeur utilisée si –request-file-format n'est pas explicitement défini) est #t.dump, ce qui correspond au format d'horodatage décrit ci-dessus.
Un exemple d'une telle chaîne de format définie par l'utilisateur serait "request_#i_#a_#c.txt". #i prend tout son sens lorsque le mode multiprocessus de wlmscpfs est activé via l'option –fork, afin de garantir que des requêtes simultanées ne produisent pas le même nom de fichier.
Notez que l'espace réservé #p utilise telle quelle la valeur de Patient ID (0010,0020) de la requête, c'est-à-dire que si la chaîne contient des caractères non ASCII, le nom de fichier calculé par wlmscpfs peut être corrompu et donc ne pas pouvoir être écrit correctement, ou apparaître corrompu une fois écrit. De même, un Patient ID vide est utilisé tel quel, c'est-à-dire que #p sera remplacé par une chaîne vide.
Conformité DICOM
wlmscpfs prend en charge les classes SOP suivantes en tant que SCP :
VerificationSOPClass 1.2.840.10008.1.1
FINDModalityWorklistInformationModel 1.2.840.10008.5.1.4.31
wlmscpfs accepte les contextes de présentation pour toutes les classes SOP prises en charge mentionnées ci-dessus, avec l'une quelconque des syntaxes de transfert suivantes :
LittleEndianImplicitTransferSyntax 1.2.840.10008.1.2
LittleEndianExplicitTransferSyntax 1.2.840.10008.1.2.1
BigEndianExplicitTransferSyntax 1.2.840.10008.1.2.2
Le comportement par défaut de wlmscpfs consiste à préférer les syntaxes de transfert à codage explicite à la syntaxe de transfert implicite par défaut. Si wlmscpfs s'exécute sur un matériel big-endian, elle préfère la syntaxe de transfert BigEndianExplicit à LittleEndianExplicit (et inversement). Ce comportement peut être modifié au moyen des options –prefer (voir ci-dessus).
Si l'application est compilée avec la prise en charge de zlib activée (voir la sortie de –version) et que l'option –prefer-deflated est utilisée, la syntaxe de transfert suivante est également acceptée.
DeflatedExplicitVRLittleEndianTransferSyntax 1.2.840.10008.1.2.1.99
L'application wlmscpfs ne prend pas en charge la négociation étendue.
Actuellement, wlmscpfs prend en charge les attributs suivants comme clés de correspondance :
(0008,0020) StudyDate
(0008,0030) StudyTime
(0008,0050) AccessionNumber
(0008,0090) ReferringPhysicianName
(0010,0010) PatientName
(0010,0020) PatientID
(0010,0021) IssuerOfPatientID
(0010,0030) PatientBirthDate
(0010,0040) PatientSex
(0010,2297) Responsible Person
(0010,2298) Responsible Person Role
(0032,1032) RequestingPhysician
(0038,0010) AdmissionID
(0040,0100) ScheduledProcedureStepSequence
(0008,0060) > Modality
(0040,0001) > ScheduledStationAETitle
(0040,0002) > ScheduledProcedureStepStartDate
(0040,0003) > ScheduledProcedureStepStartTime
(0040,0006) > ScheduledPerformingPhysicianName
(0040,1001) RequestedProcedureID
(0040,1003) RequestedProcedurePriority
Actuellement, les attributs suivants sont pris en charge par wlmscpfs comme clés de retour :
(0008,0020) StudyDate
(0008,0030) StudyTime
(0008,0050) AccessionNumber
(0008,0080) InstitutionName
(0008,0081) InstitutionAddress
(0008,1040) InstitutionalDepartmentName
(0008,0090) ReferringPhysicianName
(0008,1080) AdmittingDiagnosesDescription
(0008,1110) ReferencedStudySequence
(0008,1150) > ReferencedSOPClassUID
(0008,1155) > ReferencedSOPInstanceUID
(0008,1120) ReferencedPatientSequence
(0008,1150) > ReferencedSOPClassUID
(0008,1155) > ReferencedSOPInstanceUID
(0010,0010) PatientName
(0010,0020) PatientID
(0010,0021) IssuerOfPatientID
(0010,0030) PatientBirthDate
(0010,0040) PatientSex
(0010,1000) OtherPatientIDs (retired)
(0010,1001) OtherPatientNames
(0010,1020) PatientSize
(0010,1030) PatientWeight
(0010,1040) PatientAddress
(0010,1080) MilitaryRank
(0010,2000) MedicalAlerts
(0010,2110) ContrastAllergies
(0010,2160) EthnicGroup (retired)
(0010,21a0) SmokingStatus
(0010,21b0) AdditionalPatientHistory
(0010,21c0) PregnancyStatus
(0010,21d0) LastMenstrualDate
(0010,2297) ResponsiblePerson
(0010,2298) ResponsiblePersonRole
(0010,4000) PatientComments
(0020,000d) StudyInstanceUID
(0032,1032) RequestingPhysician
(0032,1033) RequestingService
(0032,1060) RequestedProcedureDescription
(0032,1064) RequestedProcedureCodeSequence
(0008,0100) > CodeValue
(0008,0102) > CodingSchemeDesignator
(0008,0103) > CodingSchemeVersion
(0008,0104) > CodeMeaning
(0038,0010) AdmissionID
(0038,0011) IssuerOfAdmissionID
(0038,0050) SpecialNeeds
(0038,0300) CurrentPatientLocation
(0038,0500) PatientState
(0040,0100) ScheduledProcedureStepSequence
(0008,0060) > Modality
(0032,1070) > RequestedContrastAgent
(0040,0001) > ScheduledStationAETitle
(0040,0002) > ScheduledProcedureStepStartDate
(0040,0003) > ScheduledProcedureStepStartTime
(0040,0004) > ScheduledProcedureStepEndDate
(0040,0005) > ScheduledProcedureStepEndTime
(0040,0006) > ScheduledPerformingPhysicianName
(0040,0007) > ScheduledProcedureStepDescription
(0040,0008) > ScheduledProtocolCodeSequence
(0008,0100) > > CodeValue
(0008,0102) > > CodingSchemeDesignator
(0008,0103) > > CodingSchemeVersion
(0008,0104) > > CodeMeaning
(0040,0009) > ScheduledProcedureStepID
(0040,0010) > ScheduledStationName
(0040,0011) > ScheduledProcedureStepLocation
(0040,0012) > PreMedication
(0040,0020) > ScheduledProcedureStepStatus
(0040,0400) > CommentsOnTheScheduledProcedureStep
(0040,1001) RequestedProcedureID
(0040,1002) ReasonForTheRequestedProcedure
(0040,1003) RequestedProcedurePriority
(0040,1004) PatientTransportArrangements
(0040,1005) RequestedProcedureLocation
(0040,1008) ConfidentialityCode
(0040,1009) ReportingPriority
(0040,1010) NamesOfIntendedRecipientsOfResults
(0040,1400) RequestedProcedureComments
(0040,2001) ReasonForTheImagingServiceRequest
(0040,2004) IssueDateOfImagingServiceRequest
(0040,2005) IssueTimeOfImagingServiceRequest
(0040,2008) OrderEnteredBy
(0040,2009) OrderEnterersLocation
(0040,2010) OrderCallbackPhoneNumber
(0040,2016) PlacerOrderNumberImagingServiceRequest
(0040,2017) FillerOrderNumberImagingServiceRequest
(0040,2400) ImagingServiceRequestComments
(0040,3001) ConfidentialityConstraintOnPatientDataDescription
L'attribut (0008,0005) SpecificCharacterSet est un cas particulier ; sa prise en charge par wlmscpfs est abordée dans la section NOTES ci-dessus.
Contrôle d'accès
Lorsqu'il est compilé sur des plateformes Unix avec la prise en charge du TCP wrapper, le contrôle d'accès par hôte peut être activé au moyen de l'option de ligne de commande –access-control. Dans ce cas, les règles de contrôle d'accès définies dans les tables de contrôle d'accès par hôte du système pour wlmscpfs sont appliquées. Les emplacements par défaut des tables de contrôle d'accès par hôte sont /etc/hosts.allow et /etc/hosts.deny. Pour plus de détails, consultez hosts_access(5).
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 wlmscpfs 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é.
COPYRIGHT
Copyright (C) 1996-2025 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany.