Skip to content

Commit

Permalink
feat: add models to integrate ergon with sms for auth
Browse files Browse the repository at this point in the history
  • Loading branch information
d116626 committed Sep 20, 2024
1 parent 59192a8 commit 58c568a
Show file tree
Hide file tree
Showing 3 changed files with 172 additions and 1 deletion.
5 changes: 4 additions & 1 deletion queries/dbt_project.yml
Original file line number Diff line number Diff line change
Expand Up @@ -53,4 +53,7 @@ models:
+schema: recursos_humanos_ergon_pericia_medica
porte_empresa:
+materialized: table
+schema: porte_empresa
+schema: porte_empresa
recursos_humanos_ergon_saude
+materialized: table
+schema: recursos_humanos_ergon_saude
109 changes: 109 additions & 0 deletions queries/models/recursos_humanos_ergon_saude/funcionarios_ativos.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,109 @@
WITH funcionarios AS (
SELECT
f.id_vinculo AS id_funcionario,
LPAD(f.id_cpf, 11, '0') AS cpf, -- Adiciona zero à esquerda caso o CPF tenha menos de 11 dígitos
f.nome
FROM `rj-smfp.recursos_humanos_ergon.funcionario` f
-- WHERE LPAD(f.id_cpf, 11, '0') = ''
),

provimento AS (
SELECT
p.id_funcionario,
p.id_vinculo,
p.data_inicio AS provimento_inicio,
p.data_fim AS provimento_fim,
p.id_setor,
p.id_cargo,
p.empresa_vinculo AS id_empresa
FROM `rj-smfp.recursos_humanos_ergon.provimento` p
-- QUALIFY ROW_NUMBER() OVER (PARTITION BY id_funcionario ORDER BY id_vinculo DESC, data_inicio DESC) = 1
),

setor AS (
SELECT
id_setor,
data_inicio AS setor_inicio,
data_fim AS setor_fim,
id_setor_pai,
nome AS setor_nome,
sigla AS setor_sigla,
id_secretaria -- SAUDE 1800 (consultar SICI)
FROM `rj-smfp.recursos_humanos_ergon.setor`
-- WHERE data_fim IS NULL
QUALIFY ROW_NUMBER() OVER (PARTITION BY id_setor ORDER BY data_inicio DESC) = 1
),

cargo AS (
SELECT
id_cargo,
nome AS cargo_nome,
categoria AS cargo_categoria,
subcategoria AS cargo_subcategoria
FROM `rj-smfp.recursos_humanos_ergon.cargo`
-- WHERE data_fim IS NULL
),

vacancia_vinculo AS (
SELECT
id_funcionario,
id_vinculo,
data_vacancia
FROM `rj-smfp.recursos_humanos_ergon.vinculo`
QUALIFY ROW_NUMBER() OVER (PARTITION BY id_funcionario ORDER BY id_vinculo DESC) = 1
),

empresa AS (
SELECT
id_empresa,
nome_empresa AS empresa_nome,
sigla AS empresa_sigla
FROM `rj-smfp.recursos_humanos_ergon.empresas`
),

funcionarios_saude AS (
SELECT
f.cpf,
f.nome,
CASE
WHEN (p.provimento_fim IS NULL) AND (vv.data_vacancia IS NULL) THEN TRUE
ELSE FALSE
END AS status_ativo,
p.provimento_inicio,
p.provimento_fim,
vv.data_vacancia,
s.id_secretaria,
p.id_empresa,
s.setor_nome,
s.setor_sigla,
s.setor_inicio,
s.setor_fim,
c.cargo_nome,
c.cargo_categoria,
c.cargo_subcategoria,
emp.empresa_nome,
emp.empresa_sigla
FROM funcionarios f
LEFT JOIN provimento p
ON f.id_funcionario = p.id_funcionario
LEFT JOIN setor s
ON p.id_setor = s.id_setor
LEFT JOIN cargo c
ON p.id_cargo = c.id_cargo
LEFT JOIN vacancia_vinculo vv
ON f.id_funcionario = vv.id_funcionario
AND p.id_vinculo = vv.id_vinculo
LEFT JOIN empresa emp
ON p.id_empresa = emp.id_empresa
WHERE
-- (p.provimento_fim IS NULL)
-- AND (vv.data_vacancia IS NULL) AND
(
s.id_secretaria = '1800'
OR p.id_empresa IN ('32','80','81','82','83','84','85','86','87','88','89','90','92','95','97')
)
)


SELECT * FROM funcionarios_saude
WHERE status_ativo
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
WITH all_cpf AS (
SELECT
DISTINCT
cpf
FROM (
SELECT
cpf,
'sms' AS origin
FROM `rj-sms.saude_dados_mestres.profissional_saude`
WHERE cpf IS NOT NULL
UNION ALL
SELECT
cpf,
'ergon' AS origin
FROM `rj-smfp.recursos_humanos_ergon_saude.funcionarios_ativos`
WHERE cpf IS NOT NULL
)
),

funcionarios AS (
SELECT
cpf.cpf,
ps.cpf AS cpf_sms,
ps.nome AS nome_sms,
fa.cpf AS cpf_ergon,
fa.nome AS nome_ergon
FROM all_cpf cpf
LEFT JOIN `rj-sms.saude_dados_mestres.profissional_saude` ps
ON cpf.cpf = ps.cpf
LEFT JOIN `rj-smfp.recursos_humanos_ergon_saude.funcionarios_ativos` fa
ON cpf.cpf = fa.cpf
),

funcionarios_check AS (
SELECT
cpf,
cpf_sms,
cpf_ergon,
nome_sms,
nome_ergon,
CASE
WHEN cpf_sms IS NOT NULL AND cpf_ergon IS NOT NULL THEN 'both'
WHEN cpf_sms IS NOT NULL THEN 'sms'
WHEN cpf_ergon IS NOT NULL THEN 'ergon'
ELSE 'none'
END AS check
FROM funcionarios
)


-- SELECT *
-- FROM funcionarios_check

SELECT
check,
COUNT(*) AS count
FROM funcionarios_check
GROUP BY 1
ORDER BY 2

0 comments on commit 58c568a

Please sign in to comment.