-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathuFCidadao.pas
255 lines (222 loc) · 8.99 KB
/
uFCidadao.pas
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
//---------------------------------------------------------------------------//
// Projeto: integraEsus
// Sistema de integrador com ESUS para gestão de dados do programa PrevineBrasil
//
// Direitos Autorais Reservados (c) 2023 Marcelo M. Gonçalves
//
// Você pode obter a última versão desse arquivo no GitHub
// URL: https://github.com/marcelomgoncalves/integradorESUS
//
// Este sistema é software livre; você pode redistribuí-la e/ou modificá-la
// sob os termos da Licença Pública Geral Menor do GNU conforme publicada pela
// Free Software Foundation; tanto a versão 2.1 da Licença, ou (a seu critério)
// qualquer versão posterior.
//
// Este sistema é distribuída na expectativa de que seja útil, porém, SEM
// NENHUMA GARANTIA; nem mesmo a garantia implícita de COMERCIABILIDADE OU
// ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. Consulte a Licença Pública Geral
// Menor do GNU para mais detalhes.
//
// Você deve ter recebido uma cópia da Licença Pública Geral Menor do GNU junto
// com esta biblioteca; se não, escreva para a Free Software Foundation, Inc.,
// no endereço 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA.
// Você também pode obter uma copia da licença em:
// http://www.opensource.org/licenses/lgpl-license.php
//
// Marcelo M. Gonçalves - marcelomgoncalves@gmail.com
//---------------------------------------------------------------------------//
unit uFCidadao;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.ExtCtrls, Data.DB, Vcl.Grids,
Vcl.DBGrids, MemDS, DBAccess, Uni, Vcl.StdCtrls, RzCmboBx, RzButton,
Vcl.DBCtrls, RzDBCmbo;
type
TFCidadao = class(TForm)
Panel1: TPanel;
Panel2: TPanel;
Panel3: TPanel;
QryCidadao: TUniQuery;
dsCidadao: TDataSource;
Panel4: TPanel;
Panel5: TPanel;
DBGrid1: TDBGrid;
QryCidadaoco_seq_cds_cad_individual: TLargeintField;
QryCidadaodt_cad_individual: TDateField;
QryCidadaono_cidadao: TStringField;
QryCidadaoco_sexo: TLargeintField;
QryCidadaonu_cpf_cidadao: TStringField;
QryCidadaonu_cns: TStringField;
QryCidadaodt_nascimento: TDateField;
QryCidadaoidade: TFloatField;
QryCidadaomunic_resid: TStringField;
QryCidadaono_unidade_saude: TStringField;
QryCidadaocns_prof: TStringField;
QryCidadaocnes: TStringField;
QryCidadaoine: TStringField;
QryCidadaoraca_cor: TStringField;
QryCidadaonacionalidade: TStringField;
cbBuscarpor: TRzComboBox;
edIdadeInicial: TEdit;
edIdadeFinal: TEdit;
cbGenero: TRzComboBox;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
RzBitBtn1: TRzBitBtn;
edTermo: TEdit;
Label5: TLabel;
Label6: TLabel;
Label7: TLabel;
qryUnidade: TUniQuery;
qryEquipe: TUniQuery;
dsUnidade: TDataSource;
dsEquipe: TDataSource;
qryUnidadeco_seq_dim_unidade_saude: TLargeintField;
qryUnidadeno_unidade_saude: TStringField;
cbUnidade: TRzComboBox;
cbEquipe: TRzComboBox;
QryCidadaono_equipe: TStringField;
QryCidadaosg_sexo: TStringField;
lblRegistros: TLabel;
procedure FormCreate(Sender: TObject);
procedure DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
procedure RzBitBtn1Click(Sender: TObject);
procedure LimparGrid;
private
{ Private declarations }
public
{ Public declarations }
end;
const
crlf = #13+#10;
i_where = 25;
var
FCidadao: TFCidadao;
SQLPADRAO:String;
implementation
{$R *.dfm}
uses uDM, uFuncoes;
procedure TFCidadao.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
if gdSelected in State then
begin
dbgrid1.Canvas.Font.Color := clHighlightText; //Fundo
dbgrid1.Canvas.Brush.Color:= clHighlight; //Fonte
end
else
begin
If odd(qryCidadao.RecNo) then
begin
dbgrid1.Canvas.Font.Color := clBlack;
dbgrid1.Canvas.Brush.Color:= $00F2FFFF;
end
else
begin
dbgrid1.Canvas.Font.Color := clBlack;
dbgrid1.Canvas.Brush.Color:= $00FFF9EA;
end;
end;
dbgrid1.Canvas.FillRect(Rect);
dbgrid1.Canvas.TextOut(Rect.Left + 2,Rect.Top, Column.Field.AsString);
end;
procedure TFCidadao.FormCreate(Sender: TObject);
var
filtroInicial :string;
begin
SQLPADRAO:='select distinct on (tb_cds_cad_individual.co_seq_cds_cad_individual) '+crlf+
'tb_cds_cad_individual.co_seq_cds_cad_individual, '+crlf+
'tb_cds_cad_individual.dt_cad_individual::date, '+crlf+
'tb_cds_cad_individual.no_cidadao , '+crlf+
'tb_cds_cad_individual.co_sexo, '+crlf+
'tb_fat_cad_individual.nu_cpf_cidadao , '+crlf+
'tb_fat_cad_individual.nu_cns , '+crlf+
'tb_fat_cad_individual.dt_nascimento, '+crlf+
'(extract(year from age(current_date,tb_fat_cad_individual.dt_nascimento))) as idade, '+crlf+
'(select no_municipio from tb_dim_municipio where co_seq_dim_municipio = tb_fat_cad_individual.co_dim_municipio) as MUNIC_RESID, '+crlf+
'tb_dim_unidade_saude.no_unidade_saude, '+crlf+
'tb_dim_unidade_saude.co_seq_dim_unidade_saude, '+crlf+
'tb_dim_equipe.no_equipe, '+crlf+
'tb_dim_equipe.co_seq_dim_equipe, '+crlf+
'tb_dim_sexo.sg_sexo, '+crlf+
'(select nu_cns from tb_cds_prof where co_seq_cds_prof = tb_cds_cad_individual.co_cds_prof_cadastrante) as CNS_PROF, '+crlf+
'tb_dim_unidade_saude.nu_cnes as CNES, '+crlf+
'(select nu_ine from tb_dim_equipe where co_seq_dim_equipe = tb_fat_cad_individual.co_dim_equipe) as INE, '+crlf+
'--(select sg_sexo from tb_dim_sexo where co_seq_dim_sexo = tb_fat_cad_individual.co_dim_sexo) as SEXO, '+crlf+
'(select ds_raca_cor from tb_dim_raca_cor where co_seq_dim_raca_cor = tb_fat_cad_individual.co_dim_raca_cor) as RACA_COR, '+crlf+
'(select ds_nacionalidade from tb_dim_nacionalidade where co_seq_dim_nacionalidade = tb_fat_cad_individual.co_dim_nacionalidade) as nacionalidade '+crlf+
'from tb_cds_cad_individual '+crlf+
'inner join tb_fat_cad_individual on tb_fat_cad_individual.nu_uuid_ficha = tb_cds_cad_individual.co_unico_ficha '+crlf+
'--inner join tb_cds_cidadao_resposta on co_cds_cad_individual = co_seq_cds_cad_individual '+crlf+
'inner join tb_dim_unidade_saude on tb_dim_unidade_saude.co_seq_dim_unidade_saude = tb_fat_cad_individual.co_dim_unidade_saude '+crlf+
'inner join tb_dim_equipe on tb_dim_equipe.co_seq_dim_equipe = tb_fat_cad_individual.co_dim_equipe '+crlf+
'inner join tb_dim_sexo on tb_dim_sexo.co_seq_dim_sexo = tb_fat_cad_individual.co_dim_sexo '+crlf+
'where tb_cds_cad_individual.st_versao_atual = 1 and tb_cds_cad_individual.st_ficha_inativa = 0 '+crlf+
'and tb_cds_cad_individual.dt_obito is null '+crlf;
filtroInicial:=' and tb_cds_cad_individual.co_seq_cds_cad_individual = -1';
qryCidadao.close;
qryCidadao.sql.clear;
qryCidadao.sql.text:=SQLPADRAO + filtroInicial;
qryCidadao.open;
qryUnidade.open;
qryEquipe.open;
carregaComboBox(qryUnidade, cbUnidade);
carregaComboBox(qryEquipe, cbEquipe);
end;
procedure TFCidadao.LimparGrid;
var
filtro:String;
begin
{todo:}
qryCidadao.close;
dbgrid1.datasource:=nil;
sleep(1000);
end;
procedure TFCidadao.RzBitBtn1Click(Sender: TObject);
var
filtro:String;
begin
limparGrid;
qryCidadao.close;
qryCidadao.sql.clear;
qryCidadao.sql.text:='WITH cidadao as ('+SQLPADRAO+')'+crlf;
filtro:='SELECT * from Cidadao WHERE 1=1 '+crlf;
{ if ((edTermo.text='') and (cbGenero.ItemIndex=2) and (edIdadeInicial.text='')
and (edIdadeFinal.text='')) then
begin
qryCidadao.open;
end;
}
if edIdadeInicial.text<>'' then // Criando Filtro para Idades
begin
filtro:=filtro+' and idade>='+trim(edIdadeInicial.text)+' ';
if edIdadeFinal.text<>'' then
filtro:=filtro+' and idade<='+trim(edIdadeFinal.text)+' ';
end;
if cbGenero.Value <>'N' then // Filtro Gênero
filtro:=filtro+' and sg_sexo = '+QuotedStr(Trim(cbGenero.Value));
if cbUnidade.Value<>'1' then
filtro:=filtro+' and co_seq_dim_unidade_saude = '+cbUnidade.Value;
if cbEquipe.Value<>'1' then
filtro:=filtro+' and co_seq_dim_equipe = '+cbEquipe.Value;
if edTermo.text<>'' then
begin
case StrToInt(cbbuscarpor.value) of
0: filtro:=filtro+' and no_cidadao like '+quotedStr(Trim(UpperCase(edTermo.text))+'%'); // Nome do Cidadão
1: filtro:=filtro+' and nu_cpf_cidadao = '+QuotedStr(Trim(edTermo.text)); // CPF do Cidadão
2: filtro:=filtro+' and nu_cns = '+QuotedStr(Trim(edTermo.text)); // CNS do Cidadão
else
filtro:=filtro+' and no_cidadao like '+quotedStr(Trim(UpperCase(edTermo.text))+'%'); // Nome do Cidadão
end;
end;
qryCidadao.sql.add(filtro);
//showmessage(qryCidadao.sql.text);
qryCidadao.open;
dbgrid1.datasource:=dsCidadao ;
lblRegistros.Caption:='Registros Selecionados:'+IntToStr(qryCidadao.RecordCount);
end;
end.