03/06/18 06:50:54 D:\Corso FITSTIC\Lezione 8 - PL-SQL, Procedure e Funzioni 07-03-2018\RAFFRONTA_XMPI_ASSANA.prc

Attenzione!

Questa è una copia HTML (utilizzabile a soli fini di visualizzazione nel browser)
della procedura PL/SQL RAFFRONTA_XMPI_ASSANA con sintassi color-highlighted per
facilitare la lettura. Naturalmente, il file con la versione PL/SQL della procedura
NON è questo... - Questa versione HTML serve solo per visualizzare
le complesse sintassi della procedura cosí come apparirebbero in SUBLIME TEXT.
In particolare, le linee di commento sono visualizzate IN ROSSO

    1 
CREATE OR REPLACE procedure ADTWEBTEST.RAFFRONTA_XMPI_ASSANA is
    2 
/******************************************************************************
    3 
   NOME:       RAFFRONTA_XMPI_ASSANA
    4 
 
    5 
   OBIETTIVO:  Inserire una riga di log in tabella CODA_ALLINEAMENTO_PAZIENTI
    6 
               secondo analisi "Allineamento_XMPI-MDB Ver 1.0.doc".
    7 
               ==> In caso di INSERIMENTO, popolo TUTTI i campi.
    8 
               ==> In caso di MODIFICA, popolo TUTTI i campi
    9 
               ==> Da definire il seguente comportamento: COSA SUCCEDE SE
   10 
                   il campo "nuovo" e NULL e il campo "vecchio" e NOT NULL?
   11 
                   Verrebbe da pensare che il web service interpretera la
   12 
                   "nullita" del campo come "NON AGGIORNARE QUESTO CAMPO".
   13 
                   Comunque, da un primo esame, pare che il problema sia
   14 
                   davvero marginale.
   15 
 
   16 
Il sorgente della presente procedura va esaminato con alla mano i documenti
   17 
di analisi e di preventivazione tempi:
   18 
A) Allineamento_XMPI-MDB Ver 1.0.doc
   19 
B) TEMPI_REALIZZAZIONE_Allineamento_XMPI-MDB Ver 1.0.doc
   20 
 
   21 
======================================================
   22 
 ATTENZIONE! LE DICITURE -- RIMUOVIAREA > INDICANO RIGHE
   23 
 COMMENTATE PER CONSENTIRE LA COMPILAZIONE IN SEDE ESEL
   24 
 QUESTI COMMENTI VANNO RIMOSSI PRIMA DELLA ESECUZIONE
   25 
 ALL'OSPEDALE MAGGIORE
   26 
=====================================================
   27 
 
   28 
Righe per test di esecuzione:
   29 
 
   30 
 BEGIN
   31 
   RAFFRONTA_XMPI_ASSANA;
   32 
  COMMIT;
   33 
 END;
   34 
 
   35 
   REVISIONI:
   36 
   Ver        Data        Autore           Descrizione
   37 
   ---------  ----------  ---------------  ------------------------------------
   38 
   1.0        10/10/2007  Cesare Brizio    1. Creata questa procedure.
   39 
   1.0        17/10/2007  Cesare Brizio    2. Completato precollaudo interno.
   40 
   1.0        18/10/2007  Cesare Brizio    3. Rifinita per collaudo esterno.
   41 
   2.0        23/10/2007  Cesare Brizio    4. Modifiche su collaudo esterno: nomi
   42 
                                              campi verificati (DT_SCAD_TES con una s sola).
   43 
   2.1        24/10/2007  Cesare Brizio    5. Su base esisti test preliminare, modificato
   44 
                                              controllo esistenza PZ_CODICE_OLD e inserita
   45 
                                              conta progressiva riga loop in messaggi log.
   46 
   2.2        24/10/2007  Cesare Brizio    6. Aggiunta porzione di codice tra i due loop
   47 
                                              per eliminare richieste di update non significative.
   48 
   2.3        30/10/2007  Cesare Brizio    7. Eliminata riga di debug dopo prima esecuzione regolare in ambiente produzione
   49 
   2.4      Fine 04/2008  Cesare Brizio    8. Caccia agli DATASET MINIMO migliorata con uso LTRIM/RTRIM (riga 270)   
   50 
                                              Esempio: COGNOME_ASSANA := ltrim(rtrim(r_s_ASSANA_C2.pz_cogn));
   51 
                                              L'eventuale PZ_CODICE_OLD non piu esistente *NON* viene piu annullato
   52 
                                              Migliorata caccia all'update da eliminare, aggiunta caccia all'insert da eliminare
   53 
   2.5        12/09/2008  Cesare Brizio    9. Rilettura pre-esecuzione ciclo allineamento Settembre 2008.
   54 
   2.6        17/09/2008  Cesare Brizio   10. Adattata a tabella ASSANA170908_TBL anziche vista ASSANA.
   55 
   2.7        17/09/2008  Cesare Brizio   11. Eliminate update su sa_paziente, sostituite da parcheggio di stringa
   56 
                                              di update in apposita tabella.     
   57 
 
   58 
Elenco dei controlli di accettabilita dei dati rilevati da ASSANA:
   59 
1.  viene ricercata la asl sulla base del comune di residenza.
   60 
2.  se asl appartenenza nulla, si sostituisce con asl comune residenza (se presente)
   61 
3.  se asl assistenza nulla, si sostituisce con asl di appartenenza (se non nulla)
   62 
    o asl comune di residenza (se non nulla)
   63 
4.  i record con asl nulla vengono comunque acquisiti
   64 
5.  i record con asl non decodificante vengono comunque rifiutati
   65 
6.  rilevare ASL APPARTENENZA NULLA O NON DECODIFICANTE da ASL COMUNE RESIDENZA
   66 
7.  rilevare ASL ASSISTENZA NULLA O NON DECODIFICANTE da ASL COMUNE DOMICILIO
   67 
8.  se coloro che sono senza ASL, e non hanno altri errori, hanno un codice STP,
   68 
    allora gli metto ASL ASSISTENZA e ASL APPARTENENZA = asl bologna
   69 
9.  non scarto quelli che sono senza medico di base (a meno di altre anomalie)
   70 
10. test su congruenza REGIONE: la regione 999 e sostituite d'ufficio con 500,
   71 
    quelle non decodificanti residue sono causa di scarto del record
   72 
11. la cittadinanza nulla viene sostituita con 100. La cittadinanza non
   73 
    decodificante e causa di scarto del record
   74 
 
   75 
I record ASSANA scartati sono considerati non idonei al riallineamento, e
   76 
sono conteggiati a parte.
   77 
 
   78 
------------------------------------------------
   79 
------------------------------------------------
   80 
MAPPA DELLA STRUTTURA GENERALE
   81 
------------------------------------------------
   82 
------------------------------------------------
   83 
Ho inserito dei numeri riga per velocizzare
   84 
l'esplorazione del codice sorgente.
   85 
Ricercando il numero riga preceduto da '-- '
   86 
si trova il punto di procedura.
   87 
------------------------------------------------
   88 
------------------------------------------------
   89 
DICHIARAZIONI VARIABILI
   90 
DICHIARAZIONI CURSORI
   91 
DICHIARAZIONI RECORDSET
   92 
000 BEGIN
   93 
    -------
   94 
    LOOP C1
   95 
    -------
   96 
 10 open C_SA_PAZIENTE_C1;
   97 
    loop
   98 
 20     BEGIN
   99 
 30         Leggo un record di SA_PAZIENTE che ha riscontro in ASSANA
  100 
            Se il codice PZ_CODICE_OLD non ha riscontro in assana
  101 
                messaggio di errore
  102 
            altrimenti, se record ASSANA esiste davvero
  103 
 40             RILEVO I DATI DAL RECORD ASSANA ASSOCIATO AL RECORD SA_PAZIENTE,
  104 
                TRA CUI LA DATA ULTIMO AGGIORNAMENTO DEL RECORD
  105 
 60             Se ULTIMO_AGG_ASSANA <= ULTIMO AGGIORNAMENTO XMPI, allora ...
  106 
 70                 CASO C1B - INCREMENTO DELL'APPOSITO CONTEGGIO
  107 
 80             altrimenti
  108 
 90                 CASO C1A - CONTROLLI PRELIMINARI
  109 
100                 Se controlli NON passati 
  110 
110                     incrementa conteggio record ASSANA non idonei a allineamento
  111 
120                 altrimenti
  112 
130                     CASO C1A - INSERISCI IN CODA ALLINEAMENTO UNA RICHIESTA AGGIORNAMENTO
  113 
140                 End if;
  114 
150             End If;
  115 
            End If;
  116 
160         TRATTAMENTO ECCEZIONI ORACLE
  117 
170     END;
  118 
 
  119 
180 end loop;
  120 
    close C_SA_PAZIENTE_C1;
  121 
 
  122 
Elimino update ininfluenti
  123 
 
  124 
    -------
  125 
    LOOP C2
  126 
    -------
  127 
200 open C_ASSANA_C2;
  128 
    loop
  129 
210     BEGIN
  130 
220         leggo un record di ASSANA che non ha riscontro in XMPI                
  131 
230         CASI C2 - CONTROLLI PRELIMINARI
  132 
240         Se controlli NON passati 
  133 
250             incrementa conteggio record ASSANA non idonei a allineamento
  134 
260         altrimenti
  135 
270             RILEVO I DATI ASSANA PER RICERCA SU SA_PAZIENTE BASATA SU DATASET MINIMO
  136 
280             RILEVO QUANTI RECORD SA_PAZIENTE CORRISPONDONO AL RECORD ASSANA CORRENTE SULLA BASE DEL CRITERIO DI ALIAS
  137 
290             SE NE TROVO ZERO
  138 
300                 CASO C2A - ACCODO RICHIESTA DI INSERT IN CODA ALLINEAMENTO
  139 
310             SE NE TROVO UNO
  140 
320                 CASO C2B - SINGOLA CORRISPONDENZA
  141 
330                 RILEVO I DATI DAL RECORD SA_PAZIENTE ASSOCIATO AL RECORD ASSANA,
  142 
                    TRA CUI LA DATA ULTIMO AGGIORNAMENTO DEL RECORD
  143 
340                 Se ULTIMO_AGG_ASSANA > ULTIMO AGGIORNAMENTO XMPI, allora ...
  144 
350                     CASO C2B1 - ACCODO RICHIESTA DI UPDATE IN CODA ALLINEAMENTO E UPDATE IMMEDIATO DI PZ_CODICE_OLD
  145 
360                 altrimenti
  146 
370                     CASO C2B2 - INCREMENTO DELL'APPOSITO CONTEGGIO E UPDATE IMMEDIATO DI PZ_CODICE_OLD
  147 
380                 end if; 
  148 
390             SE NE TROVO PIU' DI UNO    
  149 
400                 AGGIORNO IL CAMPO PZ_CODICE_OLD IN TUTTI I RECORD SA_PAZIENTE CHE CORRISPONDONO AL RECORD ASSANA CORRENTE
  150 
410                 PARCHEGGIO TUTTI I CANDIDATI IN APPOSITA TABELLA TEMPORANEA
  151 
                    --=======================
  152 
                    -- CACCIA AL MERGE
  153 
                    --=======================
  154 
420                 LOOP dal quale esco quando non restano record in tabella temporanea
  155 
                        -- Parto dal primo record per il quale NON ho determinato
  156 
                        -- la casistica
  157 
430                     Leggo da tabella temporanea "IL RECORD CORRENTE"
  158 
                        se non ce ne sono piu', esco.
  159 
440                     chiudo tabella temporanea
  160 
450                     Rilevo se esistono altri record identici CAMPO PER CAMPO a "RECORD CORRENTE"
  161 
460                     Se ce ne e almeno uno:
  162 
470                         -- ==============================================
  163 
                            -- CASO C2C1 - ACCODERO' RICHIESTA DI MERGE
  164 
                            --             IN CODA ALLINEAMENTO: INTANTO
  165 
                            --             PREDISPONGO TEMP_PARK_SA_PAZIENTE
  166 
                            -- ==============================================
  167 
                            Marco in tabella temporanea i record candidati alla MERGE 
  168 
490                         -- ===============================================
  169 
                            -- CASO C2C1 - ACCODO A CODA ALLINEAMENTO I
  170 
                            --             RECORD PER CUI EFFETTUARE IL MERGE.
  171 
                            -- ===============================================
  172 
                            --==> Annuncio di avere regolarmente svolto l'inserimento in coda di allineamento
  173 
                            --==> Incremento contatore richieste merge
  174 
500                         -- ===============================================
  175 
                            -- CASO C2C1 - ELIMINO DA TABELLA TEMPORANEA TUTTI
  176 
                            --             I RECORD ACCODATI.
  177 
                                                    
  178 
505                     end if;
  179 
506                     -- ==============================================
  180 
                        -- MARCO il record corrente COME "TRATTATO"
  181 
                        -- il che lo esclude dal loop di caccia al merge
  182 
                        -- ==============================================
  183 
 
  184 
                        --> =============================================
  185 
                        --> In C_CONTA_PARK_SAPAZ, inizialmente popolata
  186 
                        --> con almeno due record, e rimasto un solo record??
  187 
                        --> Si tratta del residuo di una MERGE, da eliminare.
  188 
                        -- ==============================================
  189 
                        Se ne e rimasto solo uno:
  190 
                            -- ==============================================
  191 
                            -- L'unico record residuo della MERGE ha esaurito
  192 
                            -- la sua funzione: posso eliminarlo
  193 
                            -- ==============================================
  194 
515                         Elimino record   
  195 
                            COMMIT;   
  196 
                        End if;   
  197 
                        -- ==============================================
  198 
                        -- PASSO AD ALTRI RECORD (SE RIMASTI) - al limite
  199 
                        -- esco dal loop - devo vedere se fare altri merge.
  200 
                        -- ==============================================
  201 
516                 end loop;
  202 
                   
  203 
                      
  204 
                    -- Arrivo qui anche se di merge non c'e traccia,                          
  205 
                    -- oppure arrivo qui dopo avere trattato
  206 
                    -- (se mai ne esistono) i casi per cui c'e da proporre
  207 
                    -- una MERGE.
  208 
                    -- Quello che EVENTUALMENTE resta in TEMP_PARK_SA_PAZIENTE
  209 
                    -- e da sottoporre ad un'analisi per cercare gli ALIAS.
  210 
                    -- Non puo essere che ci sia UN solo record. Un record
  211 
                    -- isolato si crea solo in caso di MERGE, ed in tal caso
  212 
                    -- e stato eliminato nel loop che precede.
  213 
                       
  214 
518                 Quanti record sono rimasti in tabella temporanea?
  215 
                            
  216 
520                 Se ne e rimasto piu di uno
  217 
                        -- ==============================================
  218 
                        -- Cio che resta e identico sulla base del
  219 
                        -- criterio di alias. Devo inserire.
  220 
                        -- VERIFICHIAMO CHE NON SIANO GIA' IN SI_ALIAS
  221 
                        -- SE NON SONO IN SI_ALIAS, CE LI DEVO METTERE IO
  222 
                        -- ==============================================
  223 
                           
  224 
530                     LOOP
  225 
540                         apro tabella temporanea, prendo primo record rimasto e non trattato (record corrente)
  226 
                            se non trovo piu record esco dal loop
  227 
550                         chiudo tabella temporanea
  228 
560                         conto se esistono record SI_ALIAS relativi a RECORD CORRENTE 
  229 
570                         se ne esistono    
  230 
580                             elimino rercord corrente da tabella temporanea
  231 
590                            End if;
  232 
600                     END LOOP;
  233 
                           
  234 
                        --> =============================================
  235 
                        --> Dopo che ho eliminato le richieste di alias
  236 
                        --> gia presenti in SI_ALIAS, in C_CONTA_PARK_SAPAZ
  237 
                        --> sono rimasti record???
  238 
                        --> In caso affermativo, si tratta di record
  239 
                        --> identici tra loro almeno al livello dei campi
  240 
                        --> del criterio di alias, non presenti in SI_ALIAS.
  241 
                        --> *>DEVO INTRODURLI IO IN SI_ALIAS<*
  242 
                        --> =============================================
  243 
610                     conto quanti record sono rimasti
  244 
620                     Se ne sono rimasti                            
  245 
                            -- ==============================================
  246 
                            -- CASO C2C2 - INSERT IMMEDIATO DI PROPOSTE
  247 
                            --             DI ALIASING IN SPECIFICHE TABELLE
  248 
                            -- ==============================================
  249 
630                         --> rilevo il record SA_PAZIENTE piu vecchio che fungera da MASTER
  250 
640                         --> Insert in SI_ALIAS del master
  251 
650                         --> Insert in SI_ALIAS degli alias
  252 
                            COMMIT; 
  253 
660                         --==> Incremento contatore richieste merge
  254 
670                     end if;
  255 
680                 end if;
  256 
                    --==> Arrivo qui sotto quando ho finito
  257 
                    --==> l'esame di tutti i candidati inizialmente
  258 
                    --==> posizionati in TEMP_PARK_SA_PAZIENTE sulla base
  259 
                    --==> di corrispondenza con record C_ASSANA_C2 corrente
  260 
700             end if;    
  261 
                -->> ENDIF DEL CONTEGGIO DI CONTA_SAPAZ
  262 
           
  263 
                commit;
  264 
               
  265 
710         end if;
  266 
            Elimino insert ininfluenti
  267 
720         TRATTAMENTO ECCEZIONI ORACLE                                          
  268 
730     END;  
  269 
740 END LOOP;
  270 
750 Ricavo conteggio caso C2D (record in condizione di master + alias residuati in SA_PAZIENTE
  271 
    ESIBISCO COMPENDIO RISULTATI
  272 
    - COMPENDIO DELLE CASISTICHE DA CONTEGGIARE
  273 
    - COMPENDIO DELLE DIVERSE TIPOLOGIE DI ERRORE RISCONTRATE              
  274 
999 end;
  275 
*****************************************************************************/
  276 
