From eeff643a5f71260e5d5bef28ef274f34287283e1 Mon Sep 17 00:00:00 2001 From: Eduardo Praxedes Heinske Date: Tue, 13 Mar 2018 13:29:40 -0300 Subject: [PATCH] Início da implementação da alteração do nível de sigilo e hipótese legal --- join_lab.php | 123 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ lab_barramento.php | 96 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ rn/ReceberProcedimentoRN.php | 124 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++----------------------------------- 3 files changed, 308 insertions(+), 35 deletions(-) create mode 100644 join_lab.php create mode 100644 lab_barramento.php diff --git a/join_lab.php b/join_lab.php new file mode 100644 index 0000000..bca5272 --- /dev/null +++ b/join_lab.php @@ -0,0 +1,123 @@ +simularLogin(SessaoSEI::$USUARIO_SEI, SessaoSEI::$UNIDADE_TESTE); +/* + ###############################CONSULTAR ASSUNTO############################################# + //FILTROS PASSADOS POR PARÂMETRO + $ID = 0; + $FILTER = ''; + $START = 0; + $LIMIT = 0; + + //INSTANCIA O DTO E INFORMA OS FILTROS DA BUSCA + $assuntoDTO = new AssuntoDTO(); + + IF($ID) + $assuntoDTO->setNumIdAssunto($ID); + + if($FILTER) + $assuntoDTO->setStrCodigoEstruturado('%'.$FILTER.'%',InfraDTO::$OPER_LIKE); + $assuntoDTO->setStrDescricao('%'.$FILTER.'%',InfraDTO::$OPER_LIKE); + + IF($START) + $assuntoDTO->setNumMaxRegistrosRetorno($LIMIT); + + IF($LIMIT) + $assuntoDTO->setNumPaginaAtual($START); + + $assuntoDTO->retNumIdAssunto(); + $assuntoDTO->retStrCodigoEstruturado(); + $assuntoDTO->retStrDescricao(); + + // REALIZA A CHAMADA DA DE ASSUNTOS + $assuntoRN = new AssuntoRN(); + $arrAssuntoDTO = $assuntoRN->listarRN0247($assuntoDTO); + + + ###################PESQUISAR ASSUNTOS################################################### + $ID = 0; + $FILTER = ''; + $START = 0; + $LIMIT = 5; + + $contatoDTO = new ContatoDTO(); + + if($ID) + $contatoDTO->setNumIdContato($ID); + + if($FILTER) + $contatoDTO->setStrNome('%'.$FILTER.'%',InfraDTO::$OPER_LIKE); + + IF($LIMIT) + $contatoDTO->setNumMaxRegistrosRetorno($LIMIT); + + IF($START) + $contatoDTO->setNumPaginaAtual($START); + + $contatoDTO->retNumIdContato(); + $contatoDTO->retStrSigla(); + $contatoDTO->retStrNome(); + + $contatoRN = new ContatoRN(); + $arrContatoDTO = $contatoRN->listarRN0325($contatoDTO); + + ###################PESQUISAR TIPOS DE DOCUMENTO################################################### + */ + +###################TEMPLATE DE CRIAÇÃO DE DOCUMENTO DE UM TIPO ESPECÍFICO############################################ +$ID_TIPO_DOCUMENTO = 46; + +//Consulta os assuntos sugeridos para um tipo de documento +$relSerieAssuntoDTO = new RelSerieAssuntoDTO(); +$relSerieAssuntoDTO->setNumIdSerie($ID_TIPO_DOCUMENTO); // FILTRO PELO TIPO DE DOCUMENTO +$relSerieAssuntoDTO->retNumIdAssuntoProxy(); // ID DO ASSUNTO QUE DEVE SE RETORNADO +$relSerieAssuntoDTO->retStrCodigoEstruturadoAssunto(); // CÓDIGO DO ASSUNTO QUE DEVE SE RETORNADO +$relSerieAssuntoDTO->retStrDescricaoAssunto(); // DESCRIÇÃO DO ASSUNTO + +$relSerieAssuntoRN = new RelSerieAssuntoRN(); +$arrRelSerieAssuntoDTO = $relSerieAssuntoRN->listar($relSerieAssuntoDTO); + +// Consulta se o tipo de documento permite a inclusão de destinatários e interessados +$serieDTO = new SerieDTO(); +$serieDTO->setNumIdSerie($ID_TIPO_DOCUMENTO); +$serieDTO->retStrSinDestinatario(); +$serieDTO->retStrSinInteressado(); + +$serieRN = new SerieRN(); +$arrSerieDTO = $serieRN->listarRN0646($serieDTO); + +######################PESQUISAR HIPÓTESES LEGAIS ############################################ + +$ID = 0; +$FILTER = ''; +$NIVEL_ACESSO = 2; +$START = 0; +$LIMIT = 5; + +$hipoteseLegalDTO = new HipoteseLegalDTO(); + +if ($ID) + $hipoteseLegalDTO->setNumIdHipoteseLegal($ID); + +if ($NIVEL_ACESSO) + $hipoteseLegalDTO->setStrStaNivelAcesso($NIVEL_ACESSO); + +if ($FILTER) + $hipoteseLegalDTO->setStrNome('%' . $FILTER . '%', InfraDTO::$OPER_LIKE); + +IF ($LIMIT) + $hipoteseLegalDTO->setNumMaxRegistrosRetorno($LIMIT); + +IF ($START) + $hipoteseLegalDTO->setNumPaginaAtual($START); + +$hipoteseLegalDTO->retNumIdHipoteseLegal(); +$hipoteseLegalDTO->retStrNome(); + +$hipoteseLegalRN = new HipoteseLegalRN(); +$arrHipoteseLegalDTO = $hipoteseLegalRN->listar($hipoteseLegalDTO); + +######################PESQUISAR HIPÓTESES LEGAIS ############################################ + +var_dump($arrHipoteseLegalDTO); \ No newline at end of file diff --git a/lab_barramento.php b/lab_barramento.php new file mode 100644 index 0000000..6705fce --- /dev/null +++ b/lab_barramento.php @@ -0,0 +1,96 @@ +simularLogin(null, null, '100000001', '110000001'); + +$idProcesso = 12; +$idTipoDocumento = 12; +$descricao = 'descrição de teste'; +$nivelAcesso = 1; +$hipoteseLegal = 1; +$grauSigilo = ''; +$arrAssuntos = array(array('id' => 2), array('id' => 4)); +$arrInteressados = array(array('id' => 100000008), array('id' => 100000010), array('id' => 100000002), array('id' => 100000006)); +$arrDestinatarios = array(array('id' => 100000008)); +$arrRemetentes = array(array('id' => 100000008)); + + +$objDocumentoDTO = new DocumentoDTO(); +$objDocumentoDTO->setDblIdDocumento(null); +$objDocumentoDTO->setDblIdProcedimento($idProcesso); + + +$objProtocoloDTO = new ProtocoloDTO(); +$objProtocoloDTO->setDblIdProtocolo(null); +$objProtocoloDTO->setStrStaProtocolo('G'); +// $objProtocoloDTO->setDtaGeracao($dtaGeracao); + +$objDocumentoDTO->setNumIdSerie($idTipoDocumento); +// $objDocumentoDTO->setStrNomeSerie($nomeTipo); + +$objDocumentoDTO->setDblIdDocumentoEdoc(null); +$objDocumentoDTO->setDblIdDocumentoEdocBase(null); +$objDocumentoDTO->setNumIdUnidadeResponsavel(SessaoSEI::getInstance()->getNumIdUnidadeAtual()); +$objDocumentoDTO->setNumIdTipoConferencia(null); +$objDocumentoDTO->setStrNumero(''); +// $objDocumentoDTO->setNumIdTipoConferencia($objDocumentoAPI->getIdTipoConferencia()); + +$objProtocoloDTO->setStrStaNivelAcessoLocal($nivelAcesso); +$objProtocoloDTO->setNumIdHipoteseLegal($hipoteseLegal); +$objProtocoloDTO->setStrDescricao($descricao); +$objProtocoloDTO->setStrStaGrauSigilo($grauSigilo); + +$arrParticipantesDTO = array(); + +foreach ($arrRemetentes as $k => $remetente) { + $objParticipanteDTO = new ParticipanteDTO(); + $objParticipanteDTO->setNumIdContato($remetente['id']); + $objParticipanteDTO->setStrStaParticipacao(ParticipanteRN::$TP_REMETENTE); + $objParticipanteDTO->setNumSequencia($k); + $arrParticipantesDTO[] = $objParticipanteDTO; +} + +foreach ($arrInteressados as $k => $interessado) { + $objParticipanteDTO = new ParticipanteDTO(); + $objParticipanteDTO->setNumIdContato($interessado['id']); + $objParticipanteDTO->setStrStaParticipacao(ParticipanteRN::$TP_INTERESSADO); + $objParticipanteDTO->setNumSequencia($k); + $arrParticipantesDTO[] = $objParticipanteDTO; +} + +foreach ($arrDestinatarios as $k => $destinatario) { + $objParticipanteDTO = new ParticipanteDTO(); + $objParticipanteDTO->setNumIdContato($destinatario['id']); + $objParticipanteDTO->setStrStaParticipacao(ParticipanteRN::$TP_DESTINATARIO); + $objParticipanteDTO->setNumSequencia($k); + $arrParticipantesDTO[] = $objParticipanteDTO; +} +$arrRelProtocoloAssuntoDTO = array(); + +foreach ($arrAssuntos as $k => $assunto) { + $relProtocoloAssuntoDTO = new RelProtocoloAssuntoDTO(); + $relProtocoloAssuntoDTO->setNumIdAssunto($assunto['id']); + $relProtocoloAssuntoDTO->setDblIdProtocolo($idDocumento); + $relProtocoloAssuntoDTO->setNumSequencia($k); + $arrRelProtocoloAssuntoDTO[] = $relProtocoloAssuntoDTO; +} + +$objProtocoloDTO->setArrObjParticipanteDTO($arrParticipantesDTO); +$objProtocoloDTO->setArrObjRelProtocoloAssuntoDTO($arrRelProtocoloAssuntoDTO); + +//OBSERVACOES +$objObservacaoDTO = new ObservacaoDTO(); +$objObservacaoDTO->setStrDescricao($observacao); +$objProtocoloDTO->setArrObjObservacaoDTO(array($objObservacaoDTO)); + +$objDocumentoDTO->setObjProtocoloDTO($objProtocoloDTO); +$objDocumentoDTO->setStrStaDocumento(DocumentoRN::$TD_EDITOR_INTERNO); + +try { + $objDocumentoRN = new DocumentoRN(); + $obj = $objDocumentoRN->cadastrarRN0003($objDocumentoDTO); + + var_dump($obj); +} catch (Exception $ex) { + var_dump($ex); +} diff --git a/rn/ReceberProcedimentoRN.php b/rn/ReceberProcedimentoRN.php index 20bb6b3..ee5f464 100644 --- a/rn/ReceberProcedimentoRN.php +++ b/rn/ReceberProcedimentoRN.php @@ -99,7 +99,7 @@ class ReceberProcedimentoRN extends InfraRN //!Substituir a unidade destinatária para a receptora (!1!) if (isset($objMetadadosProcedimento->metadados->unidadeReceptora)) { - $this->destinatarioReal = $objMetadadosProcedimento->metadados->destinatario->numeroDeIdentificacaoDaEstrutura; + $this->destinatarioReal = $objMetadadosProcedimento->metadados->destinatario; $objMetadadosProcedimento->metadados->destinatario = $objMetadadosProcedimento->metadados->unidadeReceptora; } @@ -537,9 +537,13 @@ class ReceberProcedimentoRN extends InfraRN $objEntradaReabrirProcessoAPI->setIdProcedimento($parDblIdProcedimento); $objSeiRN->reabrirProcesso($objEntradaReabrirProcessoAPI); } + + //Cadastro das atividades para quando o destinatário é desviado pelo receptor (!3!) + if ($this->destinatarioReal->numeroDeIdentificacaoDaEstrutura) { + $this->gerarAndamentoUnidadeReceptora($parDblIdProcedimento); + } - $objEntradaDesbloquearProcessoAPI = new EntradaDesbloquearProcessoAPI(); $objEntradaDesbloquearProcessoAPI->setIdProcedimento($parDblIdProcedimento); $objSeiRN->desbloquearProcesso($objEntradaDesbloquearProcessoAPI); @@ -553,7 +557,11 @@ class ReceberProcedimentoRN extends InfraRN //TODO: Avaliar necessidade de restringir referência circular entre processos //TODO: Registrar que o processo foi recebido com outros apensados. Necessário para posterior reenvio $this->atribuirProcessosApensados($objProcedimentoDTO, $objProcesso->processoApensado); - + + //Realiza a alteração dos metadados do processo + //TODO: Implementar alteração de todos os metadados + //$this->alterarMetadadosProcedimento($objProcedimentoDTO->getDblIdProcedimento(), $objProcesso); + //TODO: Finalizar o envio do documento para a respectiva unidade $this->enviarProcedimentoUnidade($objProcedimentoDTO, true); @@ -570,8 +578,39 @@ class ReceberProcedimentoRN extends InfraRN } + + private function gerarAndamentoUnidadeReceptora($parNumIdProcedimento) { + + $objUnidadeDTO = new PenUnidadeDTO(); + $objUnidadeDTO->setNumIdUnidadeRH($this->destinatarioReal->numeroDeIdentificacaoDaEstrutura); + $objUnidadeDTO->setStrSinAtivo('S'); + $objUnidadeDTO->retStrDescricao(); //descricao + + $objUnidadeRN = new UnidadeRN(); + $objUnidadeDTO = $objUnidadeRN->consultarRN0125($objUnidadeDTO); + + $objAtributoAndamentoDTO = new AtributoAndamentoDTO(); + $objAtributoAndamentoDTO->setStrNome('DESCRICAO'); + $objAtributoAndamentoDTO->setStrValor('Processo remetido para a unidade ' . $objUnidadeDTO->getStrDescricao()); + $objAtributoAndamentoDTO->setStrIdOrigem($this->destinatarioReal->numeroDeIdentificacaoDaEstrutura); - private function gerarProcedimento($objMetadadosProcedimento, $objProcesso){ + $arrObjAtributoAndamentoDTO = array($objAtributoAndamentoDTO); + + $objAtividadeDTO = new AtividadeDTO(); + $objAtividadeDTO->setDblIdProtocolo($parNumIdProcedimento); + $objAtividadeDTO->setNumIdUnidade(SessaoSEI::getInstance()->getNumIdUnidadeAtual()); + $objAtividadeDTO->setNumIdUsuario(SessaoSEI::getInstance()->getNumIdUsuario()); + $objAtividadeDTO->setNumIdTarefa(TarefaRN::$TI_ATUALIZACAO_ANDAMENTO); + $objAtividadeDTO->setArrObjAtributoAndamentoDTO($arrObjAtributoAndamentoDTO); + $objAtividadeDTO->setDthConclusao(null); + $objAtividadeDTO->setNumIdUsuarioConclusao(null); + $objAtividadeDTO->setStrSinInicial('N'); + + $objAtividadeRN = new AtividadeRN(); + $objAtividadeRN->gerarInternaRN0727($objAtividadeDTO); + } + + private function gerarProcedimento($objMetadadosProcedimento, $objProcesso){ if(!isset($objMetadadosProcedimento)){ throw new InfraException('Parâmetro $objMetadadosProcedimento não informado.'); @@ -631,7 +670,7 @@ class ReceberProcedimentoRN extends InfraRN //!Criação da observação de aviso para qual é a real unidade emitida (!2!) if ($this->destinatarioReal) { $objUnidadeDTO = new PenUnidadeDTO(); - $objUnidadeDTO->setNumIdUnidadeRH($this->destinatarioReal); + $objUnidadeDTO->setNumIdUnidadeRH($this->destinatarioReal->numeroDeIdentificacaoDaEstrutura); $objUnidadeDTO->setStrSinAtivo('S'); $objUnidadeDTO->retStrDescricao(); @@ -718,7 +757,31 @@ class ReceberProcedimentoRN extends InfraRN return $objProcedimentoDTO; } - + private function alterarMetadadosProcedimento($parNumIdProcedimento, $parObjMetadadoProcedimento){ + + //Realiza a alteração dos metadados do processo(Por hora, apenas do nível de sigilo e hipótese legal) + $objProtocoloDTO = new ProtocoloDTO(); + $objProtocoloDTO->setDblIdProcedimento($parNumIdProcedimento); + $objProtocoloDTO->setStrStaNivelAcessoLocal($this->obterNivelSigiloSEI($parObjMetadadoProcedimento->nivelSigilo)); + $objProtocoloDTO->setNumIdHipoteseLegal($this->obterHipoteseLegalSEI($parObjMetadadoProcedimento->hipoteseLegal->identificacao)); + + $objProtocoloRN = new ProtocoloRN(); + $objProtocoloRN->alterarRN0203($objProtocoloDTO); + } + + private function alterarMetadadosDocumento($parNumIdDocumento, $parObjMetadadoDocumento){ + //Realiza a alteração dos metadados do documento(Por hora, apenas do nível de sigilo e hipótese legal) + $objProtocoloDTO = new ProtocoloDTO(); + $objProtocoloDTO->setDblIdProtocolo($parNumIdDocumento); + $objProtocoloDTO->setStrStaNivelAcessoLocal($this->obterNivelSigiloSEI($parObjMetadadoDocumento->nivelSigilo)); + $objProtocoloDTO->setNumIdHipoteseLegal($this->obterHipoteseLegalSEI($parObjMetadadoDocumento->hipoteseLegal->identificacao)); + + $objProtocoloRN = new ProtocoloRN(); + $objProtocoloRN->alterarRN0203($objProtocoloDTO); + + } + + private function removerAndamentosProcedimento($parObjProtocoloDTO) { //TODO: Remover apenas as atividades geradas pelo recebimento do processo, não as atividades geradas anteriormente @@ -814,35 +877,7 @@ class ReceberProcedimentoRN extends InfraRN $objAtividadeRN->gerarInternaRN0727($objAtividadeDTO); - //Cadastro das atividades para quando o destinatário é desviado pelo receptor (!3!) - if ($this->destinatarioReal) { - $objUnidadeDTO = new PenUnidadeDTO(); - $objUnidadeDTO->setNumIdUnidadeRH($this->destinatarioReal); - $objUnidadeDTO->setStrSinAtivo('S'); - $objUnidadeDTO->retStrDescricao(); //descricao - $objUnidadeRN = new UnidadeRN(); - $objUnidadeDTO = $objUnidadeRN->consultarRN0125($objUnidadeDTO); - - $objAtributoAndamentoDTO = new AtributoAndamentoDTO(); - $objAtributoAndamentoDTO->setStrNome('DESCRICAO'); - $objAtributoAndamentoDTO->setStrValor('Processo remetido para a unidade ' . $objUnidadeDTO->getStrDescricao()); - $objAtributoAndamentoDTO->setStrIdOrigem($objNivel->numeroDeIdentificacaoDaEstrutura); - - $arrObjAtributoAndamentoDTO = array($objAtributoAndamentoDTO); - - $objAtividadeDTO = new AtividadeDTO(); - $objAtividadeDTO->setDblIdProtocolo($objProcedimentoDTO->getDblIdProcedimento()); - $objAtividadeDTO->setNumIdUnidade(SessaoSEI::getInstance()->getNumIdUnidadeAtual()); - $objAtividadeDTO->setNumIdUsuario(SessaoSEI::getInstance()->getNumIdUsuario()); - $objAtividadeDTO->setNumIdTarefa(TarefaRN::$TI_ATUALIZACAO_ANDAMENTO); - $objAtividadeDTO->setArrObjAtributoAndamentoDTO($arrObjAtributoAndamentoDTO); - $objAtividadeDTO->setDthConclusao(null); - $objAtividadeDTO->setNumIdUsuarioConclusao(null); - $objAtividadeDTO->setStrSinInicial('N'); - - $objAtividadeRN = new AtividadeRN(); - $objAtividadeRN->gerarInternaRN0727($objAtividadeDTO); - } + } @@ -1012,6 +1047,7 @@ class ReceberProcedimentoRN extends InfraRN //$strHashConteudo = ProcessoEletronicoRN::getHashFromMetaDados($objDocumento->componenteDigital->hash); + // Caso já esteja cadastrado, de um reenvio anterior, então move para bloqueado if(array_key_exists($objDocumento->ordem, $arrObjComponenteDigitalDTOIndexado)) { @@ -1045,6 +1081,8 @@ class ReceberProcedimentoRN extends InfraRN } if(array_key_exists($objDocumento->ordem, $arrObjComponenteDigitalDTOIndexado)){ + //$objComponenteDigitalDTO = $arrObjComponenteDigitalDTO[$objDocumento->ordem]; + //$this->alterarMetadadosDocumento($objComponenteDigitalDTO->getNumIdDocumento(), $objDocumento); continue; } @@ -1374,6 +1412,21 @@ class ReceberProcedimentoRN extends InfraRN break; } } + + private function obterHipoteseLegalSEI($parNumIdHipoteseLegalPEN) { + //Atribuí a hipótese legal + $objHipoteseLegalRecebido = new PenRelHipoteseLegalRecebidoRN(); + $objPenParametroRN = new PenParametroRN(); + $numIdHipoteseLegalPadrao = $objPenParametroRN->getParametro('HIPOTESE_LEGAL_PADRAO'); + + $numIdHipoteseLegal = $objHipoteseLegalRecebido->getIdHipoteseLegalSEI($parNumIdHipoteseLegalPEN); + + if (empty($numIdHipoteseLegal)) { + return $numIdHipoteseLegalPadrao; + } else { + return $numIdHipoteseLegal; + } + } //TODO: Implementar o mapeamento entre as unidade do SEI e Barramento de Serviços (Secretaria de Saúde: 218794) private function obterUnidadeMapeada($numIdentificacaoDaEstrutura) @@ -1390,6 +1443,7 @@ class ReceberProcedimentoRN extends InfraRN return $objUnidadeRN->consultarRN0125($objUnidadeDTO); } + /** * * @return SerieDTO -- libgit2 0.21.2