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.PZ_DATA_ULT_AGG);
 1247 
                        --==> Annuncio di avere regolarmente svolto l'inserimento in coda di allineamento
 1248 
                        RIGA_LOG_RAFFRONTA (SYSDATE, 'RAFFRONTA_XMPI_ASSANA', STEP, 'Loop 1: '||TO_CHAR(Contarighe_L1)||'/'||TO_CHAR(CONTA_RECORD_LOOP1), 'INSERITA RICHIESTA UPDATE CON DATI ASSANA IDONEI AL 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);
 1249 
                    End if; -- 140
 1250 
                End if; -- 150
 1251 
            End If;
 1252 
                 
 1253 
            commit;
 1254 
               
 1255 
            CLOSE C_ASSANA_C1;
 1256 
 
 1257 
            exception -- 160
 1258 
            when others then
 1259 
                ERR699 := ERR699 + 1; -- ECCEZIONE ORACLE
 1260 
                RIGA_LOG_RAFFRONTA (SYSDATE, 'RAFFRONTA_XMPI_ASSANA', STEP, SQLCODE, substr(SQLERRM,1,100)||' Codice Fiscale '||r_s_ASSANA_C1.pz_cfis||' COGNOME / NOME '||r_s_ASSANA_C1.pz_cogn||'/'||r_s_ASSANA_C1.pz_nome);
 1261 
 
 1262 
        END; -- 170
 1263 
 
 1264 
    end loop; -- 180
 1265 
 
 1266 
    close C_SA_PAZIENTE_C1;
 1267 
    --=========================== END LOOP C1
 1268 
    --=========================== END LOOP C1
 1269 
    --=========================== END LOOP C1
 1270 
    --=========================== END LOOP C1
 1271 
    --=========================== END LOOP C1
 1272 
    --=========================== END LOOP C1
 1273 
 
 1274 
    --> =============================================
 1275 
    --> CONTA CASISTICHE A CONSUNTIVO
 1276 
    --> SULLA BASE DEL CONTENUTO DI
 1277 
    --> CODA_ALLINEAMENTO_PAZIENTI
 1278 
    --> =============================================
 1279 
    CASISTICA_DA_CONTEGGIARE := 'C1A';
 1280 
     
 1281 
    OPEN c_CONTA_CASISTICHE;
 1282 
    FETCH c_CONTA_CASISTICHE INTO CONTA_C1A;
 1283 
    CLOSE c_CONTA_CASISTICHE;
 1284 
       
 1285 
   
 1286 
    --> =============================================
 1287 
    --> RIPULIAMO CODA_ALLINEAMENTO_PAZIENTI
 1288 
    --> DALLE FALSE UPDATE, OVVERO DALLE RICHIESTE
 1289 
    --> DI UPDATE CHE NON AGGIORNEREBBERO ALCUN VALORE
 1290 
    --> =============================================   
 1291 
    RIGA_LOG_RAFFRONTA (SYSDATE, 'RAFFRONTA_XMPI_ASSANA', 'PULIZIA CODA ALLINEAMENTO',null, 'AVVIATA ELIMINAZIONE RICHIESTE UPDATE ININFLUENTI');
 1292 
    --> =============================================
 1293 
    --> CONTA NUMERO UPDATE ELIMINABILI
 1294 
    --> =============================================
 1295 
     
 1296 
    OPEN c_CONTA_UPD_ELIMINABILI;
 1297 
    FETCH c_CONTA_UPD_ELIMINABILI INTO CONTA_UPD_ELIMINABILI;
 1298 
    CLOSE c_CONTA_UPD_ELIMINABILI;
 1299 
 
 1300 
   RIGA_LOG_RAFFRONTA (SYSDATE, 'RAFFRONTA_XMPI_ASSANA', 'PULIZIA CODA ALLINEAMENTO',null, 'LOCALIZZATE '||to_char(CONTA_UPD_ELIMINABILI)||' RICHIESTE UPDATE ININFLUENTI');
 1301 
    
 1302 
DELETE FROM CODA_ALLINEAMENTO_PAZIENTI where PROGRESSIVO IN
 1303 
(Select DUE.progressivo
 1304 
 from CODA_ALLINEAMENTO_PAZIENTI DUE, sa_paziente
 1305 
where DUE.AZIONE = 'UPD'
 1306 
and DUE.PZ_ID = sa_paziente.PZ_ID
 1307 
and   case when sa_paziente.PZ_COGN  !=  DUE.PZ_COGN then 1 else 0 end +
 1308 
 case when sa_paziente.PZ_NOME  !=  DUE.PZ_NOME then 1 else 0 end +
 1309 
 case when sa_paziente.PZ_DT_NAS  !=  DUE.PZ_DT_NAS then 1 else 0 end +
 1310 
 case when sa_paziente.PZ_SESSO  !=  DUE.PZ_SESSO then 1 else 0 end +
 1311 
 case when sa_paziente.PZ_COM_NAS !=  DUE.PZ_COM_NAS then 1 else 0 end +
 1312 
 case when sa_paziente.PZ_CITT  !=  DUE.PZ_CITT then 1 else 0 end +
 1313 
 case when sa_paziente.PZ_CFIS  !=  DUE.PZ_CFIS then 1 else 0 end +
 1314 
 case when sa_paziente.PZ_COM_RES   !=  DUE.PZ_COM_RES then 1 else 0 end +
 1315 
 case when sa_paziente.PZ_CAP_RES   !=  DUE.PZ_CAP_RES then 1 else 0 end +
 1316 
 case when sa_paziente.PZ_IND_RES   !=  DUE.PZ_IND_RES then 1 else 0 end +
 1317 
 case when sa_paziente.PZ_TEL1   !=  DUE.PZ_TEL1 then 1 else 0 end +
 1318 
 case when sa_paziente.PZ_TEL2   !=  DUE.PZ_TEL2 then 1 else 0 end +
 1319 
 case when sa_paziente.PZ_TSAN   !=  DUE.PZ_TSAN then 1 else 0 end +
 1320 
 case when sa_paziente.PZ_ASL_APP   !=  DUE.PZ_ASL_APP then 1 else 0 end +
 1321 
 case when sa_paziente.PZ_ASL_ASS   !=  DUE.PZ_ASL_ASS then 1 else 0 end +
 1322 
 case when sa_paziente.PZ_REG_ASSI   !=  DUE.PZ_REG_ASSI then 1 else 0 end +
 1323 
 case when sa_paziente.PZ_DSCADSTP   !=  DUE.PZ_DSCADSTP then 1 else 0 end +
 1324 
 case when sa_paziente.PZ_DRILSTP   !=  DUE.PZ_DRILSTP then 1 else 0 end +
 1325 
 case when sa_paziente.PZ_DSCADTESS   !=  DUE.PZ_DSCADTESS then 1 else 0 end +
 1326 
 case when sa_paziente.PZ_CITT   !=  DUE.PZ_CITT then 1 else 0 end +
 1327 
 case when sa_paziente.PZ_COM_DOM   !=  DUE.PZ_COM_DOM then 1 else 0 end +
 1328 
 case when sa_paziente.PZ_CAP_DOM   !=  DUE.PZ_CAP_DOM then 1 else 0 end +
 1329 
 case when sa_paziente.PZ_IND_DOM   !=  DUE.PZ_IND_DOM then 1 else 0 end +
 1330 
 case when sa_paziente.PZ_STP   !=  DUE.PZ_STP then 1 else 0 end +
 1331 
 case when sa_paziente.PZ_REG_RES   !=  DUE.PZ_REG_RES then 1 else 0 end +
 1332 
 case when sa_paziente.PZ_MEDICO   !=  DUE.PZ_MEDICO then 1 else 0 end +
 1333 
 case when sa_paziente.PZ_DT_MEDICO   !=  DUE.PZ_DT_MEDICO then 1 else 0 end +
 1334 
 case when sa_paziente.PZ_CIRCOSCRIZIONE   !=  DUE.PZ_CIRCOSCRIZIONE then 1 else 0 end +
 1335 
 case when sa_paziente.PZ_ZONA_SUBC   !=  DUE.PZ_ZONA_SUBC then 1 else 0 end +
 1336 
 case when sa_paziente.PZ_QUARTIERE   !=  DUE.PZ_QUARTIERE then 1 else 0 end = 0);
 1337 
 COMMIT;   
 1338 
   
 1339 
    RIGA_LOG_RAFFRONTA (SYSDATE, 'RAFFRONTA_XMPI_ASSANA', 'PULIZIA CODA ALLINEAMENTO',null, 'ULTIMATA ELIMINAZIONE RICHIESTE UPDATE ININFLUENTI');
 1340 
 
 1341 
    CONTARIGHE_L2 := 0;
 1342 
   
 1343 
    --> =============================================
 1344 
    --> CONTA NUMERO RECORD DA TRATTARE IN LOOP2
 1345 
    --> =============================================
 1346 
   
 1347 
    Open C_CONTA_ASSANA_C2;
 1348 
    fetch C_CONTA_ASSANA_C2 into CONTA_RECORD_LOOP2;
 1349 
    Close C_CONTA_ASSANA_C2;
 1350 
    
 1351 
    --=========> Le seguenti fanno riferimento a un riciclo
 1352 
    --=========> dopo exception
 1353 
    if C_ASSANA_C2%isopen then
 1354 
        close C_ASSANA_C2;
 1355 
    end if;
 1356 
 
 1357 
    --=========================== LOOP C2
 1358 
    --=========================== LOOP C2
 1359 
    --=========================== LOOP C2
 1360 
    -- L     OOOOO OOOOO PPPPP
 1361 
    -- L     O   O O   O P   P
 1362 
    -- L     O   O O   O P   P
 1363 
    -- L     O   O O   O PPPPP
 1364 
    -- L     O   O O   O P
 1365 
    -- LLLLL OOOOO OOOOO P
 1366 
    --
 1367 
    --    CCCCC       22222222
 1368 
    --   CCCCCCC     222    222
 1369 
    --   CC                 22
 1370 
    --   CC               222
 1371 
    --   CC             222
 1372 
    --   CCCCCCC      222    22
 1373 
    --    CCCCC      2222222222
 1374 
    --=========================== LOOP C2
 1375 
    --=========================== LOOP C2
 1376 
    --=========================== LOOP C2
 1377 
    /*
 1378 
    Dubbi loop C2: oltre a precisare che cerco record SA_PAZIENTE
 1379 
    rispondenti al criterio di alias, devo anche precisare che
 1380 
    INOLTRE questi record debbono avere PZ_CODICE_OLD nullo?
 1381 
    Ricordiamo che il cursore C_ASSANA_C2 prende i soli record
 1382 
    ASSANA la cui PZ_CODICE_OLD non ha riscontro in SA_PAZIENTE, mentre
 1383 
    la query di caccia ai record SA_PAZIENTE basata sul solo criterio
 1384 
    di alias potrebbe teoricamente localizzare anche record con
 1385 
    PZ_CODICE_OLD valorizzato.
 1386 
    Soluzione autarchicamente definita da Cesare: proprio perche
 1387 
    comanda ASSANA, e per la gravita della condizione di ALIAS, benone
 1388 
    se si localizzano alias anche tra i record che gia hanno una PZ_CODICE_OLD.
 1389 
    */
 1390 
        
 1391 
    open C_ASSANA_C2; -- 200
 1392 
    loop
 1393 
  
 1394 
                
 1395 
        BEGIN -- 210
 1396 
                
 1397 
            fetch C_ASSANA_C2 into r_s_ASSANA_C2; -- 220
 1398 
            exit when C_ASSANA_C2%notfound;
 1399 
              
 1400 
            Contarighe_L2 := Contarighe_L2 +1;      
 1401 
            
 1402 
            STEP := 'CONTROLLI LOOP C2';
 1403 
                    
 1404 
                       
 1405 
            -- =======================================
 1406 
            -- CASO C2 - CONTROLLI PRELIMINARI
 1407 
            --           DATO CHE MI TORNERANNO UTILI
 1408 
            --           IN PIU' CASI, LI EFFETTUO A
 1409 
            --           QUESTO LIVELLO
 1410 
            -- =======================================
 1411 
                    
 1412 
            --\
 1413 
            --=> FINO A PROVA CONTRARIA, TUTTO BENE
 1414 
            --/
 1415 
            -- 230       
 1416 
            RECORD_OK := 'S';
 1417 
                
 1418 
            -- Cumulo in DASCARTARE le condizioni di scarto non derivanti dalle ASL di appartenenza
 1419 
            -- o assistenza. In tal modo, dopo avere verificato lo stato delle asl di appartenenza
 1420 
            -- e assistenza, se il problema e SOLO QUELLO (ovvero, se a quel punto DASCARTARE = FALSE)
 1421 
            -- posso vedere se c'e il codice STP, e se esso esiste rimettere RECORD_OK a 'S'
 1422 
            -- dopo avere impostato i campi ASL che mancano a 080105.
 1423 
            DASCARTARE := FALSE;
 1424 
                       
 1425 
            msg := '';
 1426 
                      
 1427 
            --\
 1428 
            --=> Parcheggio la cittadinanza, forse VUOTA, in park_citt
 1429 
            --/
 1430 
            park_citt := r_s_ASSANA_C2.pz_citt;
 1431 
            If park_citt is null then
 1432 
                ERR661 := ERR661 + 1; -- FORZATA A 100 LA CITTADINANZA VUOTA
 1433 
                -- RIGA_LOG_RAFFRONTA (SYSDATE, 'RAFFRONTA_XMPI_ASSANA', STEP,'Loop 2: '||TO_CHAR(Contarighe_L2)||'/'||TO_CHAR(CONTA_RECORD_LOOP2), 'FORZATA A 100 LA CITTADINANZA VUOTA A RIGA ' ||TO_CHAR(CONTARIGHE_L2, '99999999')||' Codice Fiscale '||r_s_ASSANA_C2.pz_cfis||' COGNOME / NOME '||r_s_ASSANA_C2.pz_cogn||'/'||r_s_ASSANA_C2.pz_nome);
 1434 
                park_citt := '100';
 1435 
            else
 1436 
                --=> VERIFICO LA EFFETTIVA ESISTENZA DEL CODICE CITTADINANZA
 1437 
                Open c_CITTAD;
 1438 
                fetch c_CITTAD into FETCHCITTAD;
 1439 
                If c_CITTAD%NOTFOUND THEN
 1440 
                    ERR675 := ERR675 + 1; -- CODICE CITTADINANZA INESISTENTE
 1441 
                    RIGA_LOG_RAFFRONTA (SYSDATE, 'RAFFRONTA_XMPI_ASSANA', STEP,'Loop 2: '||TO_CHAR(Contarighe_L2)||'/'||TO_CHAR(CONTA_RECORD_LOOP2), 'CODICE CITTADINANZA ' || park_citt || ' INESISTENTE A RIGA ' ||TO_CHAR(CONTARIGHE_L2, '99999999')||' Codice Fiscale '||r_s_ASSANA_C2.pz_cfis||' COGNOME / NOME '||r_s_ASSANA_C2.pz_cogn||'/'||r_s_ASSANA_C2.pz_nome);
 1442 
                    RECORD_OK := 'N';
 1443 
                    DASCARTARE := True;
 1444 
                END IF;
 1445 
                Close c_CITTAD;
 1446 
            End If;
 1447 
                        
 1448 
            --\
 1449 
            ---> Ai fini del successivo eventuale utilizzo del comune per rintracciare la ASL di
 1450 
            ---> appartenenza, imposto una variabile booleana che resta a TRUE solo se codice
 1451 
            ---> comune di residenza valorizzato e valido.
 1452 
            --/
 1453 
                                          
 1454 
            COMUNERESOK := true;
 1455 
                          
 1456 
            --\
 1457 
            --=> VERIFICO LA EFFETTIVA ESISTENZA DEL COMUNE DI RESIDENZA
 1458 
            --/
 1459 
            CODCOMUNE := r_s_ASSANA_C2.pz_com_res;
 1460 
            If CODCOMUNE is null then
 1461 
                ERR666 := ERR666 + 1; -- CODICE COMUNE DI RESIDENZA NULLO
 1462 
                RIGA_LOG_RAFFRONTA (SYSDATE, 'RAFFRONTA_XMPI_ASSANA', STEP,'Loop 2: '||TO_CHAR(Contarighe_L2)||'/'||TO_CHAR(CONTA_RECORD_LOOP2), 'CODICE COMUNE DI RESIDENZA NULLO A RIGA ' ||TO_CHAR(CONTARIGHE_L2, '99999999')||' Codice Fiscale '||r_s_ASSANA_C2.pz_cfis||' COGNOME / NOME '||r_s_ASSANA_C2.pz_cogn||'/'||r_s_ASSANA_C2.pz_nome);
 1463 
                RECORD_OK := 'N';
 1464 
                DASCARTARE := True;
 1465 
                COMUNERESOK := false;
 1466 
            else
 1467 
                Open c_COMUNE;
 1468 
                fetch c_COMUNE into FETCHCOMUNE;
 1469 
                If c_COMUNE%NOTFOUND THEN
 1470 
                    ERR667 := ERR667 + 1; -- CODICE COMUNE DI RESIDENZA INESISTENTE
 1471 
                    RIGA_LOG_RAFFRONTA (SYSDATE, 'RAFFRONTA_XMPI_ASSANA', STEP,'Loop 2: '||TO_CHAR(Contarighe_L2)||'/'||TO_CHAR(CONTA_RECORD_LOOP2), 'CODICE COMUNE DI RESIDENZA ' || CODCOMUNE || ' INESISTENTE A RIGA ' ||TO_CHAR(CONTARIGHE_L2, '99999999')||' Codice Fiscale '||r_s_ASSANA_C2.pz_cfis||' COGNOME / NOME '||r_s_ASSANA_C2.pz_cogn||'/'||r_s_ASSANA_C2.pz_nome);
 1472 
                    RECORD_OK := 'N';
 1473 
                    DASCARTARE := True;
 1474 
                    COMUNERESOK := false;
 1475 
                END IF;
 1476 
                Close c_COMUNE;
 1477 
            END IF;
 1478 
               
 1479 
            --\
 1480 
            ---> Ai fini del successivo eventuale utilizzo del comune per rintracciare la ASL di
 1481 
            ---> appartenenza, imposto una variabile booleana che resta a TRUE solo se codice
 1482 
            ---> comune di domicilio valorizzato e valido.
 1483 
            --/
 1484 
                      
 1485 
            COMUNEDOMOK := true;
 1486 
              
 1487 
            --\
 1488 
            --=> VERIFICO LA EFFETTIVA ESISTENZA DEL COMUNE DI DOMICILIO
 1489 
            --/
 1490 
            CODCOMUNE := r_s_ASSANA_C2.pz_com_dom;
 1491 
            If CODCOMUNE is null then
 1492 
                ERR681 := ERR681 + 1; -- CODICE COMUNE DI DOMICILIO NULLO
 1493 
                RIGA_LOG_RAFFRONTA (SYSDATE, 'RAFFRONTA_XMPI_ASSANA', STEP,'Loop 2: '||TO_CHAR(Contarighe_L2)||'/'||TO_CHAR(CONTA_RECORD_LOOP2), 'CODICE COMUNE DI DOMICILIO NULLO A RIGA ' ||TO_CHAR(CONTARIGHE_L2, '99999999')||' Codice Fiscale '||r_s_ASSANA_C2.pz_cfis||' COGNOME / NOME '||r_s_ASSANA_C2.pz_cogn||'/'||r_s_ASSANA_C2.pz_nome);
 1494 
                -- La sola assenza del comune di domicilio non e motivo di scarto
 1495 
                -- RECORD_OK := 'N';
 1496 
                COMUNEDOMOK := false;
 1497 
            else
 1498 
                Open c_COMUNE;
 1499 
                fetch c_COMUNE into FETCHCOMUNE;
 1500 
                If c_COMUNE%NOTFOUND THEN
 1501 
                    ERR682 := ERR682 + 1; -- CODICE COMUNE DI DOMICILIO INESISTENTE
 1502 
                    RIGA_LOG_RAFFRONTA (SYSDATE, 'RAFFRONTA_XMPI_ASSANA', STEP,'Loop 2: '||TO_CHAR(Contarighe_L2)||'/'||TO_CHAR(CONTA_RECORD_LOOP2), 'CODICE COMUNE DI DOMICILIO ' || CODCOMUNE || ' INESISTENTE, RESO NULLO A RIGA ' ||TO_CHAR(CONTARIGHE_L2, '99999999')||' Codice Fiscale '||r_s_ASSANA_C2.pz_cfis||' COGNOME / NOME '||r_s_ASSANA_C2.pz_cogn||'/'||r_s_ASSANA_C2.pz_nome);
 1503 
                    -- La mancata decodifica del comune di domicilio e motivo di scarto
 1504 
                    RECORD_OK := 'N';
 1505 
                    DASCARTARE := True;
 1506 
                    COMUNEDOMOK := false;
 1507 
                END IF;
 1508 
                Close c_COMUNE;
 1509 
            END IF;
 1510 
                
 1511 
            --\
 1512 
            --=> RICAVO LA ASL DI APPARTENENZA DAL COMUNE DI RESIDENZA
 1513 
            --=> E LA PONGO IN AZIENDACOMUNERES
 1514 
            --/
 1515 
                          
 1516 
            AZIENDACOMUNERES := null;
 1517 
            CODCOMUNE := r_s_ASSANA_C2.pz_com_res;
 1518 
                      
 1519 
            If COMUNERESOK = true then
 1520 
                Open c_ASLCOMUNE;
 1521 
                fetch c_ASLCOMUNE into AZIENDACOMUNERES;
 1522 
                If c_ASLCOMUNE%NOTFOUND THEN
 1523 
                    ERR678 := ERR678 + 1; -- CODICE COMUNE RESIDENZA ESISTENTE, MA SENZA ASL ASSOCIATA
 1524 
                    RIGA_LOG_RAFFRONTA (SYSDATE, 'RAFFRONTA_XMPI_ASSANA', STEP,'Loop 2: '||TO_CHAR(Contarighe_L2)||'/'||TO_CHAR(CONTA_RECORD_LOOP2), 'CODICE COMUNE RESIDENZA ' || CODCOMUNE || ' ESISTENTE, MA SENZA ASL ASSOCIATA ' ||TO_CHAR(CONTARIGHE_L2, '99999999')||' Codice Fiscale '||r_s_ASSANA_C2.pz_cfis||' COGNOME / NOME '||r_s_ASSANA_C2.pz_cogn||'/'||r_s_ASSANA_C2.pz_nome);
 1525 
                END IF;
 1526 
                Close c_ASLCOMUNE;
 1527 
            END IF;
 1528 
                                  
 1529 
            --\
 1530 
            --=> RICAVO LA ASL DI ASSISTENZA DAL COMUNE DI DOMICILIO
 1531 
            --=> E LA PONGO IN AZIENDACOMUNEDOM
 1532 
            --/
 1533 
            AZIENDACOMUNEDOM := null;
 1534 
            CODCOMUNE := r_s_ASSANA_C2.pz_com_dom;
 1535 
                               
 1536 
            If COMUNEDOMOK = true then
 1537 
                Open c_ASLCOMUNE;
 1538 
                fetch c_ASLCOMUNE into AZIENDACOMUNEDOM;
 1539 
                If c_ASLCOMUNE%NOTFOUND THEN
 1540 
                    ERR683 := ERR683 + 1; -- CODICE COMUNE DOMICILIO ESISTENTE, MA SENZA ASL ASSOCIATA
 1541 
                    RIGA_LOG_RAFFRONTA (SYSDATE, 'RAFFRONTA_XMPI_ASSANA', STEP,'Loop 2: '||TO_CHAR(Contarighe_L2)||'/'||TO_CHAR(CONTA_RECORD_LOOP2), 'CODICE COMUNE DOMICILIO ' || CODCOMUNE || ' ESISTENTE, MA SENZA ASL ASSOCIATA ' ||TO_CHAR(CONTARIGHE_L2, '99999999')||' Codice Fiscale '||r_s_ASSANA_C2.pz_cfis||' COGNOME / NOME '||r_s_ASSANA_C2.pz_cogn||'/'||r_s_ASSANA_C2.pz_nome);
 1542 
                END IF;
 1543 
                Close c_ASLCOMUNE;
 1544 
            END IF;
 1545 
                                                 
 1546 
            --\
 1547 
            --=> VERIFICO LA EFFETTIVA ESISTENZA DEL CODICE ASL DI APPARTENENZA
 1548 
            --/
 1549 
                                    
 1550 
            CODAZIENDAAPP := r_s_ASSANA_C2.pz_reg_res||r_s_ASSANA_C2.pz_asl_app;
 1551 
            if CODAZIENDAAPP is not null then
 1552 
                Open c_ASLAPP;
 1553 
                fetch c_ASLAPP into FETCHAZIENDA;
 1554 
                If c_ASLAPP%NOTFOUND THEN
 1555 
                    ERR662 := ERR662 + 1; -- CODICE ASL DI APPARTENENZA INESISTENTE
 1556 
                    RIGA_LOG_RAFFRONTA (SYSDATE, 'RAFFRONTA_XMPI_ASSANA', STEP,'Loop 2: '||TO_CHAR(Contarighe_L2)||'/'||TO_CHAR(CONTA_RECORD_LOOP2), 'RESO NULLO CODICE ASL DI APPARTENENZA ' || CODAZIENDAAPP || ' INESISTENTE A RIGA ' ||TO_CHAR(CONTARIGHE_L2, '99999999')||' Codice Fiscale '||r_s_ASSANA_C2.pz_cfis||' COGNOME / NOME '||r_s_ASSANA_C2.pz_cogn||'/'||r_s_ASSANA_C2.pz_nome);
 1557 
                    --==== Trasformo il codice inesistente in codice nullo
 1558 
                    CODAZIENDAAPP := null ;
 1559 
                END IF;
 1560 
                Close c_ASLAPP;
 1561 
            End if;
 1562 
                                      
 1563 
            --===\
 1564 
            --====> Se era nullo in origine, o se lo ho reso nullo perche
 1565 
            --====> non decodificava, tento la sostituzione con quello
 1566 
            --====> comune residenza
 1567 
            --===/
 1568 
            if CODAZIENDAAPP is null then
 1569 
                if AZIENDACOMUNERES is null then
 1570 
                    -- Condizione irrecuperabile
 1571 
                    ERR679 := ERR679 + 1; -- ASL DI APPARTENZA NULLA E IMPOSSIBILE DA SOSTITUIRE
 1572 
                    RIGA_LOG_RAFFRONTA (SYSDATE, 'RAFFRONTA_XMPI_ASSANA', STEP,'Loop 2: '||TO_CHAR(Contarighe_L2)||'/'||TO_CHAR(CONTA_RECORD_LOOP2), 'ASL DI APPARTENENZA NULLA E IMPOSSIBILE DA SOSTITUIRE A RIGA ' ||TO_CHAR(CONTARIGHE_L2, '99999999')||' Codice Fiscale '||r_s_ASSANA_C2.pz_cfis||' COGNOME / NOME '||r_s_ASSANA_C2.pz_cogn||'/'||r_s_ASSANA_C2.pz_nome);
 1573 
                    -- SCARTO COMUNQUE IL RECORD CON ASL DI APPARTENENZA NULLA
 1574 
                    RECORD_OK := 'N';
 1575 
                else
 1576 
                    CODAZIENDAAPP := AZIENDACOMUNERES;
 1577 
                    ERR676 := ERR676 + 1; -- SOSTITUITA ASL DI APPARTENENZA NULLA CON ASL COMUNE
 1578 
                    RIGA_LOG_RAFFRONTA (SYSDATE, 'RAFFRONTA_XMPI_ASSANA', STEP,'Loop 2: '||TO_CHAR(Contarighe_L2)||'/'||TO_CHAR(CONTA_RECORD_LOOP2), 'SOSTITUITA ASL DI APPARTENENZA NULLA CON ASL COMUNE A RIGA ' ||TO_CHAR(CONTARIGHE_L2, '99999999')||' Codice Fiscale '||r_s_ASSANA_C2.pz_cfis||' COGNOME / NOME '||r_s_ASSANA_C2.pz_cogn||'/'||r_s_ASSANA_C2.pz_nome);
 1579 
                END IF;
 1580 
            END IF;
 1581 
            -- Arrivo qui con ASL APPARTENENZA VALORIZZATA E REGOLARE
 1582 
            -- oppure con ASL APPARTENENZA SOSTITUITA CON ASL COMUNE DI RESIDENZA
 1583 
            -- oppure con ASL APPARTENENZA NULLA (e scarto il record)
 1584 
                         
 1585 
            --\
 1586 
            --=> VERIFICO LA EFFETTIVA ESISTENZA DEL CODICE ASL DI ASSISTENZA
 1587 
            --/
 1588 
                                    
 1589 
            CODAZIENDAASS := r_s_ASSANA_C2.pz_reg_assi||r_s_ASSANA_C2.pz_asl_ass;
 1590 
            if CODAZIENDAASS is not null then
 1591 
                Open c_ASLASS;
 1592 
                fetch c_ASLASS into FETCHAZIENDA;
 1593 
                If c_ASLASS%NOTFOUND THEN
 1594 
                    ERR663 := ERR663 + 1; -- CODICE ASL DI ASSISTENZA INESISTENTE
 1595 
                    RIGA_LOG_RAFFRONTA (SYSDATE, 'RAFFRONTA_XMPI_ASSANA', STEP,'Loop 2: '||TO_CHAR(Contarighe_L2)||'/'||TO_CHAR(CONTA_RECORD_LOOP2), 'RESO NULLO CODICE ASL DI ASSISTENZA ' || CODAZIENDAASS || ' INESISTENTE A RIGA ' ||TO_CHAR(CONTARIGHE_L2, '99999999')||' Codice Fiscale '||r_s_ASSANA_C2.pz_cfis||' COGNOME / NOME '||r_s_ASSANA_C2.pz_cogn||'/'||r_s_ASSANA_C2.pz_nome);
 1596 
                    --==== Trasformo il codice inesistente in codice nullo
 1597 
                    CODAZIENDAASS := null ;
 1598 
                END IF;
 1599 
                Close c_ASLASS;
 1600 
            End if;
 1601 
                           
 1602 
            --===\
 1603 
            --====> Se era nullo in origine, o se lo ho reso nullo perche
 1604 
            --====> non decodificava, tento la sostituzione con quello comune domicilio
 1605 
            --===/
 1606 
            if CODAZIENDAASS is null then
 1607 
                if AZIENDACOMUNEDOM is null then
 1608 
                    -- Condizione irrecuperabile
 1609 
                    ERR680 := ERR680 + 1; -- ASL DI ASSISTENZA NULLA E IMPOSSIBILE DA SOSTITUIRE
 1610 
                    RIGA_LOG_RAFFRONTA (SYSDATE, 'RAFFRONTA_XMPI_ASSANA', STEP,'Loop 2: '||TO_CHAR(Contarighe_L2)||'/'||TO_CHAR(CONTA_RECORD_LOOP2), 'ASL DI ASSISTENZA NULLA E IMPOSSIBILE DA SOSTITUIRE A RIGA ' ||TO_CHAR(CONTARIGHE_L2, '99999999')||' Codice Fiscale '||r_s_ASSANA_C2.pz_cfis||' COGNOME / NOME '||r_s_ASSANA_C2.pz_cogn||'/'||r_s_ASSANA_C2.pz_nome);
 1611 
                    -- SCARTO COMUNQUE IL RECORD CON ASL DI ASSISTENZA NULLA
 1612 
                    RECORD_OK := 'N';
 1613 
                else
 1614 
                    CODAZIENDAASS := AZIENDACOMUNEDOM;
 1615 
                    ERR677 := ERR677 + 1; -- SOSTITUITA ASL DI ASSISTENZA NULLA CON ASL COMUNE DOMICILIO
 1616 
                    RIGA_LOG_RAFFRONTA (SYSDATE, 'RAFFRONTA_XMPI_ASSANA', STEP,'Loop 2: '||TO_CHAR(Contarighe_L2)||'/'||TO_CHAR(CONTA_RECORD_LOOP2), 'SOSTITUITA ASL DI ASSISTENZA NULLA CON ASL COMUNE DOMICILIO ' ||TO_CHAR(CONTARIGHE_L2, '99999999')||' Codice Fiscale '||r_s_ASSANA_C2.pz_cfis||' COGNOME / NOME '||r_s_ASSANA_C2.pz_cogn||'/'||r_s_ASSANA_C2.pz_nome);
 1617 
                END IF;
 1618 
            END IF;
 1619 
                               
 1620 
            -- Arrivo qui con ASL ASSISTENZA VALORIZZATA E REGOLARE
 1621 
            -- oppure con ASL ASSISTENZA SOSTITUITA CON ASL COMUNE DI DOMICILIO
 1622 
            -- oppure con ASL ASSISTENZA NULLA
 1623 
                                      
 1624 
            -- Se a questo punto il problema e solamente quello
 1625 
            -- delle asl che mancano, ma il paziente ha un codice STP,
 1626 
            -- allora forzo le asl che mancano a quella di Bologna,
 1627 
            -- ridichiaro OK il record e passo ad altri controlli
 1628 
                                             
 1629 
            IF CODAZIENDAAPP IS NULL AND DASCARTARE = FALSE AND r_s_ASSANA_C2.pz_stp IS NOT NULL then
 1630 
                RECORD_OK := 'S';
 1631 
                CODAZIENDAAPP := '080105';
 1632 
                ERR684 := ERR684 + 1; --CODICE ASL APPARTENZA ASSENTE, MA CODICE STP NON NULLO - INSERITA ASL APPARTENZA 080105
 1633 
            End if;
 1634 
                                     
 1635 
            IF CODAZIENDAASS IS NULL AND DASCARTARE = FALSE AND r_s_ASSANA_C2.pz_stp IS NOT NULL then
 1636 
                RECORD_OK := 'S';
 1637 
                CODAZIENDAASS := '080105';
 1638 
                ERR685 := ERR685 + 1; --CODICE ASL ASSISTENZA ASSENTE, MA CODICE STP NON NULLO - INSERITA ASL ASSISTENZA 080105
 1639 
            End if;
 1640 
                                            
 1641 
            --\
 1642 
            ---> Sostituisco il codice regione residenza 999 con 500
 1643 
            --/
 1644 
                                        
 1645 
            CODREGIONERES := r_s_ASSANA_C2.PZ_REG_RES;
 1646 
                                        
 1647 
            If CODREGIONERES = '999' then
 1648 
                CODREGIONERES := '500';
 1649 
                ERR686 := ERR686 + 1 ; --CODICE REGIONE RESIDENZA 999 SOSTITUITO CON CODICE REGIONE 500
 1650 
            end if;
 1651 
                                             
 1652 
            --\
 1653 
            ---> Sostituisco il codice regione assistenza 999 con 500
 1654 
            --/
 1655 
                                            
 1656 
            CODREGIONEASS := r_s_ASSANA_C2.PZ_REG_ASSI;
 1657 
                                             
 1658 
            If CODREGIONEASS = '999' then
 1659 
                CODREGIONEASS := '500';
 1660 
                ERR687 := ERR687 + 1 ; --CODICE REGIONE RESIDENZA 999 SOSTITUITO CON CODICE REGIONE 500
 1661 
            end if;
 1662 
                              
 1663 
            --\
 1664 
            ---> Verifico esistenza del codice regione RESIDENZA
 1665 
            --/
 1666 
            CODREGIONE := CODREGIONERES;
 1667 
            Open c_REGIONE;
 1668 
            fetch c_REGIONE into FETCHREGIONE;
 1669 
            If c_REGIONE%NOTFOUND THEN
 1670 
                ERR688 := ERR688 + 1; -- CODICE REGIONE RESIDENZA INESISTENTE
 1671 
                RIGA_LOG_RAFFRONTA (SYSDATE, 'RAFFRONTA_XMPI_ASSANA', STEP,'Loop 2: '||TO_CHAR(Contarighe_L2)||'/'||TO_CHAR(CONTA_RECORD_LOOP2), 'CODICE REGIONE RESIDENZA ' || CODREGIONERES || ' INESISTENTE A RIGA ' ||TO_CHAR(CONTARIGHE_L2, '99999999')||' Codice Fiscale '||r_s_ASSANA_C2.pz_cfis||' COGNOME / NOME '||r_s_ASSANA_C2.pz_cogn||'/'||r_s_ASSANA_C2.pz_nome);
 1672 
                RECORD_OK := 'N';
 1673 
            END IF;
 1674 
            Close c_REGIONE;
 1675 
                                          
 1676 
            --\
 1677 
            ---> Verifico esistenza del codice regione ASSISTENZA
 1678 
            --/
 1679 
            CODREGIONE := CODREGIONEASS;
 1680 
            Open c_REGIONE;
 1681 
            fetch c_REGIONE into FETCHREGIONE;
 1682 
            If c_REGIONE%NOTFOUND THEN
 1683 
                ERR689 := ERR689 + 1; -- CODICE REGIONE ASSISTENZA INESISTENTE
 1684 
                RIGA_LOG_RAFFRONTA (SYSDATE, 'RAFFRONTA_XMPI_ASSANA', STEP,'Loop 2: '||TO_CHAR(Contarighe_L2)||'/'||TO_CHAR(CONTA_RECORD_LOOP2), 'CODICE REGIONE ASSISTENZA ' || CODREGIONEASS || ' INESISTENTE A RIGA ' ||TO_CHAR(CONTARIGHE_L2, '99999999')||' Codice Fiscale '||r_s_ASSANA_C2.pz_cfis||' COGNOME / NOME '||r_s_ASSANA_C2.pz_cogn||'/'||r_s_ASSANA_C2.pz_nome);
 1685 
                RECORD_OK := 'N';
 1686 
            END IF;
 1687 
            Close c_REGIONE;
 1688 
                                
 1689 
            --\
 1690 
            --=> VERIFICO LA EFFETTIVA ESISTENZA DEL COMUNE DI NASCITA
 1691 
            --/
 1692 
            CODCOMUNE := r_s_ASSANA_C2.pz_com_nas;
 1693 
            If CODCOMUNE is null then
 1694 
                ERR664 := ERR664 + 1; -- COMUNE DI NASCITA NULLO
 1695 
                RIGA_LOG_RAFFRONTA (SYSDATE, 'RAFFRONTA_XMPI_ASSANA', STEP,'Loop 2: '||TO_CHAR(Contarighe_L2)||'/'||TO_CHAR(CONTA_RECORD_LOOP2), 'CODICE COMUNE DI NASCITA NULLO A RIGA ' ||TO_CHAR(CONTARIGHE_L2, '99999999')||' Codice Fiscale '||r_s_ASSANA_C2.pz_cfis||' COGNOME / NOME '||r_s_ASSANA_C2.pz_cogn||'/'||r_s_ASSANA_C2.pz_nome);
 1696 
                RECORD_OK := 'N';
 1697 
            else
 1698 
                Open c_COMUNE;
 1699 
                fetch c_COMUNE into FETCHCOMUNE;
 1700 
                If c_COMUNE%NOTFOUND THEN
 1701 
                    ERR665 := ERR665 + 1; -- CODICE COMUNE DI NASCITA INESISTENTE
 1702 
                    RIGA_LOG_RAFFRONTA (SYSDATE, 'RAFFRONTA_XMPI_ASSANA', STEP,'Loop 2: '||TO_CHAR(Contarighe_L2)||'/'||TO_CHAR(CONTA_RECORD_LOOP2), 'CODICE COMUNE DI NASCITA ' || CODCOMUNE || ' INESISTENTE A RIGA ' ||TO_CHAR(CONTARIGHE_L2, '99999999')||' Codice Fiscale '||r_s_ASSANA_C2.pz_cfis||' COGNOME / NOME '||r_s_ASSANA_C2.pz_cogn||'/'||r_s_ASSANA_C2.pz_nome);
 1703 
                    RECORD_OK := 'N';
 1704 
                END IF;
 1705 
                Close c_COMUNE;
 1706 
            END IF;
 1707 
                                
 1708 
            --\
 1709 
            --=> VERIFICO LA EFFETTIVA ESISTENZA DEL MEDICO ASSOCIATO AL PAZIENTE
 1710 
            --/
 1711 
                                 
 1712 
            CODMEDICO := r_s_ASSANA_C2.pz_medico;
 1713 
            if CODMEDICO is null then
 1714 
                ERR673 := ERR673 + 1; --IL PAZIENTE NON HA UN MEDICO ASSOCIATO
 1715 
            Else
 1716 
                Open c_MEDICO;
 1717 
                fetch c_MEDICO into FETCHMEDICO;
 1718 
                If c_MEDICO%NOTFOUND THEN
 1719 
                    ERR674 := ERR674 + 1; -- MEDICO ASSOCIATO INESISTENTE
 1720 
                    RIGA_LOG_RAFFRONTA (SYSDATE, 'RAFFRONTA_XMPI_ASSANA', STEP,'Loop 2: '||TO_CHAR(Contarighe_L2)||'/'||TO_CHAR(CONTA_RECORD_LOOP2), ' FORZATO A NULL IL CODICE MEDICO ASSOCIATO ' || CODMEDICO || ' INESISTENTE A RIGA ' ||TO_CHAR(CONTARIGHE_L2, '99999999')||' Codice Fiscale '||r_s_ASSANA_C2.pz_cfis||' COGNOME / NOME '||r_s_ASSANA_C2.pz_cogn||'/'||r_s_ASSANA_C2.pz_nome);
 1721 
                    RECORD_OK := 'N';
 1722 
                    CODMEDICO := null;
 1723 
                END IF;
 1724 
                Close c_MEDICO;
 1725 
            END IF;
 1726 
                              
 1727 
            -- OBBLIGATORIAMENTE NOT NULL: CODICE FISCALE, COGNOME, NOME, DATA NASCITA, SESSO
 1728 
                          
 1729 
            If r_s_ASSANA_C2.pz_cogn is null then
 1730 
                ERR668 := ERR668 + 1; -- COGNOME NULLO
 1731 
                RIGA_LOG_RAFFRONTA (SYSDATE, 'RAFFRONTA_XMPI_ASSANA', STEP,'Loop 2: '||TO_CHAR(Contarighe_L2)||'/'||TO_CHAR(CONTA_RECORD_LOOP2), 'COGNOME NULLO A RIGA ' ||TO_CHAR(CONTARIGHE_L2, '99999999')||' Codice Fiscale '||r_s_ASSANA_C2.pz_cfis||' COGNOME / NOME '||r_s_ASSANA_C2.pz_cogn||'/'||r_s_ASSANA_C2.pz_nome);
 1732 
                RECORD_OK := 'N';
 1733 
            end if;
 1734 
            If r_s_ASSANA_C2.pz_nome is null then
 1735 
                ERR669 := ERR669 + 1; -- NOME NULLO
 1736 
                RIGA_LOG_RAFFRONTA (SYSDATE, 'RAFFRONTA_XMPI_ASSANA', STEP,'Loop 2: '||TO_CHAR(Contarighe_L2)||'/'||TO_CHAR(CONTA_RECORD_LOOP2), 'NOME NULLO A RIGA ' ||TO_CHAR(CONTARIGHE_L2, '99999999')||' Codice Fiscale '||r_s_ASSANA_C2.pz_cfis||' COGNOME / NOME '||r_s_ASSANA_C2.pz_cogn||'/'||r_s_ASSANA_C2.pz_nome);
 1737 
                RECORD_OK := 'N';
 1738 
            end if;
 1739 
            If r_s_ASSANA_C2.pz_dt_nas is null then
 1740 
                ERR670 := ERR670 + 1; -- DATA NASCITA NULLA
 1741 
                RIGA_LOG_RAFFRONTA (SYSDATE, 'RAFFRONTA_XMPI_ASSANA', STEP,'Loop 2: '||TO_CHAR(Contarighe_L2)||'/'||TO_CHAR(CONTA_RECORD_LOOP2), 'DATA NASCITA NULLA A RIGA ' ||TO_CHAR(CONTARIGHE_L2, '99999999')||' Codice Fiscale '||r_s_ASSANA_C2.pz_cfis||' COGNOME / NOME '||r_s_ASSANA_C2.pz_cogn||'/'||r_s_ASSANA_C2.pz_nome);
 1742 
                RECORD_OK := 'N';
 1743 
            end if;
 1744 
            If r_s_ASSANA_C2.pz_sesso is null then
 1745 
                ERR671 := ERR671 + 1; -- SESSO NULLO
 1746 
                RIGA_LOG_RAFFRONTA (SYSDATE, 'RAFFRONTA_XMPI_ASSANA', STEP,'Loop 2: '||TO_CHAR(Contarighe_L2)||'/'||TO_CHAR(CONTA_RECORD_LOOP2), 'SESSO NULLO A RIGA ' ||TO_CHAR(CONTARIGHE_L2, '99999999')||' Codice Fiscale '||r_s_ASSANA_C2.pz_cfis||' COGNOME / NOME '||r_s_ASSANA_C2.pz_cogn||'/'||r_s_ASSANA_C2.pz_nome);
 1747 
                RECORD_OK := 'N';
 1748 
            end if;
 1749 
            If r_s_ASSANA_C2.pz_cfis is null then
 1750 
                ERR672 := ERR672 + 1; -- CODICE FISCALE NULLO
 1751 
                RIGA_LOG_RAFFRONTA (SYSDATE, 'RAFFRONTA_XMPI_ASSANA', STEP,'Loop 2: '||TO_CHAR(Contarighe_L2)||'/'||TO_CHAR(CONTA_RECORD_LOOP2), 'CODICE FISCALE NULLO A RIGA ' ||TO_CHAR(CONTARIGHE_L2, '99999999')||' Codice Fiscale '||r_s_ASSANA_C2.pz_cfis||' COGNOME / NOME '||r_s_ASSANA_C2.pz_cogn||'/'||r_s_ASSANA_C2.pz_nome);
 1752 
                RECORD_OK := 'N';
 1753 
            end if;
 1754 
                         
 1755 
            -- ==============================
 1756 
            -- CONTROLLI C2 TERMINATI
 1757 
            -- ==============================
 1758 
 
 1759 
            If RECORD_OK = 'N' then -- 240
 1760 
                ERR333 := ERR333 + 1; -- RECORD ASSANA NON IDONEO A RIALLINEAMENTO! -- 250
 1761 
                RIGA_LOG_RAFFRONTA (SYSDATE, 'RAFFRONTA_XMPI_ASSANA', STEP,'Loop 2: '||TO_CHAR(Contarighe_L2)||'/'||TO_CHAR(CONTA_RECORD_LOOP2), 'RECORD ASSANA NON IDONEO A RIALLINEAMENTO! ' ||TO_CHAR(CONTARIGHE_L2, '99999999')||' Codice Fiscale '||r_s_ASSANA_C2.pz_cfis||' COGNOME / NOME '||r_s_ASSANA_C2.pz_cogn||'/'||r_s_ASSANA_C2.pz_nome);
 1762 
            Else -- 260
 1763 
                                       
 1764 
                --\
 1765 
                --=> RILEVO I DATI ASSANA PER RICERCA
 1766 
                --=> SU SA_PAZIENTE BASATA SU DATASET MINIMO
 1767 
                --/
 1768 
                -- 270   
 1769 
                COGNOME_ASSANA := ltrim(rtrim(r_s_ASSANA_C2.pz_cogn));
 1770 
                NOME_ASSANA := ltrim(rtrim(r_s_ASSANA_C2.pz_nome));
 1771 
                SESSO_ASSANA := ltrim(rtrim(r_s_ASSANA_C2.pz_sesso));
 1772 
                COMNAS_ASSANA := ltrim(rtrim(r_s_ASSANA_C2.pz_com_nas));
 1773 
                DTNAS_ASSANA := trunc(r_s_ASSANA_C2.pz_dt_nas);
 1774 
                CFIS_ASSANA := ltrim(rtrim(r_s_ASSANA_C2.pz_cfis));
 1775 
                     
 1776 
                --\
 1777 
                --=> RILEVO QUANTI RECORD SA_PAZIENTE CORRISPONDONO
 1778 
                --=> AL RECORD ASSANA CORRENTE SULLA BASE DEL CRITERIO DI ALIAS
 1779 
                --/        
 1780 
                -- 280     
 1781 
                OPEN C_CONTA_SAPAZ_C2;
 1782 
                FETCH C_CONTA_SAPAZ_C2 into CONTA_SAPAZ;
 1783 
                CLOSE C_CONTA_SAPAZ_C2;
 1784 
                   
 1785 
                  
 1786 
                If CONTA_SAPAZ = 0 then -- 290
 1787 
                        
 1788 
                    -- =======================================
 1789 
                    -- CASO C2A - ACCODO RICHIESTA DI
 1790 
                    --            INSERT IN CODA ALLINEAMENTO
 1791 
                    -- =======================================
 1792 
                    -- 300
 1793 
                    STEP := 'INSERIMENTO RICHIESTA DI INSERT IN CODA_ALLINEAMENTO_PAZIENTI';
 1794 
                          
 1795 
                    INSERT INTO CODA_ALLINEAMENTO_PAZIENTI
 1796 
                    (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)
 1797 
                    VALUES
 1798 
                    (SEQ_CODA_ALL_PAZ.NextVal,'INS',null,null,'C2A','N','N',r_s_ASSANA_C2.PZ_COGN,r_s_ASSANA_C2.PZ_NOME,r_s_ASSANA_C2.PZ_DT_NAS,r_s_ASSANA_C2.PZ_SESSO,r_s_ASSANA_C2.PZ_COM_NAS,r_s_ASSANA_C2.PZ_CFIS,r_s_ASSANA_C2.PZ_COM_RES,r_s_ASSANA_C2.PZ_CAP_RES,r_s_ASSANA_C2.PZ_IND_RES,r_s_ASSANA_C2.PZ_TEL1,r_s_ASSANA_C2.PZ_TEL2,r_s_ASSANA_C2.PZ_TSAN,CODAZIENDAAPP,CODAZIENDAASS,CODREGIONEASS,r_s_ASSANA_C2.PZ_DSCADSTP,r_s_ASSANA_C2.PZ_DRILSTP,r_s_ASSANA_C2.PZ_DSCADTES,PARK_CITT,r_s_ASSANA_C2.PZ_COM_DOM,r_s_ASSANA_C2.PZ_CAP_DOM,r_s_ASSANA_C2.PZ_IND_DOM,r_s_ASSANA_C2.PZ_CODICE_OLD,r_s_ASSANA_C2.PZ_STP,CODREGIONERES,CODMEDICO,r_s_ASSANA_C2.PZ_DT_MEDICO,r_s_ASSANA_C2.PZ_CIRCOSCRIZIONE,r_s_ASSANA_C2.PZ_ZONA_SUBC,r_s_ASSANA_C2.PZ_QUARTIERE,r_s_ASSANA_C2.PZ_DATA_ULT_AGG);
 1799 
                    --==> Annuncio di avere regolarmente svolto l'inserimento in coda di allineamento
 1800 
                    RIGA_LOG_RAFFRONTA (SYSDATE, 'RAFFRONTA_XMPI_ASSANA', STEP,'Loop 2: '||TO_CHAR(Contarighe_L2)||'/'||TO_CHAR(CONTA_RECORD_LOOP2), 'INSERITA RICHIESTA INSERIMENTO PER RECORD ASSANA ASSENTE DA XMPI ' ||TO_CHAR(CONTARIGHE_L2, '99999999')||' Codice Fiscale '||r_s_ASSANA_C2.pz_cfis||' COGNOME / NOME '||r_s_ASSANA_C2.pz_cogn||'/'||r_s_ASSANA_C2.pz_nome);
 1801 
                       
 1802 
                elsif CONTA_SAPAZ = 1 then -- 310
 1803 
                    -- ==================================
 1804 
                    -- CASO C2B - SINGOLA CORRISPONDENZA
 1805 
                    -- ==================================
 1806 
                    -- 320         
 1807 
                    --\
 1808 
                    --=> RILEVO I DATI DAL RECORD SA_PAZIENTE ASSOCIATO AL RECORD ASSANA,
 1809 
                    --=> TRA CUI LA DATA ULTIMO AGGIORNAMENTO DEL RECORD
 1810 
                    --/
 1811 
                      
 1812 
                    --=========> Le seguenti fanno riferimento a un riciclo
 1813 
                    --=========> dopo exception
 1814 
                    if C_SA_PAZIENTE_C2%isopen then
 1815 
                        close C_SA_PAZIENTE_C2;
 1816 
                    end if;                    
 1817 
                        
 1818 
                    OPEN C_SA_PAZIENTE_C2;
 1819 
                    FETCH C_SA_PAZIENTE_C2 into r_s_SAPAZ_C2;                          
 1820 
                    -- 330          
 1821 
                    --\
 1822 
                    --=> DEVO AGGIORNARE OPPURE NO????
 1823 
                    --/
 1824 
                    ULTIMO_AGG_SAPAZ  := r_s_SAPAZ_C2.PZ_DT_VAR;
 1825 
                    If r_s_ASSANA_C2.PZ_DATA_ULT_AGG > ULTIMO_AGG_SAPAZ then -- 340
 1826 
                                   
 1827 
                        -- =======================================
 1828 
                        -- CASO C2B1 - ACCODO RICHIESTA DI
 1829 
                        --             UPDATE IN CODA ALLINEAMENTO
 1830 
                        -- =======================================
 1831 
                        -- 350      
 1832 
                        STEP := 'INSERIMENTO RICHIESTA DI UPDATE IN CODA_ALLINEAMENTO_PAZIENTI';
 1833 
                            
 1834 
                        INSERT INTO CODA_ALLINEAMENTO_PAZIENTI
 1835 
                        (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)
 1836 
                        VALUES
 1837 
                        (SEQ_CODA_ALL_PAZ.NextVal,'UPD',r_s_SAPAZ_C2.PZ_ID,null,'C2B1','N','N',r_s_ASSANA_C2.PZ_COGN,r_s_ASSANA_C2.PZ_NOME,r_s_ASSANA_C2.PZ_DT_NAS,r_s_ASSANA_C2.PZ_SESSO,r_s_ASSANA_C2.PZ_COM_NAS,r_s_ASSANA_C2.PZ_CFIS,r_s_ASSANA_C2.PZ_COM_RES,r_s_ASSANA_C2.PZ_CAP_RES,r_s_ASSANA_C2.PZ_IND_RES,r_s_ASSANA_C2.PZ_TEL1,r_s_ASSANA_C2.PZ_TEL2,r_s_ASSANA_C2.PZ_TSAN,CODAZIENDAAPP,CODAZIENDAASS,CODREGIONEASS,r_s_ASSANA_C2.PZ_DSCADSTP,r_s_ASSANA_C2.PZ_DRILSTP,r_s_ASSANA_C2.PZ_DSCADTES,PARK_CITT,r_s_ASSANA_C2.PZ_COM_DOM,r_s_ASSANA_C2.PZ_CAP_DOM,r_s_ASSANA_C2.PZ_IND_DOM,r_s_ASSANA_C2.PZ_CODICE_OLD,r_s_ASSANA_C2.PZ_STP,CODREGIONERES,CODMEDICO,r_s_ASSANA_C2.PZ_DT_MEDICO,r_s_ASSANA_C2.PZ_CIRCOSCRIZIONE,r_s_ASSANA_C2.PZ_ZONA_SUBC,r_s_ASSANA_C2.PZ_QUARTIERE,r_s_ASSANA_C2.PZ_DATA_ULT_AGG);
 1838 
                        --==> Annuncio di avere regolarmente svolto l'inserimento in coda di allineamento
 1839 
                        RIGA_LOG_RAFFRONTA (SYSDATE, 'RAFFRONTA_XMPI_ASSANA', STEP,'Loop 2: '||TO_CHAR(Contarighe_L2)||'/'||TO_CHAR(CONTA_RECORD_LOOP2), 'INSERITA RICHIESTA UPDATE CON DATI ASSANA IDONEI AL RIALLINEAMENTO ' ||TO_CHAR(CONTARIGHE_L2, '99999999')||' Codice Fiscale '||r_s_ASSANA_C2.pz_cfis||' COGNOME / NOME '||r_s_ASSANA_C2.pz_cogn||'/'||r_s_ASSANA_C2.pz_nome);
 1840 
                        -- ==============================================
 1841 
                        --  COMUNQUE, inserisco UPDATE in apposita tabella
 1842 
                        -- ==============================================
 1843 
                        Insert into UPDATE_PZ_CODICE_OLD(RIGA_UPDATE) VALUES ('UPDATE SA_PAZIENTE SET PZ_CODICE_OLD = '||chr(39)||r_s_ASSANA_C2.PZ_CODICE_OLD||chr(39)|| ' where pz_id = '||chr(39)||r_s_SAPAZ_C2.PZ_ID||chr(39)||';'||chr(13)||chr(10)||'Commit;');
 1844 
                        commit;
 1845 
                        RIGA_LOG_RAFFRONTA (SYSDATE, 'RAFFRONTA_XMPI_ASSANA', STEP,'Loop 2: '||TO_CHAR(Contarighe_L2)||'/'||TO_CHAR(CONTA_RECORD_LOOP2), 'CASO C2B1 - COMUNQUE, AGGIORNATO VALORE PZ_CODICE_OLD PER RECORD PZ_ID = '||r_s_SAPAZ_C2.PZ_ID);
 1846 
                                  
 1847 
                    else  -- 360
 1848 
                            
 1849 
                        -- ==============================================
 1850 
                        -- CASO C2B2 - INCREMENTO DELL'APPOSITO CONTEGGIO
 1851 
                        --             E UPDATE IMMEDIATO DI PZ_CODICE_OLD
 1852 
                        -- ==============================================
 1853 
                        -- 370 
 1854 
                        CONTA_C2B2 := CONTA_C2B2 + 1;
 1855 
                        Insert into UPDATE_PZ_CODICE_OLD(RIGA_UPDATE) VALUES ('UPDATE SA_PAZIENTE SET PZ_CODICE_OLD = '||chr(39)||r_s_ASSANA_C2.PZ_CODICE_OLD||chr(39)|| ' where pz_id = '||chr(39)||r_s_SAPAZ_C2.PZ_ID||chr(39)||';'||chr(13)||chr(10)||'Commit;');  
 1856 
                        commit;
 1857 
                        RIGA_LOG_RAFFRONTA (SYSDATE, 'RAFFRONTA_XMPI_ASSANA', STEP,'Loop 2: '||TO_CHAR(Contarighe_L2)||'/'||TO_CHAR(CONTA_RECORD_LOOP2), 'CASO C2B2 - AGGIORNATO VALORE PZ_CODICE_OLD PER RECORD PZ_ID = '||r_s_SAPAZ_C2.PZ_ID);
 1858 
                    end if;  -- 380
 1859 
                     
 1860 
                    CLOSE C_SA_PAZIENTE_C2;       
 1861 
                   
 1862 
                else -- 390   
 1863 
                   
 1864 
                    -->> CONTA_SAPAZ e MAGGIORE DI UNO = PIU' CANDIDATI
 1865 
                    
 1866 
                    -- ===================================
 1867 
                    -- CASO C2C - CORRISPONDENZA MULTIPLA
 1868 
                    -- ===================================
 1869 
                    -- 400
 1870 
                    -- AGGIORNO IL CAMPO PZ_CODICE_OLD
 1871 
                    -- IN TUTTI I RECORD SA_PAZIENTE CHE
 1872 
                    -- CORRISPONDONO AL RECORD ASSANA CORRENTE
 1873 
                    /*
 1874 
                    Vedi all'inizio di loop C2 qualche commento sulla
 1875 
                    presenza o assenza di una "and pz_codice_old is null"
 1876 
                    oltre alle where sul criterio di alias. Di fatto,
 1877 
                    rischio di aggiornare anche record che hanno gia la
 1878 
                    PZ_CODICE_OLD valorizzata.
 1879 
                    Soluzione autarchicamente definita da Cesare: proprio
 1880 
                    perche comanda ASSANA, e per la gravita della condizione
 1881 
                    di ALIAS, benone se si aggiorna PZ_CODICE_OLD anche
 1882 
                    per i record che gia hanno una PZ_CODICE_OLD non nulla.
 1883 
                    */                
 1884 
                    Insert into UPDATE_PZ_CODICE_OLD (RIGA_UPDATE) VALUES ('UPDATE SA_PAZIENTE SET PZ_CODICE_OLD = '||chr(39)||r_s_ASSANA_C2.PZ_CODICE_OLD||chr(39)||
 1885 
' where PZ_COGN = '||chr(39)||replace(COGNOME_ASSANA,chr(39),chr(39)||chr(39))||chr(39)||
 1886 
' AND PZ_NOME = '||chr(39)||replace(NOME_ASSANA,chr(39),chr(39)||chr(39))||chr(39)||
 1887 
' AND PZ_SESSO = '||chr(39)||SESSO_ASSANA||chr(39)||
 1888 
' AND PZ_COM_NAS = '||chr(39)||COMNAS_ASSANA||chr(39)||
 1889 
' AND PZ_DT_NAS = to_date('||chr(39)||to_char(DTNAS_ASSANA,'dd/mm/yyyy')||chr(39)||','||chr(39)||'dd/mm/yyyy'||chr(39)||')'||
 1890 
' AND PZ_CFIS = '||chr(39)||CFIS_ASSANA||chr(39)||';'||chr(13)||chr(10)||'Commit;');  
 1891 
                    commit;
 1892 
                    
 1893 
                    RIGA_LOG_RAFFRONTA (SYSDATE, 'RAFFRONTA_XMPI_ASSANA', STEP,'Loop 2: '||TO_CHAR(Contarighe_L2)||'/'||TO_CHAR(CONTA_RECORD_LOOP2), ' AGGIORNATO PZ_CODICE_OLD IN TUTTI I RECORD IDENTICI PER CRITERIO ALIAS AL RECORD ASSANA Codice Fiscale '||r_s_ASSANA_C2.pz_cfis||' COGNOME / NOME '||r_s_ASSANA_C2.pz_cogn||'/'||r_s_ASSANA_C2.pz_nome);
 1894 
                                                                  
 1895 
                    -- PARCHEGGIO TUTTI I CANDIDATI
 1896 
                    -- IN APPOSITA TABELLA TEMPORANEA
 1897 
                   
 1898 
                    STRINGA_SQL := 'TRUNCATE TABLE TEMP_PARK_SA_PAZIENTE';
 1899 
                    execute immediate STRINGA_SQL;
 1900 
                   
 1901 
                    COMMIT;
 1902 
                    -- 410               
 1903 
                    INSERT INTO temp_park_sa_paziente (trattato,pz_id, pz_cogn, pz_nome, pz_dt_nas, pz_sesso, pz_com_nas, pz_cfis,
 1904 
                    pz_com_res, pz_cap_res, pz_ind_res, pz_tel1, pz_tel2, pz_tsan,
 1905 
                    pz_asl_app, pz_asl_ass, pz_reg_assi, pz_dscadstp, pz_drilstp,
 1906 
                    pz_dscadtess, pz_citt, pz_com_dom, pz_cap_dom, pz_ind_dom,
 1907 
                    pz_codice_old, pz_stp, pz_reg_res, pz_medico, pz_dt_medico,
 1908 
                    pz_circoscrizione, pz_zona_subc, pz_quartiere,
 1909 
                    pz_data_ult_agg)
 1910 
                    (SELECT 'N',pz_id, pz_cogn, pz_nome, pz_dt_nas, pz_sesso, pz_com_nas, pz_cfis,
 1911 
                    pz_com_res, pz_cap_res, pz_ind_res, pz_tel1, pz_tel2, pz_tsan,
 1912 
                    pz_asl_app, pz_asl_ass, pz_reg_assi, pz_dscadstp, pz_drilstp,
 1913 
                    pz_dscadtess, pz_citt, pz_com_dom, pz_cap_dom, pz_ind_dom,
 1914 
                    pz_codice_old, pz_stp, pz_reg_res, pz_medico, pz_dt_medico,
 1915 
                    pz_circoscrizione, pz_zona_subc, pz_quartiere,
 1916 
                    NVL (pz_dt_var, pz_dt_ins) pz_data_ult_agg
 1917 
                    FROM sa_paziente
 1918 
                    WHERE PZ_COGN = COGNOME_ASSANA AND
 1919 
                    PZ_NOME = NOME_ASSANA AND
 1920 
                    PZ_SESSO = SESSO_ASSANA AND
 1921 
                    PZ_COM_NAS = COMNAS_ASSANA AND
 1922 
                    PZ_DT_NAS = DTNAS_ASSANA AND
 1923 
                    PZ_CFIS = CFIS_ASSANA);
 1924 
                    COMMIT;
 1925 
                   
 1926 
                    -- ====================================================
 1927 
                    -- Loop su tabella TEMP_PARK_SA_PAZIENTE
 1928 
                    -- recordset: r_s_TEMP_PARK_SA_PAZIENTE
 1929 
                    -- cursore: c_TEMP_PARK_SA_PAZIENTE
 1930 
                    -- La tabella TEMP_PARK_SA_PAZIENTE ha un
 1931 
                    -- tracciato record corrispondente ai campi di
 1932 
                    -- SA_PAZIENTE riscontrati in assana. piu i seguenti
 1933 
                    -- tre campi del tracciato di coda riallineamento:
 1934 
                    --   AZIONE VARCHAR2(3),
 1935 
                    --   PZ_ID_PER_MERGE VARCHAR2(16),
 1936 
                    --   CASISTICA VARCHAR2(5)
 1937 
                    -- ====================================================
 1938 
                           
 1939 
                    Loop  -- 420
 1940 
                                  
 1941 
                        -- Parto dal primo record per il quale NON ho determinato
 1942 
                        -- la casistica
 1943 
                        -- 430
 1944 
                        OPEN C_TEMP_PARK_SA_PAZIENTE_1;
 1945 
                        fetch C_TEMP_PARK_SA_PAZIENTE_1 into V_PKT_PZ_ID,V_PKT_PZ_COGN,V_PKT_PZ_NOME,V_PKT_PZ_DT_NAS,V_PKT_PZ_SESSO,V_PKT_PZ_COM_NAS,V_PKT_PZ_CFIS,V_PKT_PZ_COM_RES,V_PKT_PZ_CAP_RES,V_PKT_PZ_IND_RES,V_PKT_PZ_TEL1,V_PKT_PZ_TEL2,V_PKT_PZ_TSAN,V_PKT_PZ_ASL_APP,V_PKT_PZ_ASL_ASS,V_PKT_PZ_REG_ASSI,V_PKT_PZ_DSCADSTP,V_PKT_PZ_DRILSTP,V_PKT_PZ_DSCADTESS,V_PKT_PZ_CITT,V_PKT_PZ_COM_DOM,V_PKT_PZ_CAP_DOM,V_PKT_PZ_IND_DOM,V_PKT_PZ_CODICE_OLD,V_PKT_PZ_STP,V_PKT_PZ_REG_RES,V_PKT_PZ_MEDICO,V_PKT_PZ_DT_MEDICO,V_PKT_PZ_CIRCOSCRIZIONE,V_PKT_PZ_ZONA_SUBC,V_PKT_PZ_QUARTIERE,V_PKT_PZ_DATA_ULT_AGG;
 1946 
                        exit when C_TEMP_PARK_SA_PAZIENTE_1%notfound;
 1947 
                        CLOSE C_TEMP_PARK_SA_PAZIENTE_1; -- 440
 1948 
                                        
 1949 
                        -- Rilevo se esistono altri record identici CAMPO PER CAMPO
 1950 
                        -- a quello localizzato
 1951 
                        -- 450
 1952 
                        OPEN C_CONTA_MERGE_PARK_SAPAZ;
 1953 
                        FETCH C_CONTA_MERGE_PARK_SAPAZ INTO CONTAMERGE;
 1954 
                        CLOSE C_CONTA_MERGE_PARK_SAPAZ;
 1955 
                        
 1956 
                        --============================
 1957 
                        -- Se ce ne e almeno uno ...
 1958 
                        --============================
 1959 
                        if CONTAMERGE > 0 then  -- 460
 1960 
                            -- ==============================================
 1961 
                            -- CASO C2C1 - ACCODERO' RICHIESTA DI MERGE
 1962 
                            --             IN CODA ALLINEAMENTO: INTANTO
 1963 
                            --             PREDISPONGO TEMP_PARK_SA_PAZIENTE
 1964 
                            -- ==============================================
 1965 
                            -- 470
 1966 
                            UPDATE TEMP_PARK_SA_PAZIENTE
 1967 
                            SET TRATTATO = 'S',
 1968 
                            AZIONE = 'MRG',
 1969 
                            CASISTICA = 'C2C1'
 1970 
                            PZ_ID_PER_MERGE = V_PKT_PZ_ID
 1971 
                            WHERE PZ_ID != V_PKT_PZ_ID
 1972 
                            AND NVL(PZ_COGN,'KRK') = NVL(V_PKT_PZ_COGN,'KRK')
 1973 
                            AND NVL(PZ_NOME,'KRK') = NVL(V_PKT_PZ_NOME,'KRK')
 1974 
                            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'))
 1975 
                            AND NVL(PZ_SESSO,'KRK') = NVL(V_PKT_PZ_SESSO,'KRK')
 1976 
                            AND NVL(PZ_COM_NAS,'KRK') = NVL(V_PKT_PZ_COM_NAS,'KRK')
 1977 
                            AND NVL(PZ_CFIS,'KRK') = NVL(V_PKT_PZ_CFIS,'KRK')
 1978 
                            AND NVL(PZ_COM_RES,'KRK') = NVL(V_PKT_PZ_COM_RES,'KRK')
 1979 
                            AND NVL(PZ_CAP_RES,'KRK') = NVL(V_PKT_PZ_CAP_RES,'KRK')
 1980 
                            AND NVL(PZ_IND_RES,'KRK') = NVL(V_PKT_PZ_IND_RES,'KRK')
 1981 
                            AND NVL(PZ_TEL1,'KRK') = NVL(V_PKT_PZ_TEL1,'KRK')
 1982 
                            AND NVL(PZ_TEL2,'KRK') = NVL(V_PKT_PZ_TEL2,'KRK')
 1983 
                            AND NVL(PZ_TSAN,'KRK') = NVL(V_PKT_PZ_TSAN,'KRK')
 1984 
                            AND NVL(PZ_ASL_APP,'KRK') = NVL(V_PKT_PZ_ASL_APP,'KRK')
 1985 
                            AND NVL(PZ_ASL_ASS,'KRK') = NVL(V_PKT_PZ_ASL_ASS,'KRK')
 1986 
                            AND NVL(PZ_REG_ASSI,'KRK') = NVL(V_PKT_PZ_REG_ASSI,'KRK')
 1987 
                            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'))
 1988 
                            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'))
 1989 
                            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'))
 1990 
                            AND NVL(PZ_CITT,'KRK') = NVL(V_PKT_PZ_CITT,'KRK')
 1991 
                            AND NVL(PZ_COM_DOM,'KRK') = NVL(V_PKT_PZ_COM_DOM,'KRK')
 1992 
                            AND NVL(PZ_CAP_DOM,'KRK') = NVL(V_PKT_PZ_CAP_DOM,'KRK')
 1993 
                            AND NVL(PZ_IND_DOM,'KRK') = NVL(V_PKT_PZ_IND_DOM,'KRK')
 1994 
                            AND NVL(PZ_STP,'KRK') = NVL(V_PKT_PZ_STP,'KRK')
 1995 
                            AND NVL(PZ_REG_RES,'KRK') = NVL(V_PKT_PZ_REG_RES,'KRK')
 1996 
                            AND NVL(PZ_MEDICO,'KRK') = NVL(V_PKT_PZ_MEDICO,'KRK')
 1997 
                            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'))
 1998 
                            AND NVL(PZ_CIRCOSCRIZIONE,'KRK') = NVL(V_PKT_PZ_CIRCOSCRIZIONE,'KRK')
 1999 
                            AND NVL(PZ_ZONA_SUBC,'KRK') = NVL(V_PKT_PZ_ZONA_SUBC,'KRK')
 2000 
                            AND NVL(PZ_QUARTIERE,'KRK') = NVL(V_PKT_PZ_QUARTIERE,'KRK');
 2001 
                            commit;
 2002 
                            -- ===================================================
 2003 
                            -- CASO C2C1 - IL RECORD MASTER PER L'OPERAZIONE
 2004 
                            --             DI MERGE RIMANE INALTERATO IN
 2005 
                            --             SA_PAZIENTE - HO GIA' AGGIORNATO
 2006 
                            --             PZ_CODICE_OLD PIU' SOPRA. POSSO
 2007 
                            --             ELIMINARLO DALLA TABELLA TEMPORANEA???
 2008 
                            --             !!!!!!!!!!!!!! NO !!!!!!!!!!!!!!!!!!
 2009 
                            --             DIFATTI, POTREBBERO PERMANERE ALTRI
 2010 
                            --             RECORD NON IDENTICI MA PUR SEMPRE IN
 2011 
                            --             ALIAS
 2012 
                            -- ===================================================
 2013 
                            -- 480
 2014 
                            -- ===============================================
 2015 
                            -- CASO C2C1 - ACCODO A CODA ALLINEAMENTO I
 2016 
                            --             RECORD PER CUI EFFETTUARE IL MERGE.
 2017 
                            -- ===============================================
 2018 
                            -- 490
 2019 
                            INSERT INTO CODA_ALLINEAMENTO_PAZIENTI
 2020 
                            (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,
 2021 
                            PZ_COM_RES,PZ_CAP_RES,PZ_IND_RES,PZ_TEL1,PZ_TEL2,PZ_TSAN,
 2022 
                            PZ_ASL_APP,PZ_ASL_ASS,PZ_REG_ASSI,PZ_DSCADSTP,PZ_DRILSTP,
 2023 
                            PZ_DSCADTESS,PZ_CITT,PZ_COM_DOM,PZ_CAP_DOM,PZ_IND_DOM,
 2024 
                            PZ_CODICE_OLD,PZ_STP,PZ_REG_RES,PZ_MEDICO,PZ_DT_MEDICO,
 2025 
                            PZ_CIRCOSCRIZIONE,PZ_ZONA_SUBC,PZ_QUARTIERE,PZ_DATA_ULT_AGG)
 2026 
                            (SELECT SEQ_CODA_ALL_PAZ.NextVal, AZIONE, pz_id, PZ_ID_PER_MERGE,CASISTICA,'N','N', pz_cogn, pz_nome, pz_dt_nas, pz_sesso, pz_com_nas, pz_cfis,
 2027 
                            pz_com_res, pz_cap_res, pz_ind_res, pz_tel1, pz_tel2, pz_tsan,
 2028 
                            pz_asl_app, pz_asl_ass, pz_reg_assi, pz_dscadstp, pz_drilstp,
 2029 
                            pz_dscadtess, pz_citt, pz_com_dom, pz_cap_dom, pz_ind_dom,
 2030 
                            pz_codice_old, pz_stp, pz_reg_res, pz_medico, pz_dt_medico,
 2031 
                            pz_circoscrizione, pz_zona_subc, pz_quartiere,
 2032 
                            pz_data_ult_agg FROM TEMP_PARK_SA_PAZIENTE WHERE
 2033 
                            CASISTICA = 'C2C1');
 2034 
                            --==> Annuncio di avere regolarmente svolto l'inserimento in coda di allineamento
 2035 
                            RIGA_LOG_RAFFRONTA (SYSDATE, 'RAFFRONTA_XMPI_ASSANA', STEP,'Loop 2: '||TO_CHAR(Contarighe_L2)||'/'||TO_CHAR(CONTA_RECORD_LOOP2), 'INSERITE RICHIESTA MERGE PER ' ||TO_CHAR(CONTAMERGE, '99999999')||' record SA_PAZIENTE relativi a Codice Fiscale '||V_PKT_PZ_CFIS||' COGNOME / NOME '||V_PKT_PZ_COGN||'/'||V_PKT_PZ_NOME);
 2036 
                            --==> Incremento contatore richieste merge
 2037 
                            CONTA_C2C1 := CONTA_C2C1 + CONTAMERGE;
 2038 
                            -- ===============================================
 2039 
                            -- CASO C2C1 - ELIMINO DA TABELLA TEMPORANEA TUTTI
 2040 
                            --             I RECORD ACCODATI.
 2041 
                            -- ===============================================                   
 2042 
                            -- 500
 2043 
                            DELETE FROM TEMP_PARK_SA_PAZIENTE WHERE
 2044 
                            CASISTICA = 'C2C1';
 2045 
                            commit;                    
 2046 
                                                    
 2047 
                        end if; -- 505
 2048 
                        -- ==============================================
 2049 
                        -- MARCO il record corrente COME "TRATTATO"
 2050 
                        -- il che lo esclude dal loop di caccia al merge
 2051 
                        -- ==============================================
 2052 
                        -- 506
 2053 
                        UPDATE TEMP_PARK_SA_PAZIENTE
 2054 
                        SET TRATTATO = 'S'
 2055 
                        WHERE PZ_ID = V_PKT_PZ_ID;
 2056 
                        COMMIT;
 2057 
                        --> =============================================
 2058 
                        --> In C_CONTA_PARK_SAPAZ, inizialmente popolata
 2059 
                        --> con almeno due record, e rimasto un solo record??
 2060 
                        --> Si tratta del residuo di una MERGE, da eliminare.
 2061 
                        -- ==============================================
 2062 
                        OPEN C_CONTA_PARK_SAPAZ;
 2063 
                        FETCH C_CONTA_PARK_SAPAZ INTO CONTA;
 2064 
                        CLOSE C_CONTA_PARK_SAPAZ;
 2065 
                       
 2066 
                        If CONTA = 1 then
 2067 
                            -- ==============================================
 2068 
                            -- L'unico record residuo della MERGE ha esaurito
 2069 
                            -- la sua funzione: posso eliminarlo
 2070 
                            -- ==============================================
 2071 
                            -- 515
 2072 
                            STRINGA_SQL := 'TRUNCATE TABLE TEMP_PARK_SA_PAZIENTE';
 2073 
                            execute immediate STRINGA_SQL;   
 2074 
                   
 2075 
                            COMMIT;   
 2076 
                        End if;   
 2077 
 
 2078 
                        -- ==============================================
 2079 
                        -- PASSO AD ALTRI RECORD (SE RIMASTI) - al limite
 2080 
                        -- esco dal loop - devo vedere se fare altri merge.
 2081 
                        -- ==============================================
 2082 
                    end loop; -- 516
 2083 
                             
 2084 
                    if C_TEMP_PARK_SA_PAZIENTE_1%isopen then
 2085 
                        CLOSE C_TEMP_PARK_SA_PAZIENTE_1;
 2086 
                    end if;    
 2087 
                                       
 2088 
                    -- Arrivo qui anche se di merge non c'e traccia,                          
 2089 
                    -- oppure arrivo qui dopo avere trattato
 2090 
                    -- (se mai ne esistono) i casi per cui c'e da proporre
 2091 
                    -- una MERGE.
 2092 
                    -- Quello che EVENTUALMENTE resta in TEMP_PARK_SA_PAZIENTE
 2093 
                    -- e da sottoporre ad un'analisi per cercare gli ALIAS.
 2094 
                    -- Non puo essere che ci sia UN solo record. Un record
 2095 
                    -- isolato si crea solo in caso di MERGE, ed in tal caso
 2096 
                    -- e stato eliminato nel loop che precede.
 2097 
                       
 2098 
                    -- 518      
 2099 
                    OPEN C_CONTA_PARK_SAPAZ;
 2100 
                    FETCH C_CONTA_PARK_SAPAZ INTO CONTA;
 2101 
                    CLOSE C_CONTA_PARK_SAPAZ;
 2102 
                            
 2103 
                    If CONTA > 0 then -- 520
 2104 
                        -- ==============================================
 2105 
                        -- Cio che resta e identico sulla base del
 2106 
                        -- criterio di alias. Devo inserire.
 2107 
                        -- VERIFICHIAMO CHE NON SIANO GIA' IN SI_ALIAS
 2108 
                        -- SE NON SONO IN SI_ALIAS, CE LI DEVO METTERE IO
 2109 
                        -- ==============================================
 2110 
                        UPDATE TEMP_PARK_SA_PAZIENTE set TRATTATO ='N';
 2111 
                        COMMIT;
 2112 
                           
 2113 
                        LOOP -- 530
 2114 
                            -- 540
 2115 
                            OPEN C_TEMP_PARK_SA_PAZIENTE_1;     
 2116 
                            fetch C_TEMP_PARK_SA_PAZIENTE_1 into V_PKT_PZ_ID,V_PKT_PZ_COGN,V_PKT_PZ_NOME,V_PKT_PZ_DT_NAS,V_PKT_PZ_SESSO,V_PKT_PZ_COM_NAS,V_PKT_PZ_CFIS,V_PKT_PZ_COM_RES,V_PKT_PZ_CAP_RES,V_PKT_PZ_IND_RES,V_PKT_PZ_TEL1,V_PKT_PZ_TEL2,V_PKT_PZ_TSAN,V_PKT_PZ_ASL_APP,V_PKT_PZ_ASL_ASS,V_PKT_PZ_REG_ASSI,V_PKT_PZ_DSCADSTP,V_PKT_PZ_DRILSTP,V_PKT_PZ_DSCADTESS,V_PKT_PZ_CITT,V_PKT_PZ_COM_DOM,V_PKT_PZ_CAP_DOM,V_PKT_PZ_IND_DOM,V_PKT_PZ_CODICE_OLD,V_PKT_PZ_STP,V_PKT_PZ_REG_RES,V_PKT_PZ_MEDICO,V_PKT_PZ_DT_MEDICO,V_PKT_PZ_CIRCOSCRIZIONE,V_PKT_PZ_ZONA_SUBC,V_PKT_PZ_QUARTIERE,V_PKT_PZ_DATA_ULT_AGG;
 2117 
                            exit when C_TEMP_PARK_SA_PAZIENTE_1%notfound;
 2118 
                            CLOSE C_TEMP_PARK_SA_PAZIENTE_1; -- 550
 2119 
                            -- 560                                           
 2120 
                            open C_CERCA_IN_SI_ALIAS;
 2121 
                            fetch C_CERCA_IN_SI_ALIAS into CONTA_ALIAS_GIA_ESISTENTI;
 2122 
                            close C_CERCA_IN_SI_ALIAS;
 2123 
                               
 2124 
                            -- se esiste gia una entry in SI_ALIAS per questo record, esso
 2125 
                            -- non e da trattare
 2126 
                            If CONTA_ALIAS_GIA_ESISTENTI != 0 then -- 570
 2127 
                                delete from TEMP_PARK_SA_PAZIENTE where PZ_ID = V_PKT_PZ_ID; -- 580
 2128 
                            End if; -- 590
 2129 
                             
 2130 
                            -- ==============================================
 2131 
                            -- MARCO il record corrente COME "TRATTATO"
 2132 
                            -- il che lo esclude dal loop di caccia al merge
 2133 
                            -- ==============================================
 2134 
                            -- 506
 2135 
                            UPDATE TEMP_PARK_SA_PAZIENTE
 2136 
                            SET TRATTATO = 'S'
 2137 
                            WHERE PZ_ID = V_PKT_PZ_ID;
 2138 
                            COMMIT;
 2139 
                                      
 2140 
                        END LOOP; -- 600
 2141 
                           
 2142 
                        if C_TEMP_PARK_SA_PAZIENTE_1%isopen then
 2143 
                            CLOSE C_TEMP_PARK_SA_PAZIENTE_1;
 2144 
                        end if; 
 2145 
                             
 2146 
                          
 2147 
                        --> =============================================
 2148 
                        --> Dopo che ho eliminato le richieste di alias
 2149 
                        --> gia presenti in SI_ALIAS, in C_CONTA_PARK_SAPAZ
 2150 
                        --> sono rimasti record???
 2151 
                        --> In caso affermativo, si tratta di record
 2152 
                        --> identici tra loro almeno al livello dei campi
 2153 
                        --> del criterio di alias, non presenti in SI_ALIAS.
 2154 
                        --> *>DEVO INTRODURLI IO IN SI_ALIAS<*
 2155 
                        --> =============================================
 2156 
                        -- 610
 2157 
                        OPEN C_CONTA_PARK_SAPAZ;
 2158 
                        FETCH C_CONTA_PARK_SAPAZ INTO CONTA2;
 2159 
                        CLOSE C_CONTA_PARK_SAPAZ;
 2160 
                            
 2161 
                        If CONTA2 > 0 then -- 620
 2162 
                            -- ==============================================
 2163 
                            -- CASO C2C2 - INSERT IMMEDIATO DI PROPOSTE
 2164 
                            --             DI ALIASING IN SPECIFICHE TABELLE
 2165 
                            -- ==============================================
 2166 
                            -- 630
 2167 
                            --> rilevo il record SA_PAZIENTE piu vecchio che fungera da MASTER
 2168 
                            OPEN C_TEMP_PARK_SA_PAZIENTE_1;
 2169 
                            fetch C_TEMP_PARK_SA_PAZIENTE_1 into V_PKT_PZ_ID,V_PKT_PZ_COGN,V_PKT_PZ_NOME,V_PKT_PZ_DT_NAS,V_PKT_PZ_SESSO,V_PKT_PZ_COM_NAS,V_PKT_PZ_CFIS,V_PKT_PZ_COM_RES,V_PKT_PZ_CAP_RES,V_PKT_PZ_IND_RES,V_PKT_PZ_TEL1,V_PKT_PZ_TEL2,V_PKT_PZ_TSAN,V_PKT_PZ_ASL_APP,V_PKT_PZ_ASL_ASS,V_PKT_PZ_REG_ASSI,V_PKT_PZ_DSCADSTP,V_PKT_PZ_DRILSTP,V_PKT_PZ_DSCADTESS,V_PKT_PZ_CITT,V_PKT_PZ_COM_DOM,V_PKT_PZ_CAP_DOM,V_PKT_PZ_IND_DOM,V_PKT_PZ_CODICE_OLD,V_PKT_PZ_STP,V_PKT_PZ_REG_RES,V_PKT_PZ_MEDICO,V_PKT_PZ_DT_MEDICO,V_PKT_PZ_CIRCOSCRIZIONE,V_PKT_PZ_ZONA_SUBC,V_PKT_PZ_QUARTIERE,V_PKT_PZ_DATA_ULT_AGG;
 2170 
                            CLOSE C_TEMP_PARK_SA_PAZIENTE_1;
 2171 
                            -- 640
 2172 
                            --> Insert in SI_ALIAS del master
 2173 
                            INSERT INTO SI_ALIAS(AL_MASTER, AL_DETAIL, AL_CRITERIO, AL_EXEC, AL_ERR, AL_LOOKUP, AL_UT_INS, AL_DT_INS)
 2174 
                            VALUES(null, V_PKT_PZ_ID, null, 'N', 'N', 'SA_PAZIENTE', 'CARISSIMI', to_date(to_char(trunc(SYSDATE),'dd/mm/yyyy')||' 11.11.11','dd/mm/yyyy hh24.mi.ss'));
 2175 
                            -- 650
 2176 
                            --> Insert in SI_ALIAS degli alias
 2177 
                            --STRINGA_SQL := 'INSERT INTO SI_ALIAS(AL_MASTER, AL_DETAIL, AL_CRITERIO, AL_EXEC, AL_ERR, AL_LOOKUP, AL_UT_INS, AL_DT_INS) ';
 2178 
                            --STRINGA_SQL := STRINGA_SQL ||'(select '||chr(39)||V_PKT_PZ_ID||CHR(39)||', PZ_ID, 1, '||CHR(39)||'N'||CHR(39)||', '||CHR(39)||'N'||CHR(39)||', '||CHR(39)||'SA_PAZIENTE'||CHR(39)||', '||CHR(39)||'CARISSIMI'||CHR(39)||', to_date('||CHR(39)||to_char(trunc(SYSDATE),'dd/mm/yyyy')||' 11.11.11'||CHR(39)||','||CHR(39)||'dd/mm/yyyy hh24.mi.ss'||CHR(39)||') FROM TEMP_PARK_SA_PAZIENTE where PZ_ID != '||CHR(39)||V_PKT_PZ_ID||CHR(39)||');';
 2179 
 
 2180 
                            INSERT INTO SI_ALIAS(AL_MASTER, AL_DETAIL, AL_CRITERIO, AL_EXEC, AL_ERR, AL_LOOKUP, AL_UT_INS, AL_DT_INS)
 2181 
                            select V_PKT_PZ_ID, PZ_ID, 1, 'N', 'N', 'SA_PAZIENTE', 'CARISSIMI', to_date(to_char(trunc(SYSDATE),'dd/mm/yyyy')||' 11.11.11','dd/mm/yyyy hh24.mi.ss') FROM TEMP_PARK_SA_PAZIENTE where PZ_ID != V_PKT_PZ_ID;
 2182 
 
 2183 
                             
 2184 
                            --execute immediate  STRINGA_SQL;
 2185 
                            COMMIT
 2186 
                            -- 660                     
 2187 
                            --==> Incremento contatore richieste alias
 2188 
                            CONTA_C2C2 := CONTA_C2C2 + CONTA2;
 2189 
                        end if; -- 670
 2190 
                    end if; -- 680
 2191 
                       
 2192 
 
 2193 
                    --==> Arrivo qui sotto quando ho finito
 2194 
                    --==> l'esame di tutti i candidati inizialmente
 2195 
                    --==> posizionati in TEMP_PARK_SA_PAZIENTE sulla base
 2196 
                    --==> di corrispondenza con record C_ASSANA_C2 corrente
 2197 
                      
 2198 
                    --=========> Le seguenti fanno riferimento
 2199 
                    --=========> al momento in cui ho esaurito i record
 2200 
                    --=========> di temp_park_sa_paziente ed esco dal
 2201 
                    --=========> loop su condizione %notfound
 2202 
                    if C_TEMP_PARK_SA_PAZIENTE_1%isopen then
 2203 
                        CLOSE C_TEMP_PARK_SA_PAZIENTE_1;
 2204 
                    end if;           
 2205 
                   
 2206 
                       
 2207 
                end if; -- 700    
 2208 
                -->> ENDIF DEL CONTEGGIO DI CONTA_SAPAZ
 2209 
           
 2210 
                commit;
 2211 
               
 2212 
            end if; -- 710
 2213 
                                                      
 2214 
            exception -- 720
 2215 
            when others then
 2216 
                ERR699 := ERR699 + 1; -- ECCEZIONE ORACLE
 2217 
                RIGA_LOG_RAFFRONTA (SYSDATE, 'RAFFRONTA_XMPI_ASSANA', STEP, SQLCODE, substr(SQLERRM,1,100)||' Codice Fiscale '||r_s_ASSANA_C2.pz_cfis||' COGNOME / NOME '||r_s_ASSANA_C2.pz_cogn||'/'||r_s_ASSANA_C2.pz_nome);
 2218 
                       
 2219 
        END; -- 730       
 2220 
        
 2221 
    end loop; -- 740
 2222 
         
 2223 
    close C_ASSANA_C2;
 2224 
    --=========================== END LOOP C2
 2225 
    --=========================== END LOOP C2
 2226 
    --=========================== END LOOP C2
 2227 
    --=========================== END LOOP C2
 2228 
    --=========================== END LOOP C2
 2229 
    --=========================== END LOOP C2  
 2230 
 
 2231 
    commit;
 2232 
       
 2233 
 
 2234 
    --> =============================================
 2235 
    --> RIPULIAMO CODA_ALLINEAMENTO_PAZIENTI
 2236 
    --> DALLE FALSE INSERT, OVVERO DALLE RICHIESTE
 2237 
    --> DI INSERT CHE RE-INSERIREBBERO LO STESSO SOGGETTO
 2238 
    --> =============================================   
 2239 
    RIGA_LOG_RAFFRONTA (SYSDATE, 'RAFFRONTA_XMPI_ASSANA', 'PULIZIA CODA ALLINEAMENTO',null, 'AVVIATA ELIMINAZIONE RICHIESTE INSERT ININFLUENTI');
 2240 
    --> =============================================
 2241 
    --> CONTA NUMERO INSERT ELIMINABILI
 2242 
    --> =============================================
 2243 
     
 2244 
    OPEN c_CONTA_INS_ELIMINABILI;
 2245 
    FETCH c_CONTA_INS_ELIMINABILI INTO CONTA_INS_ELIMINABILI;
 2246 
    CLOSE c_CONTA_INS_ELIMINABILI;
 2247 
 
 2248 
   RIGA_LOG_RAFFRONTA (SYSDATE, 'RAFFRONTA_XMPI_ASSANA', 'PULIZIA CODA ALLINEAMENTO',null, 'LOCALIZZATE '||to_char(CONTA_INS_ELIMINABILI)||' RICHIESTE INSERT ININFLUENTI');
 2249 
    
 2250 
DELETE FROM CODA_ALLINEAMENTO_PAZIENTI where PROGRESSIVO IN
 2251 
(Select DUE.progressivo
 2252 
 from CODA_ALLINEAMENTO_PAZIENTI DUE, sa_paziente
 2253 
where DUE.AZIONE = 'INS'
 2254 
and LTRIM (RTRIM (DUE.pz_cogn))
 2255 
       || '-'
 2256 
       || LTRIM (RTRIM (DUE.pz_nome))
 2257 
       || '-'
 2258 
       || LTRIM (RTRIM (DUE.pz_sesso))
 2259 
       || '-'
 2260 
       || DUE.pz_com_nas
 2261 
       || '-'
 2262 
       || TO_CHAR (DUE.pz_dt_nas, 'DD/MM/YYYY')
 2263 
       || '-'
 2264 
       || DUE.pz_cfis =
 2265 
       LTRIM (RTRIM (SA_PAZIENTE.pz_cogn))
 2266 
       || '-'
 2267 
       || LTRIM (RTRIM (SA_PAZIENTE.pz_nome))
 2268 
       || '-'
 2269 
       || LTRIM (RTRIM (SA_PAZIENTE.pz_sesso))
 2270 
       || '-'
 2271 
       || SA_PAZIENTE.pz_com_nas
 2272 
       || '-'
 2273 
       || TO_CHAR (SA_PAZIENTE.pz_dt_nas, 'DD/MM/YYYY')
 2274 
       || '-'
 2275 
       || SA_PAZIENTE.pz_cfis);
 2276 
 COMMIT;   
 2277 
   
 2278 
    RIGA_LOG_RAFFRONTA (SYSDATE, 'RAFFRONTA_XMPI_ASSANA', 'PULIZIA CODA ALLINEAMENTO',null, 'ULTIMATA ELIMINAZIONE RICHIESTE INSERT ININFLUENTI');
 2279 
 
 2280 
 
 2281 
 
 2282 
        
 2283 
    --> =============================================
 2284 
    --> Tra i record XMPI non agganciati ad ASSANA,
 2285 
    --> esistono record in condizione di master
 2286 
    --> + alias? Di questi, basta solo il conteggio.
 2287 
    --> =============================================
 2288 
    -- 750                  
 2289 
    OPEN C_CONTA_C2D;
 2290 
    FETCH C_CONTA_C2D INTO CONTA_C2D;
 2291 
    CLOSE C_CONTA_C2D;
 2292 
       
 2293 
    --> =============================================
 2294 
    --> CONTA CASISTICHE A CONSUNTIVO
 2295 
    --> SULLA BASE DEL CONTENUTO DI
 2296 
    --> CODA_ALLINEAMENTO_PAZIENTI
 2297 
    --> =============================================
 2298 
    CASISTICA_DA_CONTEGGIARE := 'C2A';
 2299 
     
 2300 
    OPEN c_CONTA_CASISTICHE;
 2301 
    FETCH c_CONTA_CASISTICHE INTO CONTA_C2A;
 2302 
    CLOSE c_CONTA_CASISTICHE;  
 2303 
   
 2304 
    --> =============================================
 2305 
    --> CONTA CASISTICHE A CONSUNTIVO
 2306 
    --> SULLA BASE DEL CONTENUTO DI
 2307 
    --> CODA_ALLINEAMENTO_PAZIENTI
 2308 
    --> =============================================
 2309 
    CASISTICA_DA_CONTEGGIARE := 'C2B1';
 2310 
     
 2311 
    OPEN c_CONTA_CASISTICHE;
 2312 
    FETCH c_CONTA_CASISTICHE INTO CONTA_C2B1;
 2313 
    CLOSE c_CONTA_CASISTICHE;     
 2314 
   
 2315 
    --> =============================================
 2316 
    --> CONTA CASISTICHE A CONSUNTIVO
 2317 
    --> SULLA BASE DEL CONTENUTO DI
 2318 
    --> CODA_ALLINEAMENTO_PAZIENTI
 2319 
    --> =============================================
 2320 
    CASISTICA_DA_CONTEGGIARE := 'C2C1';
 2321 
     
 2322 
    OPEN c_CONTA_CASISTICHE;
 2323 
    FETCH c_CONTA_CASISTICHE INTO CONTA_RICHIESTE_MERGE;
 2324 
    CLOSE c_CONTA_CASISTICHE;     
 2325 
    
 2326 
    --> =============================================
 2327 
    --> CONTA NUMERO MASTER INSERITI IN SI_ALIAS
 2328 
    --> =============================================
 2329 
     
 2330 
    OPEN c_CONTA_MASTER_INSERITI;
 2331 
    FETCH c_CONTA_MASTER_INSERITI INTO CONTA_MASTER_INSERITI;
 2332 
    CLOSE c_CONTA_MASTER_INSERITI;   
 2333 
    
 2334 
    --> =============================================
 2335 
    --> CONTA NUMERO ALIAS INSERITI IN SI_ALIAS
 2336 
    --> =============================================
 2337 
     
 2338 
    OPEN c_CONTA_ALIAS_INSERITI;
 2339 
    FETCH c_CONTA_ALIAS_INSERITI INTO CONTA_ALIAS_INSERITI;
 2340 
    CLOSE c_CONTA_ALIAS_INSERITI;   
 2341 
 
 2342 
                      
 2343 
   
 2344 
 
 2345 
    -----------
 2346 
    -- Qualifico le righe dello step consuntivo
 2347 
    -----------
 2348 
    
 2349 
    STEP := 'SINTESI RIASSUNTIVA DEL '|| to_char(SYSDATE, 'dd/mm/yyyy')||' ORE ' || to_char(SYSDATE, 'hh24:mi:ss');
 2350 
         
 2351 
    RIGA_LOG_RAFFRONTA (SYSDATE, 'RAFFRONTA_XMPI_ASSANA', STEP, null, '=========================================');
 2352 
    RIGA_LOG_RAFFRONTA (SYSDATE, 'RAFFRONTA_XMPI_ASSANA', STEP, null, 'COMPENDIO DELLE CASISTICHE DA CONTEGGIARE');
 2353 
    RIGA_LOG_RAFFRONTA (SYSDATE, 'RAFFRONTA_XMPI_ASSANA', STEP, null, '=========================================');
 2354 
    RIGA_LOG_RAFFRONTA (SYSDATE, 'RAFFRONTA_XMPI_ASSANA', STEP, null,TO_CHAR(ERR334,'9999999') ||' PZ_CODICE_OLD INESISTENTE IN ASSANA, COMUNQUE LASCIATO INTATTO IN CODA');
 2355 
    RIGA_LOG_RAFFRONTA (SYSDATE, 'RAFFRONTA_XMPI_ASSANA', STEP, null,TO_CHAR(CONTAREC_SAPAZ,'9999999') ||' TOTALE RECORD SA_PAZIENTE');
 2356 
    RIGA_LOG_RAFFRONTA (SYSDATE, 'RAFFRONTA_XMPI_ASSANA', STEP, null,TO_CHAR(CONTA_RECORD_LOOP1,'9999999') ||' RECORD SA_PAZIENTE DA TRATTARE IN LOOP C1');
 2357 
    RIGA_LOG_RAFFRONTA (SYSDATE, 'RAFFRONTA_XMPI_ASSANA', STEP, null,TO_CHAR(CONTARIGHE_L1,'9999999') ||' RECORD SA_PAZIENTE TRATTATI IN LOOP C1');
 2358 
    RIGA_LOG_RAFFRONTA (SYSDATE, 'RAFFRONTA_XMPI_ASSANA', STEP, null,'  =>> '||TO_CHAR(CONTA_C1A,'9999999') ||' casi C1A - record ASSANA piu aggiornato del relativo record XMPI - accodata richiesta aggiornamento');
 2359 
    RIGA_LOG_RAFFRONTA (SYSDATE, 'RAFFRONTA_XMPI_ASSANA', STEP, null,'  =====>> DI CUI '||TO_CHAR(CONTA_UPD_ELIMINABILI,'9999999') ||' UPDATE PRIVI DI SIGNIFICATO ELIMINATI (TUTTI I CAMPI IDENTICI ANCHE A FRONTE DI RECORD ASSANA  PIU'' AGGIORNATO)');
 2360 
    RIGA_LOG_RAFFRONTA (SYSDATE, 'RAFFRONTA_XMPI_ASSANA', STEP, null,'  =====>> RESTANO '||TO_CHAR(CONTA_C1A-CONTA_UPD_ELIMINABILI,'9999999') ||' UPDATE SIGNIFICATIVI');
 2361 
    RIGA_LOG_RAFFRONTA (SYSDATE, 'RAFFRONTA_XMPI_ASSANA', STEP, null,'  =>> '||TO_CHAR(CONTA_C1B,'9999999') ||' casi C1B - record XMPI piu aggiornato del relativo record ASSANA - conteggiato');
 2362 
    RIGA_LOG_RAFFRONTA (SYSDATE, 'RAFFRONTA_XMPI_ASSANA', STEP, null,TO_CHAR(CONTAREC_ASSANA,'9999999') ||' TOTALE RECORD ASSANA');
 2363 
    RIGA_LOG_RAFFRONTA (SYSDATE, 'RAFFRONTA_XMPI_ASSANA', STEP, null,TO_CHAR(CONTA_RECORD_LOOP2,'9999999') ||' RECORD ASSANA DA TRATTARE IN LOOP C2');
 2364 
    RIGA_LOG_RAFFRONTA (SYSDATE, 'RAFFRONTA_XMPI_ASSANA', STEP, null,TO_CHAR(CONTARIGHE_L2,'9999999') ||' RECORD ASSANA TRATTATI IN LOOP C2');
 2365 
    RIGA_LOG_RAFFRONTA (SYSDATE, 'RAFFRONTA_XMPI_ASSANA', STEP, null,'  =>> '||TO_CHAR(CONTA_C2A,'9999999') ||' casi C2A - record ASSANA inesistente in XMPI - accodata richiesta inserimento');
 2366 
    RIGA_LOG_RAFFRONTA (SYSDATE, 'RAFFRONTA_XMPI_ASSANA', STEP, null,'  =>> '||TO_CHAR(CONTA_C2B1,'9999999') ||' casi C2B1 - identificato singolo record XMPI corrispondente a record ASSANA e meno aggiornato - accodata richiesta aggiornamento generale');
 2367 
    RIGA_LOG_RAFFRONTA (SYSDATE, 'RAFFRONTA_XMPI_ASSANA', STEP, null,'  =>> '||TO_CHAR(CONTA_C2B2,'9999999') ||' casi C2B2 - identificato singolo record XMPI corrispondente a record ASSANA e piu aggiornato - valorizzato campo ID ASSANA');
 2368 
    RIGA_LOG_RAFFRONTA (SYSDATE, 'RAFFRONTA_XMPI_ASSANA', STEP, null,'  =>> '||TO_CHAR(CONTA_C2C1,'9999999') ||' casi C2C1 - identificati piu record XMPI identici corrispondenti a record ASSANA - valorizzato campo ID ASSANA e accodata richiesta merge');
 2369 
    RIGA_LOG_RAFFRONTA (SYSDATE, 'RAFFRONTA_XMPI_ASSANA', STEP, null,'  =>> '||TO_CHAR(CONTA_C2C2,'9999999') ||' casi C2C2 - identificato piu record XMPI non identici corrispondenti a record ASSANA - valorizzato campo ID ASSANA e inserite proposte di ALIAS');
 2370 
    RIGA_LOG_RAFFRONTA (SYSDATE, 'RAFFRONTA_XMPI_ASSANA', STEP, null,TO_CHAR(ERR333,'9999999') ||' RECORD ASSANA NON IDONEI A RIALLINEAMENTO');
 2371 
    RIGA_LOG_RAFFRONTA (SYSDATE, 'RAFFRONTA_XMPI_ASSANA', STEP, null,TO_CHAR(CONTA_INS_ELIMINABILI,'9999999') ||' INSERT DI SOGGETTI GIA'' ESISTENTI ELIMINATE');
 2372 
    RIGA_LOG_RAFFRONTA (SYSDATE, 'RAFFRONTA_XMPI_ASSANA', STEP, null,TO_CHAR(CONTA_C2D,'9999999') ||' casi C2D - numero cumulativo dei record XMPI in potenziale rapporto master/alias (comprese proposte di alias inserite da questa procedura)');
 2373 
    RIGA_LOG_RAFFRONTA (SYSDATE, 'RAFFRONTA_XMPI_ASSANA', STEP, null,TO_CHAR(CONTA_RICHIESTE_MERGE,'9999999') ||' casi C2C1 - Inserita richiesta MERGE per record XMPI sganciati da ASSANA totalmente identici tra loro');
 2374 
    RIGA_LOG_RAFFRONTA (SYSDATE, 'RAFFRONTA_XMPI_ASSANA', STEP, null,TO_CHAR(CONTA_MASTER_INSERITI,'9999999') ||' casi C2C2 - Inserito master per record XMPI sganciati da ASSANA parzialmente identici tra loro');
 2375 
    RIGA_LOG_RAFFRONTA (SYSDATE, 'RAFFRONTA_XMPI_ASSANA', STEP, null,TO_CHAR(CONTA_ALIAS_INSERITI,'9999999') ||' casi C2C2 - Inseriti potenziali alias per record XMPI sganciati da ASSANA parzialmente identici tra loro');
 2376 
    RIGA_LOG_RAFFRONTA (SYSDATE, 'RAFFRONTA_XMPI_ASSANA', STEP, null, '======================================================');
 2377 
    RIGA_LOG_RAFFRONTA (SYSDATE, 'RAFFRONTA_XMPI_ASSANA', STEP, null, 'COMPENDIO DELLE DIVERSE TIPOLOGIE DI ERRORE RISCONTRATE');
 2378 
    RIGA_LOG_RAFFRONTA (SYSDATE, 'RAFFRONTA_XMPI_ASSANA', STEP, null, '======================================================');
 2379 
    RIGA_LOG_RAFFRONTA (SYSDATE, 'RAFFRONTA_XMPI_ASSANA', STEP, null,TO_CHAR(ERR661,'9999999') ||' FORZATA A 100 LA CITTADINANZA VUOTA');
 2380 
    RIGA_LOG_RAFFRONTA (SYSDATE, 'RAFFRONTA_XMPI_ASSANA', STEP, null,TO_CHAR(ERR675,'9999999') ||' CODICE CITTADINANZA INESISTENTE');
 2381 
    RIGA_LOG_RAFFRONTA (SYSDATE, 'RAFFRONTA_XMPI_ASSANA', STEP, null,TO_CHAR(ERR662,'9999999') ||' CODICE ASL DI APPARTENENZA INESISTENTE');
 2382 
    RIGA_LOG_RAFFRONTA (SYSDATE, 'RAFFRONTA_XMPI_ASSANA', STEP, null,TO_CHAR(ERR663,'9999999') ||' CODICE ASL DI ASSISTENZA INESISTENTE');
 2383 
    RIGA_LOG_RAFFRONTA (SYSDATE, 'RAFFRONTA_XMPI_ASSANA', STEP, null,TO_CHAR(ERR664,'9999999') ||' COMUNE DI NASCITA NULLO');
 2384 
    RIGA_LOG_RAFFRONTA (SYSDATE, 'RAFFRONTA_XMPI_ASSANA', STEP, null,TO_CHAR(ERR665,'9999999') ||' CODICE COMUNE DI NASCITA INESISTENTE');
 2385 
    RIGA_LOG_RAFFRONTA (SYSDATE, 'RAFFRONTA_XMPI_ASSANA', STEP, null,TO_CHAR(ERR666,'9999999') ||' CODICE COMUNE DI RESIDENZA NULLO');
 2386 
    RIGA_LOG_RAFFRONTA (SYSDATE, 'RAFFRONTA_XMPI_ASSANA', STEP, null,TO_CHAR(ERR667,'9999999') ||' CODICE COMUNE DI RESIDENZA INESISTENTE');
 2387 
    RIGA_LOG_RAFFRONTA (SYSDATE, 'RAFFRONTA_XMPI_ASSANA', STEP, null,TO_CHAR(ERR681,'9999999') ||' CODICE COMUNE DI DOMICILIO NULLO');
 2388 
    RIGA_LOG_RAFFRONTA (SYSDATE, 'RAFFRONTA_XMPI_ASSANA', STEP, null,TO_CHAR(ERR682,'9999999') ||' CODICE COMUNE DI DOMICILIO INESISTENTE');
 2389 
    RIGA_LOG_RAFFRONTA (SYSDATE, 'RAFFRONTA_XMPI_ASSANA', STEP, null,TO_CHAR(ERR668,'9999999') ||' COGNOME NULLO');
 2390 
    RIGA_LOG_RAFFRONTA (SYSDATE, 'RAFFRONTA_XMPI_ASSANA', STEP, null,TO_CHAR(ERR669,'9999999') ||' NOME NULLO');
 2391 
    RIGA_LOG_RAFFRONTA (SYSDATE, 'RAFFRONTA_XMPI_ASSANA', STEP, null,TO_CHAR(ERR670,'9999999') ||' DATA NASCITA NULLA');
 2392 
    RIGA_LOG_RAFFRONTA (SYSDATE, 'RAFFRONTA_XMPI_ASSANA', STEP, null,TO_CHAR(ERR671,'9999999') ||' SESSO NULLO');
 2393 
    RIGA_LOG_RAFFRONTA (SYSDATE, 'RAFFRONTA_XMPI_ASSANA', STEP, null,TO_CHAR(ERR672,'9999999') ||' CODICE FISCALE NULLO');
 2394 
    RIGA_LOG_RAFFRONTA (SYSDATE, 'RAFFRONTA_XMPI_ASSANA', STEP, null,TO_CHAR(ERR690,'9999999') ||' INSERITA SCELTA MEDICO DI BASE');
 2395 
    RIGA_LOG_RAFFRONTA (SYSDATE, 'RAFFRONTA_XMPI_ASSANA', STEP, null,TO_CHAR(ERR673,'9999999') ||' IL PAZIENTE NON HA UN MEDICO ASSOCIATO');
 2396 
    RIGA_LOG_RAFFRONTA (SYSDATE, 'RAFFRONTA_XMPI_ASSANA', STEP, null,TO_CHAR(ERR674,'9999999') ||' FORZATO A NULL IL CODICE MEDICO ASSOCIATO INESISTENTE');
 2397 
    RIGA_LOG_RAFFRONTA (SYSDATE, 'RAFFRONTA_XMPI_ASSANA', STEP, null,TO_CHAR(ERR676,'9999999') ||' SOSTITUITA ASL DI APPARTENENZA NULLA CON ASL COMUNE RESIDENZA');
 2398 
    RIGA_LOG_RAFFRONTA (SYSDATE, 'RAFFRONTA_XMPI_ASSANA', STEP, null,TO_CHAR(ERR677,'9999999') ||' SOSTITUITA ASL DI ASSISTENZA NULLA CON ASL APPARTENENZA O ASL COMUNE');
 2399 
    RIGA_LOG_RAFFRONTA (SYSDATE, 'RAFFRONTA_XMPI_ASSANA', STEP, null,TO_CHAR(ERR678,'9999999') ||' CODICE COMUNE RESIDENZA ESISTENTE, MA SENZA ASL ASSOCIATA');
 2400 
    RIGA_LOG_RAFFRONTA (SYSDATE, 'RAFFRONTA_XMPI_ASSANA', STEP, null,TO_CHAR(ERR683,'9999999') ||' CODICE COMUNE DOMICILIO ESISTENTE, MA SENZA ASL ASSOCIATA');
 2401 
    RIGA_LOG_RAFFRONTA (SYSDATE, 'RAFFRONTA_XMPI_ASSANA', STEP, null,TO_CHAR(ERR679,'9999999') ||' ASL DI APPARTENZA NULLA E IMPOSSIBILE DA SOSTITUIRE');
 2402 
    RIGA_LOG_RAFFRONTA (SYSDATE, 'RAFFRONTA_XMPI_ASSANA', STEP, null,TO_CHAR(ERR680,'9999999') ||' ASL DI ASSISTENZA NULLA E IMPOSSIBILE DA SOSTITUIRE');
 2403 
    RIGA_LOG_RAFFRONTA (SYSDATE, 'RAFFRONTA_XMPI_ASSANA', STEP, null,TO_CHAR(ERR684,'9999999') ||' CODICE ASL APPARTENZA ASSENTE, MA CODICE STP NON NULLO - INSERITA ASL APPARTENZA 080105');
 2404 
    RIGA_LOG_RAFFRONTA (SYSDATE, 'RAFFRONTA_XMPI_ASSANA', STEP, null,TO_CHAR(ERR685,'9999999') ||' CODICE ASL ASSISTENZA ASSENTE, MA CODICE STP NON NULLO - INSERITA ASL ASSISTENZA 080105');
 2405 
    RIGA_LOG_RAFFRONTA (SYSDATE, 'RAFFRONTA_XMPI_ASSANA', STEP, null,TO_CHAR(ERR686,'9999999') ||' CODICE REGIONE RESIDENZA 999 SOSTITUITO CON CODICE REGIONE 500');
 2406 
    RIGA_LOG_RAFFRONTA (SYSDATE, 'RAFFRONTA_XMPI_ASSANA', STEP, null,TO_CHAR(ERR687,'9999999') ||' CODICE REGIONE ASSISTENZA 999 SOSTITUITO CON CODICE REGIONE 500');
 2407 
    RIGA_LOG_RAFFRONTA (SYSDATE, 'RAFFRONTA_XMPI_ASSANA', STEP, null,TO_CHAR(ERR688,'9999999') ||' CODICE REGIONE RESIDENZA INESISTENTE - RECORD SCARTATO');
 2408 
    RIGA_LOG_RAFFRONTA (SYSDATE, 'RAFFRONTA_XMPI_ASSANA', STEP, null,TO_CHAR(ERR689,'9999999') ||' CODICE REGIONE ASSISTENZA INESISTENTE - RECORD SCARTATO');
 2409 
    RIGA_LOG_RAFFRONTA (SYSDATE, 'RAFFRONTA_XMPI_ASSANA', STEP, null,TO_CHAR(ERR699,'9999999') ||' ECCEZIONE ORACLE');
 2410 
    
 2411 
end; -- 999
 2412 
/