CONTA_RECORD_LOOP1 number;
  277 
CONTA_RECORD_LOOP2 number;
  278 
STRINGA_SQL VARCHAR2(2000);
  279 
CODICE_ASSANA_CORRENTE varchar2(16);
  280 
CODICE_OLD_DA_USARE varchar2(16);
  281 
ULTIMO_AGG_ASSANA DATE;
  282 
ULTIMO_AGG_SAPAZ DATE;
  283 
COGNOME_ASSANA VARCHAR2(40);
  284 
NOME_ASSANA VARCHAR2(40);
  285 
SESSO_ASSANA varchar2(1);
  286 
COMNAS_ASSANA varchar2(11);
  287 
DTNAS_ASSANA DATE;
  288 
CFIS_ASSANA varchar2(16);
  289 
CONTA_SAPAZ NUMBER;
  290 
CONTA NUMBER;
  291 
CONTA2 NUMBER; -- a scanso di equivoci!!
  292 
CONTA_ALIAS_GIA_ESISTENTI NUMBER;
  293 
trovato boolean;
  294 
msg varchar2(500);
  295 
park_citt varchar2(11);
  296 
CODAZIENDAAPP varchar2(11);
  297 
CODAZIENDAASS varchar2(11);
  298 
AZIENDACOMUNERES varchar2(11);
  299 
AZIENDACOMUNEDOM varchar2(11);
  300 
CODMEDICO varchar2(16);
  301 
FETCHMEDICO varchar2(16);
  302 
FETCHAZIENDA varchar2(11);
  303 
FETCHREGIONE varchar2(3);
  304 
ALTROFETCHAZIENDA varchar2(11);
  305 
FETCHCITTAD varchar2(11);
  306 
CODCOMUNE varchar2(11);
  307 
FETCHCOMUNE varchar2(11);
  308 
RECORD_OK varchar2(1);
  309 
Contarighe_L1 number :=0;
  310 
Contarighe_L2 number :=0;
  311 
STEP varchar2(200);
  312 
ROW_ID ROWID;
  313 
COMUNERESOK BOOLEAN;
  314 
COMUNEDOMOK BOOLEAN;
  315 
DASCARTARE BOOLEAN;
  316 
CODREGIONE VARCHAR2(3);
  317 
CODREGIONERES VARCHAR2(3);
  318 
CODREGIONEASS VARCHAR2(3);
  319 
CONTAMERGE NUMBER;
  320 
CONTA_RICHIESTE_MERGE NUMBER := 0;
  321 
V_PKT_PZ_ID VARCHAR2(16);
  322 
V_PKT_PZ_COGN VARCHAR2(40);
  323 
V_PKT_PZ_NOME VARCHAR2(40);
  324 
V_PKT_PZ_DT_NAS DATE;
  325 
V_PKT_PZ_SESSO VARCHAR2(1);
  326 
V_PKT_PZ_COM_NAS VARCHAR2(11);
  327 
V_PKT_PZ_CFIS VARCHAR2(16);
  328 
V_PKT_PZ_COM_RES VARCHAR2(11);
  329 
V_PKT_PZ_CAP_RES VARCHAR2(5);
  330 
V_PKT_PZ_IND_RES VARCHAR2(140);
  331 
V_PKT_PZ_TEL1 VARCHAR2(18);
  332 
V_PKT_PZ_TEL2 VARCHAR2(18);
  333 
V_PKT_PZ_TSAN VARCHAR2(16);
  334 
V_PKT_PZ_ASL_APP VARCHAR2(11);
  335 
V_PKT_PZ_ASL_ASS VARCHAR2(11);
  336 
V_PKT_PZ_REG_ASSI VARCHAR2(11);
  337 
V_PKT_PZ_DSCADSTP DATE;
  338 
V_PKT_PZ_DRILSTP DATE;
  339 
V_PKT_PZ_DSCADTESS DATE;
  340 
V_PKT_PZ_CITT VARCHAR2(11);
  341 
V_PKT_PZ_COM_DOM VARCHAR2(11);
  342 
V_PKT_PZ_CAP_DOM VARCHAR2(5);
  343 
V_PKT_PZ_IND_DOM VARCHAR2(140);
  344 
V_PKT_PZ_CODICE_OLD VARCHAR2(16);
  345 
V_PKT_PZ_STP VARCHAR2(16);
  346 
V_PKT_PZ_REG_RES VARCHAR2(11);
  347 
V_PKT_PZ_MEDICO VARCHAR2(16);
  348 
V_PKT_PZ_DT_MEDICO DATE;
  349 
V_PKT_PZ_CIRCOSCRIZIONE VARCHAR2(11);
  350 
V_PKT_PZ_ZONA_SUBC VARCHAR2(8);
  351 
V_PKT_PZ_QUARTIERE VARCHAR2(8);
  352 
V_PKT_PZ_DATA_ULT_AGG DATE;
  353 
pizetaidi VARCHAR2(16);
  354 
CASISTICA_DA_CONTEGGIARE VARCHAR2(5);
  355 
--=============================================================
  356 
-- VARIABILI PER IL CONTEGGIO DI CASI SPECIFICI
  357 
--=============================================================
  358 
CONTA_C1A NUMBER := 0; -- Conteggio del numero di casi C1A
  359 
CONTA_C1B NUMBER := 0; -- Conteggio del numero di casi C1B
  360 
CONTA_C2A NUMBER := 0; -- Conteggio del numero di casi C2A
  361 
CONTA_C2B1 NUMBER := 0; -- Conteggio del numero di casi C2B1
  362 
CONTA_C2B2 NUMBER := 0; -- Conteggio del numero di casi C2B2
  363 
CONTA_C2C1 NUMBER := 0; -- Conteggio del numero di casi C2C1
  364 
CONTA_C2C2 NUMBER := 0; -- Conteggio del numero di casi C2C2
  365 
CONTA_C2D NUMBER := 0; -- Conteggio del numero di casi C2D
  366 
CONTA_MASTER_INSERITI NUMBER := 0; -- Conteggio del numero di master inseriti in si_alias
  367 
CONTA_ALIAS_INSERITI NUMBER := 0; -- Conteggio del numero di alias inseriti in si_alias
  368 
CONTAREC_ASSANA NUMBER := 0; -- Conteggio del numero di records in ASSANA
  369 
CONTAREC_SAPAZ NUMBER := 0; -- Conteggio del numero di records in SA_PAZIENTE
  370 
CONTA_UPD_ELIMINABILI  NUMBER := 0; -- Conteggio del numero di records che saranno cancellati da coda allineamento
  371 
CONTA_INS_ELIMINABILI  NUMBER := 0; -- Conteggio del numero di records che saranno cancellati da coda allineamento
  372 
--=============================================================
  373 
-- VARIABILI PER IL CONTEGGIO TIPIZZATO DEGLI ERRORI
  374 
--=============================================================
  375 
ERR333 NUMBER := 0; --RECORD ASSANA NON IDONEO A RIALLINEAMENTO!!
  376 
ERR334 NUMBER := 0; --PZ_CODICE_OLD DI SA_PAZIENTE NON RINTRACCIATO IN ASSANA
  377 
ERR660 NUMBER := 0; --RINTRACCIATO ALIAS IN ANAGRAFE
  378 
ERR661 NUMBER := 0; --FORZATA A 100 LA CITTADINANZA VUOTA
  379 
ERR662 NUMBER := 0; --CODICE ASL DI APPARTENENZA INESISTENTE
  380 
ERR663 NUMBER := 0; --CODICE ASL DI ASSISTENZA INESISTENTE
  381 
ERR664 NUMBER := 0; --COMUNE DI NASCITA NULLO
  382 
ERR665 NUMBER := 0; --CODICE COMUNE DI NASCITA INESISTENTE
  383 
ERR666 NUMBER := 0; --CODICE COMUNE DI RESIDENZA NULLO
  384 
