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

dcmrecv: SCP de armazenamento DICOM simples (receptor)

SINOPSE

dcmrecv [options] port

DESCRIÇÃO

O aplicativo dcmrecv implementa um Provedor de Classe de Serviço (SCP) para a Classe de Serviço de Armazenamento. Ao contrário do conhecido utilitário storescp, o dcmrecv tem menos opções e, por isso, pode ser mais fácil de usar - o que também explica o termo "simples" no título. O objetivo principal deste aplicativo é receber um grande número de conjuntos de dados DICOM de um Usuário de Classe de Serviço de Armazenamento (SCU) e armazená-los em uma estrutura configurável de diretórios e arquivos.

PARÂMETROS

port  tcp/ip port number to listen on

OPÇÕES

opções gerais

-h --help
exibe este texto de ajuda e sai
--version
exibe as informações de versão 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 rede

-i4 --ipv4
usa somente IPv4 (padrão)
-i6 --ipv6
usa somente IPv6
-i0 --ip-auto
usa o perfil de negociação de associação de pilha dupla IPv6/IPv4 a partir do arquivo de configuração:
-xf --config-file [f]ilename, [p]rofile: string
usa o perfil p do arquivo de configuração f. título de entidade de aplicação:
-uca --use-called-aetitle
sempre responde com o AE title chamado (padrão)
-aet --aetitle [a]etitle: string
define meu AE title e verifica o AE title chamado. outras opções de rede:
-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)

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

opções de segurança da camada de transporte (TLS)

-tls --disable-tls
usa uma conexão TCP/IP normal (padrão)
+tls --enable-tls [p]rivate key file, [c]ertificate file: string
usa uma conexão TLS segura autenticada. senha da chave privada (somente com --enable-tls):
+ps --std-passwd
solicita que o usuário digite a senha na entrada padrão (padrão)
+pw --use-passwd [p]assword: string
usa a senha especificada
-pw --null-passwd
usa uma string vazia como senha. formato do arquivo de chave e certificado:
-pem --pem-keys
lê chaves e certificados como arquivo PEM (padrão)
-der --der-keys
lê chaves e certificados como arquivo DER. autoridade de certificação:
+cf --add-cert-file [f]ilename: string
adiciona um arquivo de certificado à lista de certificados
+cd --add-cert-dir [d]irectory: string
adiciona os certificados de d à lista de certificados
+crl --add-crl-file [f]ilename: string
adiciona um arquivo de lista de revogação de certificados (implica --enable-crl-vfy)
+crv --enable-crl-vfy
ativa a verificação de CRL do certificado folha
+cra --enable-crl-all
habilita a verificação de CRL de toda a cadeia perfil de segurança:
+ph --list-profiles
lista os perfis TLS com suporte e sai
+pg --profile-8996
Perfil TLS BCP 195 RFC 8996 (padrão)
+pm --profile-8996-mod
Perfil TLS BCP 195 RFC 8996 modificado # only available if underlying TLS library supports # all TLS features required for this profile
+py --profile-bcp195-nd
Perfil TLS BCP 195 sem downgrade (obsoleto)
+px --profile-bcp195
Perfil TLS BCP 195 (obsoleto)
+pz --profile-bcp195-ex
Perfil TLS BCP 195 estendido (obsoleto)
+pb --profile-basic
perfil básico de conexão de transporte seguro TLS (obsoleto) # disponível apenas se a biblioteca TLS subjacente oferecer suporte a 3DES
+pa --profile-aes
AES TLS Secure Transport Connection Profile (obsoleto)
+pn --profile-null
Comunicação autenticada não criptografada (retirada, era usada no IHE ATNA) conjunto de cifras:
+cc --list-ciphers
lista os conjuntos de cifras TLS com suporte e sai
+cs --cipher [c]iphersuite name: string
adiciona um conjunto de cifras à lista de conjuntos negociados
+dp --dhparam [f]ilename: string
lê os parâmetros DH para os conjuntos de cifras DH/DSS indicação de nome de servidor:
--no-sni
não usa SNI (padrão)
--expect-sni [s]erver name: string
espera requisições para o nome de servidor s. gerador pseudoaleatório:
+rs --seed [f]ilename: string
inicializa o gerador aleatório com o conteúdo de f
+ws --write-seed
grava novamente a semente modificada (somente com --seed)
+wf --write-seed-file [f]ilename: string (only with --seed)
grava a semente modificada no arquivo f. autenticação do par:
-rc --require-peer-cert
verifica o certificado do par, falha se ausente (padrão)
-vc --verify-peer-cert
verifica o certificado do par se presente
-ic --ignore-peer-cert
não verifica o certificado do par

opções de saída

