A disseminação via tabwin/tabnet é a mais bem sucedida estratégia para apoio à gestão do SUS e ao controle social. A evolução constante da solução possibilitou a geração de centenas de tabuadores que cobrem virtualmente mais de 80% das demandas por dados que constituirão planos de saúde e relatórios de gestão.
A Comissão Nacional de Incorporação de Tecnologias no SUS (Conitec) consolida sistematicamente os dados disponíveis em ftp://ftp.datasus.gov.br/dissemin/publicos/SIASUS/200801_/. Porém, boa parte das análises podem ser supridas de modo mais simples e institucional ampliando-se o tabulador “PRODUÇÃO AMBULATORIAL DO SUS - BRASIL - POR LOCAL DE ATENDIMENTO” disponível em http://tabnet.datasus.gov.br/cgi/tabcgi.exe?sia/cnv/qauf.def, ou gerando novos a partir deste, acrescentando-se o atributo diagnóstico primário e a métrica quantidade de usuários.
Apoiar o desenvolvimento de novas tabulações via tabnet realizada pela equipe do Departamento de Monitoramento, Avaliação e Disseminação de Dados e Informações Estratégicas em Saúde (DEMAS) para suprir demandas de Avaliação de Tecnologias em Saúde (ATS)
Trata-se de uma prova de conceito pontuando o percurso metodológico
de ciência de dados para estudo descritivo
do quantitativo de usuários do SUS e quantidade aprovada em relação
aos dados do Acre de janeiro/2021 dos arquivos AM laudo de medicamentos e
PA corpo da
Autorização de Procedimentos Ambulatoriais de Alta Complexidade/Custo – APAC.
Foram carregados os arquivos AMAC2101c.dbf, AMAC2101.dbf,
CMAC2101.dbf, PAAC2101.dbf e PMAC2101.dbf no postgreSQL
por meio do cliente de banco de dados DBeaver.
O comando bash dbview foi usado no algoritmo abaixo
para transformação a CSV precedente
à carga.
# BASH
# obtem o nome dos atributos a partir estrutura
for fdbf in $(ls *.dbf);do
dbview -e -o $fdbf |
awk -F'\t' '{ gsub(/[ \t]+$/,"",$1);gsub(" ","_",$1); print tolower($1)","$2","$3}' |
sed 1d | sed 's/ //g' | nl | awk '{print $1","$2}' |
awk -F',' '{print $2}' | sed ':a;N;$!ba;s/\n/,/g' > $fdbf.csv
done
# obtem os dados
ls *.dbf | awk '{print "dbview -b -d\",\" -t " $1 " >> "$0".csv"}' | sh
Salienta-se que todos os atributos foram carregados em formato texto sem transformação.
O arquivo DBF incorporado no SGBD amac2101c contém
3.608 registros,
3.608 autorizações ap_autoriz,
111 procedimentos ap_pripal e
3.482 usuários ap_cnspcn.
O arquivo DBF incorporado no SGBD cmac2101 contém
3.608 registros,
3.608 autorizações ap_autoriz,
111 procedimentos ap_pripal e
3.482 usuários ap_cnspcn.
O arquivo DBF incorporado no SGBD paac2101 contém
50.903 registros,
5.098 autorizações pa_autoriz e
778 procedimentos pa_proc_id com
824.285 autorizações pa_qtdapr.
Ao filtrar procedimentos 06 com quantidade aprovada, o paac2101 contém
3.422 registros,
3.134 autorizações pa_autoriz e
106 procedimentos pa_proc_id com
142.547 quantidade aprovada pa_qtdapr.
O arquivo DBF incorporado no SGBD pmac2101 contém
3.422 registros,
3.134 autorizações pa_autoriz,
106 procedimentos pa_proc_id com
142.547 de quantidade aprovada pa_qtdapr e
3.011 usuários contauser.
Ao filtrar procedimentos 06 com quantidade aprovada, o pmac2101 contém
3.422 registros,
3.134 autorizações pa_autoriz,
106 procedimentos pa_proc_id com
142.547 de quantidade aprovada pa_qtdapr e
3.011 usuários contauser.
As quantidades aprovadas correspondem ao publicado no tabnet, conforme figura 4.1;
Figure 4.1: Etapas realizadas na Sala Aberta de Inteligência em Saúde - SABEIS no processamento dos dados abertos do DataSUS.
Conjectura 1 - Deve-se avaliar a recuperação do contauser frente
aos respectivos códigos de autorização da APAC.
A consulta SQL a seguir ilustra a junção das quatro tabelas pelo código
de autorização.
# SQL
select distinct autoriz,
A.ap_autoriz amac2101c,
B.ap_autoriz cmac2101,
C.pa_autoriz paac2101,
D.pa_autoriz pmac2101
from (
select ap_autoriz autoriz from bd_sabeis.amac2101c union
select ap_autoriz from bd_sabeis.cmac2101 union
select pa_autoriz from bd_sabeis.paac2101 union
select pa_autoriz from bd_sabeis.pmac2101
) x
left join bd_sabeis.amac2101c A on x.autoriz = A.ap_autoriz
left join bd_sabeis.cmac2101 B on x.autoriz = B.ap_autoriz
left join bd_sabeis.paac2101 C on x.autoriz = C.pa_autoriz
left join bd_sabeis.pmac2101 D on x.autoriz = D.pa_autoriz
limit 30
| autoriz | amac2101c | cmac2101 | paac2101 | pmac2101 |
|---|---|---|---|---|
| 0 | nulo | nulo | 0 | nulo |
| 1 | nulo | nulo | 1 | nulo |
| 10 | nulo | nulo | 10 | nulo |
| 11 | nulo | nulo | 11 | nulo |
| 12 | nulo | nulo | 12 | nulo |
| 1220200101747 | nulo | nulo | 1220200101747 | nulo |
| 1220200101791 | nulo | nulo | 1220200101791 | nulo |
| 1220200101857 | nulo | nulo | 1220200101857 | nulo |
| 1220200101868 | nulo | nulo | 1220200101868 | nulo |
| 1220200101879 | nulo | nulo | 1220200101879 | nulo |
| 1220200108171 | 1220200108171 | 1220200108171 | 1220200108171 | 1220200108171 |
| 1220200109128 | 1220200109128 | 1220200109128 | 1220200109128 | 1220200109128 |
| 1220200109590 | 1220200109590 | 1220200109590 | 1220200109590 | nulo |
| 1220200110195 | 1220200110195 | 1220200110195 | 1220200110195 | 1220200110195 |
| 1220200114067 | 1220200114067 | 1220200114067 | 1220200114067 | nulo |
| 1220200119590 | 1220200119590 | 1220200119590 | 1220200119590 | 1220200119590 |
| 1220200119886 | 1220200119886 | 1220200119886 | 1220200119886 | nulo |
| 1220200120524 | 1220200120524 | 1220200120524 | 1220200120524 | nulo |
| 1220200122614 | 1220200122614 | 1220200122614 | 1220200122614 | 1220200122614 |
| 1220200122977 | 1220200122977 | 1220200122977 | 1220200122977 | 1220200122977 |
| 1220200123659 | 1220200123659 | 1220200123659 | 1220200123659 | nulo |
| 1220200123835 | 1220200123835 | 1220200123835 | 1220200123835 | nulo |
| 1220200123880 | 1220200123880 | 1220200123880 | 1220200123880 | 1220200123880 |
| 1220200124044 | 1220200124044 | 1220200124044 | 1220200124044 | nulo |
| 1220200124132 | 1220200124132 | 1220200124132 | 1220200124132 | 1220200124132 |
| 1220200125090 | 1220200125090 | 1220200125090 | 1220200125090 | 1220200125090 |
| 1220200126068 | 1220200126068 | 1220200126068 | 1220200126068 | 1220200126068 |
| 1220200130941 | 1220200130941 | 1220200130941 | 1220200130941 | 1220200130941 |
| 1220200131359 | 1220200131359 | 1220200131359 | 1220200131359 | 1220200131359 |
| 1220200131601 | 1220200131601 | 1220200131601 | 1220200131601 | nulo |
A consulta SQL a seguir ilustra a junção das quatro tabelas pelo código
de autorização contendo apenas procedimento 06.
# SQL
select distinct autoriz,
A.ap_autoriz amac2101c,
B.ap_autoriz cmac2101,
C.pa_autoriz paac2101,
D.pa_autoriz pmac2101
from (
select ap_autoriz autoriz
from bd_sabeis.amac2101c
where left(ap_pripal,1)='6' union
select ap_autoriz
from bd_sabeis.cmac2101
where left(ap_pripal,1)='6' union
select pa_autoriz
from bd_sabeis.paac2101
where left(pa_proc_id,1)='6' union
select pa_autoriz
from bd_sabeis.pmac2101
where left(pa_proc_id,1)='6'
) x
left join bd_sabeis.amac2101c A on x.autoriz = A.ap_autoriz
left join bd_sabeis.cmac2101 B on x.autoriz = B.ap_autoriz
left join bd_sabeis.paac2101 C on x.autoriz = C.pa_autoriz
left join bd_sabeis.pmac2101 D on x.autoriz = D.pa_autoriz
limit 30
| autoriz | amac2101c | cmac2101 | paac2101 | pmac2101 |
|---|---|---|---|---|
| 1220200159354 | 1220200159354 | 1220200159354 | 1220200159354 | nulo |
| 1221200008600 | 1221200008600 | 1221200008600 | 1221200008600 | 1221200008600 |
| 1221200011933 | 1221200011933 | 1221200011933 | 1221200011933 | 1221200011933 |
| 1220200164040 | 1220200164040 | 1220200164040 | 1220200164040 | 1220200164040 |
| 1220200162203 | 1220200162203 | 1220200162203 | 1220200162203 | 1220200162203 |
| 1221200004189 | 1221200004189 | 1221200004189 | 1221200004189 | 1221200004189 |
| 1220200132987 | 1220200132987 | 1220200132987 | 1220200132987 | 1220200132987 |
| 1221200000537 | 1221200000537 | 1221200000537 | 1221200000537 | 1221200000537 |
| 1221200013946 | 1221200013946 | 1221200013946 | 1221200013946 | 1221200013946 |
| 1221200001868 | 1221200001868 | 1221200001868 | 1221200001868 | 1221200001868 |
| 1220200177889 | 1220200177889 | 1220200177889 | 1220200177889 | 1220200177889 |
| 1220200153326 | 1220200153326 | 1220200153326 | 1220200153326 | 1220200153326 |
| 1221200012351 | 1221200012351 | 1221200012351 | 1221200012351 | 1221200012351 |
| 1221200000504 | 1221200000504 | 1221200000504 | 1221200000504 | nulo |
| 1220200172004 | 1220200172004 | 1220200172004 | 1220200172004 | 1220200172004 |
| 1220200165888 | 1220200165888 | 1220200165888 | 1220200165888 | 1220200165888 |
| 1220200167978 | 1220200167978 | 1220200167978 | 1220200167978 | 1220200167978 |
| 1220200173467 | 1220200173467 | 1220200173467 | 1220200173467 | nulo |
| 1221200000031 | 1221200000031 | 1221200000031 | 1221200000031 | 1221200000031 |
| 1220200172323 | 1220200172323 | 1220200172323 | 1220200172323 | nulo |
| 1221200006224 | 1221200006224 | 1221200006224 | 1221200006224 | 1221200006224 |
| 1221200003287 | 1221200003287 | 1221200003287 | 1221200003287 | 1221200003287 |
| 1221200002418 | 1221200002418 | 1221200002418 | 1221200002418 | nulo |
| 1220200162258 | 1220200162258 | 1220200162258 | 1220200162258 | 1220200162258 |
| 1220200171751 | 1220200171751 | 1220200171751 | 1220200171751 | 1220200171751 |
| 1220200176020 | 1220200176020 | 1220200176020 | 1220200176020 | 1220200176020 |
| 1220200138070 | 1220200138070 | 1220200138070 | 1220200138070 | 1220200138070 |
| 1220200165844 | 1220200165844 | 1220200165844 | 1220200165844 | 1220200165844 |
| 1221200008314 | 1221200008314 | 1221200008314 | 1221200008314 | 1221200008314 |
| 1221200013760 | 1221200013760 | 1221200013760 | 1221200013760 | 1221200013760 |
A consulta SQL a seguir mostra a incompletude do arquivo pmac2101
segundo a junção das quatro tabelas pelo código
de autorização contendo apenas procedimento 06.
# SQL
select count(*) autorizações,
sum(amac2101c) as amac2101c,
sum(cmac2101) as cmac2101,
sum(paac2101) as paac2101,
sum(pmac2101) as pmac2101
from (
select distinct autoriz,
case when A.ap_autoriz is not null then 1 else 0 end amac2101c,
case when B.ap_autoriz is not null then 1 else 0 end cmac2101,
case when C.pa_autoriz is not null then 1 else 0 end paac2101,
case when D.pa_autoriz is not null then 1 else 0 end pmac2101
from (
select ap_autoriz autoriz
from bd_sabeis.amac2101c
where left(ap_pripal,1)='6' union
select ap_autoriz
from bd_sabeis.cmac2101
where left(ap_pripal,1)='6' union
select pa_autoriz
from bd_sabeis.paac2101
where left(pa_proc_id,1)='6' union
select pa_autoriz
from bd_sabeis.pmac2101
where left(pa_proc_id,1)='6'
) x
left join bd_sabeis.amac2101c A on x.autoriz = A.ap_autoriz
left join bd_sabeis.cmac2101 B on x.autoriz = B.ap_autoriz
left join bd_sabeis.paac2101 C on x.autoriz = C.pa_autoriz
left join bd_sabeis.pmac2101 D on x.autoriz = D.pa_autoriz
) y
| autorizações | amac2101c | cmac2101 | paac2101 | pmac2101 |
|---|---|---|---|---|
| 3608 | 3608 | 3608 | 3608 | 3134 |
Cada arquivo DBC disponível no FTP é extraído, transformado e carregado na
SABEIS com processos descritos no documento https://rpubs.com/sabeis/etl.
O arquivo DBC incorporado no SGBD siasus_pa_ac.paac2101 contém
50.903 registros,
5.097 autorizações nu_apac,
778 procedimentos co_procedimento com
824.285 de quantidade aprovada qt_aprovada e
4.323 usuários nu_cnspcn.
Ao filtrar procedimentos 06 com quantidade aprovada, o siasus_pa_ac.paac2101 contém
3.422 registros,
3.134 autorizações nu_apac,
106 procedimentos co_procedimento com
142.547 de quantidade aprovada qt_aprovada e
3.023 usuários nu_cnspcn.
No postgreSQL local, contendo os dados completos da apac, foram extraídos
apenas medicamentos cujo código inicia com 06.
# SQL
create table IF NOT EXISTS tm_paac2101 as
select *
from siasus_pa_ac.paac2101 p
where left(co_procedimento::text,1) like '6';
A tabela criada tm_paac2101 contém
4.191 registros,
3.608 autorizações nu_apac,
121 procedimentos co_procedimento com
142.547 de quantidade aprovada qt_aprovada e
3.482 usuários nu_cnspcn.
Ao filtrar procedimentos 06 com quantidade aprovada, o tm_paac2101 contém
3.422 registros,
3.134 autorizações nu_apac,
106 procedimentos co_procedimento com
142.547 de quantidade aprovada qt_aprovada e
3.023 usuários nu_cnspcn.
Demonstração da recuperação do CNS entre PA e AM no tm_paac2101.
-- SQL
alter table tm_paac2101 add nu_cnscpn int8 default 0;
update tm_paac2101 A
set nu_cnscpn = B.nu_cnspcn
from siasus_am_ac.amac2101 B
where A.nu_apac = B.nu_apac ;
-- adiciona o CNS
alter table tm_paac2101 add ap_cnsprfr int8 default 0;
update tm_paac2101 A
set ap_cnsprfr = nullif(trim(B.ap_cnsprfr),'')::int8
from bd_sabeis.amac2101c B
where A.nu_apac = B.ap_autoriz ;
Acrescentou-se atributos para comparação entre tm_paac2101 e cmac2101.
-- SQL
-- adicioa numero de apac
alter table tm_paac2101 add ap_autoriz int8 default 0;
update tm_paac2101 A
set ap_autoriz = pa_autoriz::int8
from bd_sabeis.paac2101 B
where A.nu_apac = B.pa_autoriz ;
-- adiciona o CNS
alter table tm_paac2101 add ap_cnspcn int8 default 0;
update tm_paac2101 A
set ap_cnspcn = nullif(trim(B.ap_cnspcn),'')::int8
from bd_sabeis.cmac2101 B
where A.nu_apac = B.ap_autoriz ;
Acrescentou-se atributo contauser para comparação entre tm_paac2101 e cmac2101.
-- SQL
alter table tm_paac2101 add contauser int2 default 0;
update tm_paac2101 A
set contauser = B.contauser::int2
from bd_sabeis.pmac2101 B
where A.nu_apac = B.pa_autoriz ;
A consulta SQL a seguir mostra a comparação dos valores sabeis e dos arquivos
disponibilizados.
# SQL
select count(distinct nu_apac) "autorizações sabeis",
count(distinct ap_autoriz) "autorizações cmac2101",
count(distinct nu_cnspcn) "usuários sabeis",
count(distinct ap_cnspcn) "usuários cmac2101",
SUM(contauser) "contauser pmac2101"
from tm_paac2101
| autorizações sabeis | autorizações cmac2101 | usuários sabeis | usuários cmac2101 | contauser pmac2101 |
|---|---|---|---|---|
| 3608 | 3608 | 3482 | 3482 | 3112 |
Conjectura 2 - Uma vez que as autorizações estão presentes em ambas as extrações,
devem ser avaliados quais contauser não estão sendo computados.
# SQL
select count(distinct AM.ap_cnspcn) ap_cnspcn,
count(distinct PA.pa_autoriz) pa_autoriz
from bd_sabeis.paac2101 PA
left join bd_Sabeis.amac2101c AM
on PA.pa_autoriz = AM.ap_autoriz
left join bd_Sabeis.pmac2101 PM
on PA.pa_autoriz = PM.pa_autoriz
where PM.contauser = '0'
and AM.ap_cnspcn is not null
and PA.pa_autoriz not in (
select distinct pa_autoriz
from bd_Sabeis.pmac2101
where contauser = '1'
)
and PA.pa_qtdapr::int8 > 0
| ap cnspcn | pa autoriz |
|---|---|
| 123 | 123 |
As autorizações APAC não são mostradas na tabela a seguir:
# SQL
select
PA.pa_gestao,
PA.pa_ufmun,
left(PA.pa_autoriz,6) prefixo,
string_agg(distinct substr(PA.pa_autoriz,7,14), ', ') pa_autoriz,
count(distinct AM.ap_cnspcn) ap_cnspcn
from bd_sabeis.paac2101 PA
left join bd_Sabeis.amac2101c AM
on PA.pa_autoriz = AM.ap_autoriz
left join bd_Sabeis.pmac2101 PM
on PA.pa_autoriz = PM.pa_autoriz
where PM.contauser = '0'
and AM.ap_cnspcn is not null
and PA.pa_autoriz not in (
select distinct pa_autoriz
from bd_Sabeis.pmac2101
where contauser = '1'
)
and PA.pa_qtdapr::int8 > 0
group by 1,2,3
| pa gestao | pa ufmun | prefixo | pa autoriz | ap cnspcn |
|---|---|---|---|---|
| 120000 | 120020 | 122020 | 0160256, 0165965, 0173753, 0173896 | 4 |
| 120000 | 120020 | 122120 | 0002550, 0002583 | 2 |
| 120000 | 120040 | 122020 | 0108171, 0139466, 0147364, 0149498, 0151423, 0153326, 0154085, 0154349, 0154932, 0155482, 0158397, 0158485, 0158584, 0158640, 0159255, 0159739, 0160080, 0160432, 0160619, 0160707, 0160861, 0160993, 0161323, 0161686, 0161720, 0161840, 0161940, 0162093, 0162478, 0162544, 0162566, 0162599, 0163545, 0164073, 0164095, 0164205, 0164898, 0165206, 0165338, 0165591, 0166086, 0166911, 0167010, 0167879, 0168110, 0170343, 0170508, 0170651, 0170750, 0171476, 0172610, 0174479, 0174545, 0174754, 0175172, 0175238, 0175546, 0175601, 0176415, 0176613, 0176734, 0176756, 0177174, 0177482, 0178032, 0178351 | 66 |
| 120000 | 120040 | 122120 | 0000163, 0000713, 0001021, 0001472, 0001604, 0002231, 0002594, 0002803, 0003595, 0003749, 0003958, 0004090, 0004475, 0004827, 0005399, 0005674, 0005696, 0005883, 0006906, 0006928, 0006940, 0007302, 0007490, 0007577, 0008006, 0008149, 0008314, 0008590, 0008952, 0009084, 0009128, 0009282, 0009722, 0011020, 0011207, 0011295, 0011977, 0012032, 0012967, 0013231, 0013363, 0013396, 0013495, 0013627, 0013781, 0015057, 0015068, 0015145, 0015156, 0015376, 0017224 | 51 |
Salienta-se que, ao mês, não é suficiente contar o número de autorizações pois o mesmo usuário pode ter mais de uma autorização para mais de um procedimento com e sem quantidade aprovada.
# SQL
select dense_rank() OVER (ORDER BY ap_cnspcn) AS nu_usuario,
pa_autoriz,
pa_proc_id
from (
select AM.ap_cnspcn,
PA.pa_autoriz,
string_agg(distinct PA.pa_proc_id || ' (' || PA.pa_qtdapr || ')',', ') pa_proc_id
from bd_sabeis.paac2101 PA
left join bd_Sabeis.amac2101c AM
on PA.pa_autoriz = AM.ap_autoriz
where AM.ap_cnspcn in (
select ap_cnspcn
from bd_Sabeis.amac2101c AM
group by 1 having count(distinct ap_autoriz)>1
) group by 1,2
) x
| nu usuario | pa autoriz | pa proc id |
|---|---|---|
| 1 | 1221200007577 | 604320078 (0), 604340060 (120), 604340079 (0) |
| 1 | 1221200007588 | 604460023 (30) |
| 2 | 1220200161917 | 604460023 (30), 604460058 (0) |
| 2 | 1220200161940 | 604320078 (0), 604340060 (120), 604340079 (0) |
| 3 | 1220200166581 | 604460023 (30) |
| 3 | 1220200166592 | 604690010 (6) |
| 4 | 1220200147287 | 604320078 (0), 604340060 (120) |
| 4 | 1220200147298 | 604460023 (30) |
| 5 | 1221200001340 | 604040040 (60) |
| 5 | 1221200010756 | 604690010 (6) |
| 6 | 1221200002540 | 604460023 (30) |
| 6 | 1221200002550 | 604340060 (240), 604340079 (0) |
| 7 | 1220200155273 | 604230010 (30), 604230028 (30) |
| 7 | 1221200016069 | 604470045 (13) |
| 8 | 1220200176800 | 604470045 (0) |
| 8 | 1221200015630 | 604320019 (0), 604320027 (0) |
| 9 | 1221200015728 | 604690010 (7) |
| 9 | 1221200015739 | 604360029 (30) |
| 10 | 1220200154173 | 604460023 (30) |
| 10 | 1220200154195 | 604530013 (30) |
| 11 | 1220200164293 | 604530013 (30) |
| 11 | 1221200005509 | 604360029 (30) |
| 12 | 1220200167175 | 604320159 (60) |
| 12 | 1220200172037 | 604360029 (30) |
| 13 | 1221200007434 | 604610017 (0) |
| 13 | 1221200015376 | 604610017 (30) |
| 14 | 1220200165052 | 604610017 (2) |
| 14 | 1220200165063 | 604100019 (2) |
| 15 | 1220200170651 | 604340060 (180), 604340079 (0) |
| 15 | 1221200008644 | 604460023 (60) |
Conjectura 3 - Observando as APAC com mais de um registro de autorização,
verificou-se que cada registro é respectivo a um procedimento.
Logo a formação do arquivo `PM`, isto é, `PA` + `ap_cnspcn` deve ocorrer juntado
o número do usuário, uma vez que a marcação 0 ou 1 pode não corresponder a
apac SOMENTE, mas ao procedimento também (se agregado por procedimento).
Como retornar uma proxy de quantitativo de usuário para a APAC sem possibiliar
a identificação do mesmo ou gerar um arquivo derivado do PA com a mesma premissa?
Em outras palavras, como fazer uma soma numa coluna de
marcação do tipo flag com domínio \(D=\{0,1\}\)
no tabnet se o usuário pode apresentar mais de um procedimento?
Vamos separar a solução em duas partes: usuários ao mês e usuários ao ano.
O quantitativo de usuários ao mês é o número de autorizações distintas para
dado procedimento. Ou seja, se o usuário for obrigado a escolher um procedimento,
a frequência simples dos distintos de pa_autoriz para cada pa_proc_id será
correspondente ao número de usuários, desde que sejam excluídas APAC com
quantidade aprovada = 0, uma vez que outra APAC pode ser gerada para o mesmo
usuário. Por exemplo, um dado usuário apresentou duas APAC 1221200007434
e 1221200015376 para o procedimento 604610017, porém, a primeira não
apresentou quantidade aprovada, enquanto a segunda 30. O mesmo ocorreu também
nas autorizações 1220200153656 e 1221200012791, ambas para 604380046,
porém, a primeira zerada e a segunda com 3 quantidades aprovadas.
Observe o usuário 13 somado duas vezes abaixo:
| nu usuario | pa autoriz | pa proc id | pa qtdapr | contauser |
|---|---|---|---|---|
| 1 | 1221200007577 | 604340060 | 120 | 1 |
| 1 | 1221200007588 | 604460023 | 30 | 0 |
| 2 | 1220200161940 | 604340060 | 120 | 1 |
| 2 | 1220200161917 | 604460023 | 30 | 0 |
| 3 | 1220200166581 | 604460023 | 30 | 1 |
| 3 | 1220200166592 | 604690010 | 6 | 0 |
| 4 | 1220200147287 | 604340060 | 120 | 1 |
| 4 | 1220200147298 | 604460023 | 30 | 0 |
| 5 | 1221200001340 | 604040040 | 60 | 1 |
| 5 | 1221200010756 | 604690010 | 6 | 0 |
| 6 | 1221200002550 | 604340060 | 240 | 1 |
| 6 | 1221200002540 | 604460023 | 30 | 0 |
| 7 | 1220200155273 | 604230010 | 30 | 1 |
| 7 | 1220200155273 | 604230028 | 30 | 0 |
| 7 | 1221200016069 | 604470045 | 13 | 0 |
| 8 | 1221200015739 | 604360029 | 30 | 1 |
| 8 | 1221200015728 | 604690010 | 7 | 0 |
| 9 | 1220200154173 | 604460023 | 30 | 1 |
| 9 | 1220200154195 | 604530013 | 30 | 0 |
| 10 | 1221200005509 | 604360029 | 30 | 1 |
| 10 | 1220200164293 | 604530013 | 30 | 0 |
| 11 | 1220200167175 | 604320159 | 60 | 1 |
| 11 | 1220200172037 | 604360029 | 30 | 0 |
| 12 | 1221200015376 | 604610017 | 30 | 1 |
| 13 | 1220200165063 | 604100019 | 2 | 1 |
| 13 | 1220200165052 | 604610017 | 2 | 0 |
| 14 | 1220200170651 | 604340060 | 180 | 1 |
| 14 | 1221200008644 | 604460023 | 60 | 0 |
| 15 | 1221200004300 | 604380089 | 1 | 1 |
| 15 | 1220200165635 | 604460023 | 30 | 0 |
Portanto, o arquivo gerado da PA deve obrigatoriamente apresentar
$ qtdapr <> 0 autoriz <> 0$.