ERR667 NUMBER := 0; --CODICE COMUNE DI RESIDENZA INESISTENTE
  385 
ERR668 NUMBER := 0; --COGNOME NULLO
  386 
ERR669 NUMBER := 0; --NOME NULLO
  387 
ERR670 NUMBER := 0; --DATA NASCITA NULLA
  388 
ERR671 NUMBER := 0; --SESSO NULLO
  389 
ERR672 NUMBER := 0; --CODICE FISCALE NULLO
  390 
ERR673 NUMBER := 0; --IL PAZIENTE NON HA UN MEDICO ASSOCIATO
  391 
ERR674 NUMBER := 0; --MEDICO ASSOCIATO INESISTENTE
  392 
ERR675 NUMBER := 0; --CITTADINANZA INESISTENTE
  393 
ERR676 NUMBER := 0; --SOSTITUITA ASL DI APPARTENENZA NULLA CON ASL COMUNE
  394 
ERR677 NUMBER := 0; --SOSTITUITA ASL DI ASSISTENZA NULLA CON ASL APPARTENENZA O ASL COMUNE
  395 
ERR678 NUMBER := 0; --CODICE COMUNE RESIDENZA ESISTENTE, MA SENZA ASL ASSOCIATA
  396 
ERR679 NUMBER := 0; --ASL DI APPARTENENZA NULLA E IMPOSSIBILE DA SOSTITUIRE
  397 
ERR680 NUMBER := 0; --ASL DI ASSISTENZA NULLA E IMPOSSIBILE DA SOSTITUIRE
  398 
ERR681 NUMBER := 0; --CODICE COMUNE DI DOMICILIO NULLO
  399 
ERR682 NUMBER := 0; --CODICE COMUNE DI DOMICILIO INESISTENTE
  400 
ERR683 NUMBER := 0; --CODICE COMUNE DOMICILIO ESISTENTE, MA SENZA ASL ASSOCIATA
  401 
ERR684 NUMBER := 0; --CODICE ASL APPARTENZA ASSENTE, MA CODICE STP NON NULLO - INSERITA ASL APPARTENZA 080105
  402 
ERR685 NUMBER := 0; --CODICE ASL ASSISTENZA ASSENTE, MA CODICE STP NON NULLO - INSERITA ASL ASSISTENZA 080105
  403 
 
  404 
ERR686 NUMBER := 0; --CODICE REGIONE RESIDENZA 999 SOSTITUITO CON CODICE REGIONE 500
  405 
ERR687 NUMBER := 0; --CODICE REGIONE ASSISTENZA 999 SOSTITUITO CON CODICE REGIONE 500
  406 
ERR688 NUMBER := 0; --CODICE REGIONE RESIDENZA INESISTENTE - RECORD SCARTAO
  407 
ERR689 NUMBER := 0; --CODICE REGIONE ASSISTENZA INESISTENTE - RECORD SCARTATO
  408 
 
  409 
ERR690 NUMBER := 0; --INSERITA SCELTA MEDICO DI BASE
  410 
 
  411 
ERR699 NUMBER := 0; --ECCEZIONE ORACLE
  412 
 
  413 
--======================================================
  414 
-- CURSORE SU ASSANA per COLLEZIONE DATI LOOP C1
  415 
--======================================================
  416 
cursor C_ASSANA_C1 is
  417 
select PZ_COGN,PZ_NOME,PZ_DT_NAS,PZ_SESSO,PZ_COM_NAS,PZ_CFIS,PZ_COM_RES,PZ_CAP_RES,PZ_IND_RES,PZ_TEL1,PZ_TEL2,PZ_TSAN,PZ_ASL_APP,PZ_ASL_ASS,PZ_REG_ASSI,PZ_DSCADSTP,PZ_DRILSTP,PZ_DSCADTES,PZ_CITT,PZ_COM_DOM,PZ_CAP_DOM,PZ_IND_DOM,PZ_CODICE_OLD,PZ_STP,PZ_REG_RES,PZ_MEDICO,PZ_DT_MEDICO,PZ_CIRCOSCRIZIONE,PZ_ZONA_SUBC,PZ_QUARTIERE,PZ_DATA_ULT_AGG
  418 
from ASSANA091208_TBL where PZ_CODICE_OLD = CODICE_ASSANA_CORRENTE;
  419 
 
  420 
--======================================================
  421 
-- CURSORE SU SA_PAZIENTE per CONTEGGIO RECORD LOOP C1
  422 
--======================================================
  423 
cursor C_CONTA_SA_PAZIENTE_C1 is
  424 
select count(*)
  425 
from SA_PAZIENTE where
  426 
-- la seguente per test
  427 
-- SA_PAZIENTE.pz_cogn like 'I%' and
  428 
pz_codice_old is not null;
  429 
 
  430 
--======================================================
  431 
-- CURSORE SU SA_PAZIENTE per COLLEZIONE DATI LOOP C1
  432 
--======================================================
  433 
cursor C_SA_PAZIENTE_C1 is
  434 
select PZ_ID,PZ_COGN,PZ_NOME,PZ_DT_NAS,PZ_SESSO,PZ_COM_NAS,PZ_CFIS,PZ_COM_RES,PZ_CAP_RES,PZ_IND_RES,PZ_TEL1,PZ_TEL2,PZ_TSAN,PZ_ASL_APP,PZ_ASL_ASS,PZ_REG_ASSI,PZ_DSCADSTP,PZ_DRILSTP,PZ_DSCADTESS,PZ_CITT,PZ_COM_DOM,PZ_CAP_DOM,PZ_IND_DOM,PZ_CODICE_OLD,PZ_STP,PZ_REG_RES,PZ_MEDICO,PZ_DT_MEDICO,PZ_CIRCOSCRIZIONE,PZ_ZONA_SUBC,PZ_QUARTIERE,NVL(PZ_DT_VAR,PZ_DT_INS) PZ_DT_VAR
  435 
from SA_PAZIENTE where
  436 
-- la seguente per test
  437 
-- SA_PAZIENTE.pz_cogn like 'I%' and
  438 
pz_codice_old is not null;
  439 
 
  440 
--======================================================
  441 
-- CURSORE SU ASSANA per CONTEGGIO DATI LOOP C2
  442 
-- SOLO I RECORD ASSANA CON PZ_CODICE_OLD
  443 
-- NON RILEVABILE IN SA_PAZIENTE
  444 
--======================================================
  445 
cursor C_CONTA_ASSANA_C2 is
  446 
select count(*) from ASSANA091208_TBL, sa_paziente
  447 
where ASSANA091208_TBL.PZ_CODICE_OLD = SA_PAZIENTE.PZ_CODICE_OLD(+)
  448 
-- la seguente per test
  449 
-- and ASSANA091208_TBL.pz_cogn like 'I%'
  450 
and SA_PAZIENTE.PZ_CODICE_OLD is null;
  451 
 
  452 
--======================================================
  453 
-- CURSORE SU ASSANA per COLLEZIONE DATI LOOP C2
  454 
-- SOLO I RECORD ASSANA CON PZ_CODICE_OLD
  455 
-- NON RILEVABILE IN SA_PAZIENTE
  456 
--======================================================
  457 
cursor C_ASSANA_C2 is
  458 
select ASSANA091208_TBL.* from ASSANA091208_TBL, sa_paziente
  459 
where ASSANA091208_TBL.PZ_CODICE_OLD = SA_PAZIENTE.PZ_CODICE_OLD(+)
  460 
-- la seguente per test
  461 
-- and ASSANA091208_TBL.pz_cogn like 'I%'
  462 
and SA_PAZIENTE.PZ_CODICE_OLD is null;
  463 
 
  464 
--======================================================
  465 
-- CURSORE SU SA_PAZIENTE per CONTEGGIO RECORD IDENTICI
  466 
-- AL RECORD ASSANA CORRENTE SULLA BASE DEL CRITERIO DI ALIAS
  467 
--======================================================
  468 
cursor C_CONTA_SAPAZ_C2 is
  469 
select COUNT(*)
  470 
from SA_PAZIENTE where
  471 
PZ_COGN = COGNOME_ASSANA AND
  472 
PZ_NOME = NOME_ASSANA AND
  473 
PZ_SESSO = SESSO_ASSANA AND
  474 
PZ_COM_NAS = COMNAS_ASSANA AND
  475 
PZ_DT_NAS = DTNAS_ASSANA AND
  476 
PZ_CFIS = CFIS_ASSANA;
  477 
 
  478 
--======================================================
  479 
-- CURSORE SU SA_PAZIENTE per COLLEZIONE DATI LOOP C2
  480 
-- RECORD IDENTICI AL RECORD ASSANA CORRENTE SULLA BASE
  481 
-- DEL CRITERIO DI ALIAS
  482 
--======================================================
  483 
cursor C_SA_PAZIENTE_C2 is
  484 
select PZ_ID,PZ_COGN,PZ_NOME,PZ_DT_NAS,PZ_SESSO,PZ_COM_NAS,PZ_CFIS,PZ_COM_RES,PZ_CAP_RES,PZ_IND_RES,PZ_TEL1,PZ_TEL2,PZ_TSAN,PZ_ASL_APP,PZ_ASL_ASS,PZ_REG_ASSI,PZ_DSCADSTP,PZ_DRILSTP,PZ_DSCADTESS,PZ_CITT,PZ_COM_DOM,PZ_CAP_DOM,PZ_IND_DOM,PZ_CODICE_OLD,PZ_STP,PZ_REG_RES,PZ_MEDICO,PZ_DT_MEDICO,PZ_CIRCOSCRIZIONE,PZ_ZONA_SUBC,PZ_QUARTIERE,NVL(PZ_DT_VAR,PZ_DT_INS) PZ_DT_VAR
  485 
from SA_PAZIENTE where
  486 
PZ_COGN = COGNOME_ASSANA AND
  487 
PZ_NOME = NOME_ASSANA AND
  488 
PZ_SESSO = SESSO_ASSANA AND
  489 
PZ_COM_NAS = COMNAS_ASSANA AND
  490 
PZ_DT_NAS = DTNAS_ASSANA AND
  491 
PZ_CFIS = CFIS_ASSANA;
  492 
 
  493 
--==============================================================
  494 
-- CURSORE SU TEMP_PARK_SA_PAZIENTE per COLLEZIONE DATI LOOP C2
  495 
-- PER ANALISI DELLE SIMILITUDINI TRA I POSSIBILI CANDIDATI A
  496 
-- MAPPARE UN RECORD ASSANA.
  497 
-- ESAMINO SOLO I RECORD PER I QUALI NON HO ANCORA
  498 
-- DEFINITO UNA CASISTICA (superfluo, dato che comunque,
  499 
-- dopo definita la casistica, elimino i record da tabella).
  500 
-- Versione da usare per primo loop (CACCIA AL MERGE)
  501 
--==============================================================
  502 
cursor C_TEMP_PARK_SA_PAZIENTE_1 is
  503 
select PZ_ID, PZ_COGN,PZ_NOME,PZ_DT_NAS,PZ_SESSO,PZ_COM_NAS,PZ_CFIS,PZ_COM_RES,PZ_CAP_RES,PZ_IND_RES,PZ_TEL1,PZ_TEL2,PZ_TSAN,PZ_ASL_APP,PZ_ASL_ASS,PZ_REG_ASSI,PZ_DSCADSTP,PZ_DRILSTP,PZ_DSCADTESS,PZ_CITT,PZ_COM_DOM,PZ_CAP_DOM,PZ_IND_DOM,PZ_CODICE_OLD,PZ_STP,PZ_REG_RES,PZ_MEDICO,PZ_DT_MEDICO,PZ_CIRCOSCRIZIONE,PZ_ZONA_SUBC,PZ_QUARTIERE,PZ_DATA_ULT_AGG
  504 
from TEMP_PARK_SA_PAZIENTE
  505 
where TRATTATO = 'N'
  506 
ORDER BY PZ_DATA_ULT_AGG;
  507 
 
  508 
--==============================================================
  509 
-- CURSORE SU TEMP_PARK_SA_PAZIENTE per COLLEZIONE DATI LOOP C2
  510 
-- PER ANALISI DELLE SIMILITUDINI TRA I POSSIBILI CANDIDATI A
  511 
-- MAPPARE UN RECORD ASSANA.
  512 
-- ESAMINO SOLO I RECORD PER I QUALI NON HO ANCORA
  513 
-- DEFINITO UNA CASISTICA (superfluo, dato che comunque,
  514 
-- dopo definita la casistica, elimino i record da tabella).
  515 
-- Versione da usare per secondo loop (CACCIA AD ALIAS)
  516 
--==============================================================
  517 
cursor C_TEMP_PARK_SA_PAZIENTE_2 is
  518 
