Skip to main content
Announcements
Qlik Connect 2024! Seize endless possibilities! LEARN MORE
cancel
Showing results for 
Search instead for 
Did you mean: 
ddssilva
Partner - Contributor
Partner - Contributor

Contagem de pessoas de acordo com uma condição, associado a outras condições

Pessoal, boa tarde!

Eu tenho uma base de dados médica que contém: ID, NOME, TITULARIDADE, PROCEDIMENTO e VALOR e preciso fazer um gráfico que faça uma contagem de pessoas por titularidade, sendo que só posso contar caso essa pessoa passou pelo procedimento "FASE EXAME" e também pela "FASE AVALIAÇÃO". Porém, caso essas pessoas tenha algum procedimento de "CIRURGIA" e/ou "CASO ONCOLOGICO", ela não aparecerá na contagem, mesmo passando pelos procedimentos "FASE EXAME" e "FASE AVALIAÇÃO". Caso a pessoa passe somente pela "FASE EXAME" ou somente pela "FASE AVALIAÇÃO"

Estou enviado um arquivo QVW como exemplo.

Para este exemplo, o resultado que quero chegar é:

TITULAR  ------->>> 2
DEPENDENTE -->> 1

Desde já agradeço. Abs.

1 Solution

Accepted Solutions
rodrigohacke
Partner - Contributor II
Partner - Contributor II

Veja se agora resolve.

 

Sum(Aggr(If(
RangeSum(If(Aggr(
Count({<PROCEDIMENTO={'FASE EXAME'},
NOME=e({1<PROCEDIMENTO={'CIRURGIA','CASO ONCOLOGICO'}>})
>} Distinct NOME),NOME,PROCEDIMENTO)=1,1),0)
+
RangeSum(If(Aggr(
Count({<PROCEDIMENTO={'FASE AVALIAÇÃO'},
NOME=e({1<PROCEDIMENTO={'CIRURGIA','CASO ONCOLOGICO'}>})
>} Distinct NOME),NOME,PROCEDIMENTO)=1,1),0) = 2,1),NOME,TITULARIDADE))

 

Exemplo.JPG

View solution in original post

5 Replies
danilostochi
Creator II
Creator II

Boa noite, veja se isso pode lhe atender.

//Deve existir outras formas de se resolver essa questão.

TESTE_RISCO:

LOAD * INLINE [
ID, NOME, TITULARIDADE, PROCEDIMENTO, VALOR
1, RAFAEL, TITULAR, CASO ONCOLOGICO, 2500
2, RAFAEL, TITULAR, CASO ONCOLOGICO, 2500
3, RAFAEL, TITULAR, CASO ONCOLOGICO, 2500
4, RAFAEL, TITULAR, CASO ONCOLOGICO, 2500
5, RAFAEL, TITULAR, FASE EXAME, 50
6, RAFAEL, TITULAR, FASE EXAME, 50
7, RAFAEL, TITULAR, FASE EXAME, 50
8, RAFAEL, TITULAR, FASE AVALIAÇÃO, 10
9, RAFAEL, TITULAR, FASE AVALIAÇÃO, 10
10, RAFAEL, TITULAR, OUTROS, 100
11, RAFAEL, TITULAR, OUTROS, 100
12, RAFAEL, TITULAR, OUTROS, 100
13, CARLOS, TITULAR, FASE EXAME, 50
14, CARLOS, TITULAR, FASE EXAME, 50
15, CARLOS, TITULAR, FASE EXAME, 50
16, CARLOS, TITULAR, FASE EXAME, 50
17, CARLOS, TITULAR, FASE EXAME, 50
18, CARLOS, TITULAR, FASE AVALIAÇÃO, 10
19, CARLOS, TITULAR, FASE AVALIAÇÃO, 10
20, CARLOS, TITULAR, OUTROS, 100
21, CARLOS, TITULAR, OUTROS, 100
22, CARLOS, TITULAR, OUTROS, 100
23, CARLOS, TITULAR, OUTROS, 100
24, ROBERTO, DEPENDENTE, CIRURGIA, 1500
25, ROBERTO, DEPENDENTE, CIRURGIA, 1500
26, ROBERTO, DEPENDENTE, CIRURGIA, 1500
27, ROBERTO, DEPENDENTE, FASE EXAME, 50
28, ROBERTO, DEPENDENTE, FASE EXAME, 50
29, ROBERTO, DEPENDENTE, FASE AVALIAÇÃO, 10
30, ROBERTO, DEPENDENTE, OUTROS, 100
31, ROBERTO, DEPENDENTE, OUTROS, 100
32, THIAGO, TITULAR, CASO ONCOLOGICO, 2500
33, THIAGO, TITULAR, CASO ONCOLOGICO, 2500
34, THIAGO, TITULAR, FASE EXAME, 50
35, THIAGO, TITULAR, FASE EXAME, 50
36, THIAGO, TITULAR, FASE AVALIAÇÃO, 10
37, THIAGO, TITULAR, FASE AVALIAÇÃO, 10
38, THIAGO, TITULAR, OUTROS, 100
39, THIAGO, TITULAR, OUTROS, 100
40, HUGO, TITULAR, FASE EXAME, 50
41, HUGO, TITULAR, FASE EXAME, 50
42, HUGO, TITULAR, FASE EXAME, 50
43, HUGO, TITULAR, FASE AVALIAÇÃO, 10
44, HUGO, TITULAR, FASE AVALIAÇÃO, 10
45, HUGO, TITULAR, OUTROS, 100
46, HUGO, TITULAR, OUTROS, 100
47, HUGO, TITULAR, OUTROS, 100
48, ARMANDO, DEPENDENTE, FASE EXAME, 50
49, ARMANDO, DEPENDENTE, FASE EXAME, 50
50, ARMANDO, DEPENDENTE, OUTROS, 100
51, WILL, TITULAR, FASE AVALIAÇÃO, 50
52, WILL, TITULAR, FASE AVALIAÇÃO, 10
53, WILL, TITULAR, CIRURGIA, 5000
54, WILL, TITULAR, OUTROS, 100
55, DEMILSON, DEPENDENTE, FASE AVALIAÇÃO, 10
56, DEMILSON, DEPENDENTE, FASE AVALIAÇÃO, 10
57, DEMILSON, DEPENDENTE, OUTROS, 100
58, DEMILSON, DEPENDENTE, OUTROS, 100
59, FLÁVIO, DEPENDENTE, FASE EXAME, 50
60, FLÁVIO, DEPENDENTE, FASE EXAME, 50
61, FLÁVIO, DEPENDENTE, FASE AVALIAÇÃO, 10
62, FLÁVIO, DEPENDENTE, FASE AVALIAÇÃO, 10
63, FLÁVIO, DEPENDENTE, OUTROS, 100
64, FLÁVIO, DEPENDENTE, OUTROS, 100
65, MAIARA, TITULAR, OUTROS, 100
66, MAIARA, TITULAR, OUTROS, 100
67, SANDRA, DEPENDENTE, OUTROS, 100
68, SANDRA, DEPENDENTE, OUTROS, 100

];