-od --output-directory [d]irectory: string (default: ".")
grava os objetos recebidos no diretório existente d. geração de subdiretórios:
-s --no-subdir
não gera nenhum subdiretório (padrão)
+ssd --series-date-subdir
gera subdiretórios a partir da data da série. geração de nome de arquivo:
+fd --default-filenames
gera o nome de arquivo a partir do UID da instância (padrão)
+fu --unique-filenames
gera um nome de arquivo único baseado em um novo UID
+fsu --short-unique-names
gera um nome de arquivo único curto e pseudoaleatório
+fst --system-time-names
gera o nome de arquivo a partir da hora atual do sistema
-fe --filename-extension [e]xtension: string (default: none)
acrescenta e a todos os nomes de arquivo gerados. modo de armazenamento:
-B --normal
permite conversões implícitas de formato (padrão)
+B --bit-preserving
grava o conjunto de dados exatamente como recebido
--ignore
ignora o conjunto de dados, recebe mas não o armazena

NOTAS

Uso típico

Um caso de uso típico do dcmrecv é receber instâncias SOP enviadas por um SCU de armazenamento e salvá-las como arquivos DICOM. O comando a seguir faz exatamente isso:

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

Se preferir uma estrutura de subdiretórios criada automaticamente, nomes de arquivo mais curtos e a extensão ".dcm" para todos os arquivos DICOM, use o comando a seguir:

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

No caso de instâncias SOP muito grandes, ou se o conjunto de dados precisar ser gravado exatamente como recebido (por exemplo, para fins de depuração), o "modo bit preserving" pode ser usado:

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

Os conjuntos de dados recebidos são sempre armazenados como arquivos DICOM com a mesma sintaxe de transferência usada na transmissão pela rede.

Conformidade DICOM

Basicamente, o aplicativo dcmrecv oferece suporte a todas as classes SOP de armazenamento como SCP, incluindo as privadas. Isso exige, porém, que um perfil de negociação de associação correspondente seja carregado a partir de um arquivo de configuração. O formato e a semântica desse arquivo de configuração estão documentados em asconfig.txt.

Por padrão, ou seja, se nenhum perfil de negociação de associação for carregado, o dcmrecv oferece suporte apenas à classe SOP Verification como SCP (com a sintaxe de transferência padrão, ou seja, Implicit VR Little Endian).

No futuro, poderá haver opções adicionais que permitam especificar diretamente a lista de contextos de apresentação com suporte (ou seja, a combinação de classe SOP e sintaxes de transferência), ou seja, sem carregar um arquivo de configuração.

Geração de subdiretórios

A opção –series-date-subdir permite gerar subdiretórios (abaixo do diretório de saída especificado) com base no valor do elemento de dados Series Date (0008,0021) do conjunto de dados DICOM recebido. Se esse valor puder ser obtido do conjunto de dados e for válido (ou seja, consistir em um campo de data DICOM válido), a estrutura de subdiretórios será a seguinte:

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

Se a Series Date (0008,0021) não puder ser obtida ou for inválida, a data atual do sistema é usada para a seguinte estrutura de subdiretórios:

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

Em ambos os casos, consiste em 4 dígitos decimais, e e , em 2 dígitos decimais.

Geração de nomes de arquivo

Por padrão, os nomes de arquivo para armazenar os conjuntos de dados DICOM recebidos são gerados de acordo com o seguinte esquema:

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

Se a mesma instância SOP for recebida duas vezes, uma mensagem de aviso é relatada e o arquivo existente é sobrescrito.

A opção –unique-filenames garante que cada conjunto de dados DICOM recebido seja armazenado como um arquivo separado, ou seja, nenhum arquivo deve ser sobrescrito. Isso é feito usando um identificador único (UID) recém-criado para cada nome de arquivo gerado (e o infixo ".X" para evitar conflitos com os valores reais de SOP Instance UID). O esquema de nomenclatura dessa opção é o seguinte:

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

Quando a opção –short-unique-names é usada, os nomes de arquivo são gerados por um gerador de nomes pseudoaleatório, que também garante que não haja conflitos (ou seja, os arquivos existentes não são sobrescritos). Este é o esquema de nomenclatura:

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

Com consistindo em 16 dígitos em notação hexadecimal.

Por fim, a opção –system-time-names permite gerar nomes de arquivo com base na hora atual do sistema:

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

Com consistindo em "" e

Limitações

Observe que a opção –bit-preserving não pode ser usada em conjunto com a opção –series-date-subdir, pois o conjunto de dados recebido é armazenado diretamente em arquivo e, portanto, o valor da Series Date (0008,0021) não está disponível antes da criação do arquivo.

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

erros de arquivo de saída

EXITCODE_CANNOT_WRITE_OUTPUT_FILE        40 (*)
EXITCODE_INVALID_OUTPUT_DIRECTORY        45

erros de rede

EXITCODE_CANNOT_INITIALIZE_NETWORK       60 (*)
EXITCODE_CANNOT_START_SCP_AND_LISTEN     64
EXITCODE_INVALID_ASSOCIATION_CONFIG      66
EXITCODE_CANNOT_CREATE_TRANSPORT_LAYER   71

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

AMBIENTE

O utilitário dcmrecv 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.

ARQUIVOS

< docdir>/asconfig.txt - documentação do arquivo de configuração
< etcdir>/storescp.cfg - exemplo de perfil de negociação de associação

VEJA TAMBÉM

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

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