select PZ_ID, PZ_COGN,PZ_NOME,PZ_DT_NAS,PZ_SESSO,PZ_COM_NAS,PZ_CFIS,PZ_COM_RES,PZ_CAP_RES,PZ_IND_RES,PZ_TEL1,PZ_TEL2,PZ_TSAN,PZ_ASL_APP,PZ_ASL_ASS,PZ_REG_ASSI,PZ_DSCADSTP,PZ_DRILSTP,PZ_DSCADTESS,PZ_CITT,PZ_COM_DOM,PZ_CAP_DOM,PZ_IND_DOM,PZ_CODICE_OLD,PZ_STP,PZ_REG_RES,PZ_MEDICO,PZ_DT_MEDICO,PZ_CIRCOSCRIZIONE,PZ_ZONA_SUBC,PZ_QUARTIERE,PZ_DATA_ULT_AGG
  519 
from TEMP_PARK_SA_PAZIENTE
  520 
where CASISTICA IS NULL
  521 
ORDER BY PZ_DATA_ULT_AGG;
  522 
 
  523 
--==============================================================
  524 
-- CURSORE per conta record  TEMP_PARK_SA_PAZIENTE
  525 
--==============================================================
  526 
cursor C_CONTA_PARK_SAPAZ is
  527 
select COUNT(*)
  528 
from TEMP_PARK_SA_PAZIENTE;
  529 
 
  530 
--==============================================================
  531 
-- CURSORE SU TEMP_PARK_SA_PAZIENTE per RICERCA RECORD DA
  532 
-- "MERGIARE" CON IL RECORD CORRENTE: ID DIVERSA, MA TUTTI I
  533 
-- CAMPI UGUALI AL RECORD CORRENTEMENTE SELEZIONATO.
  534 
--==============================================================
  535 
cursor C_CONTA_MERGE_PARK_SAPAZ is
  536 
select COUNT(*) from TEMP_PARK_SA_PAZIENTE
  537 
where PZ_ID != V_PKT_PZ_ID
  538 
AND NVL(PZ_COGN,'KRK') = NVL(V_PKT_PZ_COGN,'KRK')
  539 
AND NVL(PZ_NOME,'KRK') = NVL(V_PKT_PZ_NOME,'KRK')
  540 
AND NVL(PZ_DT_NAS,to_date('01/01/1880','dd/mm/yyyy')) = NVL(V_PKT_PZ_DT_NAS,to_date('01/01/1880','dd/mm/yyyy'))
  541 
AND NVL(PZ_SESSO,'KRK') = NVL(V_PKT_PZ_SESSO,'KRK')
  542 
AND NVL(PZ_COM_NAS,'KRK') = NVL(V_PKT_PZ_COM_NAS,'KRK')
  543 
AND NVL(PZ_CFIS,'KRK') = NVL(V_PKT_PZ_CFIS,'KRK')
  544 
AND NVL(PZ_COM_RES,'KRK') = NVL(V_PKT_PZ_COM_RES,'KRK')
  545 
AND NVL(PZ_CAP_RES,'KRK') = NVL(V_PKT_PZ_CAP_RES,'KRK')
  546 
AND NVL(PZ_IND_RES,'KRK') = NVL(V_PKT_PZ_IND_RES,'KRK')
  547 
AND NVL(PZ_TEL1,'KRK') = NVL(V_PKT_PZ_TEL1,'KRK')
  548 
AND NVL(PZ_TEL2,'KRK') = NVL(V_PKT_PZ_TEL2,'KRK')
  549 
AND NVL(PZ_TSAN,'KRK') = NVL(V_PKT_PZ_TSAN,'KRK')
  550 
AND NVL(PZ_ASL_APP,'KRK') = NVL(V_PKT_PZ_ASL_APP,'KRK')
  551 
AND NVL(PZ_ASL_ASS,'KRK') = NVL(V_PKT_PZ_ASL_ASS,'KRK')
  552 
AND NVL(PZ_REG_ASSI,'KRK') = NVL(V_PKT_PZ_REG_ASSI,'KRK')
  553 
AND NVL(PZ_DSCADSTP,to_date('01/01/1880','dd/mm/yyyy')) = NVL(V_PKT_PZ_DSCADSTP,to_date('01/01/1880','dd/mm/yyyy'))
  554 
AND NVL(PZ_DRILSTP,to_date('01/01/1880','dd/mm/yyyy')) = NVL(V_PKT_PZ_DRILSTP,to_date('01/01/1880','dd/mm/yyyy'))
  555 
AND NVL(PZ_DSCADTESS,to_date('01/01/1880','dd/mm/yyyy')) = NVL(V_PKT_PZ_DSCADTESS,to_date('01/01/1880','dd/mm/yyyy'))
  556 
AND NVL(PZ_CITT,'KRK') = NVL(V_PKT_PZ_CITT,'KRK')
  557 
AND NVL(PZ_COM_DOM,'KRK') = NVL(V_PKT_PZ_COM_DOM,'KRK')
  558 
AND NVL(PZ_CAP_DOM,'KRK') = NVL(V_PKT_PZ_CAP_DOM,'KRK')
  559 
AND NVL(PZ_IND_DOM,'KRK') = NVL(V_PKT_PZ_IND_DOM,'KRK')
  560 
AND NVL(PZ_STP,'KRK') = NVL(V_PKT_PZ_STP,'KRK')
  561 
AND NVL(PZ_REG_RES,'KRK') = NVL(V_PKT_PZ_REG_RES,'KRK')
  562 
AND NVL(PZ_MEDICO,'KRK') = NVL(V_PKT_PZ_MEDICO,'KRK')
  563 
AND NVL(PZ_DT_MEDICO,to_date('01/01/1880','dd/mm/yyyy')) = NVL(V_PKT_PZ_DT_MEDICO,to_date('01/01/1880','dd/mm/yyyy'))
  564 
AND NVL(PZ_CIRCOSCRIZIONE,'KRK') = NVL(V_PKT_PZ_CIRCOSCRIZIONE,'KRK')
  565 
AND NVL(PZ_ZONA_SUBC,'KRK') = NVL(V_PKT_PZ_ZONA_SUBC,'KRK')
  566 
AND NVL(PZ_QUARTIERE,'KRK') = NVL(V_PKT_PZ_QUARTIERE,'KRK');
  567 
 
  568 
--==============================================================
  569 
-- CURSORE per ottenere il numero di MASTER + ALIAS residui,
  570 
-- tra i record XMPI che non agganciano ASSANA
  571 
--==============================================================
  572 
CURSOR c_CONTA_C2D IS
  573 
select sum(conta_alias) from (SELECT COUNT(*) conta_alias FROM sa_paziente
  574 
where pz_codice_old is null
  575 
and pz_id not in (select AL_MASTER from si_alias)
  576 
and pz_id not in (select AL_DETAIL from si_alias)
  577 
GROUP BY pz_cogn, pz_nome, pz_dt_nas, pz_sesso, pz_com_nas, pz_cfis
  578 
HAVING COUNT (*) > 1);
  579 
 
  580 
--======================================================
  581 
-- CURSORE SU SI_ALIAS PER VERIFICA PRESENZA ALIAS
  582 
--======================================================
  583 
CURSOR c_CERCA_IN_SI_ALIAS IS
  584 
      select count(*)
  585 
      from SI_ALIAS
  586 
      where  AL_MASTER=V_PKT_PZ_ID or AL_DETAIL=V_PKT_PZ_ID;
  587 
     
  588 
--======================================================
  589 
-- CURSORE SU SA_AZIENDAOSP per RICERCA ASL APPARTENENZA
  590 
--======================================================
  591 
CURSOR c_ASLAPP IS
  592 
      select SA_AZIENDAOSP.AZ_ID
  593 
      from SA_AZIENDAOSP
  594 
      where SA_AZIENDAOSP.AZ_ID = CODAZIENDAAPP AND SA_AZIENDAOSP.AZ_TIPO = '1';
  595 
 
  596 
--====================================================
  597 
-- CURSORE SU SA_AZIENDAOSP per RICERCA ASL ASSISTENZA
  598 
--====================================================
  599 
CURSOR c_ASLASS IS
  600 
      select SA_AZIENDAOSP.AZ_ID
  601 
      from SA_AZIENDAOSP
  602 
      where SA_AZIENDAOSP.AZ_ID = CODAZIENDAASS AND SA_AZIENDAOSP.AZ_TIPO = '1';
  603 
 
  604 
--====================================================
  605 
-- CURSORE SU SA_CITTADINANZA per RICERCA CITTADINANZA
  606 
--====================================================
  607 
CURSOR c_CITTAD IS
  608 
      select SA_CITTADINANZA.CT_ID
  609 
      from SA_CITTADINANZA
  610 
      where SA_CITTADINANZA.CT_ID = park_citt;
  611 
 
  612 
--====================================================
  613 
-- CURSORE SU SA_COMUNE per RICERCA COMUNE NASCITA
  614 
--====================================================
  615 
CURSOR c_COMUNE IS
  616 
      select SA_COMUNE.CM_ID
  617 
      from SA_COMUNE
  618 
      where SA_COMUNE.CM_ID = CODCOMUNE;
  619 
 
  620 
--====================================================
  621 
-- CURSORE SU SA_PERSONA per RICERCA MEDICO
  622 
--====================================================
  623 
CURSOR c_MEDICO IS
  624 
      select SA_PERSONA.PF_ID
  625 
      from SA_PERSONA
  626 
      where SA_PERSONA.PF_ID = CODMEDICO;
  627 
 
  628 
 
  629 
--====================================================
  630 
-- CURSORE SU SA_REGIONE per RICERCA REGIONE
  631 
--====================================================
  632 
CURSOR c_REGIONE IS
  633 
      select SA_REGIONE.RG_ID
  634 
      from SA_REGIONE
  635 
      where SA_REGIONE.RG_ID = CODREGIONE;
  636 
 
  637 
--=========================================================================================
  638 
-- CURSORE SU SA_ASLCOMUNE per RICERCA ASL DI APPARTENENZA PARTENDO DA COMUNE DI RESIDENZA
  639 
-- CURSORE SU SA_ASLCOMUNE per RICERCA ASL DI ASSISTENZA PARTENDO DA COMUNE DI DOMICILIO
  640 
--=========================================================================================
  641 
CURSOR c_ASLCOMUNE IS
  642 
      select SA_ASLCOMUNE.UC_ASL
  643 
      from SA_ASLCOMUNE
  644 
      where SA_ASLCOMUNE.UC_COM = CODCOMUNE;
  645 
 
  646 
--=========================================================================================
  647 
-- CURSORE PER CONTEGGIO CONSUNTIVO STATISTICHE
  648 
--=========================================================================================
  649 
CURSOR c_CONTA_CASISTICHE IS
  650 
select count(*) from CODA_ALLINEAMENTO_PAZIENTI
  651 
where casistica = CASISTICA_DA_CONTEGGIARE;          
  652 
                       
  653 
--=========================================================================================
  654 
-- CURSORE PER CONTEGGIO MASTER INSERITI IN SI_ALIAS
  655 
--=========================================================================================
  656 
CURSOR c_CONTA_MASTER_INSERITI IS
  657 
select count(*) from SI_ALIAS
  658 
where al_dt_ins = to_date(to_char(trunc(SYSDATE),'dd/mm/yyyy')||' 11.11.11','dd/mm/yyyy hh24.mi.ss') and  al_master is null;  
  659 
 
  660 
--=========================================================================================
  661 
-- CURSORE PER CONTEGGIO ALIAS INSERITI IN SI_ALIAS
  662 
--=========================================================================================
  663 
CURSOR c_CONTA_ALIAS_INSERITI IS
  664 
select count(*) from SI_ALIAS
  665 
where al_dt_ins = to_date(to_char(trunc(SYSDATE),'dd/mm/yyyy')||' 11.11.11','dd/mm/yyyy hh24.mi.ss') and  al_master is not null;
  666 
 
  667 
--==============================================================
  668 
-- CURSORE per conta record ASSANA
  669 
--==============================================================
  670 
cursor C_CONTAREC_ASSANA is
  671 
select COUNT(*)
  672 
from ASSANA091208_TBL;    
  673 
 
  674 
--==============================================================
  675 
-- CURSORE per conta record SA_PAZIENTE
  676 
--==============================================================
  677 
cursor C_CONTAREC_SAPAZ is
  678 
select COUNT(*)
  679 
from SA_PAZIENTE;       
  680 
 
  681 
--==============================================================
  682 
-- CURSORE per conta UPDATE ELIMINABILI
  683 
--==============================================================
  684 
cursor C_CONTA_UPD_ELIMINABILI is
  685 
Select count(*)
  686 
from CODA_ALLINEAMENTO_PAZIENTI DUE, sa_paziente
  687 
where DUE.AZIONE = 'UPD'
  688 
and DUE.PZ_ID = sa_paziente.PZ_ID
  689 