tb1:
LOAD
NOME as NomePessoa,
PROCEDIMENTO as ProcedimentoOnco
Resident TESTE_RISCO where PROCEDIMENTO = 'CASO ONCOLOGICO';
Keep Join (tb1)
LOAD
NOME as NomePessoa,
PROCEDIMENTO as ProcedimentoFaseExam
Resident TESTE_RISCO where PROCEDIMENTO = 'FASE EXAME';
Keep join (tb1)
LOAD
NOME as NomePessoa,
PROCEDIMENTO as ProcedimentoOutros
Resident TESTE_RISCO where PROCEDIMENTO = 'OUTROS';
Keep join (tb1)
LOAD
NOME as NomePessoa,
PROCEDIMENTO as ProcedimentoFaseValid
Resident TESTE_RISCO where PROCEDIMENTO = 'FASE AVALIAÇÃO';
Keep join (tb1)
LOAD
NOME as NomePessoa,
PROCEDIMENTO as ProcedimentoFaseCiru
Resident TESTE_RISCO where PROCEDIMENTO = 'CIRURGIA';

Inner Join (TESTE_RISCO)

tb2:
LOAD
ProcedimentoOnco&'-'&ProcedimentoFaseExam&'-'&ProcedimentoOutros&'-'&ProcedimentoFaseValid&'-'&ProcedimentoFaseCiru as StringDados,
NomePessoa as NOME
Resident tb1;

DROP Table tb1;

 

// no report

Gráfico tabela simples 

dimensão: TITULARIDADE

expressão: Count({$<PROCEDIMENTO={'FASE EXAME', 'FASE AVALIAÇÃO'},StringDados-={"*CASO ONCOLOGICO*","*CIRURGIA*"}>}DISTINCT NOME)  //creio que seria uma contagem distinta?

 

Screenshot_1.jpg

Caso isso lhe atenda não esqueça de marcar com "solved" esse post.

 

 

 

 

 

+55(44) 9 9993-3605, WhatsApp
E-Mail or Skype - danilo16stochi@hotmail.com
rodrigohacke
Partner - Contributor II
Partner - Contributor II

Boa Tarde,

Veja se resolve seu problema com esse Set Analysis.

Count({<PROCEDIMENTO={'FASE EXAME','FASE AVALIAÇÃO'},
NOME = e({1<PROCEDIMENTO= {'CIRURGIA','CASO ONCOLOGICO'}>})
>} Distinct NOME)

Caso isso lhe atenda não esqueça de marcar com "solved" esse post.
ddssilva
Partner - Contributor
Partner - Contributor
Author

Boa tarde. 

A sua solução quase deu certo, porém ele está contando as pessoas que contém o procedimento "FASE EXAME" ou "FASE AVALIAÇÃO", sendo que eu preciso que conte as pessoas com o procedimento "FASE EXAME" e também "FASE AVALIAÇÃO". Ou seja, a sua set analysis, para este exemplo está contando 2 titulares e 3 dependentes. O correto será 2 titulares e 1 dependente. 

rodrigohacke
Partner - Contributor II
Partner - Contributor II

Veja se agora resolve.

 

Sum(Aggr(If(
RangeSum(If(Aggr(
Count({<PROCEDIMENTO={'FASE EXAME'},
NOME=e({1<PROCEDIMENTO={'CIRURGIA','CASO ONCOLOGICO'}>})
>} Distinct NOME),NOME,PROCEDIMENTO)=1,1),0)
+
RangeSum(If(Aggr(
Count({<PROCEDIMENTO={'FASE AVALIAÇÃO'},
NOME=e({1<PROCEDIMENTO={'CIRURGIA','CASO ONCOLOGICO'}>})
>} Distinct NOME),NOME,PROCEDIMENTO)=1,1),0) = 2,1),NOME,TITULARIDADE))

 

Exemplo.JPG

ddssilva
Partner - Contributor
Partner - Contributor
Author

Vlw @rodrigohacke usei a sua solução e deu certinho.

Muito obrigado.