Documente Academic
Documente Profesional
Documente Cultură
LAVRAS
MINAS GERAIS BRASIL
2008
Orientadora
Professora ngela Maria Alves
LAVRAS
MINAS GERAIS BRASIL
2008
Prof. ______________________________________
UFLA
(Orientador)
LAVRAS
MINAS GERAIS BRASIL
2008
AGRADECIMENTOS
SUMRIO
LISTA DE FIGURAS........................................................................................................1
LISTA DE TABELAS.......................................................................................................2
1. INTRODUO............................................................................................................. 4
2. InVesalius...................................................................................................................... 5
3. DICOM.......................................................................................................................... 6
3.1 Histria.................................................................................................................... 6
3.2 Definio..................................................................................................................7
3.3 Picture Archiving and Communications Systems (PACS)....................................10
4 Modelos de Interface de Comunicao para o InVesalius.........................................11
4.1 A proposta do projeto............................................................................................ 11
4.2 Modelos de Interface de Comunicao para o InVesalius.........................................13
4.2.1.1 UCDMC...................................................................................................14
4.2.1.2 pydicomlib............................................................................................... 14
4.2.1.3 dcmtk....................................................................................................... 14
4.2.1.4 openDICOM.NET................................................................................... 15
4.2.1.5 Charrua DICOM Toolkit ........................................................................ 15
4.2.1.6 DCF (DICOM Connectivity Framework)................................................15
4.2.1.7 Imebra...................................................................................................... 16
4.2.1.8 Lista de Referncia.................................................................................. 16
4.3 Implementar a comunicao do protocolo DICOM usando socket....................... 17
4.4 Implementar a comunicao do protocolo DICOM usando Twisted Framework e
WADO.........................................................................................................................19
5 Arquitetura da Comunicao do InVesalius com a PACS........................................ 20
6 - Concluso................................................................................................................... 24
7. REFERNCIAS BIBLIOGRAFICAS ........................................................................25
ANEXOS......................................................................................................................... 26
ANEXO A Modalidades DICOM.................................................................................27
ANEXO B Documento de Estrias.............................................................................. 28
Desenvolvimento do Sistema de comunicao via Internet que possibilitar a
importao de dados para o software InVesalius.............................................................28
(Demanda de desenvolvimento do InVesalius: Software Pblico Brasileiro).................28
ANEXO C Cdigo fonte do A_Associate_RQ desenvolvido pelo CTI....................... 35
LISTA DE FIGURAS
Figura 1. Principais bibliotecas e ferramentas usadas no InVesalius................................ 5
Figura 2. Exemplo da estrutura de um arquivo DICOM................................................... 7
Figura 3 Composio do Service-Object Pair (SOP)....................................................10
Figura 4. Arquitetura de uma PACS................................................................................11
Figura 5. Wado Interface................................................................................................. 19
Figura 6. Estabelecimento de Comunicao A-Associate............................................... 20
LISTA DE TABELAS
Tabela 1 Exemplo de Classes de Servios......................................................................9
Tabela 2 Service-Object Pair UIDs.............................................................................. 10
Tabela 3 Lista de Frameworks e bibliotecas DICOM.................................................. 17
1. INTRODUO
Com o objetivo de desenvolver um projeto de software livre, reuniu-se uma equipe de
alunos da UFLA, atravs da professora orientadora ngela Maria Alves, para realizar
um contato com um dos responsveis pelo portal do Software Pblico Brasileiro (SPB),
Corinto Meffe. Uma lista de projetos que necessitavam de colaborao foi enviada para
a equipe e desta lista os alunos da UFLA escolheram o projeto InVesalius, um Software
Livre e Pblico, atualmente mantido pelo Centro de Tecnologia da Informao Renato
Archer, conhecido como CTI. Dentro das propostas do InVesalius, que um software
usado na visualizao de imagens mdicas, haviam trs demandas de desenvolvimento
da qual foi escolhido desenvolver um Sistema de Importao de Dados de Clnicas
Radiolgicas.
Neste cenrio o projeto se consiste em criar um mdulo para o InVesalius que
adicionar a funcionalidade de importar e exportar imagens de servidores PACS, que
so servidores que armazenam imagens mdicas.
A equipe foi formado por 4 alunos, onde cada um se encarregou de elaborar e
planejar uma parte do desenvolvimento, assim este trabalho parte de um conjunto de 4
monografias que visam ser um ponto de referncia para o desenvolvimento da camada
de comunicao do InVesalius. Neste trabalho descrito possveis maneiras de se
desenvolver o cdigo do protocolo de comunicao, utilizando bibliotecas e frameworks
disponveis no mercado. E nas outras monografias so discutidos o processo de
desenvolvimento XP, que ser utilizado para a criao deste software, a camada de
interface grfica com o usurio e tambm uma discusso sobre todos os softwares e
processo de configurao referente ao InVesalius e os servidores PACS.
Em 5 captulos abordada a base para o desenvolvimento, fazendo uma
descrio sobre o InVesalius, o protocolo DICOM, estrutura do arquivo e tipo de servio
e comunicao, bibliotecas livres e proprietrias que ajudam na implementao e a
propsta final.
O texto a seguir estruturado da seguinte forma:
Captulo 2, InVesalius, o objetivo apresentar o InVesalius fazendo uma
abordagem rpida dos seus conceitos e idias para uma compreenso melhor do
trabalho.
No Captulo 3, DICOM, o objetivo apresentar o DICOM, abordando sua
estrutura de funcionamento e as funcionalidades de comunicao em uma rede.
No Captulo 4, Modelos de Interface de Comunicao para o InVesalius, o
objetivo apresentar idias e ferramentas que possam ajudar na implementao de uma
interface de comunicao.
No Captulo 5, Arquitetura da Comunicao do InVesalius com a PACS, o
objetivo propor o modelo de comunicao que ser desenvolvido.
Finalmente no Captulo 6, Concluso, proposio final que se chega aps
desenvolvermos este projeto.
2. InVesalius
O InVesalius uma ferramenta que faz reconstruo 3D de imagens mdicas utilizando
imagens 2D, o que torna a prototipagem mais rpida, atualmente mantido pelo CTI
(antigo CENPRA), distribudo sob a licena GNU GPL v2 e est disponvel para
Microsoft Windows e Linux tanto na verso 1 como na verso 2.
O nome dado ao software InVesalius foi uma homenagem a Andreas Vesalius
(Bruxelas, 31 de Dezembro de 1514 - Zkinthos, 1564), um mdico belga considerado o
pai da anatomia moderna e autor da publicao De Humani Corporis Fbrica, um
famoso livro de anatomia publicado em 1543.
Hoje em dia h vrias ferramentas com o mesmo objetivo do InVesalius, como o
Analyze desenvolvido pelo Mayo Clinic e o Mimics desenvolvido pela Materialize. Mas
esses softwares possuem licena e manuteno muito caras o que os tornam inviveis
para os hospitais brasileiros.
Assim com o InVesalius, cirurgies e estudantes de medicina podem usar dados
de topgrafos e aparelhos de ressonncia magntica, que exportem para um formato
digital especfico de imagem, para fazerem pesquisa e prototipagem rpida em modelos
tridimensionais de craniofaciais por exemplo, facilitando assim o planejamento e
documentao do procedimentos cirrgicos sem gastos.
Para o desenvolvimento foi usado a linguagem Python devido a portabilidade,
usabilidade e a syntax simples que a linguagem oferece, apesar de perder em
performance para linguagens como C e C++. A figura abaixo mostra as bibliotecas
empregadas no desenvolvimento.
3. DICOM
DICOM (Digital Imaging Communications in Medicine) um padro que define um
formato de arquivo de imagem e protocolo de comunicao em uma rede, usado para
tratamento, armazenamento, impresso e transmisso de informao mdica num
formato eletrnico.
Com este padro podemos trocar informaes entre os equipamentos de
diagnstico geradores de imagens, computadores e hospitais, criando se assim uma
linguagem comum entre os equipamentos de marcas diferentes, que geralmente no so
compatveis, e entre equipamentos de imagem e computadores, estejam esses em
hospitais, clnicas ou laboratrios.
O protocolo de comunicao padro utilizado para se comunicar com outros
sistemas o TCP/IP, assim arquivos DICOM podem ser trocados entre dois
dispositivos, atualmente o InVesalius utiliza apenas a especificao de definio de
imagem do DICOM, para a partir de vrias imagens em duas dimenses 2D criar
modelos tridimensionais.
3.1 Histria
At meados de 1980, cada fabricante de equipamentos mdicos tinha que criar o seu
prprio protocolo para troca de dados entre as mquinas mdicas e os computadores,
isso significa que a comunicao existia apenas entre produtos de mesmo fabricante. O
que gerava grandes custos e esforo para integrao de equipamentos de outros
fabricantes.
Para resolver este problema, em 1983 o ACR (American College of
Radiologists) e o NEMA (National Electrical Manufacturers Association) formaram um
comit, o ACR-NEMA Digital Imaging and Communications Standards Committee, com
o objetivo de desenvolver uma interface para comunicaes entre equipamentos de
imagem. Alm da especificao de um protocolo de comunicao, o novo padro
tambm deveria incluir uma especificao de armazenamento da imagem, incluindo
compactao.
Aps 2 anos de trabalho, em 1985, a primeira verso do padro foi lanada,
chamada de ACR-NEMA Version 1.0 (ou ACR-NEMA 300-1985), e a partir desta,
vrias melhorias foram sugeridas. Ento em 1988 a ACR-NEMA Version 2.0 (tambm
conhecida como ACR-NEMA 300-1988) foi lanada.
6
3.2 Definio
Um arquivo DICOM contm cabealho e definies de imagem. O cabealho possui
informaes como nome do paciente, tipo de equipamento usado para gerar a imagem,
dimenses da imagem, etc. J as definies da imagem possuem informaes referentes
imagem em si.
Arquivos DICOM tambm permitem que as imagens sejam compactadas para
reduzir o tamanho, para melhorar o desempenho na transferncia em uma rede. Os tipos
de compresso usados podem ser as lossy (com perda de dados) ou lossless (sem perda
de dados) ambas variantes do formato JPEG.
No incio de cada arquivo, antes do cabealho, so definido dois valores: o
Prembulo, que so os primeiros 128 bytes do arquivo e geralmente no contm
informaes, pois so reservadas para comentrios, e em seguida temos o Prefixo, que
um espao que valida um arquivo como sendo um arquivo DICOM. Este possui 4 bytes
e deve ser preenchido com o valor D, I, C e M. Conforme ilustrado a imagem
abaixo:
C-FIND: Servio usado para fazer uma pesquisar por uma String
C-MOVE: Servio usado para mover dados dentro de uma base de dados
N-ACTION: Servio usado para buscar status de outro servio que j esteja em
uso
Descrio
Dispositivo que usa o servio DICOM C-
Storage SCP
STORE
Dispositivo que prove o servio DICOM
Query SCU
C-STORE
Dispositivo que usa o servio DICOM CFIND
UID
CR Image Storage
1.2.840.10008.5.1.4.1.1.1
CT Image Storage
1.2.840.10008.5.1.4.1.1.2
US Image Storage
1.2.840.10008.5.1.4.1.1.6
1.2.840.10008.5.1.4.1.1.3
MR Image Storage
1.2.840.10008.5.1.4.1.1.4
1.2.840.10008.5.1.4.1.1.8
Query/Retrieve Service Class
1.2.840.10008.5.1.4.1.2.1.1
1.2.840.10008.5.1.4.1.2.1.2
1.2.840.10008.5.1.4.1.2.2.1
Tabela 2 Service-Object Pair UIDs
Prioridade
Estimativa
Nome do teste
Alta
3 dias
VerStatusServ
Prioridade
Estimativa
Nome do teste
Alta
5 dias
ConecServPAC
Prioridade
Estimativa
Nome do teste
Alta
3 dias
PesqServPAC
Aps o usurio estiver conectado ao servidor PAC, ele poder fazer a pesquisa no
banco de dados.
Prioridade
Estimativa
Nome do teste
Alta
5 dias
ImpArmDadosPAC
Aps o usurio receber a lista da pesquisa US<09> e clicar no item almejado, ser
realizado a importao dos arquivos mostrados na pesquisa e armazenados no diretrio
12
Todo cdigo desenvolvido esteja disponvel sob licena GNU GPL ou BSD;
Se alguma biblioteca for usada ela deve estar disponvel sob licena GNU GPL
ou BSD;
Todo cdigo deve ser desenvolvido em Python ou deve haver um biding para
Python;
No se deve usar Java ou outra plataforma que dependa de uma virtual machine
A-Associate-RQ
C-Echo-RQ
C-STORE
C-GET
C-FIND
A-Release-RQ
Dos servios definidos como necessrios o mais critico o C-STORE, pois trata
de um arquivo muito grande para ser enviado pela rede, principalmente em locais com
banda limitada como em muito casos que utilizam internet. O C-STORE neste caso se
trata do envio do arquivo DICOM da PACS para o InVesalius.
Abaixo foram divididos em 3 tpicos abordando possveis alternativas a serem
usadas no desenvolvimento.
4.2.1 Utilizar biblioteca DICOM j existente
Nesta alternativa analisada as principais bibliotecas, framework e ferramentas atuais
para propor caminhos para facilitar o desenvolvimento reutilizando algum cdigo j
existente.
13
15
4.2.1.7 Imebra
O Imebra uma biblioteca C++ para DICOM, desenvolvida pela empresa Puntoexe, que
distribuda sob a licena GPL v2 e possui outra verso comercial. O que chama a
ateno no Imebra que ele foi desenvolvido buscando um alto nvel de portabilidade,
atualmente a verso livre suporta ambientes Windows, Linux, Max OS X e Pocket PC.
Essa biblioteca suporta os servios padro de rede no trazendo grandes
vantagens nesse ponto, tambm suporta o padro Unicode, mas o grande diferencial nos
servios est para o tratamento de imagem, pois o Imebra suporta imagens Jpeg,
DICOM e NEMA, suporta vrias opes pra compresso e descompresso e permite a
converso da imagem de maneira simples.
A utilizao do Imebra no InVesalius parece ser uma boa alternativa, mas
infelizmente no h um wrapper para python e como utiliza esquema de duas licenas,
sendo uma livre e uma comercial, o InVesalius estaria sempre usando uma verso
inferior, o que inviabiliza o uso dela, pois h vrias alternativas livres que apresentam as
mesmas funcionalidades.
4.2.1.8 Lista de Referncia
Aqui so listados alguns toolkits que no foram analisados com profundidade por serem
produtos comerciais ou pouco usados. A lista serve apenas como referncia e possui
apenas informaes bsicas.
Empresa /
Toolkit
Licena
Principais Caractersticas
DeJarnette
Comercial
Autor
AN/API
Research
especificao DICOM
Systems
Plataforma Suportadas: "Sun/OS, Solaris, IRIX, HPUX, Digital UNIX, AIX, o Windows 3.1, Windows
95, Windows NT, Windows 2000, DOS, OS/2,
Mallinckrodt
Central Test
Proprietary
Institute of
Node (CTN)
OSS
Radiology
Marcel van
ConQuest
Proprietary
Herk and
DICOM
OSS
Lambert Zijp
Laurel Bridge
Library
DICOM
Comercial
disponvel grtis
No faz manipulao de imagem, implementa toda a
Software, Inc.
Connectivity
Framework
(DCF)
16
DICOM Suite
Comercial
CoreWare
DICOM
Comercial
Toolkit (DTK)
Medical
DicomObjects
ensino)
Comercial
Connections
AccuSoft
ImageGear
(possui
verso trial
imagem
por 60 dias)
Comercial
MD
AccuSoft
ImageTranspo
Comercial
rt MD
LEAD
LEADTOOLS
Technologies,
Medical
Inc.
Merge
Imaging SDK
MergeCOM-3
Healthcare
Advanced
Integrator's
MultiTech
Toolkit
msiCOM3
Comercial
Comercial
18
19
Este processo de associao tem quatro etapas, como podemos ver na imagem,
primeiro a aplicao requisitante envia uma requisio de associao para a PACS,
nessa mensagem h informaes de que tipo de servio que o requisitante est
solicitando e quais as sintaxes de transferncia suportadas.
Quando a PACS recebe a requisio de associao ela verifica quais dos servios
presentes na mensagem so suportados e define qual sintaxe de transferncia ser
utilizada, caso alguma sintaxe ou o algum servio no seja suportado, o servio
marcado como rejeitado.
Assim quando a PACS termina de verificar os servios e sintaxes requisitadas,
ela responde com uma lista com todos os servios e sintaxes que foram aceitos e
rejeitados, o requisitante verifica a resposta e inicia a seqncia de solicitao de
servios.
Abaixo segue o exemplo de um cdigo de como seria implementado o
A_Associate_REQ, esse cdigo foi desenvolvido pelo prprio CTI e foi um pouco
alterado para se adequar a este exemplo.
import random
import socket
import struct
class A_Associate_RQ(object):
self.PresentationContextID = id
20
def getApplicationContext(self):
#See PS 3.7-2008 page 83 A.2.1 for this magic value
applicationContextName = '1.2.840.10008.3.1.1.1'
return struct.pack('>BBH', 0x10, 0x00,
applicationContextName
len(applicationContextName))
def getAbstractSyntax(self):
abstractSyntaxName = '1.2.840.10008.1.1'
return struct.pack('>BBH', 0x30, 0x00, len(abstractSyntaxName)) + abstractSyntaxName
def getTransferSyntax(self):
transferSyntaxName = '1.2.840.10008.1.2'
return struct.pack('>BBH', 0x40, 0x00, len(transferSyntaxName)) + transferSyntaxName
def getPresentationContext(self):
subContext = struct.pack('>BBBB', self.PresentationContextID, 0x00,
0x00, 0x00) +\
self.getAbstractSyntax() + self.getTransferSyntax()
return struct.pack('>BBH', 0x20, 0x00, len(subContext)) + subContext
def getUserInformation(self):
userData = self.getMaximumLength() +\
self.getImplementationClassUID() +\
self.getAsyncOperationsWindow() +\
self.getImplementationVersionName()
return struct.pack('>BBH', 0x50, 0x00, len(userData)) + userData
def getMaximumLength(self):
return struct.pack('>BBHI', 0x51, 0x00, 0x4, 1024*16)
def getImplementationClassUID(self):
implementationClassUID = '1.2.40.0.13.1.1'
return struct.pack('>BBH', 0x52, 0x00, len(implementationClassUID)) +\
implementationClassUID
def getAsyncOperationsWindow(self):
return struct.pack('>BBHHH', 0x53, 0x00, 0x04, 0x01, 0x01)
def getImplementationVersionName(self):
version = 'dcm4che-2.0'
return struct.pack('>BBH', 0x55, 0x00, len(version)) + version
def getPDU(self):
subPDU = struct.pack('>HH16s16s32s',
0x01,
0x00,
'DCM4CHEE'.ljust(16),
'DCMECHO'.ljust(16), '')
self.getApplicationContext() + \
self.getPresentationContext() + \
self.getUserInformation()
return struct.pack('>BBI', 0x01, 0x00, len(subPDU)) + subPDU
def getMessage(self):
"""
Returna a mensagem A-Associate-RQ
"""
return self.getPDU()
21
def AssociateRQ():
"""
Importa a biblioteca socket
"""
import socket
"""
Cria um socket , definindo AF_INET pois ser usado um domnio da Internet, defini o
tipo
de protocolo a ser usado SOCK_STREAM por ser o TCP (poderia ser SOCK_DGRAM
caso optassemos pelo UDP).
"""
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM, 0)
"""
Conecta com o host, no exemplo ser definido o IP vlido de uma PACS pblica
oferecida para teste pelo fabricante da PACS DicomObjects.
"""
s.connect((217.160.210.147, 11112))
"""
Chamada a uma PACS requisitando o servio A_Associate_RQ
"""
menssage = A_Associate_RQ(0x00).getMessage()
print 'Enviando uma mensagem A_Associate_RQ:', menssage.__repr__()
s.send(menssage)
"""
Termina a interao.
"""
s.close()
if __name__ == '__main__':
AssociateRQ()
#include "dimse.h"
#include "assoc.h"
void main(void)
{
T_ASC_Network *net;
T_ASC_Parameters *params;
T_ASC_Association *assoc;
// Define a PACS dicomserver.medicalconnections.co.uk para se conectar
ASC_setPresentationAddresses(params,
"217.160.210.147",
"dicomserver.medicalconnections.co.uk:11112");
// Inicializa a Rede
OFCondition cond = ASC_initializeNetwork(NET_REQUESTOR, 0, 1000, &net);
22
23
6 - Concluso
O DICOM um padro complexo, porm necessrio e muito bem documentado. Na
internet possvel achar vrias bibliotecas e frameworks livres ou pagos para todo tipo
de linguagem e plataforma.
J o InVesalius sem uma conexo com um PACS se torna uma ferramenta
isolada e menos aceita pelos usurios, uma vez que depende do usurio ter as imagens
no disco local, por isso o projeto ponto DICOM muito importante para a evoluo do
projeto InVesalius.
Dentre as alternativas apresentadas neste trabalho, ficou evidente que a
biblioteca DICOM livre mais usada nos dias de hoje o DCMTK. Tanto a
documentao disponvel quanto a grande quantidade de cdigo de exemplo abrem um
caminho rpido para desenvolvedores que no possuem muito conhecimento do
funcionamento do DICOM em uma rede.
A idia de se desenvolver todo o cdigo em python utilizando sockets tambm
se mostrou ser muito eficiente, evitando a necessidade de um wrapper para usar
bibliotecas em outras linguagens e no aumentando o nmero de dependncias do
InVesalius, porm seria necessrio um conhecimento muito maior da especificao do
InVesalius e muito mais cdigo seria gerado.
24
7. REFERNCIAS BIBLIOGRAFICAS
Medical Imaging & Technology Alliance, Disponvel em: http://medical.nema.org.
Acesso em: Setembro/2008.
DICOM
introduction
and
free
software,
Disponvel
http://www.sph.sc.edu/comd/rorden/dicom.html. Acesso: em Setembro/2008.
em:
Website,
Disponvel
em:
25
ANEXOS
26
27
USER STORIES
VERSO 1.2
28
1 - HISTRICO DE ALTERAES
Verso
Data Alterao
Responsvel
Descrio
1.0
03/09/2008
Equipe UFLA
Verso Inicial
1.1
18/09/2008
Fernando
Definio de
prioridade
1.2
18/09/2008
Fernando
Definio de
estimativa
2 - INTRODUO
Este documento descreve os User Stories necessrios aos desenvolvedores as
para a execuo e implementao do projeto o mdulo de comunicao do InVesalius
com servidores PACS, que adicionar a funcionalidade de importao de dados para o
InVesalius.
Os User Stories foram divididos em 5 temas sendo eles:
3 USER STORIES
TEMA 1: Ponto DICOM Receptor
Criao da janela do Ponto DICOM Receptor
<01>
Prioridade
Estimativa
Nome do teste
Mdia
1 dia
janPDR
AETitle
TCP/IP
Verificao de atualizao
Time-out de comunicao
Diretrio
Prioridade
Estimativa
Nome do teste
Alta
2 dias
InfoCompLocal
TCP/IP
*Verificao de atualizao
*Time-out de comunicao
Obs.: Na primeira execuo do InVesalius, dever ser criado um arquivo com estes
dados.
Prioridade
Estimativa
Nome do teste
Baixa
1 dia
LimpArqLog
O arquivo de log dever ser verificado e limpo conforme o nmero de semanas definido
na tela de definio do Ponto DICOM Receptor no US<01>.
30
Salvar Configurao
<04>
Prioridade
Estimativa
Nome do teste
Alta
2 dias
SalConf
Prioridade
Estimativa
Nome do teste
Mdia
1 dia
janPDT
Criao de uma janela que permita adicionar, remover e alterar informaes usadas
para acesso aos servidores PACS, os seguintes campos so necessrios:
AETitle
Endereo TCP/IP
Porta TCP/IP
Descrio
Lista de Servidores
configuraes
ficaro
salvas
em
um
arquivo.
obs: O boto ADD mudar para ALTER caso o usurio clique em um dos servidores da
lista.
31
Prioridade
Estimativa
Nome do teste
Alta
3 dias
VerStatusServ
Prioridade
Estimativa
Nome do teste
Mdia
1 dia
janPDIbusca
Criao de uma janela que permitir ao usurio fazer uma busca nos servidor PACS, a
busca pode ser feita utilizando um dos campos pr definidos:
AETitle
Nome do Paciente
Modalidade
Idade
Sexo
Data de Aquisio
Essa
janela
estar
disponvel
partir
do
MENU:
Prioridade
Estimativa
Nome do teste
Alta
5 dias
ConecServPAC
Prioridade
Estimativa
Nome do teste
Alta
3 dias
PesqServPAC
Aps o usurio estiver conectado ao servidor PAC, ele poder fazer a pesquisa no
banco de dados.
Prioridade
Estimativa
Nome do teste
Alta
5 dias
ImpArmDadosPAC
Aps o usurio receber a lista da pesquisa US<09> e clicar no item almejado, ser
realizado a importao dos arquivos mostrados na pesquisa e armazenados no diretrio
padro que foi configurado no US<01>.
TEMA 4: Ponto DICOM Log de Comunicao
Criar tabela de Erros
<11>
Prioridade
Estimativa
Baixa
1 dia
Nome do teste
Criar uma tabela de erros para o sistema com: Cdigo do ERRO e Descrio, usada
pelo sistema pra definir os erros.
Prioridade
Estimativa
Nome do teste
Baixa
1 dia
VisLogCom
33
AETitle
Endereo TCP/IP
Porta TCP/IP
Descrio do Evento
Data e Hora
34
35
36
composed by:
item type(B) -> 0x52
reserved(B) -> 0x00
item lenght(H) -> the length of implementation-class-uid, the next field
implemententation-class-uid -> A valid implementation-class-uid
"""
implementationClassUID = '1.2.40.0.13.1.1'
return struct.pack('>BBH', 0x52, 0x00, len(implementationClassUID)) +\
implementationClassUID
def getAsyncOperationsWindow(self):
"""
See PS 3.7-2008 page 106, table D.3-7
composed by:
item type(B) -> 0x53
Reserved(B) -> 0x00
item length(H) -> 0x04
maximum-number-operations-invoked(H) -> See PS 3.7-2008 section D.3.3.3
Maximum-number-operations-performed(H) -> See PS 3.7-2008 section D.3.3.3
"""
return struct.pack('>BBHHH', 0x53, 0x00, 0x04, 0x01, 0x01)
def getImplementationVersionName(self):
"""
See PS 3.7-2008 page 103, table D.3-3
composed by:
item type(B) -> 0x55
reserve(B) -> 0x00
item length(H) -> the length of the implementation-version-name, the
next field
implementation-version-name -> a valid value
"""
version = 'dcm4che-2.0'
return struct.pack('>BBH', 0x55, 0x00, len(version)) + version
def getPDU(self):
"""
See PS 3.8-2008 page 35, table 9-11
Associate-RQ PDU is composed by
PDU-type(B) -> 0x1, means a A-Associate-RQ message
Reserved(B) -> 0x0
PDU-length(I) -> length of the rest of this message
Protocol-version(H) -> protocol suported by the calling system( that is me )
Reserved(H) -> 0x0
Called-AE-title(16s) -> AE title from server
Calling-AE-title(16s) -> AE title from client
Reserved(32s) -> shall be sent filled with 0x0 values
Variable items -> Composed by Aplication Context, one or more
Presentation context and User information
"""
subPDU = struct.pack('>HH16s16s32s', 0x01, 0x00, 'DCM4CHEE'.ljust(16),
'DCMECHO'.ljust(16), '') + \
self.getApplicationContext() + self.getPresentationContext() + \
self.getUserInformation()
return struct.pack('>BBI', 0x01, 0x00, len(subPDU)) + subPDU
def getMessage(self):
"""
37
38