Oi, Simone

Acho que o teu e-mail sera muito instrutivo como exemplo das coisas que
estamos falando a respeito de POO e daquilo a que eu me referia a respeito
da area medica.

Vamos entao por partes :

>-----Original Message-----
>From: Simone Ferreira <[EMAIL PROTECTED]>
>To: [EMAIL PROTECTED] <[EMAIL PROTECTED]>
>Date: Wednesday, January 12, 2000 1:41 PM
>Subject: [SouJava-J] POO


>Amigos,

>não sei se este e-mail se encaixa na lista, se alguém achar que não, GRITE!
>Hehehe
>Como estamos discutindo muito sobre Orientação a Objetos, tenho um problema
>prático a apresentar-lhes.
>Quero migrar um aplicativo que fiz em um banco de dados para Java. É um
>aplicativo médico, para controlar checkups.
>Tenho vários formulários: cadastro de pacientes, cadastro de médicos,
>cadastro de convênios e 10 exames (ex: exame cardiólogico, teste
>ergométrico, holter, ecocardiograma, etc).

1) A EPM, junto com o Datasus (Ministerio da Saude), HCFMUSP, UFRGS, e
outros criaram um site de componentes de software para a saude que eu
coordeno e um comite de padronizacao de registro clinico com o objetivo de
padronizar as informacoes em sistemas medicos e disponibilizar
implementacoes de dominio publico que possam ser uteis para todos para
evitar reinventar por enesima vez o cadastro do paciente.
Temos alguns componentes disponiveis (ActiveX mais tambem terao versao
Java), da uma olhada para conhecer esta iniciativa em :

http://www.datasus.gov.br/ccs/padroes.htm
http://www.datasus.gov.br/ccssis

>Vejo claramente uma classe principal chamada CADASTRO, e sub-classe
>herdeiras dela que devem ser implementadas.

OK. Alguem perguntou como nao dava para programar em OO usando Java.
OO e ante todo definacao de reponsabilidades.
Quem e' responsavel por saber quais sao os dados pertinentes a um paciente?
R: O paciente
Quem e' responsavel por saber quais sao os dados pertinentes a um medico? R:
O medico
Quem e' responsavel por colher informacao do usuario para preencher os dados
que cada classe indica? R: A classe Cadastro.

Entao a heranca que vamos ter pode ser :
Pessoa -> Pessoa Fisica -> Paciente
                                             -> Medico
Pessoa ->Pessoa Juridica-> Convenio


>Por exemplo: cadastro de
>pacientes tem informações que não tem no cadastro de médicos, tais como:
>peso, altura, idade, etc.

Peso, altura nao devem ser colocados no cadastro da pessoa, pois sao dados
mutaveis.
P ex. Uma crianca vai mudar muito estes valores durante o tempo de vida
dela.

Melhor e trabalhar com o cadastro sem estes valores e definir uma classe
EncontroMedico, que reune a data da visita, uma associacao com pessoa e uma
com o medico responsavel (traduzindo em relacional tem uma tabela com ID do
encontro,a chave da pessoa, a chave do medico e a data).
Pra esse encontro associo o exame fisico (peso, altura, pessao arterial)
feito naquele momento.
Resumindo, eu vejo as seguintes classes : Pessoa, PessoaFisica, Paciente,
Medico, PessoaJuridica, Convenio, Encontro, ExameFisico.

>Até aí, tudo bem. Quando chega nos exames é que me perco. Há exames como o
>teste ergométrico e laboratório por exemplo que tem muitas informações.
>Aproximadamente 50 campos, entre eles textfields, caixas combo, pequenas
>tabelas, etc.

Aqui voce vai ter um ano pela frente de trabalho, isso se nao fizer
validacoes dos campos.

>Nenhum exame compartilha dado com outro, a não ser o nome do paciente,
>idade, altura e peso.
E'. Estes valores sao caracteristicas do corpo humano. Voce vai ter que
acrescentar sexo que nao vi na tua descricao mais com certeza vai precisar,
e estado : gestante, nutriz, menarca (pra feminino e claro, fica ridiculo um
form perguntando se homem menstrua ou se mulher de 60 anos esta gravida).

Sexo vai na classe Pessoa, os outros podem ir no Exame Fisico que teria uma
subclasses para ExameFisicoFeminino.

>Minha dúvida é: nesse caso, tenho que ter uma classe para cada exame ou
>poderia ter uma super-classe chamada exames com suas sub-classes (os outros
>exames), a qual seria uma extensão de pacientes?
>Outra coisa (não sei se está relacionado): do meu ponto de vista, os exames
>só tem relação com as impressões, e cada impressão é de um jeito diferente.
>Existe alguma forma de permitir que o usuário final customize um relatório
>(não é em colunas) feito em Java? Não quero que ele mude apenas cor e tipo
>de letra. Quero que ele possa exibir ou não determinados campos e mudá-los
>de lugar na impressão por exemplo.
>Mais um detalhe: eu posso permitir que o usuário final customize os
>formulários, ou seja, que inclua novos campos do tipo que ele quiser?
>Desculpe-me, mas não li nada sobre isto ainda. Portanto, não tenho a menor
>idéia de como fazer e nem sei onde encontrar informações sobre isto.


Estes sao os desafios aos que me referia num outro mail.Espero ter ajudado
um pouco.
Nao se desespere. NINGUEM --- atencao --- NINGUEM, resolveu isto ainda.
Nem aqui, nem la fora.
NINGUEM faz consistencia alguma, com o qual as bases medicas sao puro LIXO!!

O pior e que nao da pra enganar os medicos. Eles trabalham por natureza,
orientados por objetos. Em caso de duvida, a melhor recomendacao e que voce
crie o seu diagrama de classes e confira ele com um medico.
Ele mata a charada na hora. Nao fique surpresa por isso.

Nessa tarefa de melhorar a qualidade dos dados medicos estamos empenhados na
Escola Paulista de Medicina, mais nao e simples nao.

Espero ter ajudado a todos. Um abraco, Pablo.

Pablo J. Madril
Ger. de Desenvolvimento
DIS - Departamento de Informatica para a Saude
UNIFESP - EPM - Escola Paulista de Medicina


>[ ]s
>Simone Ferreira





    --------------------------- LISTA SOUJAVA ---------------------------
    http://www.soujava.org.br  -  Sociedade de Usuários Java da Sucesu-SP
    [para sair da lista: http://www.soujava.org.br/forum/cadastrados.htm]
    ---------------------------------------------------------------------


    --------------------------- LISTA SOUJAVA ---------------------------
    http://www.soujava.org.br  -  Sociedade de Usuários Java da Sucesu-SP
    [para sair da lista: http://www.soujava.org.br/forum/cadastrados.htm]
    ---------------------------------------------------------------------

Responder a