Professional Documents
Culture Documents
Wangenheim, Aldo v.
Depto de Ciência da Computação, CTC, UFSC,
88040-900, Florianópolis, SC
awangenh@inf.ufsc.br
Resumo: Este trabalho apresenta uma proposta de Exemplo disso é o Kit de Desenvolvimento de
um protocolo de comunicação em nível de aplicação Software, SDK, que é fornecido por algumas empresas
para possibilitar a realização de teleconferências para que suas aplicações possam ser integradas a
radiológicas ponto a ponto permitindo a transferência outros aplicativos, como NetMeeting[1].
de pacotes de dados e imagens. O protocolo foi A proposta deste trabalho é oferecer um protocolo
batizado de “Protocolo Cyclops de Teleconferência - de comunicação pertencente da camada de aplicação
PCT”. que permita ser integrado em sistemas médicos
Para validação do PCT, foi desenvolvido um distribuídos. Espera-se que o protocolo denominado
sistema voltado a telemedicina ou especificamente PCT, Protocolo Cyclops de Teleconferência, permita o
para a área da teleradiologia. O sistema proposto desenvolvimento de sistemas de informática médica,
denomina-se “Sala de Laudos Virtual Ponto a Ponto – como por exemplo, sistemas de telemedicina e
SLVPP”, onde seu principal objetivo é compartilhar teleradiologia que utilizam técnicas de
entre os usuários participantes de uma mesma sessão, teleconferências possam a vir ter uma biblioteca
arquivos de imagem no padrão DICOM 3.0 e suas específica para seu desenvolvimento.
ações durante a utilização do sistema. As funcionalidades do PCT são de transmitir dados
Durante toda a sessão de utilização do sistema, os e imagens. Ainda nesta versão não haverá recursos de
usuários poderão se comunicar através de chat e transmissão de áudio ou vídeo.
também através voz sobre IP. A utilização da biblioteca PCT poderá evitar a
O resultado final deste trabalho é um protocolo utilização de aplicativos que foram desenvolvidos para
PCT que permite a criação de sistemas ponto a ponto fins outros que não exclusivamente para
gerando um ambiente colaborativo para que dois teleconferências médicas.
usuários médicos possam efetuar laudos em conjunto. Espera-se que o protocolo PCT proposto por esta
pesquisa, permita a médicos que trabalham em centros
de saúde remotos ou hospitais e demais centros de
Palavras-chave: PCT, Protocolo, saúde que não dispõem de médicos especialistas,
Teleconferência, VoIP, Cyclops. possam utilizar softwares que adotem o PCT como
protocolo de teleconferência de seus sistemas,
Introdução permitindo discutir imagens médicas com outros
especialistas. Esse processo poderá evitar o
Dentre as pesquisas e aplicações desenvolvidas deslocamento do paciente para centros de saúde
para área médica estão trabalhos voltados para maiores. Caso a utilização do sistema seja eficiente
telemedicina e teleradiologia, por exemplo. Para estes como se espera, pode-se supor também que haverá
dois exemplos, nem todas as aplicações desenvolvidas economia no que diz respeito a translado de pacientes
possuem tecnologia própria para seu pleno ou médicos, inclusive de chapas de raios-X que
funcionamento, portanto, são adotadas ferramentas deixam de ser impressas e passam a ser utilizada
que foram desenvolvidas para outros fins para somente por meio digital, já que o protocolo permitirá
satisfazer um requisito específico, por exemplo, a a transferência de imagens entre sistemas distribuídos.
aplicação Microsoft Netmeeting®, que pode ser No ponto de vista educacional e social, poderá
utilizado para transferência de áudio, vídeo e dados. haver uma maior integração entre especialistas
Em alguns casos, algumas ferramentas oferecem médicos, sendo assim, o protocolo permitirá a criação
um conjunto de bibliotecas e dispositivos de acesso de sistemas voltados a teleconferências médicas, como
que permitem a sua integração com outros sistemas. a teleradiologia.
1
Material e Métodos Tabela 1 - Representação das ações do campo Serviço
Serviço Descrição
Foi feita uma análise para determinar qual seria a createdir Criação de diretório;;
estrutura do protocolo. Desta análise, foi constatado getwindow Envio da resolução de vídeo;
que haveria o mesmo padrão do protocolo IP[7], mas, Sendchat Envia texto de diálogo;
o protocolo PCT trabalharia na camada de aplicação.
sendalert Envio de Sinal de notificação;
Seguindo o conceito do protocolo IP, alguns de
numfiles Envio do número total de arquivos
seus campos foram adotados para permitir a
que serão transferidos;
integridade da transmissão. Os campos adotados para
compor o protocolo PCT foram, identificação, senddatafile Solicita o envio de dados do arquivo
comprimento, tipo de serviço, soma de verificação e a ser enviado;
dados. sendzipfile Envio do arquivo compactado;
O protocolo PCT foi desenvolvido em uma changectrl Notifica a troca de controle da
primeira versão visando comunicação ponto a ponto, sessão;
portanto, não foi necessário na composição deste namebytes Envio do Nome e Bytes do arquivo a
protocolo nenhum campo que controle a sessão da ser enviado;
comunicação, pois interpreta-se que há somente uma changescreen Solicita a mudança de resolução do
única sessão em comunicação ponto a ponto. vídeo;
A Figura 1 apresenta o protocolo PCT ponto a mousemove Envio das coordenadas x e y do
ponto e sua composição de campos. mouse;
2
de armazenar as imagens Dicom que também são outro host que envie os dados do arquivo. Não deve
transmitidas por este protocolo. ser confundido esta ação com a ação senddatafile pois
Getwindow – Esta ação permite que o protocolo esta ação efetua a solicitação dos dados, e a ação
negocie entre ambos hosts, qual a menor resolução de senddatafile as envia.
vídeo, ou seja, ambos computadores participantes da Changescreen – Permite alterar a resolução do
teleconferência deverão ter resoluções igual ao vídeo do host remoto. Esta ação executa a solicitação
iniciarem uma sessão, portanto, a troca de resoluções é de mudança da resolução para a menor resolução
fundamental. investigada pela ação getwindow.
Sendchat – O protocolo PCT permite troca de Mousemove – Por fim, esta última ação é
mensagens entre os participantes de uma responsável pelo envio de coordenadas do mouse. O
teleconferência. Esta ação permite que seja enviado usuário que estiver com o controle da sessão que é
um pacote contendo em sua camada de dados uma obtido através da ação changectrl poderá transmitir as
mensagem para o host remoto. coordenadas x,y para o host remoto.
Sendalert – Semelhante a ação sendchat, porém,
sua função é permitir troca de sinais entre os Tecnologia Empregada
participantes de uma teleconferência. Estes sinais
podem ser utilizados para definir ações específicas Para efetuar a transmissão dos pacotes, foi adotada
entre ambos hosts. Sinais como de início e término da as bibliotecas de sockets que são encontradas na
sessão, ou qualquer outra notificação que o maioria dos sistemas operacionais modernos[3].
desenvolvedor de uma aplicação de teleconferência Socket podem ser utilizados para efetuar
desejar. transmissões de mensagens entre computadores, sendo
Numfiles – Uma sessão de teleconferência pode necessário apenas o IP e porta de comunicação do host
haver transferência de arquivos como imagens Dicom, destino. Basicamente esta biblioteca utiliza a API
portanto, o protocolo PCT permite com esta ação Winsock1 do sistema operacional Windows, uma
informar ao host destino o número de arquivos que camada de interface entre um aplicativo Windows e
serão transmitidos. Esta ação é obrigatória para que se uma rede TCP/IP subjacente[4].
possa transferir um arquivo entre ambos hosts. Fica claro que o ambiente de funcionamento é
Senddatafile – Esta ação trabalha em conjunto Microsoft Windows®. Já a ferramenta de
com Numfiles, ou seja, ela é responsável pelo envio de desenvolvimento foi Borland Delphi® que possui as
informações referente ao arquivo a ser enviado. O bibliotecas TcpClient sockets e TcpServer sockets.
nome do arquivo e tamanho em bytes são enviados A porta de comunicação utilizada pelo protocolo
antes do envio real do arquivo. As informações são PCT é 31280, mas pode ser configurada para qualquer
utilizadas para validar os dados ao final da outra.
transmissão.
Sendzipfile – Solicita ao host remoto que envie o Funcionamento
arquivo descrito pelas informações repassadas pela
ação senddatafile. Quando o host remoto recebe o Para utilizar o protocolo PCT, deve-se seguir o
número de arquivos que serão enviados, ele solicita o conceito de chamar a classe do protocolo em modo
envio dos dados de cada arquivo através da ação instanciado, definir o serviço no cabeçalho e quais os
senddatafile, e em seguida é solicitado o envio dos dados que serão enviados. O Quadro 1 demonstra
arquivos um a um através desta ação. Mas, antes de claramente o processo de envio de mensagens entre os
enviar o arquivo, ele é compactado com algoritmo de hosts utilizando o PCT. No local onde descreve
compressão sem perda de dados e somente após a nome_do_serviço é inserido um dos serviços descritos
compressão é despachado. na Tabela 1. No local onde esta descrito dados, pode-
Changectrl – Diante de uma teleconferência, cada se inserir os dados que devem ser transportados pelo
participante necessitará de um momento exclusivo PCT. Todos os demais campos dentro do cabeçalho
para trabalhar e expressar seus interesses e dúvidas. como, ID, CS e LN são automaticamente preenchidos
Portanto, para haver ordem durante uma sessão, antes do envio do pacote.
apenas um participante da teleconferência poderá ProtocolPCT := TProtocolPCT.Create; //Instancia a classe.
utilizar o mouse e executar suas ações sem a ProtocolPCT.sendProtocol('nome_do_serviço’,dados); //Envio
interferência do outro membro participante. Para esta dos dados
situação, esta ação permite definir quem está o estatus Quadro 1 – Exemplo de envio de dados utilizando PCT.
de usuário ativo. Este status permite que apenas um 1
Winsock é uma forma abreviada de Windows
usuário se manifeste por vez. Quando achar
Sockets. A interface de sockets originou-se no Unix de
necessário, o usuário poderá repassar o controle da
Berkeley como a API de sua pilha de rede TCP/IP. O
sessão para o outro usuário através deste comando.
Winsock é baseado na API Berkeley Sockets e inclui a
Namebytes – Esta ação permite que o participante
maioria das funções-padrão da API BSD, bem como
da teleconferência que receberá as imagens, solicite ao
algumas extensões específicas do Windows[4].
3
Para o recebimento da mensagem que contém o
protocolo PCT, é criada uma variável para armazenar
a mensagem. A variável denominada Buffer permite
armazenar em seu conteúdo até 10.000 bytes por Preparação da Sessão
pacote PCT. Após seu recebimento, outras variáveis Médico A (Sala de
passam a receber os conteúdos dos campos do Laudo Virtual)
protocolo. A terceira linha do Quadro 2, exibe a
extração feita do campo serviço e é armazenado em
uma variável de mesmo nome.
Após seu cabeçalho ser desmontado, é feita a
validação do CS e em seguida é analisado o campo
SERVIÇO onde define qual tarefa dever ser executada. Seleção de Imagens Envio de Imagens
Para cada tipo de serviço encontrado no campo
SERVICO, o desenvolvedor poderá programar uma
tarefa que sua aplicação deve executar.
O Quadro 2 exibe parte do código utilizado no
recebimento do pacote PCT.
4
considerada o coração do protocolo PCT. Todas as
demais classes estão relacionadas a ela.
A classe é responsável pela formatação do
Canal de Áudio Disposição das Ima protocolo e também pela leitura e manipulação dos
Médico (Ambiente de
Análise das Imagens) dados transmitidos e recebidos entre os hosts.
USelectImagesForRoomOfDecision uRoD_Communication
ThumbiesList : TList ClientSocket : TTcpClient
Linha Ampliação Status : TStatus memProtocol : array of str
numFiles : Integer
lastIndex : Integer sendProtocol( )
selectedImages : TList genID( )
sListImages : TStringList receiveMoveMouse( )
applicationModel : TApplicationModel receiveImgPosition( )
numfileReceive : Integer receiveScrollImage( )
lenData : Integer receiveImgMove( )
Círculo Rotação sumSizeFile : Longint receiveImgZoom( )
nameFile : String receiveImgLupe( )
currentSeries : TCyclopsSeries receiveActivateLupe( )
bRoD : Boolean receiveHideLupe( )
bScrollBar : Boolean receiveImgWindow( )
bLupe : Boolean complete( )
bControl : Boolean
Alteração bImageMove : Boolean
checksum( )
Retângulo IsManager : Boolean
receivePing( )
MeioPressionado : Boolean
Ângulação IsConnected : Boolean
nPing : Integer
idFrame : Integer
Figura 4 – DCU – Refinamento do Módulo Ambiente ScreenWidth : Integer
ScreenHeight : Integer
de Análise das Imagens iCol : Integer
iRow : Integer
userSelected : Integer
Para o fluxo de evento Canal de Áudio, inicia-se nSessions : Integer
nUsers : Integer
uma conexão com o host destino e abre um canal para nIntervalo : Integer
nAuxIntervalo_Mouse : Integer
áudio conferência. Caso o host destino não aceitar nAuxIntervalo_ImgMove : Integer
áudio, o sistema emite um alerta de impossibilidade de nAuxIntervalo_ImgZoom : Integer
nAuxIntervalo_ImgWindow : Integer
estabelecer um canal de áudio. nIntervalo_ImgMove : Integer uRoD_PreparationSession
sDateTimeSession : String
Por fim, o fluxo de evento, Envio de Imagens, sDirSession : String ClientSocket : TTcpClient
sDirSession : String
executa o envio das imagens para o host destino para IPCall : String
Ultimo_Pacote : String sDataSession : String
que inicie o laudo cooperativo. Essa ação pode sDataGlobal : String numFiles : Integer
nPercPartialSizeFile : Integer
idSession : String
retornar mensagens alertas como, direito de acesso a nPercSizeFile : Integer
ping( ) sNameFileDICOM : Integer
disco. SpBHelpClick( )
sendScreen( )
A Figura 4 apresenta o refinamento das analise de TcpServerAccept( )
TcpClientError( ) receiveScreen( )
imagens onde o médico já com a conexão estabelecida TcpClientDisconnect( ) getScreen( )
receiveChat( )
GetZipFile( )
com o outro host remoto permite laudar SendZipFile( ) zipFileDICOM( )
GetDataFile( ) unZipFileDICOM( )
colaborativamente. SendDataFile( ) sendFileDICOMCompress( )
receibeFileDICOMCompress(
Diversas ações podem ser executadas entre ambos zipNumFiles( )
beginDecision( ) createSession( )
os hosts, como, efetuar marcações sobre as imagens subString( ) sendNumFiles( )
changeVideo( )
edtHostKeyPress( )
com linhas, círculos, retângulos e ângulos. Também SpBNewClick( ) createDirSession( )
unZipFileDICOM( ) sendNameUser( )
pode-se movimentar as imagens, rotacionar, e efetuar getSizeFile( ) receiveListSessions( )
receiveListUsers( )
ampliação. preparationConnection( )
changeStatus( ) joinSession( )
A Figura 5 representa o diagrama de classes. Estas getServerSessions( )
closeSessionsAndSystem( )
classes foram adicionadas ao sistema que permitiu exitSession( )
configButtonsManagerSessio
validar o protocolo como descrito na seção resultados.
As classes foram divididas seguindo um critério
simples de organização de atributos e métodos. Um
grupo de atributos e métodos são responsáveis pela Figura 5 - Diagrama de Classes
seleção das imagens, esta classe possui uma interface
com o usuário e é denominada
UselectImagesForRoomofDecision. Resultados
A segunda classe denominada
Para validar o protocolo PCT foi proposta e
URoD_PreparationSession, é responsável pela
desenvolvida uma aplicação denominada “Sala de
comunicação inicial entre os hosts, ou seja, esta classe
Laudos Virtual – SLV”. A SLV deveria funcionar
comprime as imagens e as envia como também cria os
como sistema distribuído que contenha todas as
diretórios para seu armazenamento e configura as
funcionalidades possíveis que o PCT pudesse ser
resoluções de tela de ambos os hosts.
testado em todas suas possibilidades de
Por fim, a classe URoD_Communication, é
funcionamento.
responsável por toda a comunicação, sendo
5
A SLV é uma aplicação ponto a ponto onde seu
objetivo é fornecer recursos de uma sala virtual para
que médicos possam discutir e efetuar lado médico
com base em imagens digitais médicas no padrão
DICOM 3.0[5].
6
Windows®, ou seja, pode-se escolher o melhor
algoritmo de compressão que desejar, como, gsm 6,10,
pcm, ou qualquer outro codificador disponível pelo
Windows®.
A ferramenta de áudio REMKO permite também a
transferência de dados através de UDP para o host
destino bastando indicar o IP e porta desejada.
Resultados e Discussão
O protocolo PCT atingiu os objetivos esperados.
Efetuou a transmissão das imagens corretamente uma
a uma e possibilitou a transferência das coordenadas
de mouse e suas ações.
Foi constatado que é necessário o desenvolvimento
Figura 9 – Interface de Abertura da SLV de um sistema de validação de ações transmitidas, pois
há uma seqüência obrigatória a seguir para que o
A Figura 10 representa a interface que permite protocolo PCT possa trabalhar com eficiência.
alterar o modo de exibição das imagens. Esta Em alguns casos durante os testes com o aplicativo
funcionalidade permite ter uma visão geral das Cyclops Personal, o protocolo PCT interrompeu sua
imagens que estão disponíveis. transmissão em um dos hosts por motivo de pré-
requisitos de dados anteriores, ou seja, não poderia ser
possível a execução de uma ação específica sem antes
ter enviado informações pertinente que permitissem a
próxima ação.
Esta falta de validação de pré-requisitos se não
controlada pelo desenvolvedor através de códigos
adicionais durante o desenvolvimento de sua aplicação
de teleconferência permitirá a existência de brechas
causando eventuais erros durante uma sessão.
O protocolo PCT permitirá o desenvolvimento de
diversas aplicações médicas que necessitem
transmissão de coordenadas e ações de mouse,
diálogos por chat e também transferências de imagens
entre hosts.
Há também a necessidade de integração ao
protocolo PCT de recursos de transmissão de voz
sobre ip autônomos sem que haja a necessidade de
Figura 10 – Interface de Abertura da SLV utilização de ferramentas de terceiros como a
ferramenta REMKO adotado nos testes.
O ambiente da SLV permite que as imagens Esta versão do PCT oferece recursos apenas para
enviadas através do protocolo PCT possam ser desenvolvimento de sistemas ponto a ponto. Há a
discutidas como se estivessem utilizando um possibilidade de serem efetuadas modificações no
negatoscópio. Um usuário de cada vez pode protocolo PCT para que ele possa ser utilizado em
movimentar e clicar com seu mouse sendo que suas aplicações multiponto.
coordenadas são transmitidas para o host destino Embora a versão atual do PCT não esteja
através do protocolo PCT. A SLV também oferece encapsulada em uma biblioteca, como uma dll, isso
diálogo por chat, o que permite uma maior interação poderá ser feito para que ela possa ser integrada em
entre os participantes da sessão, sendo que todo o qualquer sistema independente da linguagem de
diálogo é transmitido através do PCT. desenvolvimento.
A aplicação SLV também efetuou transferência de Pode-se considerar como alternativa para esta
voz sobre IP, mas para isso, contou com ajuda de biblioteca o desenvolvimento de uma nova versão para
aplicações externas. Inicialmente foi adotada a API da ambientes Unix. Deste modo, dois grandes ambientes,
aplicação NetMeeting®, porem sua flexibilidade Microsoft Windows® e Unix®, poderão contar com
deixou a desejar, sendo mais interessante utilizar uma uma biblioteca de teleconferência para auxiliar no
outra ferramenta de voz sobre ip gratuita e de código desenvolvimento de aplicações médicas.
fonte aberto. A ferramenta adotada denomina-se
REMKO[6] e permite capturar o áudio, comprimir
através de APIs do próprio sistema operacional
7
Referências Bibliográficas
[1] Microsoft Netmeeting; Kit de Desenvolvimento de
Software; Disponível em
<http://support.microsoft.com/default.aspx?scid=fh
;PT-BR;nmtINT>, acessado em 10 de julho de 04.
[2] Mendes, John A. F.; Wangenheim, Aldo von; Sala
de Laudos Virtual – Uma Proposta para
Teleradiologia, [artigo] publicado no III SCPDI –
Simpósio Catarinense de Processamento Digital de
Imagens realizado em Florianópolis, SC em 2003;
[3] Tanembaum, Andrew S. Sistemas Operacionais –
Projeto e Implementação 2ª ed., editora Bookman,
São Paulo, 1999.
[4] Taylor, Don. Et al. Programando Delphi 3 –
Técnicas Avançadas, editora Makron Books, São
Paulo, 1999;
[5] Mendes, John A. F.; Wangenheim, Aldo von. Sala
de Laudos Virtual – Uma Proposta para
Teleradiologia. [artigo], SCPDI – Simpósio
Catarinense de Processamento Digital de Imagens,
2002.
[6] REMKO. Biblioteca de VoIP.
<http://www.prinsengracht.org/remko-ananda/>,
consulta em janeiro de 2003.
[7] Arnett, Matthew F. et al. Desenvolvendo o TCP/IP
– Métodos de instalação, manutenção e
implementação de redes TCP/IP, editora Campus,
Rio de Janeiro, 1997.