From 5990d35326b4ec20a066cd071347973139311f73 Mon Sep 17 00:00:00 2001 From: Frederico Palma Date: Tue, 15 Jan 2008 01:43:14 +0000 Subject: [PATCH] git-svn-id: https://svn.coded.pt/svn/SIPRP@657 bb69d46d-e84e-40c8-a05a-06db0d633741 --- .../src/siprp/ficha/FichaWindow.java | 217 ++++++++++++++++++ 1 file changed, 217 insertions(+) diff --git a/trunk/SIPRPSoft/src/siprp/ficha/FichaWindow.java b/trunk/SIPRPSoft/src/siprp/ficha/FichaWindow.java index bac0cd4b..492e2a09 100644 --- a/trunk/SIPRPSoft/src/siprp/ficha/FichaWindow.java +++ b/trunk/SIPRPSoft/src/siprp/ficha/FichaWindow.java @@ -10,6 +10,7 @@ import java.awt.FileDialog; import java.awt.GridBagConstraints; import java.awt.GridBagLayout; import java.awt.Insets; +import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FilenameFilter; import java.text.DateFormat; @@ -22,6 +23,10 @@ import java.util.Vector; import javax.swing.JOptionPane; import javax.swing.JPanel; +import org.jdom.Document; +import org.jdom.Element; +import org.jdom.output.XMLOutputter; + import siprp.FichaDataProvider; import siprp.data.EmpresaData; import siprp.data.EstabelecimentoData; @@ -762,6 +767,218 @@ public class FichaWindow extends TabbedWindow return ht; } + private byte[] createXmlFromExame(final ExameData exame) + throws Exception + { + MedicoData medico = (MedicoData)exame.get( ExameData.MEDICO ); + TrabalhadorData trabalhador = (TrabalhadorData) exame.get( ExameData.TRABALHADOR ); + EstabelecimentoData estabelecimento = (EstabelecimentoData) trabalhador.get( TrabalhadorData.ESTABELECIMENTO ); + EmpresaData empresa = (EmpresaData) estabelecimento.get( EstabelecimentoData.EMPRESA ); + + Element rootElement = new Element( "FichaAptidao" ); + Element portariaElement = new Element( "portaria" ); + portariaElement.setText( "Portaria n. 299/2007, de 16 de Março" ); + rootElement.addContent( portariaElement ); + + Element empresaElement = new Element( "empresa" ); + Element designacaoSocialEmpresaElement = new Element( "designacao-social" ); + designacaoSocialEmpresaElement.setText( ( String )empresa.get( EmpresaData.DESIGNACAO_SOCIAL ) ); + empresaElement.addContent( designacaoSocialEmpresaElement ); + rootElement.addContent( empresaElement ); + + Integer tipoServicoSaude = (Integer)empresa.get( EmpresaData.SERVICO_SAUDE_TIPO ); + Integer tipoServicoHigieneSeguranca = (Integer)empresa.get( EmpresaData.SERVICO_HIGIENE_TIPO ); + Element estabelecimentoElement = new Element( "estabelecimento" ); + Element nomeEstabelecimentoElement = new Element( "nome" ); + nomeEstabelecimentoElement.setText( ( String )estabelecimento.get( EstabelecimentoData.NOME ) ); + estabelecimentoElement.addContent( nomeEstabelecimentoElement ); + Element localidadeEstabelecimentoElement = new Element( "localidade" ); + localidadeEstabelecimentoElement.setText( ( String )estabelecimento.get( EstabelecimentoData.LOCALIDADE ) ); + estabelecimentoElement.addContent( localidadeEstabelecimentoElement ); + Element servicoSaudeEstabelecimentoElement = new Element( "servico-saude" ); + Element tipoServicoSaudeEstabelecimentoElement = new Element( "tipo" ); + Element internoTipoServicoSaudeEstabelecimentoElement = new Element( "interno" ); + internoTipoServicoSaudeEstabelecimentoElement.setText( tipoServicoSaude.intValue() == 1 ? "y" : "n" ); + tipoServicoSaudeEstabelecimentoElement.addContent( internoTipoServicoSaudeEstabelecimentoElement ); + Element interempresasTipoServicoSaudeEstabelecimentoElement = new Element( "interempresas" ); + interempresasTipoServicoSaudeEstabelecimentoElement.setText( tipoServicoSaude.intValue() == 2 ? "y" : "n" ); + tipoServicoSaudeEstabelecimentoElement.addContent( interempresasTipoServicoSaudeEstabelecimentoElement ); + Element externoTipoServicoSaudeEstabelecimentoElement = new Element( "externo" ); + externoTipoServicoSaudeEstabelecimentoElement.setText( tipoServicoSaude.intValue() == 3 ? "y" : "n" ); + tipoServicoSaudeEstabelecimentoElement.addContent( externoTipoServicoSaudeEstabelecimentoElement ); + Element snsTipoServicoSaudeEstabelecimentoElement = new Element( "sns" ); + snsTipoServicoSaudeEstabelecimentoElement.setText( tipoServicoSaude.intValue() == 4 ? "y" : "n" ); + tipoServicoSaudeEstabelecimentoElement.addContent( snsTipoServicoSaudeEstabelecimentoElement ); + servicoSaudeEstabelecimentoElement.addContent( tipoServicoSaudeEstabelecimentoElement ); + Element designacaoServicoSaudeEstabelecimentoElement = new Element( "desingacao" ); + designacaoServicoSaudeEstabelecimentoElement.setText( ( String )empresa.get( EmpresaData.SERVICO_SAUDE_DESIGNACAO ) ); + servicoSaudeEstabelecimentoElement.addContent( designacaoServicoSaudeEstabelecimentoElement ); + estabelecimentoElement.addContent( servicoSaudeEstabelecimentoElement ); + Element servicoHigieneSegurancaEstabelecimentoElement = new Element( "servico-higiene-seguranca" ); + Element tipoServicoHigieneSegurancaEstabelecimentoElement = new Element( "tipo" ); + Element internoTipoServicoHigieneSegurancaEstabelecimentoElement = new Element( "interno" ); + internoTipoServicoHigieneSegurancaEstabelecimentoElement.setText( tipoServicoHigieneSeguranca.intValue() == 1 ? "y" : "n" ); + tipoServicoHigieneSegurancaEstabelecimentoElement.addContent( internoTipoServicoHigieneSegurancaEstabelecimentoElement ); + Element interempresasTipoServicoHigieneSegurancaEstabelecimentoElement = new Element( "interempresas" ); + interempresasTipoServicoHigieneSegurancaEstabelecimentoElement.setText( tipoServicoHigieneSeguranca.intValue() == 2 ? "y" : "n" ); + tipoServicoHigieneSegurancaEstabelecimentoElement.addContent( interempresasTipoServicoHigieneSegurancaEstabelecimentoElement ); + Element externoTipoServicoHigieneSegurancaEstabelecimentoElement = new Element( "externo" ); + externoTipoServicoHigieneSegurancaEstabelecimentoElement.setText( tipoServicoHigieneSeguranca.intValue() == 3 ? "y" : "n" ); + tipoServicoHigieneSegurancaEstabelecimentoElement.addContent( externoTipoServicoHigieneSegurancaEstabelecimentoElement ); + Element outroTipoServicoHigieneSegurancaEstabelecimentoElement = new Element( "outro" ); + outroTipoServicoHigieneSegurancaEstabelecimentoElement.setText( tipoServicoHigieneSeguranca.intValue() == 4 ? "y" : "n" ); + tipoServicoHigieneSegurancaEstabelecimentoElement.addContent( outroTipoServicoHigieneSegurancaEstabelecimentoElement ); + servicoHigieneSegurancaEstabelecimentoElement.addContent( tipoServicoHigieneSegurancaEstabelecimentoElement ); + Element designacaoServicoHigieneSegurancaEstabelecimentoElement = new Element( "desingacao" ); + designacaoServicoHigieneSegurancaEstabelecimentoElement.setText( ( String )empresa.get( EmpresaData.SERVICO_HIGIENE_DESIGNACAO ) ); + servicoHigieneSegurancaEstabelecimentoElement.addContent( designacaoServicoHigieneSegurancaEstabelecimentoElement ); + estabelecimentoElement.addContent( servicoHigieneSegurancaEstabelecimentoElement ); + rootElement.addContent( estabelecimentoElement ); + + char sexo = ( (String)trabalhador.get( TrabalhadorData.SEXO ) ).charAt( 0 ); + DateFormat df = DateFormat.getDateInstance( DateFormat.SHORT ); + Date dataNascimento = ( Date )trabalhador.get( TrabalhadorData.DATA_NASCIMENTO ); + Date dataAdmissao = ( Date )trabalhador.get( TrabalhadorData.DATA_ADMISSAO ); + Date dataAdmissaoFuncao = ( Date )trabalhador.get( TrabalhadorData.DATA_ADMISSAO_FUNCAO ); + Element trabalhadorElement = new Element( "trabalhador" ); + Element nomeTrabalhadorElement = new Element( "nome" ); + nomeTrabalhadorElement.setText( ( String )trabalhador.get( TrabalhadorData.NOME ) ); + Element sexoTrabalhadorElement = new Element( "sexo" ); + sexoTrabalhadorElement.setText( sexo == 'm' ? "Masculino" : "Feminino" ); + trabalhadorElement.addContent( sexoTrabalhadorElement ); + Element dataNascimentoTrabalhadorElement = new Element( "data-nascimento" ); + dataNascimentoTrabalhadorElement.setText( dataNascimento != null ? df.format( dataNascimento ) : "" ); + trabalhadorElement.addContent( dataNascimentoTrabalhadorElement ); + Element nacionalidadeTrabalhadorElement = new Element( "nacionalidade" ); + nacionalidadeTrabalhadorElement.setText( (String)trabalhador.get( TrabalhadorData.NACIONALIDADE ) ); + trabalhadorElement.addContent( nacionalidadeTrabalhadorElement ); + trabalhadorElement.addContent( nomeTrabalhadorElement ); + Element numeroMecanograficoTrabalhadorElement = new Element( "numero-mecanografico" ); + numeroMecanograficoTrabalhadorElement.setText( (String)trabalhador.get( TrabalhadorData.NUMERO_MECANOGRAFICO ) ); + trabalhadorElement.addContent( numeroMecanograficoTrabalhadorElement ); + Element dataAdmissaoTrabalhadorElement = new Element( "data-admissao" ); + dataAdmissaoTrabalhadorElement.setText( dataAdmissao != null ? df.format( dataAdmissao ) : "" ); + trabalhadorElement.addContent( dataAdmissaoTrabalhadorElement ); + Element categoriaProfissionalTrabalhadorElement = new Element( "categoria-profissional" ); + categoriaProfissionalTrabalhadorElement.setText( (String)trabalhador.get( TrabalhadorData.CATEGORIA ) ); + trabalhadorElement.addContent( categoriaProfissionalTrabalhadorElement ); + Element localTrabalhoTrabalhadorElement = new Element( "local-trabalho" ); + localTrabalhoTrabalhadorElement.setText( (String)trabalhador.get( TrabalhadorData.LOCAL_TRABALHO ) ); + trabalhadorElement.addContent( localTrabalhoTrabalhadorElement ); + Element funcaoPropostaTrabalhadorElement = new Element( "funcao-proposta" ); + funcaoPropostaTrabalhadorElement.setText( (String)trabalhador.get( TrabalhadorData.FUNCAO_PROPOSTA ) ); + Element dataAdmissaoFuncaoTrabalhadorElement = new Element( "data-admissao-funcao" ); + dataAdmissaoFuncaoTrabalhadorElement.setText( dataAdmissaoFuncao != null ? df.format( dataAdmissaoFuncao ) : "" ); + trabalhadorElement.addContent( dataAdmissaoFuncaoTrabalhadorElement ); + trabalhadorElement.addContent( funcaoPropostaTrabalhadorElement ); + rootElement.addContent( trabalhadorElement ); + + Element observacoesElement = new Element( "observacoes" ); + observacoesElement.setText( (String)trabalhador.get( TrabalhadorData.OBSERVACOES ) ); + rootElement.addContent( observacoesElement ); + + Date dataExameMedico = ( Date )exame.get( ExameData.DATA ); + Integer tipoExameMedico = (Integer)exame.get( ExameData.TIPO ); + Integer tipoOcasionalExameMedico = (Integer)exame.get( ExameData.OCASIONAL ); + Integer resultadoExameMedico = (Integer)exame.get( ExameData.RESULTADO ); + Element exameMedicoElement = new Element( "exame-medico" ); + Element dataExameMedicoElement = new Element( "data" ); + dataExameMedicoElement.setText( dataExameMedico != null ? df.format( dataExameMedico ) : "" ); + exameMedicoElement.addContent( dataExameMedicoElement ); + Element tipoExameMedicoElement = new Element( "tipo" ); + Element admissaoTipoExameMedicoElement = new Element( "admissao" ); + admissaoTipoExameMedicoElement.setText( tipoExameMedico.intValue() == 1 ? "y" : "n" ); + tipoExameMedicoElement.addContent( admissaoTipoExameMedicoElement ); + Element periodicoTipoExameMedicoElement = new Element( "periodico" ); + periodicoTipoExameMedicoElement.setText( tipoExameMedico.intValue() == 2 ? "y" : "n" ); + tipoExameMedicoElement.addContent( periodicoTipoExameMedicoElement ); + Element ocasionalTipoExameMedicoElement = new Element( "ocasional" ); + ocasionalTipoExameMedicoElement.setText( tipoExameMedico.intValue() == 3 ? "y" : "n" ); + tipoExameMedicoElement.addContent( ocasionalTipoExameMedicoElement ); + Element ocasionalDoencaTipoExameMedicoElement = new Element( "ocasional-doenca" ); + ocasionalDoencaTipoExameMedicoElement.setText( + ( tipoExameMedico.intValue() == 3 && tipoOcasionalExameMedico != null && tipoOcasionalExameMedico.intValue() == 1 ) ? "y" : "n" ); + tipoExameMedicoElement.addContent( ocasionalDoencaTipoExameMedicoElement ); + Element ocasionalAcidenteTipoExameMedicoElement = new Element( "ocasional-acidente" ); + ocasionalAcidenteTipoExameMedicoElement.setText( + ( tipoExameMedico.intValue() == 3 && tipoOcasionalExameMedico != null && tipoOcasionalExameMedico.intValue() == 2 ) ? "y" : "n" ); + tipoExameMedicoElement.addContent( ocasionalAcidenteTipoExameMedicoElement ); + Element ocasionalPedidoTrabalhadorTipoExameMedicoElement = new Element( "ocasional-pedido-trabalhador" ); + ocasionalPedidoTrabalhadorTipoExameMedicoElement.setText( + ( tipoExameMedico.intValue() == 3 && tipoOcasionalExameMedico != null && tipoOcasionalExameMedico.intValue() == 3 ) ? "y" : "n" ); + tipoExameMedicoElement.addContent( ocasionalPedidoTrabalhadorTipoExameMedicoElement ); + Element ocasionalPedidoServicoTipoExameMedicoElement = new Element( "ocasional-pedido-servico" ); + ocasionalPedidoServicoTipoExameMedicoElement.setText( + ( tipoExameMedico.intValue() == 3 && tipoOcasionalExameMedico != null && tipoOcasionalExameMedico.intValue() == 4 ) ? "y" : "n" ); + tipoExameMedicoElement.addContent( ocasionalPedidoServicoTipoExameMedicoElement ); + Element ocasionalMudancaoFuncaoTipoExameMedicoElement = new Element( "ocasional-mudanca-funcao" ); + ocasionalMudancaoFuncaoTipoExameMedicoElement.setText( + ( tipoExameMedico.intValue() == 3 && tipoOcasionalExameMedico != null && tipoOcasionalExameMedico.intValue() == 5 ) ? "y" : "n" ); + tipoExameMedicoElement.addContent( ocasionalMudancaoFuncaoTipoExameMedicoElement ); + Element ocasionalAlteracaoCondicoesTrabalhoTipoExameMedicoElement = new Element( "ocasional-alteracao-condicoes-trabalho" ); + ocasionalAlteracaoCondicoesTrabalhoTipoExameMedicoElement.setText( + ( tipoExameMedico.intValue() == 3 && tipoOcasionalExameMedico != null && tipoOcasionalExameMedico.intValue() == 6 ) ? "y" : "n" ); + tipoExameMedicoElement.addContent( ocasionalAlteracaoCondicoesTrabalhoTipoExameMedicoElement ); + Element ocasionalOutroTipoExameMedicoElement = new Element( "ocasional-outro" ); + ocasionalOutroTipoExameMedicoElement.setText( + ( tipoExameMedico.intValue() == 3 && tipoOcasionalExameMedico != null && tipoOcasionalExameMedico.intValue() == 10 ) ? "y" : "n" ); + tipoExameMedicoElement.addContent( ocasionalOutroTipoExameMedicoElement ); + Element ocasionalOutroDescricaoTipoExameMedicoElement = new Element( "ocasional-outro-descricao" ); + ocasionalOutroDescricaoTipoExameMedicoElement.setText( (String)exame.get( ExameData.OUTRO_TIPO ) ); + tipoExameMedicoElement.addContent( ocasionalOutroDescricaoTipoExameMedicoElement ); + exameMedicoElement.addContent( tipoExameMedicoElement ); + Element resultadoExameMedicoElement = new Element( "resultado" ); + Element aptoResultadoExameMedicoElement = new Element( "apto" ); + aptoResultadoExameMedicoElement.setText( resultadoExameMedico.intValue() == 1 ? "y" : "n" ); + resultadoExameMedicoElement.addContent( aptoResultadoExameMedicoElement ); + Element aptoCondicionalmenteResultadoExameMedicoElement = new Element( "apto-condicionalmente" ); + aptoCondicionalmenteResultadoExameMedicoElement.setText( resultadoExameMedico.intValue() == 2 ? "y" : "n" ); + resultadoExameMedicoElement.addContent( aptoCondicionalmenteResultadoExameMedicoElement ); + Element inaptoTemporariamenteResultadoExameMedicoElement = new Element( "inapto-temporariamente" ); + inaptoTemporariamenteResultadoExameMedicoElement.setText( resultadoExameMedico.intValue() == 3 ? "y" : "n" ); + resultadoExameMedicoElement.addContent( inaptoTemporariamenteResultadoExameMedicoElement ); + Element inaptoDefinitivamenteResultadoExameMedicoElement = new Element( "inapto-definitivamente" ); + inaptoDefinitivamenteResultadoExameMedicoElement.setText( resultadoExameMedico.intValue() == 4 ? "y" : "n" ); + resultadoExameMedicoElement.addContent( inaptoDefinitivamenteResultadoExameMedicoElement ); + Element outrasFuncoes1ResultadoExameMedicoElement = new Element( "outras-funcoes-1" ); + outrasFuncoes1ResultadoExameMedicoElement.setText( (String)exame.get( ExameData.OUTRA_FUNCAO_1 ) ); + resultadoExameMedicoElement.addContent( outrasFuncoes1ResultadoExameMedicoElement ); + Element outrasFuncoes2ResultadoExameMedicoElement = new Element( "outras-funcoes-2" ); + outrasFuncoes2ResultadoExameMedicoElement.setText( (String)exame.get( ExameData.OUTRA_FUNCAO_2 ) ); + resultadoExameMedicoElement.addContent( outrasFuncoes2ResultadoExameMedicoElement ); + Element outrasFuncoes3ResultadoExameMedicoElement = new Element( "outras-funcoes-3" ); + outrasFuncoes3ResultadoExameMedicoElement.setText( (String)exame.get( ExameData.OUTRA_FUNCAO_3 ) ); + resultadoExameMedicoElement.addContent( outrasFuncoes3ResultadoExameMedicoElement ); + Element outrasFuncoes4ResultadoExameMedicoElement = new Element( "outras-funcoes-4" ); + outrasFuncoes4ResultadoExameMedicoElement.setText( (String)exame.get( ExameData.OUTRA_FUNCAO_4 ) ); + resultadoExameMedicoElement.addContent( outrasFuncoes4ResultadoExameMedicoElement ); + exameMedicoElement.addContent( resultadoExameMedicoElement ); + rootElement.addContent( exameMedicoElement ); + + Date dataProximoExame = ( Date )exame.get( ExameData.PROXIMO_EXAME ); + Element proximoExameElement = new Element( "proximo-element" ); + proximoExameElement.setText( dataProximoExame != null ? df.format( dataProximoExame ) : "" ); + rootElement.addContent( proximoExameElement ); + + Element outrasRecomendacoesElement = new Element( "outras-recomendacoes" ); + outrasRecomendacoesElement.setText( (String)exame.get( ExameData.OUTRAS_RECOMENDACOES ) ); + rootElement.addContent( outrasRecomendacoesElement ); + + Element medicoElement = new Element( "medico" ); + Element nomeMedicoElement = new Element( "nome" ); + nomeMedicoElement.setText( (String)medico.get( MedicoData.NOME ) ); + medicoElement.addContent( nomeMedicoElement ); + Element cedulaMedicoElement = new Element( "cedula" ); + cedulaMedicoElement.setText( (String)medico.get( MedicoData.NUMERO_CEDULA ) ); + medicoElement.addContent( cedulaMedicoElement ); + rootElement.addContent( medicoElement ); + + Document doc = new Document( rootElement ); + ByteArrayOutputStream baos = new ByteArrayOutputStream(); + new XMLOutputter().output( doc, baos ); + return baos.toByteArray(); + } + private void excel() { FileDialog fd = new FileDialog( this, "Escolha um ficheiro Excel:", FileDialog.LOAD );