and   case when sa_paziente.PZ_COGN  !=  DUE.PZ_COGN then 1 else 0 end +
  690 
 case when sa_paziente.PZ_NOME  !=  DUE.PZ_NOME then 1 else 0 end +
  691 
 case when sa_paziente.PZ_DT_NAS  !=  DUE.PZ_DT_NAS then 1 else 0 end +
  692 
 case when sa_paziente.PZ_SESSO  !=  DUE.PZ_SESSO then 1 else 0 end +
  693 
 case when sa_paziente.PZ_COM_NAS !=  DUE.PZ_COM_NAS then 1 else 0 end +
  694 
 case when sa_paziente.PZ_CITT  !=  DUE.PZ_CITT then 1 else 0 end +
  695 
 case when sa_paziente.PZ_CFIS  !=  DUE.PZ_CFIS then 1 else 0 end +
  696 
 case when sa_paziente.PZ_COM_RES   !=  DUE.PZ_COM_RES then 1 else 0 end +
  697 
 case when sa_paziente.PZ_CAP_RES   !=  DUE.PZ_CAP_RES then 1 else 0 end +
  698 
 case when sa_paziente.PZ_IND_RES   !=  DUE.PZ_IND_RES then 1 else 0 end +
  699 
 case when sa_paziente.PZ_TEL1   !=  DUE.PZ_TEL1 then 1 else 0 end +
  700 
 case when sa_paziente.PZ_TEL2   !=  DUE.PZ_TEL2 then 1 else 0 end +
  701 
 case when sa_paziente.PZ_TSAN   !=  DUE.PZ_TSAN then 1 else 0 end +
  702 
 case when sa_paziente.PZ_ASL_APP   !=  DUE.PZ_ASL_APP then 1 else 0 end +
  703 
 case when sa_paziente.PZ_ASL_ASS   !=  DUE.PZ_ASL_ASS then 1 else 0 end +
  704 
 case when sa_paziente.PZ_REG_ASSI   !=  DUE.PZ_REG_ASSI then 1 else 0 end +
  705 
 case when sa_paziente.PZ_DSCADSTP   !=  DUE.PZ_DSCADSTP then 1 else 0 end +
  706 
 case when sa_paziente.PZ_DRILSTP   !=  DUE.PZ_DRILSTP then 1 else 0 end +
  707 
 case when sa_paziente.PZ_DSCADTESS   !=  DUE.PZ_DSCADTESS then 1 else 0 end +
  708 
 case when sa_paziente.PZ_CITT   !=  DUE.PZ_CITT then 1 else 0 end +
  709 
 case when sa_paziente.PZ_COM_DOM   !=  DUE.PZ_COM_DOM then 1 else 0 end +
  710 
 case when sa_paziente.PZ_CAP_DOM   !=  DUE.PZ_CAP_DOM then 1 else 0 end +
  711 
 case when sa_paziente.PZ_IND_DOM   !=  DUE.PZ_IND_DOM then 1 else 0 end +
  712 
 case when sa_paziente.PZ_STP   !=  DUE.PZ_STP then 1 else 0 end +
  713 
 case when sa_paziente.PZ_REG_RES   !=  DUE.PZ_REG_RES then 1 else 0 end +
  714 
 case when sa_paziente.PZ_MEDICO   !=  DUE.PZ_MEDICO then 1 else 0 end +
  715 
 case when sa_paziente.PZ_DT_MEDICO   !=  DUE.PZ_DT_MEDICO then 1 else 0 end +
  716 
 case when sa_paziente.PZ_CIRCOSCRIZIONE   !=  DUE.PZ_CIRCOSCRIZIONE then 1 else 0 end +
  717 
 case when sa_paziente.PZ_ZONA_SUBC   !=  DUE.PZ_ZONA_SUBC then 1 else 0 end +
  718 
 case when sa_paziente.PZ_QUARTIERE   !=  DUE.PZ_QUARTIERE then 1 else 0 end = 0;
  719 
 
  720 
--==============================================================
  721 
-- CURSORE per conta INSERT ELIMINABILI
  722 
--==============================================================
  723 
cursor C_CONTA_INS_ELIMINABILI is
  724 
Select count(*)
  725 
from CODA_ALLINEAMENTO_PAZIENTI DUE, sa_paziente
  726 
where DUE.AZIONE = 'INS'
  727 
and LTRIM (RTRIM (DUE.pz_cogn))
  728 
       || '-'
  729 
       || LTRIM (RTRIM (DUE.pz_nome))
  730 
       || '-'
  731 
       || LTRIM (RTRIM (DUE.pz_sesso))
  732 
       || '-'
  733 
       || DUE.pz_com_nas
  734 
       || '-'
  735 
       || TO_CHAR (DUE.pz_dt_nas, 'DD/MM/YYYY')
  736 
       || '-'
  737 
       || DUE.pz_cfis =
  738 
       LTRIM (RTRIM (SA_PAZIENTE.pz_cogn))
  739 
       || '-'
  740 
       || LTRIM (RTRIM (SA_PAZIENTE.pz_nome))
  741 
       || '-'
  742 
       || LTRIM (RTRIM (SA_PAZIENTE.pz_sesso))
  743 
       || '-'
  744 
       || SA_PAZIENTE.pz_com_nas
  745 
       || '-'
  746 
       || TO_CHAR (SA_PAZIENTE.pz_dt_nas, 'DD/MM/YYYY')
  747 
       || '-'
  748 
       || SA_PAZIENTE.pz_cfis;
  749 
                       
  750 
--====================================================
  751 
-- RECORDSET PER  SA_PAZIENTE_C1
  752 
--====================================================
  753 
r_s_SAPAZ_C1 C_SA_PAZIENTE_C1%rowtype;
  754 
 
  755 
--====================================================
  756 
-- RECORDSET PER  SA_PAZIENTE_C2
  757 
--====================================================
  758 
r_s_SAPAZ_C2 C_SA_PAZIENTE_C2%rowtype;
  759 
 
  760 
--====================================================
  761 
-- RECORDSET PER  ASSANA_C1
  762 
--====================================================
  763 
r_s_ASSANA_C1 C_ASSANA_C1%rowtype;
  764 
 
  765 
--====================================================
  766 
-- RECORDSET PER  ASSANA_C2
  767 
--====================================================
  768 
r_s_ASSANA_C2 C_ASSANA_C2%rowtype;
  769 
 
  770 
