xml2dcm: Converter documento XML em arquivo DICOM ou conjunto de dados
SINOPSE
xml2dcm [options] xmlfile-in dcmfile-out
DESCRIÇÃO
O utilitário xml2dcm converte o conteúdo de um documento XML (Extensible Markup Language) em arquivo DICOM ou conjunto de dados. Espera-se que o documento XML seja válido em relação à DTD (Document Type Definition) descrita no arquivo dcm2xml.dtd. Um arquivo XML apropriado pode ser criado com a ferramenta dcm2xml (recomenda-se a opção +Wb para incluir dados binários).
PARÂMETROS
xmlfile-in XML input filename to be converted ("-" for stdin)
dcmfile-out DICOM output filename ("-" for stdout)
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
opções de entrada
+f --read-meta-info- lê as informações de meta se presentes (padrão)
-f --ignore-meta-info- ignora as metainformações de arquivo
opções de processamento
+Vd --validate-document- valida o documento XML em relação à DTD
+Vn --check-namespace- verifica o namespace XML na raiz do documento identificadores exclusivos:
+Ug --generate-new-uids- gera um novo Study/Series/SOP Instance UID
-Uo --dont-overwrite-uids- não sobrescreve os UIDs existentes (padrão)
+Uo --overwrite-uids- sobrescreve os UIDs existentes
opções de saída
+F --write-file- grava no formato de arquivo (padrão)
-F --write-dataset- grava o conjunto de dados sem as informações de meta do arquivo
+Fu --update-meta-info- atualiza determinadas informações de meta do arquivo. sintaxe de transferência de saída:
+t= --write-xfer-same- grava com a mesma TS da entrada (padrão)
+te --write-xfer-little- grava com a TS explicit VR little endian
+tb --write-xfer-big- grava com a TS explicit VR big endian
+ti --write-xfer-implicit- grava com a TS implicit VR little endian
+td --write-xfer-deflated- grava com TS de VR explícita little endian deflate. tratamento de erros:
-E --stop-on-error- não grava se o documento for inválido (padrão)
+E --ignore-errors- tenta gravar mesmo que o documento seja inválido representações de valor pós-1993:
+u --enable-new-vr- habilita o suporte a novos VRs (UN/UT) (padrão)
-u --disable-new-vr- desabilita o suporte a novos VRs, converte para OB. codificação do comprimento de grupo:
+g= --group-length-recalc- recalcula os comprimentos de grupo, se presentes (padrão)
+g --group-length-create- sempre grava com elementos de comprimento de grupo
-g --group-length-remove- sempre grava sem elementos de comprimento de grupo. codificação de comprimento em sequências e itens:
+e --length-explicit- grava com comprimentos explícitos (padrão)
-e --length-undefined- grava com comprimentos indefinidos preenchimento final do conjunto de dados (não com --write-dataset):
-p= --padding-retain- não altera o preenchimento (padrão se --write-dataset não for usado)
-p --padding-off- sem preenchimento (implícito com --write-dataset)
+p --padding-create [f]ile-pad [i]tem-pad: integer- alinha o arquivo em um múltiplo de f bytes e os itens em um múltiplo de i bytes. nível de compressão deflate (somente com --write-xfer-deflated):
+cl --compression-level [l]evel: integer (default: 6)- 0=sem compressão, 1=mais rápido, 9=melhor compressão
NOTAS
A estrutura básica esperada para a entrada XML é a seguinte:
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE file-format SYSTEM "dcm2xml.dtd">
<file-format xmlns="http://dicom.offis.de/dcmtk">
<meta-header xfer="1.2.840.10008.1.2.1" name="Little Endian Explicit">
<element tag="0002,0000" vr="UL" vm="1" len="4"
name="MetaElementGroupLength">
166
</element>
...
<element tag="0002,0013" vr="SH" vm="1" len="16"
name="ImplementationVersionName">
OFFIS_DCMTK_353
</element>
</meta-header>
<data-set xfer="1.2.840.10008.1.2" name="Little Endian Implicit">
<element tag="0008,0005" vr="CS" vm="1" len="10"
name="SpecificCharacterSet">
ISO_IR 100
</element>
...
<sequence tag="0028,3010" vr="SQ" card="2" name="VOILUTSequence">
<item card="3">
<element tag="0028,3002" vr="xs" vm="3" len="6"
name="LUTDescriptor">
256\0\8
</element>
...
</item>
...
</sequence>
...
<element tag="7fe0,0010" vr="OW" vm="1" len="262144"
name="PixelData" loaded="no" binary="hidden">
</element>
</data-set>
</file-format>
As tags "file-format" e "meta-header" podem estar ausentes em conjuntos de dados DICOM.
Codificação de caracteres
A codificação de caracteres DICOM é determinada automaticamente a partir do elemento com a tag "0008,0005" (Specific Character Set), caso presente. Atualmente, há suporte para os seguintes conjuntos de caracteres (requer que a libxml inclua suporte a iconv, veja a saída de –version):
ASCII (ISO_IR 6) (UTF-8)
UTF-8 "ISO_IR 192" (UTF-8)
ISO Latin 1 "ISO_IR 100" (ISO-8859-1)
ISO Latin 2 "ISO_IR 101" (ISO-8859-2)
ISO Latin 3 "ISO_IR 109" (ISO-8859-3)
ISO Latin 4 "ISO_IR 110" (ISO-8859-4)
ISO Latin 5 "ISO_IR 148" (ISO-8859-9)
ISO Latin 9 "ISO_IR 203" (ISO-8859-15)
Cyrillic "ISO_IR 144" (ISO-8859-5)
Arabic "ISO_IR 127" (ISO-8859-6)
Greek "ISO_IR 126" (ISO-8859-7)
Hebrew "ISO_IR 138" (ISO-8859-8)
Não há suporte para múltiplos conjuntos de caracteres (em caso de multiplicidade de valor, apenas o primeiro valor de "Specific Character Set" é usado para a codificação de caracteres).
Consulte a documentação do dcm2xml para mais detalhes sobre a estrutura XML.
Dados binários
Os dados binários (*) podem ser codificados como uma sequência de números hexadecimais separados por uma barra invertida "\" ou no formato Base64 (binary="base64"). Além disso, os dados binários também podem ser lidos de um arquivo (binary="file"). Nesse caso, o nome do arquivo deve ser especificado como o valor do elemento, por exemplo:
<element tag="7fe0,0010" vr="OW" ... binary="file">subdir/pixeldata.raw</element>
Observe que o conteúdo do arquivo será lido como está. Espera-se que os dados OW estejam ordenados em little endian e sejam invertidos se necessário. Nenhuma verificação é feita para garantir que a quantidade de dados seja razoável em relação a outros atributos, como Rows ou Columns.
(*) Observe que atualmente há suporte somente para dados OB e OW, ou seja, valores de elementos com VR de OD, OF, OL e OV não são considerados "dados binários" e são tratados como todos os demais VRs.
Compressão
Se a libxml for compilada com suporte a zlib, o arquivo de entrada (xmlfile-in) também pode ser comprimido em ZIP, o que geralmente resulta em arquivos muito menores. Veja a saída da opção –version para verificar se o suporte a zlib está disponível.
Limitações
Diferentes versões da libxml podem ter limites diferentes para o comprimento máximo do valor de um elemento XML. Portanto, deve-se evitar o uso de valores de elemento muito longos (por exemplo, para dados de pixel).
Observe que o xml2dcm atualmente não oferece suporte completo a arquivos DICOMDIR. Especificamente, o valor dos diversos elementos de dados de deslocamento não é atualizado automaticamente por esta ferramenta.
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).
AMBIENTE
O utilitário xml2dcm 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 para 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
< datadir>/dcm2xml.dtd - arquivo de definição de tipo de documento (DTD)
VEJA TAMBÉM
dcm2xml(1)
COPYRIGHT
Copyright (C) 2003-2025 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany.