⚠️ Este é um site de tradução não oficial, sem relação com o DCMTK / OFFIS. Para informações oficiais, consulte a página original (https://support.dcmtk.org/docs/dcmsend.html).

dcmsend: SCU simples de armazenamento DICOM (remetente)

SINOPSE

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

DESCRIÇÃO

O aplicativo dcmsend implementa um SCU (Service Class User) para a Classe de Serviço Storage. Diferentemente do conhecido utilitário storescu, o dcmsend tem menos opções e, portanto, é mais fácil de usar - o que também explica o termo "simples" no título. O principal objetivo deste aplicativo é enviar um grande número de arquivos DICOM para um Provedor da Classe de Serviço Storage (SCP). O dcmsend oferece suporte tanto a múltiplas associações (uma após a outra) quanto à descompressão de instâncias SOP DICOM, se necessário, para transferi-las.

PARÂMETROS

peer        hostname of DICOM peer

port        tcp/ip port number of peer

dcmfile-in  DICOM file or directory to be transmitted

OPÇÕES

opções gerais

-h --help
exibe este texto de ajuda e sai
--version
exibe as informações de versão e sai
--list-decoders
lista as sintaxes de transferência dos decoders e sai
--arguments
exibe os argumentos de linha de comando expandidos
-q --quiet
modo silencioso, não exibe avisos nem erros
-v --verbose
modo detalhado, exibe os detalhes do processamento
-d --debug
modo de depuração, exibe informações de depuração
-ll --log-level [l]evel: string constant
(fatal, error, warn, info, debug, trace) usa o nível l para o logger
-lc --log-config [f]ilename: string
usa o arquivo de configuração f para o logger
+v --verbose-pc
exibe os contextos de apresentação no modo detalhado

opções de entrada

+f --read-file
lê o formato de arquivo ou o conjunto de dados
+fo --read-file-only
lê apenas o formato de arquivo (padrão)
-f --read-dataset
lê o conjunto de dados sem as informações de metadados do arquivo. arquivos de entrada:
+rd --read-from-dicomdir
lê as informações dos arquivos de entrada a partir do DICOMDIR
+sd --scan-directories
varre diretórios em busca de arquivos de entrada (dcmfile-in)
+sp --scan-pattern [p]attern: string (only with --scan-directories)
padrão para correspondência de nomes de arquivo (curingas) # possivelmente não disponível em todos os sistemas
-r --no-recurse
não percorre os diretórios recursivamente (padrão)
+r --recurse
percorre recursivamente os diretórios especificados

opções de processamento

-dn --decompress-never
nunca descomprime conjuntos de dados comprimidos
+dls --decompress-lossless
descomprime apenas compressão sem perdas (padrão)
+dly --decompress-lossy
descomprime tanto a compressão com perdas quanto a sem perdas. nível de compressão deflate:
+cl --compression-level [l]evel: integer (default: 6)
0=sem compressão, 1=mais rápido, 9=melhor compressão. outras opções de processamento:
-nh --no-halt
não interrompe no primeiro arquivo de entrada inválido nem em caso de falha de armazenamento
-nip --no-illegal-proposal
não propõe nenhum contexto de apresentação que não contenha a sintaxe de transferência padrão (se necessário)
-nuc --no-uid-checks
não verifica os valores de UID dos arquivos de entrada

opções de rede

-i4 --ipv4
usa somente IPv4 (padrão)
-i6 --ipv6
usa somente IPv6
-i0 --ip-auto
usa consulta DNS para determinar o protocolo IP. títulos de entidade de aplicação:
-aet --aetitle [a]etitle: string
define o meu AE Title de chamada (padrão: DCMSEND)
-aec --call [a]etitle: string
define o AE Title chamado do peer (padrão: ANY-SCP). tratamento de associações:
+ma --multi-associations
usa múltiplas associações (uma após a outra), se necessário, para transferir as instâncias (padrão)
-ma --single-association
usa sempre uma única associação. outras opções de rede:
-to --timeout [s]econds: integer (default: unlimited)
tempo limite para solicitações de conexão
-ta --acse-timeout [s]econds: integer (default: 30)
tempo limite para mensagens ACSE
-td --dimse-timeout [s]econds: integer (default: unlimited)
tempo limite para mensagens DIMSE
-pdu --max-pdu [n]umber of bytes: integer (4096..131072)
define a pdu máxima recebida em n bytes (padrão: 16384)
--max-send-pdu [n]umber of bytes: integer (4096..131072)
restringe a PDU máxima de envio a n bytes

opções de saída

general:

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

NOTAS

Uso típico

Um caso de uso típico do dcmsend é enviar instâncias SOP arbitrárias armazenadas como arquivos DICOM para um SCP de armazenamento. O comando a seguir faz exatamente isso:

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

Se os arquivos DICOM estiverem armazenados em uma hierarquia de diretórios abaixo do diretório "IMAGES", o seguinte comando pode ser usado:

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

Também é possível especificar vários diretórios e combinar as abordagens mencionadas acima (usando tanto nomes de arquivo quanto de diretório):

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

Se as instâncias SOP forem referenciadas a partir de um arquivo DICOMDIR, a opção –read-from-dicomdir (ou +rd) pode ser usada para enviar todos os arquivos DICOM referenciados sem já carregá-los para a negociação da associação:

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

E, novamente, todas as abordagens acima podem ser combinadas da seguinte forma:

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

A opção padrão –read-file-only garante que apenas arquivos DICOM (ou seja, aqueles com meta-cabeçalho e a palavra mágica "DICM" após o preâmbulo) sejam processados. Geralmente, ao processar um grande número de arquivos, também é uma boa prática não interromper no primeiro arquivo de entrada inválido ou em caso de falha de armazenamento. Isso pode ser obtido usando a opção –no-halt. Observe, no entanto, que "falha de armazenamento" não significa que o status DIMSE da resposta C-STORE indica um erro. Significa que a solicitação C-STORE não pôde ser enviada ao SCP de armazenamento.

Se forem necessários mais de 128 contextos de apresentação, que é o número máximo permitido de acordo com o padrão DICOM, uma nova associação é iniciada após a conclusão da anterior. Nos casos em que esse comportamento não é desejado, ele pode ser desativado usando a opção –single-association. Além disso, é possível especificar, por meio das opções –decompress-xxx, se apenas os conjuntos de dados comprimidos sem perdas são descomprimidos (se necessário), o que é o padrão, ou se os conjuntos de dados comprimidos com perdas também são.

Para obter tanto uma visão geral quanto informações detalhadas sobre a transferência das instâncias SOP DICOM, a opção –create-report-file pode ser usada para criar um arquivo de texto correspondente. No entanto, esse arquivo só é criado como etapa final se o aplicativo não tiver sido encerrado antes (com um erro).

Varredura de diretórios

Informar diretórios como parâmetro na linha de comando só faz sentido se a opção –scan-directories também for especificada. Caso os arquivos nos diretórios informados precisem ser selecionados de acordo com um padrão de nome específico (por exemplo, usando correspondência por curingas), a opção –scan-pattern deve ser usada. Observe que esse padrão de arquivo se aplica apenas aos arquivos dentro dos diretórios varridos e que, se outros padrões forem especificados na linha de comando fora da opção –scan-pattern (por exemplo, para selecionar outros arquivos), eles não se aplicam aos diretórios especificados.

Assim, o terceiro dos exemplos acima percorrerá recursivamente os diretórios IMAGES_1 e IMAGES_2 e transmitirá os arquivos contidos nessas duas pastas e em todas as suas subpastas (devido à opção +r). Além disso, o dcmsend transferirá "test.img" e todos os arquivos com extensão "dcm" da pasta de trabalho atual. Observe que informar nomes de diretórios sem habilitar a opção +sd não faz sentido.

Conformidade DICOM

Basicamente, o aplicativo dcmsend oferece suporte a todas as classes SOP Storage como SCU, incluindo as privadas. Por padrão, o aplicativo verifica o UID de classe SOP do arquivo DICOM para garantir que apenas instâncias SOP válidas sejam enviadas. Com a opção –no-uid-checks, essa verificação pode ser desativada.

O aplicativo dcmsend também oferece suporte a todas as sintaxes de transferência definidas no padrão DICOM. Sintaxes de transferência privadas só podem ser usadas se a verificação de UID for desativada com a opção –no-uid-checks. Observe, no entanto, que apenas um número limitado de sintaxes de transferência tem suporte para conversão para a sintaxe de transferência padrão do DICOM (Implicit VR Little Endian). Com a opção –list-decoders, são listadas as sintaxes de transferência com suporte nativo ou por decoders. A saída normalmente é semelhante a esta:

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

Como o dcmsend procura ser o mais simples possível para o usuário, por padrão podem ser propostos ao SCP contextos de apresentação que, a rigor, são "ilegais". Isso ocorre porque, segundo o padrão DICOM, o SCU sempre deve propor a sintaxe de transferência padrão do DICOM em pelo menos um contexto de apresentação associado a cada sintaxe abstrata (ou seja, a cada classe SOP). Esse requisito é dispensado se o SCU tiver acesso à instância SOP apenas em forma comprimida com perdas ou se os dados de pixel descomprimidos forem grandes demais para serem codificados. Com a opção –no-illegal-proposal, é possível impor o comportamento estritamente conforme ao DICOM, ou seja, nenhum contexto de apresentação potencialmente ilegal será proposto, mas a instância SOP correspondente será rejeitada (se necessário). Observe, no entanto, que o tamanho dos dados de pixel descomprimidos não é verificado.

A sintaxe de transferência padrão para "Lossless JPEG Compression", "Lossy JPEG Compression" e assim por diante nem sempre é proposta, conforme também exige o padrão DICOM. A mesma limitação se aplica a outros esquemas de compressão. Consulte a seção 10 do DICOM PS 3.5 para mais detalhes.

REGISTRO DE LOG

O nível de detalhamento do log das diversas ferramentas de linha de comando e das bibliotecas subjacentes pode ser especificado pelo usuário. Por padrão, apenas erros e avisos são gravados no fluxo de erro padrão. Ao usar a opção –verbose, mensagens informativas, como detalhes do processamento, também são relatadas. A opção –debug pode ser usada para obter mais detalhes sobre a atividade interna, por exemplo, para fins de depuração. Outros níveis de log podem ser selecionados com a opção –log-level. No modo –quiet, apenas erros fatais são relatados. Nesses casos de erro muito graves, o aplicativo normalmente é encerrado. Para mais detalhes sobre os diferentes níveis de log, consulte a documentação do módulo "oflog".

Caso a saída do log deva ser gravada em arquivo (opcionalmente com rotação de arquivo de log), no syslog (Unix) ou no log de eventos (Windows), pode-se usar a opção –log-config. Esse arquivo de configuração também permite direcionar apenas determinadas mensagens para um fluxo de saída específico e filtrar certas mensagens com base no módulo ou aplicativo em que são geradas. Um arquivo de configuração de exemplo é fornecido em < etcdir>/logger.cfg.

LINHA DE COMANDO

Todas as ferramentas de linha de comando usam a seguinte notação para os parâmetros: colchetes delimitam valores opcionais (0-1), reticências no final indicam que múltiplos valores são permitidos (1-n), e a combinação dos dois significa de 0 a n valores.

As opções de linha de comando se distinguem dos parâmetros por um sinal '+' ou '-' à frente. Normalmente, a ordem e a posição das opções de linha de comando são arbitrárias (ou seja, podem aparecer em qualquer lugar). No entanto, se as opções forem mutuamente exclusivas, é usada a ocorrência mais à direita. Esse comportamento está em conformidade com as regras de avaliação padrão dos shells Unix comuns.

Além disso, um ou mais arquivos de comando podem ser especificados usando um sinal '@' como prefixo do nome do arquivo (por exemplo, @command.txt). Esse argumento de comando é substituído pelo conteúdo do arquivo de texto correspondente (múltiplos espaços em branco são tratados como um único separador, a menos que apareçam entre duas aspas) antes de qualquer avaliação posterior. Observe que um arquivo de comando não pode conter outro arquivo de comando. Essa abordagem simples, mas eficaz, permite agrupar combinações comuns de opções/parâmetros e evita linhas de comando longas e confusas (um exemplo é fornecido no arquivo < datadir>/dumppat.txt).

CÓDIGOS DE SAÍDA

O utilitário dcmsend usa os seguintes códigos de saída ao ser encerrado. Isso permite que o usuário verifique o motivo pelo qual o aplicativo foi encerrado.

geral

EXITCODE_NO_ERROR                         0
EXITCODE_COMMANDLINE_SYNTAX_ERROR         1

erros de arquivo de entrada

EXITCODE_CANNOT_READ_INPUT_FILE          20 (*)
EXITCODE_NO_INPUT_FILES                  21
EXITCODE_INVALID_INPUT_FILE              22
EXITCODE_NO_VALID_INPUT_FILES            23

erros de arquivo de saída

EXITCODE_CANNOT_WRITE_OUTPUT_FILE        40 (*)
EXITCODE_CANNOT_WRITE_REPORT_FILE        43

erros de rede

EXITCODE_CANNOT_INITIALIZE_NETWORK       60
EXITCODE_CANNOT_NEGOTIATE_ASSOCIATION    61
EXITCODE_CANNOT_SEND_REQUEST             62
EXITCODE_CANNOT_ADD_PRESENTATION_CONTEXT 65

() Na verdade, esses códigos não são usados atualmente pelo dcmsend*, mas servem como espaço reservado para o grupo correspondente de códigos de saída.

AMBIENTE

O utilitário dcmsend tentará carregar os dicionários de dados DICOM especificados na variável de ambiente DCMDICTPATH. Por padrão, ou seja, se a variável de ambiente DCMDICTPATH não estiver definida, o arquivo < datadir>/dicom.dic será carregado, a menos que o dicionário esteja embutido no aplicativo (padrão no Windows).

É preferível manter o comportamento padrão e usar a variável de ambiente DCMDICTPATH apenas quando dicionários de dados alternativos forem necessários. A variável de ambiente DCMDICTPATH tem o mesmo formato da variável PATH dos shells Unix, em que dois-pontos (":") separam as entradas. Em sistemas Windows, um ponto e vírgula (";") é usado como separador. O código do dicionário de dados tenta carregar cada arquivo especificado na variável de ambiente DCMDICTPATH. Ocorre um erro se nenhum dicionário de dados puder ser carregado.

VEJA TAMBÉM

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

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