begin  -- 000
  771 
 
  772 
    --> =============================================
  773 
    --> CONTA NUMERO RECORD IN ASSANA
  774 
    --> =============================================
  775 
     
  776 
    OPEN c_CONTAREC_ASSANA;
  777 
    FETCH c_CONTAREC_ASSANA INTO CONTAREC_ASSANA;
  778 
    CLOSE c_CONTAREC_ASSANA;
  779 
 
  780 
    --> =============================================
  781 
    --> CONTA NUMERO RECORD IN SA_PAZIENTE
  782 
    --> =============================================
  783 
     
  784 
    OPEN c_CONTAREC_SAPAZ;
  785 
    FETCH c_CONTAREC_SAPAZ INTO CONTAREC_SAPAZ;
  786 
    CLOSE c_CONTAREC_SAPAZ;
  787 
   
  788 
    --> =============================================
  789 
    --> CONTA NUMERO RECORD DA TRATTARE IN LOOP 1
  790 
    --> =============================================
  791 
   
  792 
   Open C_CONTA_SA_PAZIENTE_C1;
  793 
   fetch C_CONTA_SA_PAZIENTE_C1 into CONTA_RECORD_LOOP1;
  794 
   Close C_CONTA_SA_PAZIENTE_C1;
  795 
           
  796 
    --=========> Le seguenti fanno riferimento a un riciclo
  797 
    --=========> dopo exception
  798 
    if C_SA_PAZIENTE_C1%isopen then
  799 
        close C_SA_PAZIENTE_C1;
  800 
    end if;
  801 
 
  802 
    --=========================== LOOP C1
  803 
    --=========================== LOOP C1
  804 
    --=========================== LOOP C1
  805 
    -- L     OOOOO OOOOO PPPPP
  806 
    -- L     O   O O   O P   P
  807 
    -- L     O   O O   O P   P
  808 
    -- L     O   O O   O PPPPP
  809 
    -- L     O   O O   O P
  810 
    -- LLLLL OOOOO OOOOO P
  811 
    --
  812 
    --    CCCCC       11
  813 
    --   CCCCCCC     111
  814 
    --   CC           11
  815 
    --   CC           11
  816 
    --   CC           11
  817 
    --   CCCCCCC      11
  818 
    --    CCCCC      1111
  819 
    --=========================== LOOP C1
  820 
    --=========================== LOOP C1
  821 
    --=========================== LOOP C1
  822 
 
  823 
    open C_SA_PAZIENTE_C1; -- 10
  824 
    loop
  825 
 
  826 
        BEGIN -- 20
  827 
 
  828 
            fetch C_SA_PAZIENTE_C1 into r_s_SAPAZ_C1; -- 30
  829 
            exit when C_SA_PAZIENTE_C1%notfound;
  830 
            STEP := 'CONTROLLI LOOP C1';
  831 
             
  832 
            Contarighe_L1 := Contarighe_L1 +1;
  833 
                    
  834 
            --\
  835 
            --=> RILEVO IL CODICE ASSANA
  836 
            --/
  837 
               
  838 
            CODICE_ASSANA_CORRENTE := r_s_SAPAZ_C1.pz_codice_old;
  839 
           
  840 
            CODICE_OLD_DA_USARE := null;
  841 
           
  842 
            --\
  843 
            --=> RILEVO I DATI DAL RECORD ASSANA ASSOCIATO AL RECORD SA_PAZIENTE,
  844 
            --=> TRA CUI LA DATA ULTIMO AGGIORNAMENTO DEL RECORD
  845 
            --/
  846 
            -- 40  
  847 
            --=========> Le seguenti fanno riferimento a un riciclo
  848 
            --=========> dopo exception
  849 
            if C_ASSANA_C1%isopen then
  850 
                close C_ASSANA_C1;
  851 
            end if;  
  852 
           
  853 
            
  854 
            OPEN C_ASSANA_C1;
  855 
            FETCH C_ASSANA_C1 into r_s_ASSANA_C1;
  856 
           
  857 
 
  858 
                 
  859 
            --\
  860 
            --=> CONTEMPLIAMO L'IPOTESI CHE LA PZ_CODICE_OLD
  861 
            --=> SIA SBAGLIATA E NON DECODIFICHI
  862 
            --=> NON LO ANNULLO COME FACEVO IN PASSATO
  863 
            --/    
  864 
           
  865 
            IF C_ASSANA_C1%notfound  THEN
  866 
                -- RIGA_LOG_RAFFRONTA (SYSDATE, 'RAFFRONTA_XMPI_ASSANA', STEP, 'Loop 1: '||TO_CHAR(Contarighe_L1)||'/'||TO_CHAR(CONTA_RECORD_LOOP1), 'PZ_CODICE_OLD NON TROVATO IN ASSANA - STO PER FARE UPDATE SU SA_PAZIENTE');
  867 
                -- Update SA_PAZIENTE set PZ_CODICE_OLD = null WHERE PZ_ID = r_s_SAPAZ_C1.pz_id;
  868 
                -- commit;
  869 
                ERR334 := ERR334 + 1; -- PZ_CODICE_OLD INESISTENTE IN ASSANA
  870 
                RIGA_LOG_RAFFRONTA (SYSDATE, 'RAFFRONTA_XMPI_ASSANA', STEP,'Loop 1: '||TO_CHAR(Contarighe_L1)||'/'||TO_CHAR(CONTA_RECORD_LOOP1), 'IL PZ_CODICE_OLD '||r_s_SAPAZ_C1.PZ_CODICE_OLD  ||' ASSOCIATO A PZ_ID '|| r_s_SAPAZ_C1.PZ_ID||' DI SA_PAZIENTE: INESISTENTE IN ASSANA, MA NON ANNULLATO.');
  871 
            Else
  872 
                CODICE_OLD_DA_USARE := r_s_ASSANA_C1.PZ_CODICE_OLD;
  873 
                --\
  874 
                --=> DEVO AGGIORNARE OPPURE NO????
  875 
                --/
  876 
                ULTIMO_AGG_ASSANA  := r_s_ASSANA_C1.PZ_DATA_ULT_AGG;
  877 
                If ULTIMO_AGG_ASSANA <= r_s_SAPAZ_C1.PZ_DT_VAR then  -- 60
  878 
                    -- ==============================================
  879 
                    -- CASO C1B - INCREMENTO DELL'APPOSITO CONTEGGIO
  880 
                    -- ==============================================
  881 
                    CONTA_C1B := CONTA_C1B + 1; -- 70
  882 
                else -- 80
  883 
                    -- =======================================
  884 
                    -- CASO C1A - CONTROLLI PRELIMINARI A
  885 
                    --            ACCODAMENTO DI RICHIESTA DI
  886 
                    --            UPDATE IN CODA ALLINEAMENTO
  887 
                    -- =======================================
  888 
                    -- 90      
  889 
                    --\
  890 
                    --=> FINO A PROVA CONTRARIA, TUTTO BENE
  891 
                    --/
  892 
                          
  893 
                    RECORD_OK := 'S';
  894 
                               
  895 
                    -- Cumulo in DASCARTARE le condizioni di scarto non derivanti dalle ASL di appartenenza
  896 
                    -- o assistenza. In tal modo, dopo avere verificato lo stato delle asl di appartenenza
  897 
                    -- e assistenza, se il problema e SOLO QUELLO (ovvero, se a quel punto DASCARTARE = FALSE)
  898 
                    -- posso vedere se c'e il codice STP, e se esso esiste rimettere RECORD_OK a 'S'
  899 
                    -- dopo avere impostato i campi ASL che mancano a 080105.
  900 
                    DASCARTARE := FALSE;
  901 
                        
  902 
                    msg := '';
  903 
                       
  904 
                    --\
  905 
                    --=> Parcheggio la cittadinanza, forse VUOTA, in park_citt
  906 
                    --/
  907 
                    park_citt := r_s_ASSANA_C1.pz_citt;
  908 
                    If park_citt is null then
  909 
                        ERR661 := ERR661 + 1; -- FORZATA A 100 LA CITTADINANZA VUOTA
  910 
                        -- RIGA_LOG_RAFFRONTA (SYSDATE, 'RAFFRONTA_XMPI_ASSANA', STEP,'Loop 1: '||TO_CHAR(Contarighe_L1)||'/'||TO_CHAR(CONTA_RECORD_LOOP1), 'FORZATA A 100 LA CITTADINANZA VUOTA A RIGA ' ||TO_CHAR(CONTARIGHE_L1, '99999999')||' Codice Fiscale '||r_s_ASSANA_C1.pz_cfis||' COGNOME / NOME '||r_s_ASSANA_C1.pz_cogn||'/'||r_s_ASSANA_C1.pz_nome);
  911 
                        park_citt := '100';
  912 
                    else
  913 
                        --=> VERIFICO LA EFFETTIVA ESISTENZA DEL CODICE CITTADINANZA
  914 
                        Open c_CITTAD;
  915 
                        fetch c_CITTAD into FETCHCITTAD;
  916 
                        If c_CITTAD%NOTFOUND THEN
  917 
                            ERR675 := ERR675 + 1; -- CODICE CITTADINANZA INESISTENTE
  918 
                            RIGA_LOG_RAFFRONTA (SYSDATE, 'RAFFRONTA_XMPI_ASSANA', STEP, 'Loop 1: '||TO_CHAR(Contarighe_L1)||'/'||TO_CHAR(CONTA_RECORD_LOOP1), 'CODICE CITTADINANZA ' || park_citt || ' INESISTENTE A RIGA ' ||TO_CHAR(CONTARIGHE_L1, '99999999')||' Codice Fiscale '||r_s_ASSANA_C1.pz_cfis||' COGNOME / NOME '||r_s_ASSANA_C1.pz_cogn||'/'||r_s_ASSANA_C1.pz_nome);
  919 
                            RECORD_OK := 'N';
  920 
                            DASCARTARE := True;
  921 
                        END IF;
  922 
                        Close c_CITTAD;
  923 
                    End If;
  924 
                        
  925 
                    --\
  926 
                    ---> Ai fini del successivo eventuale utilizzo del comune per rintracciare la ASL di
  927 
                    ---> appartenenza, imposto una variabile booleana che resta a TRUE solo se codice
  928 
                    ---> comune di residenza valorizzato e valido.
  929 
                    --/
  930 
                    
  931 
                    COMUNERESOK := true;
  932 
   
  933 
                    --\
  934 
                    --=> VERIFICO LA EFFETTIVA ESISTENZA DEL COMUNE DI RESIDENZA
  935 
                    --/
  936 
                    CODCOMUNE := r_s_ASSANA_C1.pz_com_res;
  937 
                    If CODCOMUNE is null then
  938 
                        ERR666 := ERR666 + 1; -- CODICE COMUNE DI RESIDENZA NULLO
  939 
                        RIGA_LOG_RAFFRONTA (SYSDATE, 'RAFFRONTA_XMPI_ASSANA', STEP, 'Loop 1: '||TO_CHAR(Contarighe_L1)||'/'||TO_CHAR(CONTA_RECORD_LOOP1), 'CODICE COMUNE DI RESIDENZA NULLO A RIGA ' ||TO_CHAR(CONTARIGHE_L1, '99999999')||' Codice Fiscale '||r_s_ASSANA_C1.pz_cfis||' COGNOME / NOME '||r_s_ASSANA_C1.pz_cogn||'/'||r_s_ASSANA_C1.pz_nome);
  940 
                        RECORD_OK := 'N';
  941 
                        DASCARTARE := True;
  942 
                        COMUNERESOK := false;
  943 
                    else
  944 
                        Open c_COMUNE;
  945 
                        fetch c_COMUNE into FETCHCOMUNE;
  946 
                        If c_COMUNE%NOTFOUND THEN
  947 
                            ERR667 := ERR667 + 1; -- CODICE COMUNE DI RESIDENZA INESISTENTE
  948 
                            RIGA_LOG_RAFFRONTA (SYSDATE, 'RAFFRONTA_XMPI_ASSANA', STEP, 'Loop 1: '||TO_CHAR(Contarighe_L1)||'/'||TO_CHAR(CONTA_RECORD_LOOP1), 'CODICE COMUNE DI RESIDENZA ' || CODCOMUNE || ' INESISTENTE A RIGA ' ||TO_CHAR(CONTARIGHE_L1, '99999999')||' Codice Fiscale '||r_s_ASSANA_C1.pz_cfis||' COGNOME / NOME '||r_s_ASSANA_C1.pz_cogn||'/'||r_s_ASSANA_C1.pz_nome);
  949 
                            RECORD_OK := 'N';
  950 
                            DASCARTARE := True;
  951 
                            COMUNERESOK := false;
  952 
                        END IF;
  953 
                        Close c_COMUNE;
  954 
                    END IF;
  955 
   
  956 
                    --\
  957 
                    ---> Ai fini del successivo eventuale utilizzo del comune per rintracciare la ASL di
  958 
                    ---> appartenenza, imposto una variabile booleana che resta a TRUE solo se codice
  959 
                    ---> comune di domicilio valorizzato e valido.
  960 
                    --/
  961 
   
  962 
                    COMUNEDOMOK := true;
  963 
   
  964 
                    --\
  965 
                    --=> VERIFICO LA EFFETTIVA ESISTENZA DEL COMUNE DI DOMICILIO
  966 
                    --/
  967 
                    CODCOMUNE := r_s_ASSANA_C1.pz_com_dom;
  968 
                    If CODCOMUNE is null then
  969 
                        ERR681 := ERR681 + 1; -- CODICE COMUNE DI DOMICILIO NULLO
  970 
                        RIGA_LOG_RAFFRONTA (SYSDATE, 'RAFFRONTA_XMPI_ASSANA', STEP, 'Loop 1: '||TO_CHAR(Contarighe_L1)||'/'||TO_CHAR(CONTA_RECORD_LOOP1), 'CODICE COMUNE DI DOMICILIO NULLO A RIGA ' ||TO_CHAR(CONTARIGHE_L1, '99999999')||' Codice Fiscale '||r_s_ASSANA_C1.pz_cfis||' COGNOME / NOME '||r_s_ASSANA_C1.pz_cogn||'/'||r_s_ASSANA_C1.pz_nome);
  971 
                        -- La sola assenza del comune di domicilio non e motivo di scarto
  972 
                        -- RECORD_OK := 'N';
  973 
                        COMUNEDOMOK := false;
  974 
                    else
  975 
                        Open c_COMUNE;
  976 
                        fetch c_COMUNE into FETCHCOMUNE;
  977 
                        If c_COMUNE%NOTFOUND THEN
  978 
                            ERR682 := ERR682 + 1; -- CODICE COMUNE DI DOMICILIO INESISTENTE
  979 
                            RIGA_LOG_RAFFRONTA (SYSDATE, 'RAFFRONTA_XMPI_ASSANA', STEP, 'Loop 1: '||TO_CHAR(Contarighe_L1)||'/'||TO_CHAR(CONTA_RECORD_LOOP1), 'CODICE COMUNE DI DOMICILIO ' || CODCOMUNE || ' INESISTENTE, RESO NULLO A RIGA ' ||TO_CHAR(CONTARIGHE_L1, '99999999')||' Codice Fiscale '||r_s_ASSANA_C1.pz_cfis||' COGNOME / NOME '||r_s_ASSANA_C1.pz_cogn||'/'||r_s_ASSANA_C1.pz_nome);
  980 
                            -- La mancata decodifica del comune di domicilio e motivo di scarto
  981 
                            RECORD_OK := 'N';
  982 
                            DASCARTARE := True;
  983 
                            COMUNEDOMOK := false;
  984 
                        END IF;
  985 
                        Close c_COMUNE;
  986 
                    END IF;
  987 
   
  988 
                    --\
  989 
                    --=> RICAVO LA ASL DI APPARTENENZA DAL COMUNE DI RESIDENZA
  990 
                    --=> E LA PONGO IN AZIENDACOMUNERES
  991 
                    --/
  992 
   
  993 
                    AZIENDACOMUNERES := null;
  994 
                    CODCOMUNE := r_s_ASSANA_C1.pz_com_res;
  995 
   
  996 
                    If COMUNERESOK = true then
  997 
                        Open c_ASLCOMUNE;
  998 
                        fetch c_ASLCOMUNE into AZIENDACOMUNERES;
  999 
                        If c_ASLCOMUNE%NOTFOUND THEN
 1000 
                            ERR678 := ERR678 + 1; -- CODICE COMUNE RESIDENZA ESISTENTE, MA SENZA ASL ASSOCIATA
 1001 
                            RIGA_LOG_RAFFRONTA (SYSDATE, 'RAFFRONTA_XMPI_ASSANA', STEP, 'Loop 1: '||TO_CHAR(Contarighe_L1)||'/'||TO_CHAR(CONTA_RECORD_LOOP1), 'CODICE COMUNE RESIDENZA ' || CODCOMUNE || ' ESISTENTE, MA SENZA ASL ASSOCIATA ' ||TO_CHAR(CONTARIGHE_L1, '99999999')||' Codice Fiscale '||r_s_ASSANA_C1.pz_cfis||' COGNOME / NOME '||r_s_ASSANA_C1.pz_cogn||'/'||r_s_ASSANA_C1.pz_nome);
 1002 
                        END IF;
 1003 
                        Close c_ASLCOMUNE;
 1004 
                    END IF;
 1005 
   
 1006 
                    --\
 1007 
                    --=> RICAVO LA ASL DI ASSISTENZA DAL COMUNE DI DOMICILIO
 1008 
                    --=> E LA PONGO IN AZIENDACOMUNEDOM
 1009 
                    --/
 1010 
                    AZIENDACOMUNEDOM := null;
 1011 
                    CODCOMUNE := r_s_ASSANA_C1.pz_com_dom;
 1012 
   
 1013 
                    If COMUNEDOMOK = true then
 1014 
                        Open c_ASLCOMUNE;
 1015 
                        fetch c_ASLCOMUNE into AZIENDACOMUNEDOM;
 1016 
                        If c_ASLCOMUNE%NOTFOUND THEN
 1017 
                            ERR683 := ERR683 + 1; -- CODICE COMUNE DOMICILIO ESISTENTE, MA SENZA ASL ASSOCIATA
 1018 
                            RIGA_LOG_RAFFRONTA (SYSDATE, 'RAFFRONTA_XMPI_ASSANA', STEP, 'Loop 1: '||TO_CHAR(Contarighe_L1)||'/'||TO_CHAR(CONTA_RECORD_LOOP1), 'CODICE COMUNE DOMICILIO ' || CODCOMUNE || ' ESISTENTE, MA SENZA ASL ASSOCIATA ' ||TO_CHAR(CONTARIGHE_L1, '99999999')||' Codice Fiscale '||r_s_ASSANA_C1.pz_cfis||' COGNOME / NOME '||r_s_ASSANA_C1.pz_cogn||'/'||r_s_ASSANA_C1.pz_nome);
 1019 
                        END IF;
 1020 
                        Close c_ASLCOMUNE;
 1021 
                    END IF;
 1022 
   
 1023 
                    --\
 1024 
                    --=> VERIFICO LA EFFETTIVA ESISTENZA DEL CODICE ASL DI APPARTENENZA
 1025 
                    --/
 1026 
   
 1027 
                    CODAZIENDAAPP := r_s_ASSANA_C1.pz_reg_res||r_s_ASSANA_C1.pz_asl_app;
 1028 
                    if CODAZIENDAAPP is not null then
 1029 
                        Open c_ASLAPP;
 1030 
                        fetch c_ASLAPP into FETCHAZIENDA;
 1031 
                        If c_ASLAPP%NOTFOUND THEN
 1032 
                            ERR662 := ERR662 + 1; -- CODICE ASL DI APPARTENENZA INESISTENTE
 1033 
                            RIGA_LOG_RAFFRONTA (SYSDATE, 'RAFFRONTA_XMPI_ASSANA', STEP, 'Loop 1: '||TO_CHAR(Contarighe_L1)||'/'||TO_CHAR(CONTA_RECORD_LOOP1), 'RESO NULLO CODICE ASL DI APPARTENENZA ' || CODAZIENDAAPP || ' INESISTENTE A RIGA ' ||TO_CHAR(CONTARIGHE_L1, '99999999')||' Codice Fiscale '||r_s_ASSANA_C1.pz_cfis||' COGNOME / NOME '||r_s_ASSANA_C1.pz_cogn||'/'||r_s_ASSANA_C1.pz_nome);
 1034 
                            --==== Trasformo il codice inesistente in codice nullo
 1035 
                            CODAZIENDAAPP := null ;
 1036 
                        END IF;
 1037 
                        Close c_ASLAPP;
 1038 
                    End if;
 1039 
   
 1040 
                    --===\
 1041 
                    --====> Se era nullo in origine, o se lo ho reso nullo perche
 1042 
                    --====> non decodificava, tento la sostituzione con quello
 1043 
                    --====> comune residenza
 1044 
                    --===/
 1045 
                    if CODAZIENDAAPP is null then
 1046 
                        if AZIENDACOMUNERES is null then
 1047 
                            -- Condizione irrecuperabile
 1048 
                            ERR679 := ERR679 + 1; -- ASL DI APPARTENZA NULLA E IMPOSSIBILE DA SOSTITUIRE
 1049 
                            RIGA_LOG_RAFFRONTA (SYSDATE, 'RAFFRONTA_XMPI_ASSANA', STEP, 'Loop 1: '||TO_CHAR(Contarighe_L1)||'/'||TO_CHAR(CONTA_RECORD_LOOP1), 'ASL DI APPARTENENZA NULLA E IMPOSSIBILE DA SOSTITUIRE A RIGA ' ||TO_CHAR(CONTARIGHE_L1, '99999999')||' Codice Fiscale '||r_s_ASSANA_C1.pz_cfis||' COGNOME / NOME '||r_s_ASSANA_C1.pz_cogn||'/'||r_s_ASSANA_C1.pz_nome);
 1050 
                            -- SCARTO COMUNQUE IL RECORD CON ASL DI APPARTENENZA NULLA
 1051 
                            RECORD_OK := 'N';
 1052 
                        else
 1053 
                            CODAZIENDAAPP := AZIENDACOMUNERES;
 1054 
                            ERR676 := ERR676 + 1; -- SOSTITUITA ASL DI APPARTENENZA NULLA CON ASL COMUNE
 1055 
                            RIGA_LOG_RAFFRONTA (SYSDATE, 'RAFFRONTA_XMPI_ASSANA', STEP, 'Loop 1: '||TO_CHAR(Contarighe_L1)||'/'||TO_CHAR(CONTA_RECORD_LOOP1), 'SOSTITUITA ASL DI APPARTENENZA NULLA CON ASL COMUNE A RIGA ' ||TO_CHAR(CONTARIGHE_L1, '99999999')||' Codice Fiscale '||r_s_ASSANA_C1.pz_cfis||' COGNOME / NOME '||r_s_ASSANA_C1.pz_cogn||'/'||r_s_ASSANA_C1.pz_nome);
 1056 
                        END IF;
 1057 
                    END IF;
 1058 
                    -- Arrivo qui con ASL APPARTENENZA VALORIZZATA E REGOLARE
 1059 
                    -- oppure con ASL APPARTENENZA SOSTITUITA CON ASL COMUNE DI RESIDENZA
 1060 
                    -- oppure con ASL APPARTENENZA NULLA (e scarto il record)
 1061 
   
 1062 
                    --\
 1063 
                    --=> VERIFICO LA EFFETTIVA ESISTENZA DEL CODICE ASL DI ASSISTENZA
 1064 
                    --/
 1065 
   
 1066 
                    CODAZIENDAASS := r_s_ASSANA_C1.pz_reg_assi||r_s_ASSANA_C1.pz_asl_ass;
 1067 
                    if CODAZIENDAASS is not null then
 1068 
                        Open c_ASLASS;
 1069 
                        fetch c_ASLASS into FETCHAZIENDA;
 1070 
                        If c_ASLASS%NOTFOUND THEN
 1071 
                            ERR663 := ERR663 + 1; -- CODICE ASL DI ASSISTENZA INESISTENTE
 1072 
                            RIGA_LOG_RAFFRONTA (SYSDATE, 'RAFFRONTA_XMPI_ASSANA', STEP, 'Loop 1: '||TO_CHAR(Contarighe_L1)||'/'||TO_CHAR(CONTA_RECORD_LOOP1), 'RESO NULLO CODICE ASL DI ASSISTENZA ' || CODAZIENDAASS || ' INESISTENTE A RIGA ' ||TO_CHAR(CONTARIGHE_L1, '99999999')||' Codice Fiscale '||r_s_ASSANA_C1.pz_cfis||' COGNOME / NOME '||r_s_ASSANA_C1.pz_cogn||'/'||r_s_ASSANA_C1.pz_nome);
 1073 
                            --==== Trasformo il codice inesistente in codice nullo
 1074 
                            CODAZIENDAASS := null ;
 1075 
                        END IF;
 1076 
                        Close c_ASLASS;
 1077 
                    End if;
 1078 
   
 1079 
                    --===\
 1080 
                    --====> Se era nullo in origine, o se lo ho reso nullo perche
 1081 
                    --====> non decodificava, tento la sostituzione con quello comune domicilio
 1082 
                    --===/
 1083 
                    if CODAZIENDAASS is null then
 1084 
                        if AZIENDACOMUNEDOM is null then
 1085 
                            -- Condizione irrecuperabile
 1086 
                            ERR680 := ERR680 + 1; -- ASL DI ASSISTENZA NULLA E IMPOSSIBILE DA SOSTITUIRE
 1087 
                            RIGA_LOG_RAFFRONTA (SYSDATE, 'RAFFRONTA_XMPI_ASSANA', STEP, 'Loop 1: '||TO_CHAR(Contarighe_L1)||'/'||TO_CHAR(CONTA_RECORD_LOOP1), 'ASL DI ASSISTENZA NULLA E IMPOSSIBILE DA SOSTITUIRE A RIGA ' ||TO_CHAR(CONTARIGHE_L1, '99999999')||' Codice Fiscale '||r_s_ASSANA_C1.pz_cfis||' COGNOME / NOME '||r_s_ASSANA_C1.pz_cogn||'/'||r_s_ASSANA_C1.pz_nome);
 1088 
                            -- SCARTO COMUNQUE IL RECORD CON ASL DI ASSISTENZA NULLA
 1089 
                            RECORD_OK := 'N';
 1090 
                        else
 1091 
                            CODAZIENDAASS := AZIENDACOMUNEDOM;
 1092 
                            ERR677 := ERR677 + 1; -- SOSTITUITA ASL DI ASSISTENZA NULLA CON ASL COMUNE DOMICILIO
 1093 
                            RIGA_LOG_RAFFRONTA (SYSDATE, 'RAFFRONTA_XMPI_ASSANA', STEP, 'Loop 1: '||TO_CHAR(Contarighe_L1)||'/'||TO_CHAR(CONTA_RECORD_LOOP1), 'SOSTITUITA ASL DI ASSISTENZA NULLA CON ASL COMUNE DOMICILIO ' ||TO_CHAR(CONTARIGHE_L1, '99999999')||' Codice Fiscale '||r_s_ASSANA_C1.pz_cfis||' COGNOME / NOME '||r_s_ASSANA_C1.pz_cogn||'/'||r_s_ASSANA_C1.pz_nome);
 1094 
                        END IF;
 1095 
                    END IF;
 1096 
   
 1097 
                    -- Arrivo qui con ASL ASSISTENZA VALORIZZATA E REGOLARE
 1098 
                    -- oppure con ASL ASSISTENZA SOSTITUITA CON ASL COMUNE DI DOMICILIO
 1099 
                    -- oppure con ASL ASSISTENZA NULLA
 1100 
   
 1101 
                    -- Se a questo punto il problema e solamente quello
 1102 
                    -- delle asl che mancano, ma il paziente ha un codice STP,
 1103 
                    -- allora forzo le asl che mancano a quella di Bologna,
 1104 
                    -- ridichiaro OK il record e passo ad altri controlli
 1105 
   
 1106 
                    IF CODAZIENDAAPP IS NULL AND DASCARTARE = FALSE AND r_s_ASSANA_C1.pz_stp IS NOT NULL then
 1107 
                        RECORD_OK := 'S';
 1108 
                        CODAZIENDAAPP := '080105';
 1109 
                        ERR684 := ERR684 + 1; --CODICE ASL APPARTENZA ASSENTE, MA CODICE STP NON NULLO - INSERITA ASL APPARTENZA 080105
 1110 
                    End if;
 1111 
   
 1112 
                    IF CODAZIENDAASS IS NULL AND DASCARTARE = FALSE AND r_s_ASSANA_C1.pz_stp IS NOT NULL then
 1113 
                        RECORD_OK := 'S';
 1114 
                        CODAZIENDAASS := '080105';
 1115 
                        ERR685 := ERR685 + 1; --CODICE ASL ASSISTENZA ASSENTE, MA CODICE STP NON NULLO - INSERITA ASL ASSISTENZA 080105
 1116 
                    End if;
 1117 
   
 1118 
                    --\
 1119 
                    ---> Sostituisco il codice regione residenza 999 con 500
 1120 
                    --/
 1121 
   
 1122 
                    CODREGIONERES := r_s_ASSANA_C1.PZ_REG_RES;
 1123 
       
 1124 
                    If CODREGIONERES = '999' then
 1125 
                        CODREGIONERES := '500';
 1126 
                        ERR686 := ERR686 + 1 ; --CODICE REGIONE RESIDENZA 999 SOSTITUITO CON CODICE REGIONE 500
 1127 
                    end if;
 1128 
   
 1129 
                    --\
 1130 
                    ---> Sostituisco il codice regione assistenza 999 con 500
 1131 
                    --/
 1132 
   
 1133 
                    CODREGIONEASS := r_s_ASSANA_C1.PZ_REG_ASSI;
 1134 
   
 1135 
                    If CODREGIONEASS = '999' then
 1136 
                        CODREGIONEASS := '500';
 1137 
                        ERR687 := ERR687 + 1 ; --CODICE REGIONE RESIDENZA 999 SOSTITUITO CON CODICE REGIONE 500
 1138 
                    end if;
 1139 
   
 1140 
                    --\
 1141 
                    ---> Verifico esistenza del codice regione RESIDENZA
 1142 
                    --/
 1143 
                    CODREGIONE := CODREGIONERES;
 1144 
                    Open c_REGIONE;
 1145 
                    fetch c_REGIONE into FETCHREGIONE;
 1146 
                    If c_REGIONE%NOTFOUND THEN
 1147 
                        ERR688 := ERR688 + 1; -- CODICE REGIONE RESIDENZA INESISTENTE
 1148 
                        RIGA_LOG_RAFFRONTA (SYSDATE, 'RAFFRONTA_XMPI_ASSANA', STEP, 'Loop 1: '||TO_CHAR(Contarighe_L1)||'/'||TO_CHAR(CONTA_RECORD_LOOP1), 'CODICE REGIONE RESIDENZA ' || CODREGIONERES || ' INESISTENTE A RIGA ' ||TO_CHAR(CONTARIGHE_L1, '99999999')||' Codice Fiscale '||r_s_ASSANA_C1.pz_cfis||' COGNOME / NOME '||r_s_ASSANA_C1.pz_cogn||'/'||r_s_ASSANA_C1.pz_nome);
 1149 
                        RECORD_OK := 'N';
 1150 
                    END IF;
 1151 
                    Close c_REGIONE;
 1152 
   
 1153 
                    --\
 1154 
                    ---> Verifico esistenza del codice regione ASSISTENZA
 1155 
                    --/
 1156 
                    CODREGIONE := CODREGIONEASS;
 1157 
                    Open c_REGIONE;
 1158 
                    fetch c_REGIONE into FETCHREGIONE;
 1159 
                    If c_REGIONE%NOTFOUND THEN
 1160 
                        ERR689 := ERR689 + 1; -- CODICE REGIONE ASSISTENZA INESISTENTE
 1161 
                        RIGA_LOG_RAFFRONTA (SYSDATE, 'RAFFRONTA_XMPI_ASSANA', STEP, 'Loop 1: '||TO_CHAR(Contarighe_L1)||'/'||TO_CHAR(CONTA_RECORD_LOOP1), 'CODICE REGIONE ASSISTENZA ' || CODREGIONEASS || ' INESISTENTE A RIGA ' ||TO_CHAR(CONTARIGHE_L1, '99999999')||' Codice Fiscale '||r_s_ASSANA_C1.pz_cfis||' COGNOME / NOME '||r_s_ASSANA_C1.pz_cogn||'/'||r_s_ASSANA_C1.pz_nome);
 1162 
                        RECORD_OK := 'N';
 1163 
                    END IF;
 1164 
                    Close c_REGIONE;
 1165 
   
 1166 
                    --\
 1167 
                    --=> VERIFICO LA EFFETTIVA ESISTENZA DEL COMUNE DI NASCITA
 1168 
                    --/
 1169 
                    CODCOMUNE := r_s_ASSANA_C1.pz_com_nas;
 1170 
                    If CODCOMUNE is null then
 1171 
                        ERR664 := ERR664 + 1; -- COMUNE DI NASCITA NULLO
 1172 
                        RIGA_LOG_RAFFRONTA (SYSDATE, 'RAFFRONTA_XMPI_ASSANA', STEP, 'Loop 1: '||TO_CHAR(Contarighe_L1)||'/'||TO_CHAR(CONTA_RECORD_LOOP1), 'CODICE COMUNE DI NASCITA NULLO A RIGA ' ||TO_CHAR(CONTARIGHE_L1, '99999999')||' Codice Fiscale '||r_s_ASSANA_C1.pz_cfis||' COGNOME / NOME '||r_s_ASSANA_C1.pz_cogn||'/'||r_s_ASSANA_C1.pz_nome);
 1173 
                        RECORD_OK := 'N';
 1174 
                    else
 1175 
                        Open c_COMUNE;
 1176 
                        fetch c_COMUNE into FETCHCOMUNE;
 1177 
                        If c_COMUNE%NOTFOUND THEN
 1178 
                            ERR665 := ERR665 + 1; -- CODICE COMUNE DI NASCITA INESISTENTE
 1179 
                            RIGA_LOG_RAFFRONTA (SYSDATE, 'RAFFRONTA_XMPI_ASSANA', STEP, 'Loop 1: '||TO_CHAR(Contarighe_L1)||'/'||TO_CHAR(CONTA_RECORD_LOOP1), 'CODICE COMUNE DI NASCITA ' || CODCOMUNE || ' INESISTENTE A RIGA ' ||TO_CHAR(CONTARIGHE_L1, '99999999')||' Codice Fiscale '||r_s_ASSANA_C1.pz_cfis||' COGNOME / NOME '||r_s_ASSANA_C1.pz_cogn||'/'||r_s_ASSANA_C1.pz_nome);
 1180 
                            RECORD_OK := 'N';
 1181 
                        END IF;
 1182 
                        Close c_COMUNE;
 1183 
                    END IF;
 1184 
   
 1185 
                    --\
 1186 
                    --=> VERIFICO LA EFFETTIVA ESISTENZA DEL MEDICO ASSOCIATO AL PAZIENTE
 1187 
                    --/
 1188 
   
 1189 
                    CODMEDICO := r_s_ASSANA_C1.pz_medico;
 1190 
                    if CODMEDICO is null then
 1191 
                        ERR673 := ERR673 + 1; --IL PAZIENTE NON HA UN MEDICO ASSOCIATO
 1192 
                    Else
 1193 
                        Open c_MEDICO;
 1194 
                        fetch c_MEDICO into FETCHMEDICO;
 1195 
                        If c_MEDICO%NOTFOUND THEN
 1196 
                            ERR674 := ERR674 + 1; -- MEDICO ASSOCIATO INESISTENTE
 1197 
                            RIGA_LOG_RAFFRONTA (SYSDATE, 'RAFFRONTA_XMPI_ASSANA', STEP, 'Loop 1: '||TO_CHAR(Contarighe_L1)||'/'||TO_CHAR(CONTA_RECORD_LOOP1), ' FORZATO A NULL IL CODICE MEDICO ASSOCIATO ' || CODMEDICO || ' INESISTENTE A RIGA ' ||TO_CHAR(CONTARIGHE_L1, '99999999')||' Codice Fiscale '||r_s_ASSANA_C1.pz_cfis||' COGNOME / NOME '||r_s_ASSANA_C1.pz_cogn||'/'||r_s_ASSANA_C1.pz_nome);
 1198 
                            RECORD_OK := 'N';
 1199 
                            CODMEDICO := null;
 1200 
                        END IF;
 1201 
                        Close c_MEDICO;
 1202 
                    END IF;
 1203 
   
 1204 
                    -- OBBLIGATORIAMENTE NOT NULL: CODICE FISCALE, COGNOME, NOME, DATA NASCITA, SESSO
 1205 
   
 1206 
                    If r_s_ASSANA_C1.pz_cogn is null then
 1207 
                        ERR668 := ERR668 + 1; -- COGNOME NULLO
 1208 
                        RIGA_LOG_RAFFRONTA (SYSDATE, 'RAFFRONTA_XMPI_ASSANA', STEP, 'Loop 1: '||TO_CHAR(Contarighe_L1)||'/'||TO_CHAR(CONTA_RECORD_LOOP1), 'COGNOME NULLO A RIGA ' ||TO_CHAR(CONTARIGHE_L1, '99999999')||' Codice Fiscale '||r_s_ASSANA_C1.pz_cfis||' COGNOME / NOME '||r_s_ASSANA_C1.pz_cogn||'/'||r_s_ASSANA_C1.pz_nome);
 1209 
                        RECORD_OK := 'N';
 1210 
                    end if;
 1211 
                    If r_s_ASSANA_C1.pz_nome is null then
 1212 
                        ERR669 := ERR669 + 1; -- NOME NULLO
 1213 
                        RIGA_LOG_RAFFRONTA (SYSDATE, 'RAFFRONTA_XMPI_ASSANA', STEP, 'Loop 1: '||TO_CHAR(Contarighe_L1)||'/'||TO_CHAR(CONTA_RECORD_LOOP1), 'NOME NULLO A RIGA ' ||TO_CHAR(CONTARIGHE_L1, '99999999')||' Codice Fiscale '||r_s_ASSANA_C1.pz_cfis||' COGNOME / NOME '||r_s_ASSANA_C1.pz_cogn||'/'||r_s_ASSANA_C1.pz_nome);
 1214 
                        RECORD_OK := 'N';
 1215 
                    end if;
 1216 
                    If r_s_ASSANA_C1.pz_dt_nas is null then
 1217 
                        ERR670 := ERR670 + 1; -- DATA NASCITA NULLA
 1218 
                        RIGA_LOG_RAFFRONTA (SYSDATE, 'RAFFRONTA_XMPI_ASSANA', STEP, 'Loop 1: '||TO_CHAR(Contarighe_L1)||'/'||TO_CHAR(CONTA_RECORD_LOOP1), 'DATA NASCITA NULLA A RIGA ' ||TO_CHAR(CONTARIGHE_L1, '99999999')||' Codice Fiscale '||r_s_ASSANA_C1.pz_cfis||' COGNOME / NOME '||r_s_ASSANA_C1.pz_cogn||'/'||r_s_ASSANA_C1.pz_nome);
 1219 
                        RECORD_OK := 'N';
 1220 
                    end if;
 1221 
                    If r_s_ASSANA_C1.pz_sesso is null then
 1222 
                        ERR671 := ERR671 + 1; -- SESSO NULLO
 1223 
                        RIGA_LOG_RAFFRONTA (SYSDATE, 'RAFFRONTA_XMPI_ASSANA', STEP, 'Loop 1: '||TO_CHAR(Contarighe_L1)||'/'||TO_CHAR(CONTA_RECORD_LOOP1), 'SESSO NULLO A RIGA ' ||TO_CHAR(CONTARIGHE_L1, '99999999')||' Codice Fiscale '||r_s_ASSANA_C1.pz_cfis||' COGNOME / NOME '||r_s_ASSANA_C1.pz_cogn||'/'||r_s_ASSANA_C1.pz_nome);
 1224 
                        RECORD_OK := 'N';
 1225 
                    end if;
 1226 
                    If r_s_ASSANA_C1.pz_cfis is null then
 1227 
                        ERR672 := ERR672 + 1; -- CODICE FISCALE NULLO
 1228 
                        RIGA_LOG_RAFFRONTA (SYSDATE, 'RAFFRONTA_XMPI_ASSANA', STEP, 'Loop 1: '||TO_CHAR(Contarighe_L1)||'/'||TO_CHAR(CONTA_RECORD_LOOP1), 'CODICE FISCALE NULLO A RIGA ' ||TO_CHAR(CONTARIGHE_L1, '99999999')||' Codice Fiscale '||r_s_ASSANA_C1.pz_cfis||' COGNOME / NOME '||r_s_ASSANA_C1.pz_cogn||'/'||r_s_ASSANA_C1.pz_nome);
 1229 
                        RECORD_OK := 'N';
 1230 
                    end if;
 1231 
                         
 1232 
                    -- ==============================
 1233 
                    -- CONTROLLI C1 TERMINATI
 1234 
                    -- ==============================
 1235 
                       
 1236 
                    STEP := 'INSERIMENTO RICHIESTA DI UPDATE IN CODA_ALLINEAMENTO_PAZIENTI';
 1237 
                        
 1238 
                    If RECORD_OK = 'N' then -- 100
 1239 
                        ERR333 := ERR333 + 1; -- RECORD ASSANA NON IDONEO A RIALLINEAMENTO! -- 110
 1240 
                        RIGA_LOG_RAFFRONTA (SYSDATE, 'RAFFRONTA_XMPI_ASSANA', STEP, 'Loop 1: '||TO_CHAR(Contarighe_L1)||'/'||TO_CHAR(CONTA_RECORD_LOOP1), 'RECORD ASSANA NON IDONEO A RIALLINEAMENTO! ' ||TO_CHAR(CONTARIGHE_L1, '99999999')||' Codice Fiscale '||r_s_ASSANA_C1.pz_cfis||' COGNOME / NOME '||r_s_ASSANA_C1.pz_cogn||'/'||r_s_ASSANA_C1.pz_nome);
 1241 
                        RECORD_OK := 'N';
 1242 
                    Else -- 120
 1243 
                        INSERT INTO CODA_ALLINEAMENTO_PAZIENTI -- 130
 1244 
                        (PROGRESSIVO,AZIONE,PZ_ID,PZ_ID_PER_MERGE,CASISTICA,F_VALIDAZIONE,F_PROCESSATO,PZ_COGN,PZ_NOME,PZ_DT_NAS,PZ_SESSO,PZ_COM_NAS,PZ_CFIS,PZ_COM_RES,PZ_CAP_RES,PZ_IND_RES,PZ_TEL1,PZ_TEL2,PZ_TSAN,PZ_ASL_APP,PZ_ASL_ASS,PZ_REG_ASSI,PZ_DSCADSTP,PZ_DRILSTP,PZ_DSCADTESS,PZ_CITT,PZ_COM_DOM,PZ_CAP_DOM,PZ_IND_DOM,PZ_CODICE_OLD,PZ_STP,PZ_REG_RES,PZ_MEDICO,PZ_DT_MEDICO,PZ_CIRCOSCRIZIONE,PZ_ZONA_SUBC,PZ_QUARTIERE,PZ_DATA_ULT_AGG)
 1245 
                        VALUES
 1246 
                        (SEQ_CODA_ALL_PAZ.NextVal,'UPD',r_s_SAPAZ_C1.PZ_ID,null,'C1A','N','N',r_s_ASSANA_C1.PZ_COGN,r_s_ASSANA_C1.PZ_NOME,r_s_ASSANA_C1.PZ_DT_NAS,r_s_ASSANA_C1.PZ_SESSO,r_s_ASSANA_C1.PZ_COM_NAS,r_s_ASSANA_C1.PZ_CFIS,r_s_ASSANA_C1.PZ_COM_RES,r_s_ASSANA_C1.PZ_CAP_RES,r_s_ASSANA_C1.PZ_IND_RES,r_s_ASSANA_C1.PZ_TEL1,r_s_ASSANA_C1.PZ_TEL2,r_s_ASSANA_C1.PZ_TSAN,CODAZIENDAAPP,CODAZIENDAASS,CODREGIONEASS,r_s_ASSANA_C1.PZ_DSCADSTP,r_s_ASSANA_C1.PZ_DRILSTP,r_s_ASSANA_C1.PZ_DSCADTES,PARK_CITT,r_s_ASSANA_C1.PZ_COM_DOM,r_s_ASSANA_C1.PZ_CAP_DOM,r_s_ASSANA_C1.PZ_IND_DOM,CODICE_OLD_DA_USARE,r_s_ASSANA_C1.PZ_STP,CODREGIONERES,CODMEDICO,r_s_ASSANA_C1.PZ_DT_MEDICO,r_s_ASSANA_C1.PZ_CIRCOSCRIZIONE,r_s_ASSANA_C1.PZ_ZONA_SUBC,r_s_ASSANA_C1.PZ_QUARTIERE,r_s_ASSANA_C1