Regras de coerção de dados

 

Sintaxe geral:

<lvalue>=<expression>

#<comment>

 

lvalues:

Etiqueta DICOM

Esta tem a forma, “(gggg,eeee)”. Representa o atributo de destino. Depois da expressão ser avaliada, os resultados são atribuídos a este atributo.

USUÁRIO(fieldName)

Campo de banco de dados personalizado no formulário USUÁRIO(fieldName) no qual fieldName é o nome de campo definido no arquivo de configuração dcfields.conf do banco de dados.

$(varName)

Variável temporária no formulário $(varName) no qual varName é uma cadeia exclusiva usada para identificar a variável.

 

Expressões: Podem ser um Valor ou uma Função.

 

Valores

(gggg,eeee)

Devolve o valor de uma etiqueta DICOM. Se a etiqueta DICOM não existir, será devolvido NULO (). São necessários os parêntesis.

Cadeia entre aspas

 

Esta tem a forma, “<string>”. Devolve a cadeia literal <string>. A cadeia poderá conter caracteres de escape, incluindo “\n”, “\\” e “\”.

Cadeia sem aspas

As cadeias sem aspas podem ser usadas quando contêm apenas caracteres alfanuméricos contíguos.

USUÁRIO(fieldName)

Campo de banco de dados personalizado no formulário USUÁRIO(fieldName) no qual fieldName é o nome de campo definido no arquivo de configuração dcfields.conf do banco de dados.

$(varName)

Variável temporária no formulário $(varName) no qual varName é uma cadeia exclusiva usada para identificar a variável. Valores temporários não inicializados devolvem NULO.

(gggg,eeee),”d”,n

(Desativado) Devolve o campo nth no valor da etiqueta DICOM (gggg,eeee) como separado pelo delimitador d.

 

Funções

 

Funções básicas

<cadeia vazia>

Essa é a cadeia vazia, “”.

NULO()

Exclui o valor de destino.

 

Funções lógicas

and(a,b)

Devolve "verdadeiro" se tanto o valor a como o b forem não NULOS.

é igual(a,b)

Devolve "verdadeiro" se os valores a e b forem iguais, NULO se não forem iguais.

if(cond,a,b)

Devolve a se o valor da condição não for NULO, b se for NULO.

not(a)

Devolve "verdadeiro" se a for NULO, NULO se a não for NULO.

or(a,b[,c...])

Devolve o primeiro valor não NULO.

 

Funções da cadeia

concat(a,b[,c…])

Concatena os valores a e b (e c, etc.) Os valores NULOS são tratados como uma cadeia vazia, “”.

contains(a,b)

Devolve a cadeia b se a cadeia b existir na cadeia a. Senão devolve NULO.

indexof(a, p)

Devolve a posição inicial do padrão p na cadeia a. A primeira posição na cadeia a é 0. Devolve -1 se p não for encontrado em a. Devolve NULO se p ou a for NULO.

split(a,d,n)

Devolve o campo nth em a usando d como delimitador de campo.

strlen(a)

Devolve o número de caracteres na cadeia a ou NULO se o valor da cadeia a for NULO.

substr(a,from[,len])

Devolve os caracteres de tamanho em a começando na posição de. A primeira posição é ‘0’. Se de ultrapassar o final da cadeia, é devolvida a cadeia com valor NULO. Se o tamanho for omitido, a restante cadeia é devolvida.

 

Funções de data

dicomAge(d1,d2)

Devolve o valor d1 - d2 em anos civis, meses ou dias num formato compatível com DICOM: nnnA, nnnM ou nnnD. Se d1 ou d2 for um valor de data inválido ou d2 for anterior ao d1, é devolvido o valor NULO.

 

Funções aritméticas

add(n1,n2[,n3…])

Devolve a soma dos números inteiros.

between(n,min,max)

Devolve verdadeiro se a cadeia de inteiros n for maior ou igual ao mínimo e menor do que o máximo. Senão devolve NULO.

sub(n1,n2)

Devolve a soma n1 - n2.

 

Funções de codificação

codenumber(n)

Devolve uma cadeia numérica codificada baseada em n. Tanto n como o resultado são cadeias numéricas ascii >= 0. O resultado contém o mesmo número de dígitos que n.

codestring(s[,x])

Devolve uma cadeia codificada baseada na cadeia s. Os caracteres na cadeia x, se existentes, não deverão estar presentes no resultado.

rnd(n[,seed])

Devolve uma cadeia de número aleatório baseada numa semente, se existente, entre 0 e n-1.

 

Na avaliação de expressões, NULO não é o mesmo que a cadeia vazia, “”. Se um atributo DICOM não existir, será NULO. Se existir, mas contiver um valor de duração 0, é a cadeia vazia, “”.

 

Um exemplo de uma regra de coerção para inserir um prefixo, “PFX”, antes do Número de acesso (0008,0050). Se o atributo 0008,0050 existir, mesmo que contenha um valor de tamanho 0, insira "PFX" no início do valor existente e volte a atribuí-lo ao atributo original. Se o atributo original não existir devolve NULO(), o que impede que seja adicionado ao objeto.

 

(0008,0050)=if( (0008,0050) , concat(“PFX”,(0008,0050)) , NULL() )

 

Outro exemplo é coagir um nome do paciente, (0010,0010), definido como “LASTNAME,FIRSTNAME[,MI]” numa sintaxe compatível com DICOM, “LASTNAME^FIRSTNAME[^MI]”. Note que a quebra de linha é inserida apenas para facilitar a leitura. Para funcionar, deverá ser inserido numa linha única.

 

(0010,0010)=concat(split((0010,0010), ”,”, 1), “^”, split((0010,0010), ”,”, 2),

if(split((0010,0010), ”,”, 3), “^”, “”), split((0010,0010), ”,”, 3) )