~~ODT~~ echo "
"; echo "Última atualização: "; ver('', false); echo "
";
====== Relatórios Quantitativos de solicitações de Plano de Saúde ====== Esse caso de uso tem por objetivo apresentar um relatório quantitativo das [[desenvolvimento:especificacoes:sigrh:administracao_de_pessoal:casos_de_uso:plano_de_saude:solicitacoes:solicitacao_de_adesao:cadastrar|solicitações dos planos de saúde]]. O gestor do departamento de administração de pessoal é o responsável por gerar os relatórios quantitativos de solicitações de plano de saúde. ===== Descrição do Caso de Uso ===== Este caso de uso inicia-se quando as opções: * //SIGRH → Módulos → Administração de Pessoal → Plano de Saúde → Consultas/Relatórios → Relatório Quantitativo//. * //SIGRH → Módulos → Plano de Saúde → Consultas/Relatórios → Consultas/Relatórios → Relatório Quantitativo//. Para emitir o relatório o usuário deve informar os seguintes filtros: * **Categoria de Plano***: Tipo - TEXTO. Opções: ''MÉDICO ou ODONTOLÓGICO''. * **Titular da Solicitação***: Tipo - TEXTO. Opções: ''SERVIDOR'' ou ''PENSIONISTA''. * **Unidade de Lotação**: Tipo AUTOCOMPLETE, formato: DENOMINAÇÃO UNIDADE (CÓDIGO), entrada de dados: DENOMINAÇÃO ou CÓDIGO. * **Considerar as unidades vinculadas a Unidade de Lotação**:Tipo LÓGICO. * **Unidade do Exercício**: Tipo AUTOCOMPLETE, formato: DENOMINAÇÃO UNIDADE (CÓDIGO), entrada de dados: DENOMINAÇÃO ou CÓDIGO. * **Considerar as unidades vinculadas a Unidade do Exercício**:Tipo LÓGICO. * **Plano de Saúde**: Tipo - TEXTO. São apresentadas os planos cadastrados em [[desenvolvimento:especificacoes:sigrh:administracao_de_pessoal:casos_de_uso:plano_de_saude:plano_de_saude:cadastrar|Cadastrar plano]]. * **Opção**: Tipo - TEXTO. Disponível de acordo com o plano de saúde selecionado. * **Situação do Titular**: Tipo - TEXTO. Opções de situação do titular: ''Ativo, Ben.Pensão, Pensionista, Aposentado, Cedido, Exclusão, Instituidor, Residentes e suspenso PGTO''. * **Sexo**: Tipo - TEXTO. * **Faixa Etária**: Tipo - NUMÉRICO. Formato - 9. a 9. * **Exibir Dependentes**: Tipo - LÓGICO. ([[#principais_regras_de_negócio|RN01]]) * **Parentesco do Dependente**: Tipo - TEXTO. Ex.: ''Companheiro(a), Cônjuge, Filho(a), Pais''. ([[#principais_regras_de_negócio|RN01]]) * **Condição de Dependência**: Tipo - TEXTO. Ex.: ''Adotivo, Estudante, Inválido''. ([[#principais_regras_de_negócio|RN01]]) O usuário ainda deve informar um tipo de agrupamento, no qual será feito o cálculo quantitativo: * **Titulares Por Unidade**: Tipo - LÓGICO. * **Titulares Por Cargo**. Tipo - LÓGICO. * **Por Situação do Titular**: Tipo - LÓGICO. * **Dependentes Por Faixa Etária**: Tipo - LÓGICO. ([[#principais_regras_de_negócio|RN01]]) * **Dependentes Por Grau de Parentesco**: Tipo - LÓGICO. ([[#principais_regras_de_negócio|RN01]]) * **Exibir Agregados**: Tipo - LÓGICO. ([[#principais_regras_de_negócio|RN04 e RN05]]) * **Parentesco do Agregado**: Tipo - TEXTO.Ex.: ''Companheiro(a), Cônjuge, Filho(a), Pais''. ([[#principais_regras_de_negócio|RN04]]) Existe ainda a opção de geração do relatório: * **Em tela**: Gera o relatório no formato ''HTML''. * **Formato PDF**: Gera o relatório no formato ''PDF''. * **Formato de Planilha**: Gera o relatório no formato ''XLS''. O relatório gerado exibe os seguintes dados: ([[#principais_regras_de_negócio|RN02]]) * **__Agrupamento__**: Tipo - TEXTO. Ex.: Unidade, Cargo, Situação do Titular, Faixa Etária ou Grau de Parentesco. ([[#principais_regras_de_negócio|RN02]]) * **__Quantidade__**: Tipo - NUMÉRICO. * **Modelo do Relatório - Dependentes por Faixa Etária**: Então um relatório é exibido tal qual o modelo a seguir ([[#principais_regras_de_negócio|RN06]]): **Relatório Quantitativo - Plano de Saúde** Categoria: DENOMINAÇÃO CATEGORIA Titular da Solicitação: DENOMINAÇÃO TITULAR Agrupamento: NOME AGRUPAMENTO **NOME FILTRO**: VALOR UTILIZADO ([[#principais_regras_de_negócio|RN06]]) **NOME FILTRO**: VALOR UTILIZADO ([[#principais_regras_de_negócio|RN06]]) ^AGRUPAMENTO ([[#principais_regras_de_negócio|RN02]])^ Total^ | DENOMINAÇÃO ([[#principais_regras_de_negócio|RN02]]) | 99 | | DENOMINAÇÃO ([[#principais_regras_de_negócio|RN02]]) | 99 | |**Quantidade de Registros:** | **811**| O caso de uso é finalizado. ===== Principais Regras de Negócio ===== * **RN01** - Ao selecionar a opção **Exibir Dependentes**, as opções **Parentesco do Dependente** e **Condição de Dependência**, e as opções de agrupamentos **Por Grau de Parentesco** e **Por Faixa Etária** serão habilitados para seleção. * **RN02** - Dependendo do tipo de agrupamento selecionado, o dado exibido no relatório poderá ser: Unidade, Cargo, Situação do Titular, Faixa Etária ou Grau de Parentesco. * **RN03** - Quando o usuário logado possuir papel com exigência de vinculação a uma unidade, todas as operações somente podem ser realizadas para servidores lotados na unidade que foi vinculada ao papel. Caso contrário, as operações podem ser realizadas para servidores lotados em qualquer unidade. * **RN04** - As opções **Exibir Agregados** e **Parentesco do Agregado**, serão exibidas caso o parâmetro do sistema "HABILITAR_SOLICITACAO_AGREGADO" esteja com o valor = 'true'. * **RN05** - Ao selecionar a opção **Exibir Agregados**, a opção **Parentesco do Agregado** será habilitada para seleção. * **RN06** - A exibição dos filtros no relatório está ligada à sua utilização. ==== Resoluções/Legislações Associadas ==== Não se aplica. ===== Classes Persistentes e Tabelas Envolvidas ===== ^ Classe ^ Tabela | | br.ufrn.sigrh.dominio.TipoAtivo | administrativo.rh_tipos.tipo_ativo | | br.ufrn.sigrh.dominio.Unidade | administrativo.comum.unidade | | br.ufrn.sigrh.funcional.dominio.CategoriaPlanoSaude | administrativo.funcional.categoria_plano_saude | | br.ufrn.sigrh.funcional.dominio.ComprovacaoPlanoSaude | administrativo.funcional.comprovacao_plano_saude | | br.ufrn.sigrh.funcional.dominio.EmpresaPlanoSaude | administrativo.funcional.empresa_plano_saude | | br.ufrn.sigrh.funcional.dominio.OpcaoPlano | administrativo.funcional.opcao_plano | | br.ufrn.sigrh.funcional.dominio.PlanoSaude | administrativo.funcional.plano_saude | | br.ufrn.sigrh.funcional.dominio.Servidor | administrativo.rh.servidor | | br.ufrn.sigrh.funcional.dominio.SolicitacaoPlanoDependente | administrativo.funcional.solicitacao_plano_dependente | | br.ufrn.sigrh.funcional.dominio.SolicitacaoPlanoSaude | administrativo.funcional.solicitacao_plano_saude | | br.ufrn.sigrh.pessoal.dominio.Dependente | administrativo.pessoal.dependente | | br.ufrn.sigrh.pessoal.dominio.Pensionista | administrativo.pessoal.pensionista | ===== Plano de Teste ===== Sistema: SIGRH Módulo: Administração de Pessoal / Plano de Saúde Link(s): * //SIGRH → Módulos → Administração de Pessoal → Plano de Saúde → Consultas/Relatórios → Relatório Quantitativo//. * //SIGRH → Módulos → Plano de Saúde → Consultas/Relatórios → Consultas/Relatórios → Relatório Quantitativo//. Usuário: mirian Papel que usuário deve ter: SigrhPapeis.GESTOR_DAP ===== Cenários de Teste ===== Os casos de usos [[desenvolvimento:especificacoes:sigrh:administracao_de_pessoal:casos_de_uso:plano_de_saude:solicitacoes:solicitacao_de_adesao:cadastrar#plano_de_teste|Cadastrar Solicitação de Adesão a Plano de Saúde]] e [[desenvolvimento:especificacoes:sigrh:administracao_de_pessoal:casos_de_uso:plano_de_saude:solicitacoes:solicitacao_de_ressarcimento:cadastrar#plano_de_teste|Solicitação de Ressarcimento de Plano de Saúde]] ser utilizados para realizar modificações que alterem o resultado do relatório, e assim o testador possa verificar se o relatório está refletindo as mudanças. Também verificar as diferentes categorias de plano. ===== Dados para o Teste ===== Consulta SQL para auxiliar na comparação com o relatório quantitativo, com filtro unidade agrupado por unidade, para isto é necessário passar o id da unidade: SELECT unidade15_.id_unidade AS "ID Unidade", unidade15_.nome_capa AS "Unidade", count(*) AS "Total" FROM funcional.solicitacao_plano_saude solicitaca0_ INNER JOIN funcional.plano_saude planosaude1_ ON solicitaca0_.id_plano_saude=planosaude1_.id_plano_saude LEFT OUTER JOIN funcional.categoria_plano_saude categoriap2_ ON planosaude1_.id_categoria_plano_saude=categoriap2_.id_categoria_plano_saude INNER JOIN funcional.empresa_plano_saude empresapla5_ ON planosaude1_.id_empresa_plano_saude=empresapla5_.id_empresa_plano_saude LEFT OUTER JOIN funcional.opcao_plano opcaoplano3_ ON solicitaca0_.id_opcao_plano=opcaoplano3_.id_opcao_plano INNER JOIN funcional.status_solicitacao_plano statussoli4_ ON solicitaca0_.id_status_solicitacao_plano=statussoli4_.id_status_solicitacao_plano LEFT OUTER JOIN pessoal.pensionista pensionist6_ ON solicitaca0_.id_pensionista=pensionist6_.id_pensionista LEFT OUTER JOIN comum.pessoa pessoa8_ ON pensionist6_.id_pessoa=pessoa8_.id_pessoa LEFT OUTER JOIN pessoal.pensionista_servidor servidores9_ ON pensionist6_.id_pensionista=servidores9_.id_pensionista AND ( servidores9_.id_servidor IS NOT NULL) LEFT OUTER JOIN rh.servidor servidor10_ ON servidores9_.id_servidor=servidor10_.id_servidor LEFT OUTER JOIN comum.unidade unidade11_ ON servidor10_.id_unidade=unidade11_.id_unidade LEFT OUTER JOIN rh_tipos.tipo_ativo tipoativo12_ ON servidor10_.id_ativo=tipoativo12_.id_tipo_ativo LEFT OUTER JOIN rh.cargo cargo13_ ON servidor10_.id_cargo=cargo13_.id LEFT OUTER JOIN rh.servidor servidor14_ ON solicitaca0_.id_servidor=servidor14_.id_servidor LEFT OUTER JOIN comum.unidade unidade15_ ON servidor14_.id_unidade=unidade15_.id_unidade LEFT OUTER JOIN comum.pessoa pessoa16_ ON servidor14_.id_pessoa=pessoa16_.id_pessoa LEFT OUTER JOIN rh_tipos.tipo_ativo tipoativo17_ ON servidor14_.id_ativo=tipoativo17_.id_tipo_ativo LEFT OUTER JOIN rh.cargo cargo18_ ON servidor14_.id_cargo=cargo18_.id GROUP BY unidade15_.id_unidade, unidade15_.nome_capa ORDER BY unidade15_.nome_capa Agrupamento por Cargo: select cargo.denominacao as "Cargo", count(*) as "Total" from funcional.solicitacao_plano_saude solPlano inner join funcional.plano_saude plano_saude on solPlano.id_plano_saude=plano_saude.id_plano_saude inner join funcional.empresa_plano_saude empresa_plano on plano_saude.id_empresa_plano_saude=empresa_plano.id_empresa_plano_saude left outer join funcional.opcao_plano opcao on solPlano.id_opcao_plano=opcao.id_opcao_plano inner join funcional.status_solicitacao_plano status on solPlano.id_status_solicitacao_plano=status.id_status_solicitacao_plano left outer join rh.servidor servidor on solPlano.id_servidor=servidor.id_servidor left outer join comum.unidade unidade_servidor on servidor.id_unidade=unidade_servidor.id_unidade left outer join comum.pessoa pessoa_servidor on servidor.id_pessoa=pessoa_servidor.id_pessoa left outer join rh_tipos.tipo_ativo ativo on servidor.id_ativo=ativo.id_tipo_ativo left outer join rh.cargo cargo on servidor.id_cargo=cargo.id left outer join funcional.solicitacao_plano_dependente solDep on solPlano.id_solicitacao_plano_saude=solDep.id_solicitacao_plano_saude left outer join pessoal.dependente dependente on solDep.id_dependente=dependente.id_dependente left outer join comum.pessoa pessoa_dependente on dependente.id_pessoa=pessoa_dependente.id_pessoa left outer join rh_tipos.tipo_grau_parentesco grau on dependente.id_tipo_grau_parentesco=grau.id_tipo_grau_parentesco left outer join rh_tipos.tipo_condicao_dependente condicao on dependente.id_tipo_condicao_dependente=condicao.id_tipo_condicao_dependente group by cargo.denominacao order by cargo.denominacao Verificação de agregados: select pp.nome, ps.nome,a.nome,* from plano_saude.solicitacao_plano_saude sps inner join plano_saude.solicitacao_plano_agregado spa using(id_solicitacao_plano_saude) inner join pessoal.agregado a on a.id_agregado = spa.id_agregado left join rh.servidor s on s.id_servidor = sps.id_Servidor left join comum.pessoa ps on ps.id_pessoa = s.id_pessoa left join pessoal.pensionista p on p.id_pensionista = sps.id_pensionista left join comum.pessoa pp on pp.id_pessoa = p.id_pessoa