package shst.medicina.fichasclinicas.logic; import java.sql.Timestamp; import java.util.Arrays; import java.util.Date; import java.util.HashMap; import java.util.HashSet; import java.util.LinkedList; import java.util.List; import java.util.Map; import java.util.Set; import java.util.logging.Level; import org.springframework.beans.factory.annotation.Autowired; import pt.evolute.MailSenderSpringBean; import shst.medicina.fichasclinicas.beans.EvoMessageBean; import shst.medicina.fichasclinicas.beans.EvoMessageTypeBean; import shst.medicina.fichasclinicas.beans.EvoResponseBean; import shst.medicina.fichasclinicas.beans.FichaComposedBean; import shst.medicina.fichasclinicas.beans.FichaExchangeBean; import shst.medicina.fichasclinicas.beans.FichaRenderDataBean; import shst.medicina.fichasclinicas.beans.FichaResumeBean; import shst.medicina.fichasclinicas.beans.TrabalhadorResumeBean; import shst.medicina.fichasclinicas.beans.fichasclinicas.FcFichaAbsentismoBeanData; import shst.medicina.fichasclinicas.beans.fichasclinicas.FcFichaActividadeBeanData; import shst.medicina.fichasclinicas.beans.fichasclinicas.FcFichaAntecedentesFamiliaresBeanData; import shst.medicina.fichasclinicas.beans.fichasclinicas.FcFichaAntecedentesOcupacionaisAcidentesTrabalhoBeanData; import shst.medicina.fichasclinicas.beans.fichasclinicas.FcFichaAntecedentesOcupacionaisActividadesAnterioresBeanData; import shst.medicina.fichasclinicas.beans.fichasclinicas.FcFichaAntecedentesOcupacionaisBeanData; import shst.medicina.fichasclinicas.beans.fichasclinicas.FcFichaAntecedentesOcupacionaisDoencasProfissionaisBeanData; import shst.medicina.fichasclinicas.beans.fichasclinicas.FcFichaAntecedentesPessoaisBeanData; import shst.medicina.fichasclinicas.beans.fichasclinicas.FcFichaAntecedentesPessoaisCirurgiasBeanData; import shst.medicina.fichasclinicas.beans.fichasclinicas.FcFichaAntecedentesPessoaisFracturasBeanData; import shst.medicina.fichasclinicas.beans.fichasclinicas.FcFichaAntecedentesPessoaisInternamentosBeanData; import shst.medicina.fichasclinicas.beans.fichasclinicas.FcFichaAptidaoBeanData; import shst.medicina.fichasclinicas.beans.fichasclinicas.FcFichaBeanData; import shst.medicina.fichasclinicas.beans.fichasclinicas.FcFichaClassificacaoIndividualSaudeBeanData; import shst.medicina.fichasclinicas.beans.fichasclinicas.FcFichaConclusoesBeanData; import shst.medicina.fichasclinicas.beans.fichasclinicas.FcFichaDoencasActivasBeanData; import shst.medicina.fichasclinicas.beans.fichasclinicas.FcFichaEsquemaVacinalBeanData; import shst.medicina.fichasclinicas.beans.fichasclinicas.FcFichaExameObjectivoBeanData; import shst.medicina.fichasclinicas.beans.fichasclinicas.FcFichaHabitosBeanData; import shst.medicina.fichasclinicas.beans.fichasclinicas.FcFichaInformacaoPeriodicaBeanData; import shst.medicina.fichasclinicas.beans.fichasclinicas.FcFichaProblemasSolucoesBeanData; import shst.medicina.fichasclinicas.beans.fichasclinicas.FcHabitosAlcoolicosBeanData; import shst.medicina.fichasclinicas.beans.fichasclinicas.FcHabitosTabagicosBeanData; import shst.medicina.fichasclinicas.beans.fichasclinicas.FcMotivosBeanData; import shst.medicina.fichasclinicas.beans.fichasclinicas.TrbEstadoCivilBeanData; import shst.medicina.fichasclinicas.beans.fichasclinicas.TrbHabilitacoesBeanData; import shst.medicina.fichasclinicas.beans.shst.EmpresasBeanData; import shst.medicina.fichasclinicas.beans.shst.EstabelecimentosBeanData; import shst.medicina.fichasclinicas.beans.shst.TrabalhadoresBeanData; import shst.medicina.fichasclinicas.data.fichasclinicas.FcFichaAbsentismoData; import shst.medicina.fichasclinicas.data.fichasclinicas.FcFichaActividadeData; import shst.medicina.fichasclinicas.data.fichasclinicas.FcFichaAntecedentesFamiliaresData; import shst.medicina.fichasclinicas.data.fichasclinicas.FcFichaAntecedentesOcupacionaisAcidentesTrabalhoData; import shst.medicina.fichasclinicas.data.fichasclinicas.FcFichaAntecedentesOcupacionaisActividadesAnterioresData; import shst.medicina.fichasclinicas.data.fichasclinicas.FcFichaAntecedentesOcupacionaisData; import shst.medicina.fichasclinicas.data.fichasclinicas.FcFichaAntecedentesOcupacionaisDoencasProfissionaisData; import shst.medicina.fichasclinicas.data.fichasclinicas.FcFichaAntecedentesPessoaisCirurgiasData; import shst.medicina.fichasclinicas.data.fichasclinicas.FcFichaAntecedentesPessoaisData; import shst.medicina.fichasclinicas.data.fichasclinicas.FcFichaAntecedentesPessoaisFracturasData; import shst.medicina.fichasclinicas.data.fichasclinicas.FcFichaAntecedentesPessoaisInternamentosData; import shst.medicina.fichasclinicas.data.fichasclinicas.FcFichaAptidaoData; import shst.medicina.fichasclinicas.data.fichasclinicas.FcFichaClassificacaoIndividualSaudeData; import shst.medicina.fichasclinicas.data.fichasclinicas.FcFichaConclusoesData; import shst.medicina.fichasclinicas.data.fichasclinicas.FcFichaData; import shst.medicina.fichasclinicas.data.fichasclinicas.FcFichaDoencasActivasData; import shst.medicina.fichasclinicas.data.fichasclinicas.FcFichaEsquemaVacinalData; import shst.medicina.fichasclinicas.data.fichasclinicas.FcFichaExameObjectivoData; import shst.medicina.fichasclinicas.data.fichasclinicas.FcFichaHabitosData; import shst.medicina.fichasclinicas.data.fichasclinicas.FcFichaInformacaoPeriodicaData; import shst.medicina.fichasclinicas.data.fichasclinicas.FcFichaProblemasSolucoesData; import shst.medicina.fichasclinicas.data.fichasclinicas.FcHabitosAlcoolicosData; import shst.medicina.fichasclinicas.data.fichasclinicas.FcHabitosTabagicosData; import shst.medicina.fichasclinicas.data.fichasclinicas.FcMotivosData; import shst.medicina.fichasclinicas.data.fichasclinicas.FcTipoFichaData; import shst.medicina.fichasclinicas.data.fichasclinicas.TrbEstadoCivilData; import shst.medicina.fichasclinicas.data.fichasclinicas.TrbHabilitacoesData; import shst.medicina.fichasclinicas.data.fichasclinicas.inner.FcTipoFicha; import shst.medicina.fichasclinicas.data.shst.EmpresasData; import shst.medicina.fichasclinicas.data.shst.EstabelecimentosData; import shst.medicina.fichasclinicas.data.shst.TrabalhadoresData; import shst.medicina.fichasclinicas.provider.FichasClinicasDataProvider; import com.evolute.module.utilizadores.data.EvoUsrUserData; import com.evolute.utils.error.ErrorLogger; public class FichasClinicasLogic { @Autowired(required = true) FichasClinicasDataProvider fichasProvider; @Autowired(required = true) MailSenderSpringBean mailsender; private static final String[] EMPRESAS_D_to_B = new String[]{EmpresasData.ID,EmpresasData.DESIGNACAO_SOCIAL}; private static final String[] ESTABELECIMENTOS_D_to_B = new String[]{EstabelecimentosData.ID,EstabelecimentosData.NOME}; private static final String[] TRABALHADORES_D_to_B = new String[]{TrabalhadoresData.ID,TrabalhadoresData.NOME}; private static final String[] FcFicha_D_to_B ; private static final String[] FcFichaAntecedentesOcupacionais_D_to_B ; private static final String[] FcFichaAntecedentesOcupacionaisAcidentesTrabalho_D_to_B ; private static final String[] FcFichaAntecedentesOcupacionaisActividadesAnteriores_D_to_B ; private static final String[] FcFichaAntecedentesOcupacionaisDoencasProfissionais_D_to_B ; private static final String[] FcFichaAbsentismo_D_to_B ; private static final String[] FcFichaActividade_D_to_B ; private static final String[] FcFichaAntecedentesFamiliares_D_to_B ; private static final String[] FcFichaAntecedentesPessoais_D_to_B ; private static final String[] FcFichaAntecedentesPessoaisCirurgias_D_to_B ; private static final String[] FcFichaAntecedentesPessoaisFracturas_D_to_B ; private static final String[] FcFichaAntecedentesPessoaisInternamentos_D_to_B ; private static final String[] FcFichaClassificacaoIndividualSaude_D_to_B ; private static final String[] FcFichaConclusoes_D_to_B ; private static final String[] FcFichaDoencasActivas_D_to_B ; private static final String[] FcFichaEsquemaVacinal_D_to_B ; private static final String[] FcFichaExameObjectivo_D_to_B ; private static final String[] FcFichaHabitos_D_to_B ; private static final String[] FcFichaProblemasSolucoes_D_to_B ; private static final String[] FcFichaInformacaoPeriodica_D_to_B ; private static final String[] FcFichaAptidao_D_to_B ; static { List fieldsToClean = Arrays.asList( new String[]{FcFichaData.CREATED_STAMP, FcFichaData.CREATED_USER_ID, FcFichaData.CREATED_USER_NAME, FcFichaData.DELETED_STAMP, FcFichaData.DELETED_USER_ID, FcFichaData.DELETED_USER_NAME}); List tmp = new LinkedList(); tmp.addAll(Arrays.asList(FcFichaData.FIELD_NAMES)); tmp.add(FcFichaData.ID); tmp.removeAll(fieldsToClean); FcFicha_D_to_B = tmp.toArray(new String[]{}); tmp.clear(); tmp.addAll(Arrays.asList(FcFichaAntecedentesOcupacionaisData.FIELD_NAMES)); tmp.add(FcFichaAntecedentesOcupacionaisData.ID); tmp.removeAll(fieldsToClean); FcFichaAntecedentesOcupacionais_D_to_B = tmp.toArray(new String[]{}); tmp.clear(); tmp.addAll(Arrays.asList(FcFichaAntecedentesOcupacionaisAcidentesTrabalhoData.FIELD_NAMES)); tmp.add(FcFichaAntecedentesOcupacionaisAcidentesTrabalhoData.ID); tmp.removeAll(fieldsToClean); FcFichaAntecedentesOcupacionaisAcidentesTrabalho_D_to_B = tmp.toArray(new String[]{}); tmp.clear(); tmp.addAll(Arrays.asList(FcFichaAntecedentesOcupacionaisActividadesAnterioresData.FIELD_NAMES)); tmp.add(FcFichaAntecedentesOcupacionaisActividadesAnterioresData.ID); tmp.removeAll(fieldsToClean); FcFichaAntecedentesOcupacionaisActividadesAnteriores_D_to_B = tmp.toArray(new String[]{}); tmp.clear(); tmp.addAll(Arrays.asList(FcFichaAntecedentesOcupacionaisDoencasProfissionaisData.FIELD_NAMES)); tmp.add(FcFichaAntecedentesOcupacionaisDoencasProfissionaisData.ID); tmp.removeAll(fieldsToClean); FcFichaAntecedentesOcupacionaisDoencasProfissionais_D_to_B = tmp.toArray(new String[]{}); tmp.clear(); tmp.addAll(Arrays.asList(FcFichaAbsentismoData.FIELD_NAMES)) ; tmp.add(FcFichaAbsentismoData.ID); tmp.removeAll(fieldsToClean); FcFichaAbsentismo_D_to_B = tmp.toArray(new String[]{}); tmp.clear(); tmp.addAll(Arrays.asList(FcFichaActividadeData.FIELD_NAMES)); tmp.add(FcFichaActividadeData.ID); tmp.removeAll(fieldsToClean); FcFichaActividade_D_to_B = tmp.toArray(new String[]{}); tmp.clear(); tmp.addAll(Arrays.asList(FcFichaAntecedentesFamiliaresData.FIELD_NAMES)); tmp.add(FcFichaAntecedentesFamiliaresData.ID); tmp.removeAll(fieldsToClean); FcFichaAntecedentesFamiliares_D_to_B = tmp.toArray(new String[]{}); tmp.clear(); tmp.addAll(Arrays.asList(FcFichaAntecedentesPessoaisData.FIELD_NAMES)); tmp.add(FcFichaAntecedentesPessoaisData.ID); tmp.removeAll(fieldsToClean); FcFichaAntecedentesPessoais_D_to_B = tmp.toArray(new String[]{}); tmp.clear(); tmp.addAll(Arrays.asList(FcFichaAntecedentesPessoaisCirurgiasData.FIELD_NAMES)); tmp.add(FcFichaAntecedentesPessoaisCirurgiasData.ID); tmp.removeAll(fieldsToClean); FcFichaAntecedentesPessoaisCirurgias_D_to_B = tmp.toArray(new String[]{}); tmp.clear(); tmp.addAll(Arrays.asList(FcFichaAntecedentesPessoaisFracturasData.FIELD_NAMES)); tmp.add(FcFichaAntecedentesPessoaisFracturasData.ID); tmp.removeAll(fieldsToClean); FcFichaAntecedentesPessoaisFracturas_D_to_B = tmp.toArray(new String[]{}); tmp.clear(); tmp.addAll(Arrays.asList(FcFichaAntecedentesPessoaisInternamentosData.FIELD_NAMES)); tmp.add(FcFichaAntecedentesPessoaisInternamentosData.ID); tmp.removeAll(fieldsToClean); FcFichaAntecedentesPessoaisInternamentos_D_to_B = tmp.toArray(new String[]{}); tmp.clear(); tmp.addAll(Arrays.asList(FcFichaClassificacaoIndividualSaudeData.FIELD_NAMES)); tmp.add(FcFichaClassificacaoIndividualSaudeData.ID); tmp.removeAll(fieldsToClean); FcFichaClassificacaoIndividualSaude_D_to_B = tmp.toArray(new String[]{}); tmp.clear(); tmp.addAll(Arrays.asList(FcFichaConclusoesData.FIELD_NAMES)); tmp.add(FcFichaConclusoesData.ID); tmp.removeAll(fieldsToClean); FcFichaConclusoes_D_to_B = tmp.toArray(new String[]{}); tmp.clear(); tmp.addAll(Arrays.asList(FcFichaDoencasActivasData.FIELD_NAMES)); tmp.add(FcFichaDoencasActivasData.ID); tmp.removeAll(fieldsToClean); FcFichaDoencasActivas_D_to_B = tmp.toArray(new String[]{}); tmp.clear(); tmp.addAll(Arrays.asList(FcFichaEsquemaVacinalData.FIELD_NAMES)); tmp.add(FcFichaEsquemaVacinalData.ID); tmp.removeAll(fieldsToClean); FcFichaEsquemaVacinal_D_to_B = tmp.toArray(new String[]{}); tmp.clear(); tmp.addAll(Arrays.asList(FcFichaExameObjectivoData.FIELD_NAMES)); tmp.add(FcFichaExameObjectivoData.ID); tmp.removeAll(fieldsToClean); FcFichaExameObjectivo_D_to_B = tmp.toArray(new String[]{}); tmp.clear(); tmp.addAll(Arrays.asList(FcFichaHabitosData.FIELD_NAMES)); tmp.add(FcFichaHabitosData.ID); tmp.removeAll(fieldsToClean); FcFichaHabitos_D_to_B = tmp.toArray(new String[]{}); tmp.clear(); tmp.addAll(Arrays.asList(FcFichaProblemasSolucoesData.FIELD_NAMES)); tmp.add(FcFichaProblemasSolucoesData.ID); tmp.removeAll(fieldsToClean); FcFichaProblemasSolucoes_D_to_B = tmp.toArray(new String[]{}); tmp.clear(); tmp.addAll(Arrays.asList(FcFichaInformacaoPeriodicaData.FIELD_NAMES)); tmp.add(FcFichaInformacaoPeriodicaData.ID); tmp.removeAll(fieldsToClean); FcFichaInformacaoPeriodica_D_to_B = tmp.toArray(new String[]{}); tmp.clear(); tmp.addAll(Arrays.asList(FcFichaAptidaoData.FIELD_NAMES)); tmp.add(FcFichaAptidaoData.ID); tmp.removeAll(fieldsToClean); FcFichaAptidao_D_to_B = tmp.toArray(new String[]{}); } private static final String ADM_COD = "ADMISSAO"; private static final String PER_INI_COD = "PERIODICA_INICIAL"; private static final String PER_COD = "PERIODICA"; private static final String OCA_COD = "OCASIONAL"; private static final String OCA_PREFIX = "OC_"; private static final String ENF_COD = "ENFERMAGEM"; // private static final String ENF_PREFIX = "MC_ENF_"; private static final String MDC_COD = "MEDICINA_CURATIVA"; // private static final String MDC_PREFIX = "MC_ENF_"; private static final String MDC_ENF_PREFIX = "MC_ENF_"; private Map filtra(Map in, String[] filtro) { Map out = new HashMap(); List to_filter = Arrays.asList(filtro); for(String f : in.keySet()) { if(to_filter.contains(f)) { out.put(f, in.get(f)); } } return out; } public EvoResponseBean> getEmpresas(EvoUsrUserData user, String filter) { EvoResponseBean> result = new EvoResponseBean>(); if(user != null) { try { List outSet = new LinkedList(); for(EmpresasData in : fichasProvider.getEmpresas(user, filter)) { EmpresasBeanData out = new EmpresasBeanData(); out.setMapData(in.getPropertiesValues(EMPRESAS_D_to_B)); outSet.add(out); } result.setSuccess(true); result.setData(outSet); } catch(Exception ex) { result.setSuccess(false); EvoMessageBean msg = new EvoMessageBean(); msg.setType(EvoMessageTypeBean.ERROR); msg.setMessageData("Erro ao comunicar com a Base de dados!"); result.addMessage(msg); ErrorLogger.logException(ex, Level.SEVERE); } } else { result.setSuccess(false); EvoMessageBean msg = new EvoMessageBean(); msg.setType(EvoMessageTypeBean.SESSIONTIMEOUT); msg.setMessageData("Utilizador asssociado à sessão inválido/inexistente!"); result.addMessage(msg); } return result; } public EvoResponseBean> getEstabelecimentos(EvoUsrUserData user, Integer empresaID, String filter) { EvoResponseBean> result = new EvoResponseBean>(); if(user != null) { try { List outSet = new LinkedList(); for(EstabelecimentosData in : fichasProvider.getEstabelecimentos(user, empresaID, filter)) { EstabelecimentosBeanData out = new EstabelecimentosBeanData(); out.setMapData(in.getPropertiesValues(ESTABELECIMENTOS_D_to_B)); outSet.add(out); } result.setSuccess(true); result.setData(outSet); } catch(Exception ex) { result.setSuccess(false); EvoMessageBean msg = new EvoMessageBean(); msg.setType(EvoMessageTypeBean.ERROR); msg.setMessageData("Erro ao comunicar com a Base de dados!"); result.addMessage(msg); ErrorLogger.logException(ex, Level.SEVERE); } } else { result.setSuccess(false); EvoMessageBean msg = new EvoMessageBean(); msg.setType(EvoMessageTypeBean.SESSIONTIMEOUT); msg.setMessageData("Utilizador asssociado à sessão inválido/inexistente!"); result.addMessage(msg); } return result; } public EvoResponseBean> getTrabalhadores(EvoUsrUserData user, Integer estabelecimentoID, String filter) { EvoResponseBean> result = new EvoResponseBean>(); if(user != null) { try { List outSet = new LinkedList(); for(TrabalhadoresData in : fichasProvider.getTrabalhadores(user, estabelecimentoID, filter)) { TrabalhadoresBeanData out = new TrabalhadoresBeanData(); out.setMapData(in.getPropertiesValues(TRABALHADORES_D_to_B)); outSet.add(out); } result.setSuccess(true); result.setData(outSet); } catch(Exception ex) { result.setSuccess(false); EvoMessageBean msg = new EvoMessageBean(); msg.setType(EvoMessageTypeBean.ERROR); msg.setMessageData("Erro ao comunicar com a Base de dados!"); result.addMessage(msg); ErrorLogger.logException(ex, Level.SEVERE); } } else { result.setSuccess(false); EvoMessageBean msg = new EvoMessageBean(); msg.setType(EvoMessageTypeBean.SESSIONTIMEOUT); msg.setMessageData("Utilizador asssociado à sessão inválido/inexistente!"); result.addMessage(msg); } return result; } public EvoResponseBean loadTrabalhadorResume(EvoUsrUserData user, Integer trabalhadorID) { EvoResponseBean result = new EvoResponseBean(); if(user != null) { try { TrabalhadoresData trab = fichasProvider.getTrabalhador(user, trabalhadorID, false); if(trab != null) { TrabalhadorResumeBean resultData = new TrabalhadorResumeBean(); FcFichaBeanData dadosTrabalhador = new FcFichaBeanData(); dadosTrabalhador.setTrabalhador_id(trab.getId()); dadosTrabalhador.setTrabalhador_nome(trab.getNome()); dadosTrabalhador.setTrabalhador_sexo(trab.getSexo().toUpperCase()); dadosTrabalhador.setTrabalhador_data_nascimento(trab.getData_nascimento()); dadosTrabalhador.setTrabalhador_data_admissao(trab.getData_admissao()); dadosTrabalhador.setTrabalhador_funcao_actual(trab.getFuncao_proposta()); dadosTrabalhador.setTrabalhador_posto(trab.getLocal_trabalho()); dadosTrabalhador.setEstabelecimento_id(trab.getEstabelecimento_id()); EstabelecimentosData estabelecimento = trab.toEstabelecimento_id(); if(estabelecimento != null) { dadosTrabalhador.setEstabelecimento_localidade(estabelecimento.getLocalidade()); dadosTrabalhador.setEstabelecimento_nome(estabelecimento.getNome()); dadosTrabalhador.setEmpresa_id(estabelecimento.getEmpresa_id()); EmpresasData empresa = estabelecimento.toEmpresa_id(); if(empresa != null) { dadosTrabalhador.setEmpresa_designacao_social(empresa.getDesignacao_social()); dadosTrabalhador.setEmpresa_ramo_actividade(empresa.getActividade()); } } resultData.setDadosTrabalhador(dadosTrabalhador); List outSet = new LinkedList(); for(FcFichaData in : fichasProvider.getFichasTrabalhador(user, trabalhadorID)) { FichaResumeBean out = new FichaResumeBean(); out.setId(in.getId()); out.setData(in.getCreated_stamp()); String tipo_str = "!INDEFINIDO!"; FcTipoFicha tipo = in.toTipo_ficha_id() ; if(tipo != null) { tipo_str = tipo.getDescricao(); } out.setTipo(tipo_str); out.setResponsavel(in.getCreated_user_name()); out.setEditable(checkCanWrite(user.getId(),in.getId())); out.setConcluido(in.getData_conclusao() != null); out.setTipo_id(in.getTipo_ficha_id()); if(in.toAptidao_id() != null) { out.setEmissao_ficha_aptidao(in.toAptidao_id().getCreated_stamp()); } outSet.add(out); } resultData.setFichas(outSet); result.setSuccess(true); result.setData(resultData); } else { result.setSuccess(false); EvoMessageBean msg = new EvoMessageBean(); msg.setType(EvoMessageTypeBean.ERROR); msg.setMessageData("Erro ao carregar Trabalhador!"); result.addMessage(msg); } } catch(Exception ex) { result.setSuccess(false); EvoMessageBean msg = new EvoMessageBean(); msg.setType(EvoMessageTypeBean.ERROR); msg.setMessageData("Erro ao comunicar com a Base de dados!"); result.addMessage(msg); ErrorLogger.logException(ex, Level.SEVERE); } } else { result.setSuccess(false); EvoMessageBean msg = new EvoMessageBean(); msg.setType(EvoMessageTypeBean.SESSIONTIMEOUT); msg.setMessageData("Utilizador asssociado à sessão inválido/inexistente!"); result.addMessage(msg); } return result; } private FichaComposedBean loadFicha(FcFichaData fichaBD, Boolean cleanIDs) throws Exception { FichaComposedBean data = new FichaComposedBean(); if(fichaBD != null) { FcFichaBeanData fichaBean = new FcFichaBeanData(); fichaBean.setMapData(fichaBD.getPropertiesValues(FcFicha_D_to_B)); if(cleanIDs) { fichaBean.setId(null); } data.setFicha(fichaBean); FcFichaAntecedentesOcupacionaisData anto =fichaBD.toAntecedentes_ocupacionais_id(); if(anto != null) { FcFichaAntecedentesOcupacionaisBeanData antoBean = new FcFichaAntecedentesOcupacionaisBeanData(); antoBean.setMapData(anto.getPropertiesValues(FcFichaAntecedentesOcupacionais_D_to_B)); if(cleanIDs) { antoBean.setId(null); } data.setAntecentesOcupacionais(antoBean); List antoat = anto.fromFcFichaAntecedentesOcupacionaisAcidentesTrabalho_antecedentes_ocupacionais_id(); LinkedList antoatBean = new LinkedList(); for(FcFichaAntecedentesOcupacionaisAcidentesTrabalhoData at : antoat) { if(at.getDeleted_stamp() == null) { FcFichaAntecedentesOcupacionaisAcidentesTrabalhoBeanData atBean = new FcFichaAntecedentesOcupacionaisAcidentesTrabalhoBeanData(); atBean.setMapData(at.getPropertiesValues(FcFichaAntecedentesOcupacionaisAcidentesTrabalho_D_to_B)); if(cleanIDs) { atBean.setId(null); } antoatBean.add(atBean); } } data.setAntecentesOcupacionaisAcidentesTrabalho(antoatBean); List antoaa = anto.fromFcFichaAntecedentesOcupacionaisActividadesAnteriores_antecedentes_ocupacionais_id(); LinkedList antoaaBean = new LinkedList(); for(FcFichaAntecedentesOcupacionaisActividadesAnterioresData at : antoaa) { if(at.getDeleted_stamp() == null) { FcFichaAntecedentesOcupacionaisActividadesAnterioresBeanData atBean = new FcFichaAntecedentesOcupacionaisActividadesAnterioresBeanData(); atBean.setMapData(at.getPropertiesValues(FcFichaAntecedentesOcupacionaisActividadesAnteriores_D_to_B)); if(cleanIDs) { atBean.setId(null); } antoaaBean.add(atBean); } } data.setAntecentesOcupacionaisActividadesAnteriores(antoaaBean); List antodp = anto.fromFcFichaAntecedentesOcupacionaisDoencasProfissionais_antecedentes_ocupacionais_id(); LinkedList antodpBean = new LinkedList(); for(FcFichaAntecedentesOcupacionaisDoencasProfissionaisData at : antodp) { if(at.getDeleted_stamp() == null) { FcFichaAntecedentesOcupacionaisDoencasProfissionaisBeanData atBean = new FcFichaAntecedentesOcupacionaisDoencasProfissionaisBeanData(); atBean.setMapData(at.getPropertiesValues(FcFichaAntecedentesOcupacionaisDoencasProfissionais_D_to_B)); if(cleanIDs) { atBean.setId(null); } antodpBean.add(atBean); } } data.setAntecentesOcupacionaisDoencasProfissionais(antodpBean); } FcFichaAbsentismoData abs = fichaBD.toAbsentismo_id(); if(abs != null) { FcFichaAbsentismoBeanData absBean = new FcFichaAbsentismoBeanData(); absBean.setMapData(abs.getPropertiesValues(FcFichaAbsentismo_D_to_B)); if(cleanIDs) { absBean.setId(null); } data.setAbsentismo(absBean); } FcFichaActividadeData act = fichaBD.toActividade_id(); if(act != null) { FcFichaActividadeBeanData actBean = new FcFichaActividadeBeanData(); actBean.setMapData(act.getPropertiesValues(FcFichaActividade_D_to_B)); if(cleanIDs) { actBean.setId(null); } data.setActividade(actBean); } FcFichaAntecedentesFamiliaresData antf = fichaBD.toAntecedentes_familiares_id(); if(antf != null) { FcFichaAntecedentesFamiliaresBeanData antfBean = new FcFichaAntecedentesFamiliaresBeanData(); antfBean.setMapData(antf.getPropertiesValues(FcFichaAntecedentesFamiliares_D_to_B)); if(cleanIDs) { antfBean.setId(null); } data.setAntecedentesFamiliares(antfBean); } FcFichaAntecedentesPessoaisData antp = fichaBD.toAntecedentes_pessoais_id(); if(antp != null) { FcFichaAntecedentesPessoaisBeanData antpBean = new FcFichaAntecedentesPessoaisBeanData(); antpBean.setMapData(antp.getPropertiesValues(FcFichaAntecedentesPessoais_D_to_B)); data.setAntecedentesPessoais(antpBean); { List antpc = antp.fromFcFichaAntecedentesPessoaisCirurgias_antecedentes_pessoais_id(); LinkedList antpcBean = new LinkedList(); for(FcFichaAntecedentesPessoaisCirurgiasData apc : antpc) { if(apc.getDeleted_stamp() == null) { FcFichaAntecedentesPessoaisCirurgiasBeanData apcBean = new FcFichaAntecedentesPessoaisCirurgiasBeanData(); apcBean.setMapData(apc.getPropertiesValues(FcFichaAntecedentesPessoaisCirurgias_D_to_B)); if(cleanIDs) { apcBean.setId(null); } antpcBean.add(apcBean); } } data.setAntecedentesPessoaisCirurgias(antpcBean); } { List antpc = antp.fromFcFichaAntecedentesPessoaisFracturas_antecedentes_pessoais_id(); LinkedList antpcBean = new LinkedList(); for(FcFichaAntecedentesPessoaisFracturasData apc : antpc) { if(apc.getDeleted_stamp() == null) { FcFichaAntecedentesPessoaisFracturasBeanData apcBean = new FcFichaAntecedentesPessoaisFracturasBeanData(); apcBean.setMapData(apc.getPropertiesValues(FcFichaAntecedentesPessoaisFracturas_D_to_B)); if(cleanIDs) { apcBean.setId(null); } antpcBean.add(apcBean); } } data.setAntecedentesPessoaisFracturas(antpcBean); } { List antpc = antp.fromFcFichaAntecedentesPessoaisInternamentos_antecedentes_pessoais_id(); LinkedList antpcBean = new LinkedList(); for(FcFichaAntecedentesPessoaisInternamentosData apc : antpc) { if(apc.getDeleted_stamp() == null) { FcFichaAntecedentesPessoaisInternamentosBeanData apcBean = new FcFichaAntecedentesPessoaisInternamentosBeanData(); apcBean.setMapData(apc.getPropertiesValues(FcFichaAntecedentesPessoaisInternamentos_D_to_B)); if(cleanIDs) { apcBean.setId(null); } antpcBean.add(apcBean); } } data.setAntecedentesPessoaisInternamentos(antpcBean); } } FcFichaClassificacaoIndividualSaudeData cis = fichaBD.toClassificacao_individual_saude_id(); if(cis != null) { FcFichaClassificacaoIndividualSaudeBeanData cisBean = new FcFichaClassificacaoIndividualSaudeBeanData(); cisBean.setMapData(cis.getPropertiesValues(FcFichaClassificacaoIndividualSaude_D_to_B)); if(cleanIDs) { cisBean.setId(null); } data.setClassificacaoIndividualSaude(cisBean); } FcFichaConclusoesData cr = fichaBD.toConclusoes_id(); if(cr != null) { FcFichaConclusoesBeanData crBean = new FcFichaConclusoesBeanData(); crBean.setMapData(cr.getPropertiesValues(FcFichaConclusoes_D_to_B)); if(cleanIDs) { crBean.setId(null); } data.setConclusoesResumo(crBean); } FcFichaDoencasActivasData da = fichaBD.toDoencas_activas_id(); if(da != null) { FcFichaDoencasActivasBeanData daBean = new FcFichaDoencasActivasBeanData(); daBean.setMapData(da.getPropertiesValues(FcFichaDoencasActivas_D_to_B)); if(cleanIDs) { daBean.setId(null); } data.setDoencasActivas(daBean); } FcFichaEsquemaVacinalData ev = fichaBD.toEsquema_vacinal_id(); if(ev != null) { FcFichaEsquemaVacinalBeanData evBean = new FcFichaEsquemaVacinalBeanData(); evBean.setMapData(ev.getPropertiesValues(FcFichaEsquemaVacinal_D_to_B)); if(cleanIDs) { evBean.setId(null); } data.setEsquemaVacinal(evBean); } FcFichaExameObjectivoData eo = fichaBD.toExame_objectivo_id(); if(eo != null) { FcFichaExameObjectivoBeanData eoBean = new FcFichaExameObjectivoBeanData(); eoBean.setMapData(eo.getPropertiesValues(FcFichaExameObjectivo_D_to_B)); if(cleanIDs) { eoBean.setId(null); } data.setExameObjectivo(eoBean); } FcFichaHabitosData fh = fichaBD.toHabitos_id(); if(fh != null) { FcFichaHabitosBeanData fhBean = new FcFichaHabitosBeanData(); fhBean.setMapData(fh.getPropertiesValues(FcFichaHabitos_D_to_B)); if(cleanIDs) { fhBean.setId(null); } data.setHabitos(fhBean); } FcFichaProblemasSolucoesData ps = fichaBD.toProblemas_solucoes_id(); if(ps != null) { FcFichaProblemasSolucoesBeanData psBean = new FcFichaProblemasSolucoesBeanData(); psBean.setMapData(ps.getPropertiesValues(FcFichaProblemasSolucoes_D_to_B)); if(cleanIDs) { psBean.setId(null); } data.setProblemasSolucoes(psBean); } FcFichaInformacaoPeriodicaData fpd = fichaBD.toInformacao_periodica_id(); if(fpd != null) { FcFichaInformacaoPeriodicaBeanData fpdBean = new FcFichaInformacaoPeriodicaBeanData(); fpdBean.setMapData(fpd.getPropertiesValues(FcFichaInformacaoPeriodica_D_to_B)); if(cleanIDs) { fpdBean.setId(null); } data.setInformacaoPeriodica(fpdBean); } } else { throw new Exception("Ficha Inválida!"); } return data; } public EvoResponseBean getFicha(EvoUsrUserData user, Integer fichaID, Integer trabalhadorID, Integer fichaTipoID) { EvoResponseBean result = new EvoResponseBean(); if(user != null) { try { FichaExchangeBean bean = new FichaExchangeBean(); FcFichaData ficha = null; if(fichaID != null) { ficha = fichasProvider.getFicha(user,fichaID); } else { ficha = fichasProvider.getLastFicha(user,trabalhadorID); } FichaComposedBean fichaBean = null; if(null == ficha) { TrabalhadoresData trab = fichasProvider.getTrabalhador(user, trabalhadorID, false); if(trab != null) { fichaBean = new FichaComposedBean(); FcFichaBeanData dadosTrabalhador = new FcFichaBeanData(); dadosTrabalhador.setTrabalhador_id(trab.getId()); dadosTrabalhador.setTrabalhador_nome(trab.getNome()); dadosTrabalhador.setTrabalhador_sexo(trab.getSexo().toUpperCase()); dadosTrabalhador.setTrabalhador_data_nascimento(trab.getData_nascimento()); dadosTrabalhador.setTrabalhador_data_admissao(trab.getData_admissao()); dadosTrabalhador.setTrabalhador_funcao_actual(trab.getFuncao_proposta()); dadosTrabalhador.setTrabalhador_posto(trab.getLocal_trabalho()); dadosTrabalhador.setEstabelecimento_id(trab.getEstabelecimento_id()); EstabelecimentosData estabelecimento = trab.toEstabelecimento_id(); if(estabelecimento != null) { dadosTrabalhador.setEstabelecimento_localidade(estabelecimento.getLocalidade()); dadosTrabalhador.setEstabelecimento_nome(estabelecimento.getNome()); dadosTrabalhador.setEmpresa_id(estabelecimento.getEmpresa_id()); EmpresasData empresa = estabelecimento.toEmpresa_id(); if(empresa != null) { dadosTrabalhador.setEmpresa_designacao_social(empresa.getDesignacao_social()); dadosTrabalhador.setEmpresa_ramo_actividade(empresa.getActividade()); } } dadosTrabalhador.setTipo_ficha_id(fichaTipoID); fichaBean.setFicha(dadosTrabalhador); bean.setFichaData(fichaBean); } } else { fichaBean = loadFicha(ficha, null==fichaID); if(null==fichaID) { fichaBean.getFicha().setTipo_ficha_id(fichaTipoID); } bean.setFichaData(fichaBean); } bean.setFieldsData(loadRenderData(fichaBean.getFicha().getTipo_ficha_id())); result.setSuccess(true); result.setData(bean); } catch(Exception ex) { result.setSuccess(false); EvoMessageBean msg = new EvoMessageBean(); msg.setType(EvoMessageTypeBean.ERROR); msg.setMessageData("Erro ao comunicar com a Base de dados!"); result.addMessage(msg); ErrorLogger.logException(ex, Level.SEVERE); } } else { result.setSuccess(false); EvoMessageBean msg = new EvoMessageBean(); msg.setType(EvoMessageTypeBean.SESSIONTIMEOUT); msg.setMessageData("Utilizador asssociado à sessão inválido/inexistente!"); result.addMessage(msg); } return result; } public EvoResponseBean saveFicha(EvoUsrUserData user, FichaComposedBean fichaBean) { EvoResponseBean result = new EvoResponseBean(); if(user != null) { try { if(fichaBean.getFicha() != null) { Boolean canWrite = checkCanWrite(user.getId(), fichaBean.getFicha().getId()); if(canWrite != null && canWrite) { FcFichaData fichaBD = null; String operacao = null; if(fichaBean.getFicha().getId() != null) { fichaBD = fichasProvider.getFicha(user,fichaBean.getFicha().getId()); operacao ="Actualização"; } else { fichaBD = new FcFichaData(); fichaBD.setCreated_user_name(user.getName()); fichaBD.setCreated_user_id(user.getId()); operacao = "Criação"; } Map values = filtra(fichaBean.getFicha().getMapData(),FcFicha_D_to_B) ; Date data_conclusao_server = null; if( fichaBean.getFicha().getData_conclusao() != null) { Map serverDates = fichasProvider.getServerDateFichaConclusion(user,fichaBean.getFicha().getId()); if(fichaBean.getFicha().getId() == null || serverDates.get(fichaBean.getFicha().getId()) == null) { data_conclusao_server = serverDates.get(0); } } if(data_conclusao_server != null) { values.put(FcFichaData.DATA_CONCLUSAO,data_conclusao_server); } else { values.remove(FcFichaData.DATA_CONCLUSAO); } fichaBD.setHashData(values); Set> thingsToSave = new HashSet>(); if(fichaBean.getAntecentesOcupacionais() != null ) { FcFichaAntecedentesOcupacionaisData fd = null; if(fichaBean.getAntecentesOcupacionais().getId() != null) { fd = fichaBD.toAntecedentes_ocupacionais_id(); } if(fd == null) { fd = new FcFichaAntecedentesOcupacionaisData(); fd.setCreated_user_name(user.getName()); fd.setCreated_user_id(user.getId()); } fd.setHashData(filtra(fichaBean.getAntecentesOcupacionais().getMapData(),FcFichaAntecedentesOcupacionais_D_to_B)); fichaBD.setToAntecedentes_ocupacionais_id(fd); } if(fichaBean.getAntecentesOcupacionaisAcidentesTrabalho() != null )//&& fichaBean.getAntecentesOcupacionaisAcidentesTrabalho().size() > 0) { FcFichaAntecedentesOcupacionaisData fd = null; if(fichaBD.toAntecedentes_ocupacionais_id() != null) { fd = fichaBD.toAntecedentes_ocupacionais_id(); } else { fd = new FcFichaAntecedentesOcupacionaisData(); fichaBD.setToAntecedentes_ocupacionais_id(fd); } List aoatBDlist = fd.fromFcFichaAntecedentesOcupacionaisAcidentesTrabalho_antecedentes_ocupacionais_id() ; Map naBD = new HashMap(); for(FcFichaAntecedentesOcupacionaisAcidentesTrabalhoData elem : aoatBDlist) { elem.setDeleted_stamp(new Timestamp(System.currentTimeMillis())); elem.setDeleted_user_id(user.getId()); elem.setDeleted_user_name(user.getName()); naBD.put(elem.getId(), elem); thingsToSave.add(elem); } for(FcFichaAntecedentesOcupacionaisAcidentesTrabalhoBeanData item : fichaBean.getAntecentesOcupacionaisAcidentesTrabalho()) { FcFichaAntecedentesOcupacionaisAcidentesTrabalhoData aoatBD = null; if(item.getId() != null && naBD.containsKey(item.getId())) { aoatBD = naBD.get(item.getId()); aoatBD.setDeleted_stamp(null); aoatBD.setDeleted_user_id(null); aoatBD.setDeleted_user_name(null); } else { aoatBD = new FcFichaAntecedentesOcupacionaisAcidentesTrabalhoData(); aoatBD.setCreated_user_name(user.getName()); aoatBD.setCreated_user_id(user.getId()); thingsToSave.add(aoatBD); } aoatBD.setHashData(filtra(item.getMapData(),FcFichaAntecedentesOcupacionaisAcidentesTrabalho_D_to_B)); aoatBD.setToAntecedentes_ocupacionais_id(fd); } } if(fichaBean.getAntecentesOcupacionaisActividadesAnteriores() != null )//&& fichaBean.getAntecentesOcupacionaisActividadesAnteriores().size() > 0) { FcFichaAntecedentesOcupacionaisData fd = null; if(fichaBD.toAntecedentes_ocupacionais_id() != null) { fd = fichaBD.toAntecedentes_ocupacionais_id(); } else { fd = new FcFichaAntecedentesOcupacionaisData(); fichaBD.setToAntecedentes_ocupacionais_id(fd); } List aoaaBDlist = fd.fromFcFichaAntecedentesOcupacionaisActividadesAnteriores_antecedentes_ocupacionais_id() ; Map naBD = new HashMap(); for(FcFichaAntecedentesOcupacionaisActividadesAnterioresData elem : aoaaBDlist) { elem.setDeleted_stamp(new Timestamp(System.currentTimeMillis())); elem.setDeleted_user_id(user.getId()); elem.setDeleted_user_name(user.getName()); naBD.put(elem.getId(), elem); thingsToSave.add(elem); } for(FcFichaAntecedentesOcupacionaisActividadesAnterioresBeanData item : fichaBean.getAntecentesOcupacionaisActividadesAnteriores()) { FcFichaAntecedentesOcupacionaisActividadesAnterioresData aoaaBD = null; if(item.getId() != null && naBD.containsKey(item.getId())) { aoaaBD = naBD.get(item.getId()); aoaaBD.setDeleted_stamp(null); aoaaBD.setDeleted_user_id(null); aoaaBD.setDeleted_user_name(null); } else { aoaaBD = new FcFichaAntecedentesOcupacionaisActividadesAnterioresData(); aoaaBD.setCreated_user_name(user.getName()); aoaaBD.setCreated_user_id(user.getId()); thingsToSave.add(aoaaBD); } aoaaBD.setHashData(filtra(item.getMapData(),FcFichaAntecedentesOcupacionaisActividadesAnteriores_D_to_B)); aoaaBD.setToAntecedentes_ocupacionais_id(fd); } } if(fichaBean.getAntecentesOcupacionaisDoencasProfissionais() != null )//&& fichaBean.getAntecentesOcupacionaisDoencasProfissionais().size() > 0) { FcFichaAntecedentesOcupacionaisData fd = null; if(fichaBD.toAntecedentes_ocupacionais_id() != null) { fd = fichaBD.toAntecedentes_ocupacionais_id(); } else { fd = new FcFichaAntecedentesOcupacionaisData(); fichaBD.setToAntecedentes_ocupacionais_id(fd); } List aodpBDlist = fd.fromFcFichaAntecedentesOcupacionaisDoencasProfissionais_antecedentes_ocupacionais_id() ; Map naBD = new HashMap(); for(FcFichaAntecedentesOcupacionaisDoencasProfissionaisData elem : aodpBDlist) { elem.setDeleted_stamp(new Timestamp(System.currentTimeMillis())); elem.setDeleted_user_id(user.getId()); elem.setDeleted_user_name(user.getName()); naBD.put(elem.getId(), elem); thingsToSave.add(elem); } for(FcFichaAntecedentesOcupacionaisDoencasProfissionaisBeanData item : fichaBean.getAntecentesOcupacionaisDoencasProfissionais()) { FcFichaAntecedentesOcupacionaisDoencasProfissionaisData aodpBD = null; if(item.getId() != null && naBD.containsKey(item.getId())) { aodpBD = naBD.get(item.getId()); aodpBD.setDeleted_stamp(null); aodpBD.setDeleted_user_id(null); aodpBD.setDeleted_user_name(null); } else { aodpBD = new FcFichaAntecedentesOcupacionaisDoencasProfissionaisData(); aodpBD.setCreated_user_name(user.getName()); aodpBD.setCreated_user_id(user.getId()); thingsToSave.add(aodpBD); } aodpBD.setHashData(filtra(item.getMapData(),FcFichaAntecedentesOcupacionaisDoencasProfissionais_D_to_B)); aodpBD.setToAntecedentes_ocupacionais_id(fd); } } if(fichaBean.getAbsentismo() != null ) { FcFichaAbsentismoData fd = null; if(fichaBean.getAbsentismo().getId() != null) { fd = fichaBD.toAbsentismo_id(); } if(fd == null) { fd = new FcFichaAbsentismoData(); fd.setCreated_user_name(user.getName()); fd.setCreated_user_id(user.getId()); } fd.setHashData(filtra(fichaBean.getAbsentismo().getMapData(),FcFichaAbsentismo_D_to_B)); fichaBD.setToAbsentismo_id(fd); } if(fichaBean.getActividade() != null ) { FcFichaActividadeData fd = null; if(fichaBean.getActividade().getId() != null) { fd = fichaBD.toActividade_id(); } if(fd == null) { fd = new FcFichaActividadeData(); fd.setCreated_user_name(user.getName()); fd.setCreated_user_id(user.getId()); } fd.setHashData(filtra(fichaBean.getActividade().getMapData(),FcFichaActividade_D_to_B)); fichaBD.setToActividade_id(fd); } if(fichaBean.getAntecedentesFamiliares() != null ) { FcFichaAntecedentesFamiliaresData fd = null; if(fichaBean.getAntecedentesFamiliares().getId() != null) { fd = fichaBD.toAntecedentes_familiares_id(); } if(fd == null) { fd = new FcFichaAntecedentesFamiliaresData(); fd.setCreated_user_name(user.getName()); fd.setCreated_user_id(user.getId()); } fd.setHashData(filtra(fichaBean.getAntecedentesFamiliares().getMapData(),FcFichaAntecedentesFamiliares_D_to_B)); fichaBD.setToAntecedentes_familiares_id(fd); } if(fichaBean.getAntecedentesPessoais() != null ) { FcFichaAntecedentesPessoaisData fd = null; if(fichaBean.getAntecedentesPessoais().getId() != null) { fd = fichaBD.toAntecedentes_pessoais_id(); } if(fd == null) { fd = new FcFichaAntecedentesPessoaisData(); fd.setCreated_user_name(user.getName()); fd.setCreated_user_id(user.getId()); } fd.setHashData(filtra(fichaBean.getAntecedentesPessoais().getMapData(),FcFichaAntecedentesPessoais_D_to_B)); fichaBD.setToAntecedentes_pessoais_id(fd); } if(fichaBean.getAntecedentesPessoaisCirurgias() != null )//&& fichaBean.getAntecedentesPessoaisCirurgias().size() > 0) { FcFichaAntecedentesPessoaisData fd = null; if(fichaBD.toAntecedentes_pessoais_id() != null) { fd = fichaBD.toAntecedentes_pessoais_id(); } else { fd = new FcFichaAntecedentesPessoaisData(); fichaBD.setToAntecedentes_pessoais_id(fd); } List apXBDlist = fd.fromFcFichaAntecedentesPessoaisCirurgias_antecedentes_pessoais_id(); Map naBD = new HashMap(); for(FcFichaAntecedentesPessoaisCirurgiasData elem : apXBDlist) { elem.setDeleted_stamp(new Timestamp(System.currentTimeMillis())); elem.setDeleted_user_id(user.getId()); elem.setDeleted_user_name(user.getName()); naBD.put(elem.getId(), elem); thingsToSave.add(elem); } for(FcFichaAntecedentesPessoaisCirurgiasBeanData item : fichaBean.getAntecedentesPessoaisCirurgias()) { FcFichaAntecedentesPessoaisCirurgiasData apXBD = null; if(item.getId() != null && naBD.containsKey(item.getId())) { apXBD = naBD.get(item.getId()); apXBD.setDeleted_stamp(null); apXBD.setDeleted_user_id(null); apXBD.setDeleted_user_name(null); } else { apXBD = new FcFichaAntecedentesPessoaisCirurgiasData(); apXBD.setCreated_user_name(user.getName()); apXBD.setCreated_user_id(user.getId()); thingsToSave.add(apXBD); } apXBD.setHashData(filtra(item.getMapData(),FcFichaAntecedentesPessoaisCirurgias_D_to_B)); apXBD.setToAntecedentes_pessoais_id(fd); } } if(fichaBean.getAntecedentesPessoaisFracturas() != null )//&& fichaBean.getAntecedentesPessoaisFracturas().size() > 0) { FcFichaAntecedentesPessoaisData fd = null; if(fichaBD.toAntecedentes_pessoais_id() != null) { fd = fichaBD.toAntecedentes_pessoais_id(); } else { fd = new FcFichaAntecedentesPessoaisData(); fichaBD.setToAntecedentes_pessoais_id(fd); } List apXBDlist = fd.fromFcFichaAntecedentesPessoaisFracturas_antecedentes_pessoais_id(); Map naBD = new HashMap(); for(FcFichaAntecedentesPessoaisFracturasData elem : apXBDlist) { elem.setDeleted_stamp(new Timestamp(System.currentTimeMillis())); elem.setDeleted_user_id(user.getId()); elem.setDeleted_user_name(user.getName()); naBD.put(elem.getId(), elem); thingsToSave.add(elem); } for(FcFichaAntecedentesPessoaisFracturasBeanData item : fichaBean.getAntecedentesPessoaisFracturas()) { FcFichaAntecedentesPessoaisFracturasData apXBD = null; if(item.getId() != null && naBD.containsKey(item.getId())) { apXBD = naBD.get(item.getId()); apXBD.setDeleted_stamp(null); apXBD.setDeleted_user_id(null); apXBD.setDeleted_user_name(null); } else { apXBD = new FcFichaAntecedentesPessoaisFracturasData(); apXBD.setCreated_user_name(user.getName()); apXBD.setCreated_user_id(user.getId()); thingsToSave.add(apXBD); } apXBD.setHashData(filtra(item.getMapData(),FcFichaAntecedentesPessoaisFracturas_D_to_B)); apXBD.setToAntecedentes_pessoais_id(fd); } } if(fichaBean.getAntecedentesPessoaisInternamentos() != null ) //&& fichaBean.getAntecedentesPessoaisInternamentos().size() > 0) { FcFichaAntecedentesPessoaisData fd = null; if(fichaBD.toAntecedentes_pessoais_id() != null) { fd = fichaBD.toAntecedentes_pessoais_id(); } else { fd = new FcFichaAntecedentesPessoaisData(); fichaBD.setToAntecedentes_pessoais_id(fd); } List apXBDlist = fd.fromFcFichaAntecedentesPessoaisInternamentos_antecedentes_pessoais_id(); Map naBD = new HashMap(); for(FcFichaAntecedentesPessoaisInternamentosData elem : apXBDlist) { elem.setDeleted_stamp(new Timestamp(System.currentTimeMillis())); elem.setDeleted_user_id(user.getId()); elem.setDeleted_user_name(user.getName()); naBD.put(elem.getId(), elem); thingsToSave.add(elem); } for(FcFichaAntecedentesPessoaisInternamentosBeanData item : fichaBean.getAntecedentesPessoaisInternamentos()) { FcFichaAntecedentesPessoaisInternamentosData apXBD = null; if(item.getId() != null && naBD.containsKey(item.getId())) { apXBD = naBD.get(item.getId()); apXBD.setDeleted_stamp(null); apXBD.setDeleted_user_id(null); apXBD.setDeleted_user_name(null); } else { apXBD = new FcFichaAntecedentesPessoaisInternamentosData(); apXBD.setCreated_user_name(user.getName()); apXBD.setCreated_user_id(user.getId()); thingsToSave.add(apXBD); } apXBD.setHashData(filtra(item.getMapData(),FcFichaAntecedentesPessoaisInternamentos_D_to_B)); apXBD.setToAntecedentes_pessoais_id(fd); } } if(fichaBean.getClassificacaoIndividualSaude() != null ) { FcFichaClassificacaoIndividualSaudeData fd = null; if(fichaBean.getClassificacaoIndividualSaude().getId() != null) { fd = fichaBD.toClassificacao_individual_saude_id(); } if(fd == null) { fd = new FcFichaClassificacaoIndividualSaudeData(); fd.setCreated_user_name(user.getName()); fd.setCreated_user_id(user.getId()); } fd.setHashData(filtra(fichaBean.getClassificacaoIndividualSaude().getMapData(),FcFichaClassificacaoIndividualSaude_D_to_B)); fichaBD.setToClassificacao_individual_saude_id(fd); } if(fichaBean.getConclusoesResumo() != null ) { FcFichaConclusoesData fd = null; if(fichaBean.getConclusoesResumo().getId() != null) { fd = fichaBD.toConclusoes_id(); } if(fd == null) { fd = new FcFichaConclusoesData(); fd.setCreated_user_name(user.getName()); fd.setCreated_user_id(user.getId()); } fd.setHashData(filtra(fichaBean.getConclusoesResumo().getMapData(),FcFichaConclusoes_D_to_B)); fichaBD.setToConclusoes_id(fd); } if(fichaBean.getDoencasActivas() != null ) { FcFichaDoencasActivasData fd = null; if(fichaBean.getDoencasActivas().getId() != null) { fd = fichaBD.toDoencas_activas_id(); } if(fd == null) { fd = new FcFichaDoencasActivasData(); fd.setCreated_user_name(user.getName()); fd.setCreated_user_id(user.getId()); } fd.setHashData(filtra(fichaBean.getDoencasActivas().getMapData(),FcFichaDoencasActivas_D_to_B)); fichaBD.setToDoencas_activas_id(fd); } if(fichaBean.getEsquemaVacinal() != null ) { FcFichaEsquemaVacinalData fd = null; if(fichaBean.getEsquemaVacinal().getId() != null) { fd = fichaBD.toEsquema_vacinal_id(); } if(fd == null) { fd = new FcFichaEsquemaVacinalData(); fd.setCreated_user_name(user.getName()); fd.setCreated_user_id(user.getId()); } fd.setHashData(filtra(fichaBean.getEsquemaVacinal().getMapData(),FcFichaEsquemaVacinal_D_to_B)); fichaBD.setToEsquema_vacinal_id(fd); } if(fichaBean.getExameObjectivo() != null ) { FcFichaExameObjectivoData fd = null; if(fichaBean.getExameObjectivo().getId() != null) { fd = fichaBD.toExame_objectivo_id(); } if(fd == null) { fd = new FcFichaExameObjectivoData(); fd.setCreated_user_name(user.getName()); fd.setCreated_user_id(user.getId()); } fd.setHashData(filtra(fichaBean.getExameObjectivo().getMapData(),FcFichaExameObjectivo_D_to_B)); fichaBD.setToExame_objectivo_id(fd); } if(fichaBean.getHabitos() != null ) { FcFichaHabitosData fd = null; if(fichaBean.getHabitos().getId() != null) { fd = fichaBD.toHabitos_id(); } if(fd == null) { fd = new FcFichaHabitosData(); fd.setCreated_user_name(user.getName()); fd.setCreated_user_id(user.getId()); } fd.setHashData(filtra(fichaBean.getHabitos().getMapData(),FcFichaHabitos_D_to_B)); fichaBD.setToHabitos_id(fd); } if(fichaBean.getProblemasSolucoes() != null ) { FcFichaProblemasSolucoesData fd = null; if(fichaBean.getProblemasSolucoes().getId() != null) { fd = fichaBD.toProblemas_solucoes_id(); } if(fd == null) { fd = new FcFichaProblemasSolucoesData(); fd.setCreated_user_name(user.getName()); fd.setCreated_user_id(user.getId()); } fd.setHashData(filtra(fichaBean.getProblemasSolucoes().getMapData(),FcFichaProblemasSolucoes_D_to_B)); fichaBD.setToProblemas_solucoes_id(fd); } if(fichaBean.getInformacaoPeriodica() != null ) { FcFichaInformacaoPeriodicaData fd = null; if(fichaBean.getInformacaoPeriodica().getId() != null) { fd = fichaBD.toInformacao_periodica_id(); } if(fd == null) { fd = new FcFichaInformacaoPeriodicaData(); fd.setCreated_user_name(user.getName()); fd.setCreated_user_id(user.getId()); } fd.setHashData(filtra(fichaBean.getInformacaoPeriodica().getMapData(),FcFichaInformacaoPeriodica_D_to_B)); fichaBD.setToInformacao_periodica_id(fd); } fichasProvider.atomSave(fichaBD, thingsToSave); result.setData( loadFicha(fichaBD, false) ); EvoMessageBean msg = new EvoMessageBean(); msg.setType(EvoMessageTypeBean.INFO); msg.setMessageData(operacao+" da ficha com sucesso!"); result.addMessage(msg); result.setSuccess(true); } else { result.setSuccess(false); EvoMessageBean msg = new EvoMessageBean(); msg.setType(EvoMessageTypeBean.SECURITYEXCEPTION); msg.setMessageData("Erro, sem permissão para guardar a ficha!"); result.addMessage(msg); } } else { result.setSuccess(false); EvoMessageBean msg = new EvoMessageBean(); msg.setType(EvoMessageTypeBean.ERROR); msg.setMessageData("Ficha Inválida!"); result.addMessage(msg); } } catch(Exception ex) { result.setSuccess(false); EvoMessageBean msg = new EvoMessageBean(); msg.setType(EvoMessageTypeBean.ERROR); msg.setMessageData("Erro ao comunicar com a Base de dados!"); result.addMessage(msg); ErrorLogger.logException(ex, Level.SEVERE); } } else { result.setSuccess(false); EvoMessageBean msg = new EvoMessageBean(); msg.setType(EvoMessageTypeBean.SESSIONTIMEOUT); msg.setMessageData("Utilizador asssociado à sessão inválido/inexistente!"); result.addMessage(msg); } return result; } private FichaRenderDataBean loadRenderData(Integer typoID) throws Exception { FcTipoFichaData tipo_ficha = fichasProvider.getTipoFichaByID(typoID); FichaRenderDataBean resData = new FichaRenderDataBean(); if(tipo_ficha != null) { if(ADM_COD.equalsIgnoreCase(tipo_ficha.getCodigo()) || PER_INI_COD.equalsIgnoreCase(tipo_ficha.getCodigo())) { { List in_list = fichasProvider.getHabilitacoes(); List out_list = new LinkedList(); for(TrbHabilitacoesData in : in_list) { TrbHabilitacoesBeanData out = new TrbHabilitacoesBeanData(); out.setMapData(in.getPropertiesValues(new String[]{TrbHabilitacoesData.ID,TrbHabilitacoesData.CODIGO,TrbHabilitacoesData.DESCRICAO,TrbHabilitacoesData.TEM_INFO_EXTRA})); out_list.add(out); } resData.setHabilitacoes(out_list); } { List in_list = fichasProvider.getEstadosCivis(); List out_list = new LinkedList(); for(TrbEstadoCivilData in : in_list) { TrbEstadoCivilBeanData out = new TrbEstadoCivilBeanData(); out.setMapData(in.getPropertiesValues(new String[]{TrbEstadoCivilData.ID,TrbEstadoCivilData.CODIGO,TrbEstadoCivilData.DESCRICAO})); out_list.add(out); } resData.setEstadosCivis(out_list); } } else if( OCA_COD.equalsIgnoreCase(tipo_ficha.getCodigo()) || ENF_COD.equalsIgnoreCase(tipo_ficha.getCodigo()) || MDC_COD.equalsIgnoreCase(tipo_ficha.getCodigo()) ) { List in_list = null; if( OCA_COD.equalsIgnoreCase(tipo_ficha.getCodigo()) ) { in_list = fichasProvider.getMotivos(OCA_PREFIX); } else { in_list = fichasProvider.getMotivos(MDC_ENF_PREFIX); } List out_list = new LinkedList(); for(FcMotivosData in : in_list) { FcMotivosBeanData out = new FcMotivosBeanData(); out.setMapData(in.getPropertiesValues(new String[]{FcMotivosData.ID,FcMotivosData.CODIGO,FcMotivosData.DESCRICAO,FcMotivosData.PRECISA_DETALHE})); out_list.add(out); } resData.setMotivos(out_list); } List habitosTabagicos = new LinkedList(); for(FcHabitosTabagicosData ht : fichasProvider.getHabitosTabagicos()) { FcHabitosTabagicosBeanData elem = new FcHabitosTabagicosBeanData(); elem.setId(ht.getId()); elem.setDescricao(ht.getDescricao()); habitosTabagicos.add(elem); } resData.setHabitosTabagicos(habitosTabagicos); List habitosAlcoolicos = new LinkedList(); for(FcHabitosAlcoolicosData ha : fichasProvider.getHabitosAlcoolicos() ) { FcHabitosAlcoolicosBeanData elem = new FcHabitosAlcoolicosBeanData(); elem.setId(ha.getId()); elem.setDescricao(ha.getDescricao()); habitosAlcoolicos.add(elem); } resData.setHabitosAlcoolicos(habitosAlcoolicos); ///TODO // private List perioridadesExame; // private List pareceres; } return resData; } public EvoResponseBean getDadosFichaFromBD( EvoUsrUserData user, Integer tipoFichaID) { EvoResponseBean result = new EvoResponseBean(); if(user != null) { try { FcTipoFichaData tipo_ficha = fichasProvider.getTipoFichaByID(tipoFichaID); FichaRenderDataBean resData = new FichaRenderDataBean(); if(tipo_ficha != null) { if(ADM_COD.equalsIgnoreCase(tipo_ficha.getCodigo()) || PER_INI_COD.equalsIgnoreCase(tipo_ficha.getCodigo())) { { List in_list = fichasProvider.getHabilitacoes(); List out_list = new LinkedList(); for(TrbHabilitacoesData in : in_list) { TrbHabilitacoesBeanData out = new TrbHabilitacoesBeanData(); out.setMapData(in.getPropertiesValues(new String[]{TrbHabilitacoesData.ID,TrbHabilitacoesData.CODIGO,TrbHabilitacoesData.DESCRICAO,TrbHabilitacoesData.TEM_INFO_EXTRA})); out_list.add(out); } resData.setHabilitacoes(out_list); } { List in_list = fichasProvider.getEstadosCivis(); List out_list = new LinkedList(); for(TrbEstadoCivilData in : in_list) { TrbEstadoCivilBeanData out = new TrbEstadoCivilBeanData(); out.setMapData(in.getPropertiesValues(new String[]{TrbEstadoCivilData.ID,TrbEstadoCivilData.CODIGO,TrbEstadoCivilData.DESCRICAO})); out_list.add(out); } resData.setEstadosCivis(out_list); } } else if( OCA_COD.equalsIgnoreCase(tipo_ficha.getCodigo()) || ENF_COD.equalsIgnoreCase(tipo_ficha.getCodigo()) || MDC_COD.equalsIgnoreCase(tipo_ficha.getCodigo()) ) { List in_list = null; if( OCA_COD.equalsIgnoreCase(tipo_ficha.getCodigo()) ) { in_list = fichasProvider.getMotivos(OCA_PREFIX); } else { in_list = fichasProvider.getMotivos(MDC_ENF_PREFIX); } List out_list = new LinkedList(); for(FcMotivosData in : in_list) { FcMotivosBeanData out = new FcMotivosBeanData(); out.setMapData(in.getPropertiesValues(new String[]{FcMotivosData.ID,FcMotivosData.CODIGO,FcMotivosData.DESCRICAO,FcMotivosData.PRECISA_DETALHE})); out_list.add(out); } resData.setMotivos(out_list); } } result.setSuccess(true); result.setData(resData); } catch(Exception ex) { result.setSuccess(false); EvoMessageBean msg = new EvoMessageBean(); msg.setType(EvoMessageTypeBean.ERROR); msg.setMessageData("Erro ao comunicar com a Base de dados!"); result.addMessage(msg); ErrorLogger.logException(ex, Level.SEVERE); } } else { result.setSuccess(false); EvoMessageBean msg = new EvoMessageBean(); msg.setType(EvoMessageTypeBean.SESSIONTIMEOUT); msg.setMessageData("Utilizador asssociado à sessão inválido/inexistente!"); result.addMessage(msg); } return result; } private Boolean checkCanRead(Integer id, Integer fichaID) { /// TODO - CAN READ /// FIXME - CAN READ return true; } private Boolean checkCanWrite(Integer userID, Integer fichaID) { /// TODO - CAN WRITE /// FIXME - CAN WRITE return true; } public EvoResponseBean getFichaAptidao(EvoUsrUserData user, Integer fichaID, Integer trabalhadorID, Integer tipoFichaID) { EvoResponseBean result = new EvoResponseBean(); if(user != null) { try { FcFichaData fichaBD = fichasProvider.getFicha(user,fichaID); FichaComposedBean data = new FichaComposedBean(); FcFichaBeanData fichaBean = new FcFichaBeanData(); fichaBean.setMapData(fichaBD.getPropertiesValues(FcFicha_D_to_B)); data.setFicha(fichaBean); FcTipoFicha tipo_ficha = fichaBD.toTipo_ficha_id(); if(tipo_ficha != null) { // if // ( // ADM_COD.equalsIgnoreCase(tipo_ficha.getCodigo()) || // PER_INI_COD.equalsIgnoreCase(tipo_ficha.getCodigo()) || // PER_COD.equalsIgnoreCase(tipo_ficha.getCodigo()) // ) // { FcFichaConclusoesData cr = fichaBD.toConclusoes_id(); if(cr != null) { FcFichaConclusoesBeanData crBean = new FcFichaConclusoesBeanData(); crBean.setMapData(cr.getPropertiesValues(FcFichaConclusoes_D_to_B)); data.setConclusoesResumo(crBean); } FcFichaAptidaoData ap = fichaBD.toAptidao_id(); if(ap != null) { FcFichaConclusoesBeanData crBean = new FcFichaConclusoesBeanData(); crBean.setMapData(ap.getPropertiesValues(FcFichaAptidao_D_to_B)); data.setConclusoesResumo(crBean); } else { data.setAptidao(new FcFichaAptidaoBeanData()); } // // } // else // { // // } FichaExchangeBean exc = new FichaExchangeBean(); exc.setFichaData(data); result.setSuccess(true); result.setData(exc); } else { result.setSuccess(false); EvoMessageBean msg = new EvoMessageBean(); msg.setType(EvoMessageTypeBean.ERROR); msg.setMessageData("Ficha inválida!"); result.addMessage(msg); } } catch(Exception ex) { result.setSuccess(false); EvoMessageBean msg = new EvoMessageBean(); msg.setType(EvoMessageTypeBean.ERROR); msg.setMessageData("Erro ao comunicar com a Base de dados!"); result.addMessage(msg); ErrorLogger.logException(ex, Level.SEVERE); } } else { result.setSuccess(false); EvoMessageBean msg = new EvoMessageBean(); msg.setType(EvoMessageTypeBean.SESSIONTIMEOUT); msg.setMessageData("Utilizador asssociado à sessão inválido/inexistente!"); result.addMessage(msg); } return result; } public EvoResponseBean saveFichaAptidao(EvoUsrUserData user, FichaComposedBean fichaBean) { EvoResponseBean result = new EvoResponseBean(); try{ FcFichaData fichaBD = fichasProvider.getFicha(user,fichaBean.getFicha().getId()); if(fichaBean.getAptidao() != null ) { FcFichaAptidaoData fd = null; if(fichaBean.getAptidao().getId() != null) { fd = fichaBD.toAptidao_id(); } if(fd == null) { fd = new FcFichaAptidaoData(); fd.setCreated_user_name(user.getName()); fd.setCreated_user_id(user.getId()); } fd.setHashData(filtra(fichaBean.getAptidao().getMapData(),FcFichaActividade_D_to_B)); fichaBD.setToAptidao_id(fd); fichaBD.save(); mailsender.sendEmail(null, null, "O utilizador "+user.getName()+" criou uma nova ficha de aptidão para o trabalhador "+fichaBean.getFicha().getTrabalhador_nome()+"!", "Nova Ficha de Aptidão", false); EvoResponseBean getrsp = getFichaAptidao(user, fichaBD.getId(), null, null); if(getrsp.isSuccess()) { result.setSuccess(true); EvoMessageBean msg = new EvoMessageBean(); msg.setType(EvoMessageTypeBean.INFO); msg.setMessageData("Ficha de Aptidão criada com sucesso!"); result.addMessage(msg); result.setData(getrsp.getData().getFichaData()); } else { result.setMessages(getrsp.getMessages()); } } else { System.out.println("FUUUUUUUUUUUUUUUUUUUU\n\n\n"); } } catch(Exception ex) { result.setSuccess(false); EvoMessageBean msg = new EvoMessageBean(); msg.setType(EvoMessageTypeBean.ERROR); msg.setMessageData("Erro ao comunicar com a Base de dados!"); result.addMessage(msg); ErrorLogger.logException(ex, Level.SEVERE); ex.printStackTrace(); } return result; } }