1. EPMO Open Source Coordination Office Redaction File Detail Report

Produced by Araxis Merge on 4/26/2019 2:00:16 PM Central Daylight Time. See www.araxis.com for information about Merge. This report uses XHTML and CSS2, and is best viewed with a modern standards-compliant browser. For optimum results when printing this report, use landscape orientation and enable printing of background images and colours in your browser.

1.1 Files compared

# Location File Last Modified
1 C:\AraxisMergeCompare\Pri_un\ADR\DDL\ADR package body.sql Wed Apr 24 15:51:48 2019 UTC
2 C:\AraxisMergeCompare\Pri_re\ADR\DDL\ADR package body.sql Fri Apr 26 17:47:29 2019 UTC

1.2 Comparison summary

Description Between
Files 1 and 2
Text Blocks Lines
Unchanged 4 15518
Changed 3 6
Inserted 0 0
Removed 0 0

1.3 Comparison options

Whitespace
Character case Differences in character case are significant
Line endings Differences in line endings (CR and LF characters) are ignored
CR/LF characters Not shown in the comparison detail

1.4 Active regular expressions

No regular expressions were active.

1.5 Comparison detail

  1   DROP PACKA GE BODY AD R.IAM_UTIL _PKG;
  2  
  3   CREATE OR  REPLACE PA CKAGE BODY  ADR.IAM_U TIL_PKG
  4   AS
  5   PROCEDURE  USERS_IAM_ INSERT_SP(
  6              p_USERNAME         IN  USERS.USE RNAME%TYPE ,
  7              p_LAST_NAM E        I N USERS.LA ST_NAME%TY PE,
  8              p_FIRST_NA ME         IN USERS.F IRST_NAME% TYPE,
  9              p_MIDDLE_N AME         IN USERS. MIDDLE_NAM E%TYPE,
  10              p_STD_INST ITUTION_ID     IN STD _INSTITUTI ON.ID%TYPE ,
  11              p_JOB_TITL E        I N USERS.JO B_TITLE%TY PE,
  12              p_PASSWORD         IN  USERS.PAS SWORD%TYPE ,
  13              p_ACCOUNT_ EXPIRE_DAT E    IN US ERS.ACCOUN T_EXPIRE_D ATE%TYPE,
  14              p_PASSWORD _EXPIRE_DA TE    IN U SERS.PASSW ORD_EXPIRE _DATE%TYPE ,
  15              p_AGREEMEN T_SIGNATUR E_CODE IN  USERS.AGRE EMENT_SIGN ATURE_CODE %TYPE,
  16              p_PASSWORD _CHANGE_DA TE    IN U SERS.PASSW ORD_CHANGE _DATE%TYPE ,
  17              p_PASSWORD _CREATE_DA TE    IN U SERS.PASSW ORD_CREATE _DATE%TYPE ,
  18              p_INACTIVE _FLAG         IN USER S.INACTIVE _FLAG%TYPE ,
  19              p_NUMBER_O F_LOGIN_AT TEMPTS IN  USERS.NUMB ER_OF_LOGI N_ATTEMPTS %TYPE,
  20              p_SIGNATUR E_VERIFIED _IND   IN  USERS.SIGN ATURE_VERI FIED_IND%T YPE,
  21              p_ROLES             I N VARCHAR2
  22   ) IS
  23  
  24                  lb_cnt  integer;
  25                         la_Tab_Str  IAM_UTIL_ PKG.varcha r2_table;
  26                  lo_Val   VARCHAR2 (1000);
  27                  lo_use rid NUMBER ;
  28                  lo_use r_role_id  number;
  29  
  30              BEGIN
  31                 Select  TRANSACTIO N_S.NEXTVA L
  32                 INTO lo _userid
  33                 FROM du al;
  34                  INSERT  INTO USER S(USERID
  35                                                   ,USERN AME
  36                                                   ,LAST_ NAME
  37                                                   ,FIRST _NAME
  38                                                   ,MIDDL E_NAME
  39                                                   ,STD_I NSTITUTION _ID
  40                                                   ,JOB_T ITLE
  41                                                   ,PASSW ORD
  42                                                   ,ACCOU NT_EXPIRE_ DATE
  43                                                   ,PASSW ORD_EXPIRE _DATE
  44                                                   ,AGREE MENT_SIGNA TURE_CODE
  45                                                   ,PASSW ORD_CHANGE _DATE
  46                                                   ,PASSW ORD_CREATE _DATE
  47                                                   ,INACT IVE_FLAG
  48                                                   ,NUMBE R_OF_LOGIN _ATTEMPTS
  49                                                   ,SIGNA TURE_VERIF IED_IND
  50                                                   ,RECOR D_CREATED_ BY
  51                                                   ,RECOR D_CREATED_ DATE
  52                                                   ,RECOR D_MODIFIED _BY
  53                                                   ,RECOR D_MODIFIED _DATE
  54                                                   ,RECOR D_MODIFIED _COUNT)
  55                  VALUES
  56                  (lo_us erid
  57                 , p_USE RNAME
  58                 , p_LAS T_NAME
  59                 ,  p_FI RST_NAME
  60                 , p_MID DLE_NAME
  61                 , p_STD _INSTITUTI ON_ID
  62                 , p_JOB _TITLE
  63                 , p_PAS SWORD
  64                 , p_ACC OUNT_EXPIR E_DATE
  65                 , p_PAS SWORD_EXPI RE_DATE
  66                 , p_AGR EEMENT_SIG NATURE_COD E
  67                 , SYSDA TE
  68                 , p_PAS SWORD_CREA TE_DATE
  69                 , p_INA CTIVE_FLAG
  70                 , p_NUM BER_OF_LOG IN_ATTEMPT S
  71                 , p_SIG NATURE_VER IFIED_IND
  72                 , USER
  73                 , SYSDA TE
  74                 , USER
  75                 , SYSDA TE
  76                 , 0);
  77              IF (p_ROLE S IS NOT N ULL)
  78              THEN
  79                IAM_UTIL _PKG.delim string_to_ table (p_R OLES,la_Ta b_Str,lb_c nt);
  80                FOR i IN  1 .. lb_c nt LOOP
  81  
  82                Select T RANSACTION _S.NEXTVAL
  83                 INTO lo _user_role _id
  84                 FROM du al;
  85  
  86                lo_Val : = REPLACE( la_Tab_Str (i), '"',  '');
  87                INSERT I NTO USER_R OLES(USER_ ROLE_ID
  88                                                           ,USERID
  89                                                           ,ROLE_ID
  90                                                           ,RECORD_C REATED_BY
  91                                                           , RECORD_ CREATED_DA TE
  92                                                           ,RECORD_M ODIFIED_BY
  93                                                           ,RECORD_M ODIFIED_DA TE
  94                                                           ,RECORD_M ODIFIED_CO UNT)
  95                VALUES (   lo_user_ role_id
  96                              ,  lo _userid
  97                              , (SE LECT ROLE_ ID FROM RO LES WHERE  ROLE_NAME= lo_Val)
  98                              , USE R
  99                              , SYS DATE
  100                              , USE R
  101                              , SYS DATE
  102                              , 0 ) ;
  103                END LOOP ;
  104              END IF;
  105                  COMMIT ;
  106              EXCEPTION
  107                  WHEN O THERS THEN
  108                      RO LLBACK;
  109                      RA ISE_APPLIC ATION_ERRO R(-20900,  'Insert Er ror - ' ||  SUBSTR(SQ LERRM,1,20 00));
  110  
  111   END USERS_ IAM_INSERT _SP;
  112  
  113   PROCEDURE  USERS_IAM_ UPDATE_SP
  114              (p_USERNAM E        I N USERS.US ERNAME%TYP E,
  115              p_LAST_NAM E        I N USERS.LA ST_NAME%TY PE,
  116              p_FIRST_NA ME         IN USERS.F IRST_NAME% TYPE,
  117              p_MIDDLE_N AME         IN USERS. MIDDLE_NAM E%TYPE,
  118              p_STD_INST ITUTION_ID     IN STD _INSTITUTI ON.ID%TYPE ,
  119              p_JOB_TITL E        I N USERS.JO B_TITLE%TY PE,
  120              p_PASSWORD         IN  USERS.PAS SWORD%TYPE ,
  121              p_ACCOUNT_ EXPIRE_DAT E    IN US ERS.ACCOUN T_EXPIRE_D ATE%TYPE,
  122              p_PASSWORD _EXPIRE_DA TE    IN U SERS.PASSW ORD_EXPIRE _DATE%TYPE ,
  123              p_AGREEMEN T_SIGNATUR E_CODE IN  USERS.AGRE EMENT_SIGN ATURE_CODE %TYPE,
  124              p_PASSWORD _CHANGE_DA TE    IN U SERS.PASSW ORD_CHANGE _DATE%TYPE ,
  125              p_PASSWORD _CREATE_DA TE    IN U SERS.PASSW ORD_CREATE _DATE%TYPE ,
  126              p_INACTIVE _FLAG         IN USER S.INACTIVE _FLAG%TYPE ,
  127              p_NUMBER_O F_LOGIN_AT TEMPTS IN  USERS.NUMB ER_OF_LOGI N_ATTEMPTS %TYPE,
  128              p_SIGNATUR E_VERIFIED _IND   IN  USERS.SIGN ATURE_VERI FIED_IND%T YPE,
  129              p_ROLES             I N VARCHAR2
  130   )  IS
  131  
  132                  lb_cnt  integer;
  133                         la_Tab_Str  IAM_UTIL_ PKG.varcha r2_table;
  134                  lo_Val   VARCHAR2 (1000);
  135                  lo_Val 1 VARCHAR2 (1000);
  136                  l_exis ts INTEGER ;
  137                  r_exis ts INTEGER ;
  138                  lo_use r_role_id  Number;
  139                  lo_use rid Number ;
  140                  Userna me_not_fou nd EXCEPTI ON;
  141                  PRAGMA  EXCEPTION _INIT(User name_not_f ound, -209 05);
  142  
  143              BEGIN
  144  
  145                  SELECT  USERID
  146                  INTO l o_userid
  147                  FROM U SERS
  148                   WHERE USER NAME = 
A I ;
  149  
  150                  UPDATE  USERS SET  LAST_NAME  = p_LAST_ NAME
  151                                                 , FIRST_ NAME = p_F IRST_NAME
  152                                                 , MIDDLE _NAME = p_ MIDDLE_NAM E
  153                                                 , STD_IN STITUTION_ ID = p_STD _INSTITUTI ON_ID
  154                                                 , JOB_TI TLE = p_JO B_TITLE
  155                                                  , PASSWORD  = 
A       
  156                                                 , ACCOUN T_EXPIRE_D ATE = p_AC COUNT_EXPI RE_DATE
  157                                                 , PASSWO RD_EXPIRE_ DATE = p_P ASSWORD_CR EATE_DATE
  158                                                 , AGREEM ENT_SIGNAT URE_CODE =  p_AGREEME NT_SIGNATU RE_CODE
  159                                                 , PASSWO RD_CHANGE_ DATE = p_P ASSWORD_CH ANGE_DATE
  160                                                 , PASSWO RD_CREATE_ DATE = p_P ASSWORD_CR EATE_DATE
  161                                                 , INACTI VE_FLAG =  p_INACTIVE _FLAG
  162                                                 , NUMBER _OF_LOGIN_ ATTEMPTS =  p_NUMBER_ OF_LOGIN_A TTEMPTS
  163                                                 , SIGNAT URE_VERIFI ED_IND  =  p_SIGNATUR E_VERIFIED _IND
  164                                                 , RECORD _MODIFIED_ BY = USER
  165                                                 , RECORD _MODIFIED_ DATE = SYS DATE
  166                                                 , RECORD _MODIFIED_ COUNT = RE CORD_MODIF IED_COUNT  + 1
  167                  WHERE  USERID = l o_userid;
  168                  IF SQL %ROWCOUNT  = 0 THEN
  169                     RAI SE Usernam e_not_foun d;
  170                  END IF ;
  171  
  172                  IF p_R OLES IS NU LL THEN
  173                      DE LETE FROM  USER_ROLES  WHERE USE RID = lo_u serid;
  174                  ELSE
  175                      lo _Val1 := R EPLACE(p_R OLES, '"',  '');
  176                      SE LECT COUNT (*)
  177                      IN TO r_exist s
  178                      FR OM USER_RO LES
  179                      WH ERE USERID  = lo_user id
  180                      AN D ROLE_ID  NOT IN (SE LECT ROLE_ ID FROM RO LES WHERE  ROLE_NAME  IN (lo_Val 1) );
  181  
  182                      IF  r_exists  >= 1 THEN
  183                           DELETE F ROM USER_R OLES
  184                           WHERE US ERID = lo_ userid
  185                           AND ROLE _ID NOT IN  (SELECT R OLE_ID FRO M  ROLES W HERE ROLE_ NAME IN (l o_Val1) )  ;
  186                      EN D IF;
  187  
  188         IAM_ UTIL_PKG.d elimstring _to_table  (p_ROLES,l a_Tab_Str, lb_cnt);
  189                  FOR i  IN 1 .. lb _cnt LOOP
  190  
  191                           lo_Val : = REPLACE( la_Tab_Str (i), '"',  '');
  192                           SELECT C OUNT(*)
  193                           INTO l_e xists
  194                           FROM USE R_ROLES
  195                           WHERE US ERID =  lo _userid AN D ROLE_ID  = (SELECT  ROLE_ID FR OM  ROLES  WHERE ROLE _NAME IN ( lo_Val) );
  196  
  197                           IF l_exi sts != 1   THEN
  198                              Selec t TRANSACT ION_S.NEXT VAL
  199                              INTO  lo_user_ro le_id
  200                              FROM  dual;
  201                               INSE RT INTO US ER_ROLES(U SER_ROLE_I D
  202                                                                          ,USER ID
  203                                                                          ,ROLE _ID
  204                                                                          ,RECO RD_CREATED _BY
  205                                                                          ,RECO RD_CREATED _DATE
  206                                                                          ,RECO RD_MODIFIE D_BY
  207                                                                          ,RECO RD_MODIFIE D_DATE
  208                                                                          ,RECO RD_MODIFIE D_COUNT)
  209                              VALUE S ( lo_use r_role_id
  210                                          , lo _userid
  211                                          , (S ELECT ROLE _ID FROM R OLES WHERE  ROLE_NAME =lo_Val)
  212                                          , US ER
  213                                          , SY SDATE
  214                                          , US ER
  215                                          , SY SDATE
  216                                          , 0) ;
  217                           END IF;
  218  
  219                      EN D LOOP;
  220                  END IF ;
  221                  COMMIT ;
  222              EXCEPTION
  223                  WHEN U sername_no t_found TH EN
  224                       R OLLBACK;
  225                       R AISE_APPLI CATION_ERR OR(-20905,  'Username  not found ');
  226                  WHEN N O_DATA_FOU ND THEN
  227                       R OLLBACK;
  228                       R AISE_APPLI CATION_ERR OR(-20904,  'Unable t o retrieve  USERID');
  229                  WHEN O THERS THEN
  230                      RO LLBACK;
  231                      RA ISE_APPLIC ATION_ERRO R(-20901,  'Update Er ror - ' ||  SUBSTR(SQ LERRM,1,20 00));
  232   END USERS_ IAM_UPDATE _SP;
  233  
  234   PROCEDURE  USERS_IAM_ DELETE_SP(
  235   p_USERNAME     IN            USE RS.USERNAM E%TYPE
  236   ) IS
  237                  Userna me_not_fou nd EXCEPTI ON;
  238                  PRAGMA  EXCEPTION _INIT(User name_not_f ound, -209 05);
  239   BEGIN
  240              UPDATE USE RS SET INA CTIVE_FLAG  = 1
  241                                            ,  INACTIVE_D ATE = SYSD ATE
  242                                            ,  RECORD_MOD IFIED_BY =  USER
  243                                            ,  RECORD_MOD IFIED_DATE  = SYSDATE
  244                                            ,  RECORD_MOD IFIED_COUN T = RECORD _MODIFIED_ COUNT   +  1
  245               WHERE USER NAME = 
A I ;
  246              IF SQL%ROW COUNT = 0  THEN
  247                    RAIS E Username _not_found ;
  248                 END IF;
  249              COMMIT;
  250  
  251              EXCEPTION
  252                  WHEN U sername_no t_found TH EN
  253                      RO LLBACK;
  254                      RA ISE_APPLIC ATION_ERRO R(-20905,  'Username  not found' );
  255                  WHEN O THERS THEN
  256                      RO LLBACK;
  257                      RA ISE_APPLIC ATION_ERRO R(-20902,  'Delete Er ror - ' ||  SUBSTR(SQ LERRM,1,20 00));
  258   END USERS_ IAM_DELETE _SP;
  259  
  260   PROCEDURE  delimstrin g_to_table
  261     ( p_deli mstring IN  VARCHAR2
  262     , p_tabl e OUT varc har2_table
  263     , p_nfie lds OUT IN TEGER
  264     , p_deli m IN VARCH AR2 DEFAUL T ','
  265     )
  266   IS
  267     v_string  VARCHAR2( 32767) :=  p_delimstr ing;
  268     v_nfield s PLS_INTE GER := 1;
  269     v_table  varchar2_t able;
  270     v_delimp os PLS_INT EGER := IN STR(p_deli mstring, p _delim);
  271     v_deliml en PLS_INT EGER := LE NGTH(p_del im);
  272   BEGIN
  273     WHILE v_ delimpos >  0
  274     LOOP
  275       v_tabl e(v_nfield s) := SUBS TR(v_strin g,1,v_deli mpos-1);
  276       v_stri ng := SUBS TR(v_strin g,v_delimp os+v_delim len);
  277       v_nfie lds := v_n fields+1;
  278       v_deli mpos := IN STR(v_stri ng, p_deli m);
  279     END LOOP ;
  280     v_table( v_nfields)  := v_stri ng;
  281     p_table  := v_table ;
  282     p_nfield s := v_nfi elds;
  283   END delims tring_to_t able;
  284  
  285   PROCEDURE  table_to_d elimstring
  286     ( p_tabl e IN varch ar2_table
  287     , p_deli mstring OU T VARCHAR2
  288     , p_deli m IN VARCH AR2 DEFAUL T ','
  289     )
  290   IS
  291     v_nfield s PLS_INTE GER := p_t able.COUNT ;
  292     v_string  VARCHAR2( 32767);
  293   BEGIN
  294     FOR i IN  1..v_nfie lds
  295     LOOP
  296       v_stri ng := v_st ring || p_ table(i);
  297       IF i ! = v_nfield s THEN
  298         v_st ring := v_ string ||  p_delim;
  299       END IF ;
  300     END LOOP ;
  301     p_delims tring := v _string;
  302   END table_ to_delimst ring;
  303  
  304   END IAM_UT IL_PKG;
  305   /
  306  
  307  
  308   CREATE OR  REPLACE PU BLIC SYNON YM IAM_UTI L_PKG FOR  ADR.IAM_UT IL_PKG;
  309  
  310  
  311   GRANT EXEC UTE ON ADR .IAM_UTIL_ PKG TO IAM USR;
  312   DROP PACKA GE BODY AD R.HL7_ARCH IVE_PKG;
  313  
  314   CREATE OR  REPLACE PA CKAGE BODY  ADR.Hl7_A rchive_Pkg
  315   AS
  316  
  317   /********* ********** ********** ********** ********** ********** ********** ********
  318    *
  319    *    NAME : Hl7_Arch ive_Contro l
  320    *    TYPE : Function
  321    *             RETURN  VALUE: VA RCHAR2
  322    *
  323    *    DESC RIPTION
  324    *      Us ed to requ est that t he HL7 arc hiving job  in the Or acle job s cheduler
  325    *      ei ther start s or stops  processin g.
  326    *
  327    *      It  sets the  Value colu mn in the  ADR.Adr_Pa rameter ta ble
  328    *      (A pplication _name = HL 7_ARCHIVE_ CONTROL,
  329    *       P arameter_n ame = STAR T_STOP_PRO CESS) to e ither 0 (s top proces sing) or
  330    *      1  (start pro cessing.
  331    *
  332    ********* ********** ********** ********** ********** ********** ********** ********
  333    */
  334  
  335   FUNCTION H l7_Archive _Control
  336     (PN_stat us_code
  337       IN      NUMBER)
  338     RETURN V ARCHAR2
  339   IS
  340  
  341     CC_msg_a lready_sta rted              CON STANT VARC HAR2(255)  := 'Archiv e process  start has  already be en request ed';
  342     CC_msg_a lready_sto pped              CON STANT VARC HAR2(255)  := 'Archiv e process  stop has a lready bee n requeste d';
  343     CC_msg_i nput_parm_ invalid           CON STANT VARC HAR2(255)  := 'ERROR  - Invalid  function i nput param eter. Func tion input  must be 0  or 1.';
  344     CC_msg_i nput_unkno wn_reqst          CON STANT VARC HAR2(255)  := 'ERROR  - Unknown  request.';
  345     CC_msg_s tart_succe ss                CON STANT VARC HAR2(255)  := 'Archiv e start re quest comp leted succ essfully';
  346     CC_msg_s top_succes s                 CON STANT VARC HAR2(255)  := 'Archiv e stop req uest compl eted succe ssfully';
  347     CC_msg_n o_param_ro w                 CON STANT VARC HAR2(255)  := 'ERROR  - No HL7 a rchive par ameter fou nd in tabl e ADRMGT.A dr_Paramet er. Reques t failed.' ;
  348  
  349  
  350     VC_statu s_msg                        VAR CHAR2(255) ;
  351  
  352     VN_row_c ount                         NUM BER;
  353     VN_curr_ status_cod e                 NUM BER(1);
  354     VN_new_s tatus_code                   NUM BER(1);
  355  
  356   BEGIN
  357  
  358     IF PN_st atus_code  NOT IN (0, 1) THEN
  359  
  360       VC_sta tus_msg :=  CC_msg_in put_parm_i nvalid;
  361  
  362     ELSE
  363  
  364       VN_new _status_co de := PN_s tatus_code ;
  365  
  366       SELECT     COUNT( *)
  367       INTO       VN_row _count
  368       FROM       Adr_Pa rameter AP
  369       WHERE      Applic ation_name  = 'HL7_AR CHIVE_CONT ROL'
  370       AND        Parame ter_name =  'START_ST OP_PROCESS ';
  371  
  372       IF VN_ row_count  = 0 THEN
  373  
  374         VC_s tatus_msg  := CC_msg_ no_param_r ow;
  375  
  376       ELSE
  377  
  378         SELE CT    AP.V alue
  379         INTO       VN_c urr_status _code
  380         FROM       Adr_ Parameter  AP
  381         WHER E     Appl ication_na me = 'HL7_ ARCHIVE_CO NTROL'
  382         AND        Para meter_name  = 'START_ STOP_PROCE SS';
  383  
  384         IF V N_new_stat us_code =  0
  385          AND  VN_curr_s tatus_code  = 0 THEN  -- Stop re quested, a lready sto pped
  386  
  387           VC _status_ms g := CC_ms g_already_ stopped;
  388  
  389         ELSI F VN_new_s tatus_code  = 1
  390          AND  VN_curr_s tatus_code  = 1 THEN  -- Start r equested,  already st arted
  391  
  392           VC _status_ms g := CC_ms g_already_ started;
  393  
  394         ELSI F (VN_new_ status_cod e = 0
  395                AND VN_c urr_status _code = 1)  -- Stop r equested,  valid requ est
  396          OR  (VN_new_st atus_code  = 1
  397              AND VN_cur r_status_c ode = 0) T HEN -- Sta rt request ed, valid  request
  398  
  399           BE GIN
  400  
  401              UPDATE     Adr_Parame ter AP
  402              SET        AP.Value =  VN_new_st atus_code,
  403                         AP.Record_ modified_d ate = SYSD ATE,
  404                         AP.Record_ modified_b y = 'Start _Stop_Proc ess'
  405              WHERE      AP.Applica tion_name  = 'HL7_ARC HIVE_CONTR OL'
  406              AND        AP.Paramet er_name =  'START_STO P_PROCESS' ;
  407  
  408              COMMIT;
  409  
  410              IF VN_new_ status_cod e = 0 THEN
  411  
  412                VC_statu s_msg := C C_msg_stop _success;
  413  
  414              ELSE
  415  
  416               VC_status _msg := CC _msg_start _success;
  417  
  418              END IF;
  419  
  420           EX CEPTION
  421  
  422              WHEN OTHER S THEN
  423  
  424                VC_statu s_msg := S UBSTR('ERR OR - Unabl e to updat e status t o '
  425                                          || V N_new_stat us_code
  426                                          || '  in table  ADRMGT.Adr _Parameter  - ' || SQ LERRM,1,25 4);
  427  
  428           EN D;
  429  
  430         ELSE
  431  
  432           VC _status_ms g := CC_ms g_input_un known_reqs t
  433                              || '  Input para meter: ' | | VN_new_s tatus_code
  434                              || '  Table para meter: ' | | VN_curr_ status_cod e;
  435  
  436         END  IF;
  437  
  438       END IF ;
  439  
  440     END IF;
  441  
  442     RETURN(V C_status_m sg);
  443  
  444   EXCEPTION
  445  
  446     WHEN OTH ERS THEN
  447  
  448       VC_sta tus_msg :=  SUBSTR('E RROR - Arc hive start /stop requ est cannot  be comple ted - ' ||  SQLERRM,1 ,254);
  449  
  450   END Hl7_Ar chive_Cont rol;
  451  
  452   /********* ********** ********** ********** ********** ********** ********** ********
  453    *
  454    *    NAME : Hl7_Dele te_Control
  455    *    TYPE : Function
  456    *             RETURN  VALUE: VA RCHAR2
  457    *
  458    *    DESC RIPTION
  459    *      Us ed to requ est that t he HL7 arc hive delet e job in t he Oracle  job
  460    *      sc heduler ei ther start s or stops  processin g.
  461    *
  462    *      It  sets the  Value colu mn in the  ADR.Adr_Pa rameter ta ble
  463    *      (A pplication _name = HL 7_DELETE_C ONTROL,
  464    *       P arameter_n ame = STAR T_STOP_PRO CESS) to e ither 0 (s top proces sing) or
  465    *      1  (start pro cessing.
  466    *
  467    ********* ********** ********** ********** ********** ********** ********** ********
  468    */
  469  
  470   FUNCTION H l7_Delete_ Control
  471     (PN_stat us_code
  472       IN      NUMBER)
  473     RETURN V ARCHAR2
  474   IS
  475  
  476     CC_msg_a lready_sta rted              CON STANT VARC HAR2(255)  := 'Delete  process s tart has a lready bee n requeste d';
  477     CC_msg_a lready_sto pped              CON STANT VARC HAR2(255)  := 'Delete  process s top has al ready been  requested ';
  478     CC_msg_i nput_parm_ invalid           CON STANT VARC HAR2(255)  := 'ERROR  - Invalid  function i nput param eter. Func tion input  must be 0  or 1.';
  479     CC_msg_i nput_unkno wn_reqst          CON STANT VARC HAR2(255)  := 'ERROR  - Unknown  request.';
  480     CC_msg_s tart_succe ss                CON STANT VARC HAR2(255)  := 'Delete  start req uest compl eted succe ssfully';
  481     CC_msg_s top_succes s                 CON STANT VARC HAR2(255)  := 'Delete  stop requ est comple ted succes sfully';
  482     CC_msg_n o_param_ro w                 CON STANT VARC HAR2(255)  := 'ERROR  - No HL7 d elete para meter foun d in table  ADRMGT.Ad r_Paramete r. Request  failed.';
  483  
  484  
  485     VC_statu s_msg                        VAR CHAR2(255) ;
  486  
  487     VN_row_c ount                         NUM BER;
  488     VN_curr_ status_cod e                 NUM BER(1);
  489     VN_new_s tatus_code                   NUM BER(1);
  490  
  491   BEGIN
  492  
  493     IF PN_st atus_code  NOT IN (0, 1) THEN
  494  
  495       VC_sta tus_msg :=  CC_msg_in put_parm_i nvalid;
  496  
  497     ELSE
  498  
  499       VN_new _status_co de := PN_s tatus_code ;
  500  
  501       SELECT     COUNT( *)
  502       INTO       VN_row _count
  503       FROM       Adr_Pa rameter AP
  504       WHERE      Applic ation_name  = 'HL7_DE LETE_CONTR OL'
  505       AND        Parame ter_name =  'START_ST OP_PROCESS ';
  506  
  507       IF VN_ row_count  = 0 THEN
  508  
  509         VC_s tatus_msg  := CC_msg_ no_param_r ow;
  510  
  511       ELSE
  512  
  513         SELE CT    AP.V alue
  514         INTO       VN_c urr_status _code
  515         FROM       Adr_ Parameter  AP
  516         WHER E     Appl ication_na me = 'HL7_ DELETE_CON TROL'
  517         AND        Para meter_name  = 'START_ STOP_PROCE SS';
  518  
  519         IF V N_new_stat us_code =  0
  520          AND  VN_curr_s tatus_code  = 0 THEN  -- Stop re quested, a lready sto pped
  521  
  522           VC _status_ms g := CC_ms g_already_ stopped;
  523  
  524         ELSI F VN_new_s tatus_code  = 1
  525          AND  VN_curr_s tatus_code  = 1 THEN  -- Start r equested,  already st arted
  526  
  527           VC _status_ms g := CC_ms g_already_ started;
  528  
  529         ELSI F (VN_new_ status_cod e = 0
  530                AND VN_c urr_status _code = 1)  -- Stop r equested,  valid requ est
  531          OR  (VN_new_st atus_code  = 1
  532              AND VN_cur r_status_c ode = 0) T HEN -- Sta rt request ed, valid  request
  533  
  534           BE GIN
  535  
  536              UPDATE     Adr_Parame ter AP
  537              SET        AP.Value =  VN_new_st atus_code,
  538                         AP.Record_ modified_d ate = SYSD ATE,
  539                         AP.Record_ modified_b y = 'Start _Stop_Proc ess'
  540              WHERE      AP.Applica tion_name  = 'HL7_DEL ETE_CONTRO L'
  541              AND        AP.Paramet er_name =  'START_STO P_PROCESS' ;
  542  
  543              COMMIT;
  544  
  545              IF VN_new_ status_cod e = 0 THEN
  546  
  547                VC_statu s_msg := C C_msg_stop _success;
  548  
  549              ELSE
  550  
  551               VC_status _msg := CC _msg_start _success;
  552  
  553              END IF;
  554  
  555           EX CEPTION
  556  
  557              WHEN OTHER S THEN
  558  
  559                VC_statu s_msg := S UBSTR('ERR OR - Unabl e to updat e status t o '
  560                                          || V N_new_stat us_code
  561                                          || '  in table  ADRMGT.Adr _Parameter  - ' || SQ LERRM,1,25 4);
  562  
  563           EN D;
  564  
  565         ELSE
  566  
  567           VC _status_ms g := CC_ms g_input_un known_reqs t
  568                              || '  Input para meter: ' | | VN_new_s tatus_code
  569                              || '  Table para meter: ' | | VN_curr_ status_cod e;
  570  
  571         END  IF;
  572  
  573       END IF ;
  574  
  575     END IF;
  576  
  577     RETURN(V C_status_m sg);
  578  
  579   EXCEPTION
  580  
  581     WHEN OTH ERS THEN
  582  
  583       VC_sta tus_msg :=  SUBSTR('E RROR - Del ete start/ stop reque st cannot  be complet ed - ' ||  SQLERRM,1, 254);
  584  
  585   END Hl7_De lete_Contr ol;
  586  
  587   /********* ********** ********** ********** ********** ********** ********** ********
  588    *
  589    *    NAME : Hl7_Proc ess_Archiv es
  590    *    TYPE : Procedur e
  591    *
  592    *    DESC RIPTION
  593    *      Us ed to move  rows from  the Hl7_T ransaction _Log table  to the
  594    *      Hl 7_Archive_ Transactio n_log tabl e based on  customer  defined ar chiving
  595    *      cr iteria.
  596    *
  597    *    PARA METERS
  598    *      PB _run_stand alone - Al lows this  procedure  to run out side of th e Oracle
  599    *                            DB MS_JOB sch eduler.
  600    *      PB _allow_rpt _inst - Al lows this  procedure  to run on  reporting
  601    *                            da tabases (i e. ADRRP)
  602    *
  603    ********* ********** ********** ********** ********** ********** ********** ********
  604    */
  605  
  606   PROCEDURE  Hl7_Proces s_Archives
  607     (PB_run_ standalone
  608        IN      BOOLEAN  DEFAULT FA LSE,
  609      PB_allo w_rpt_inst
  610        IN      BOOLEAN  DEFAULT FA LSE
  611     )
  612   IS
  613  
  614   -- CONSTAN TS
  615  
  616     CC_proce ss_name                        V ARCHAR2(60 ) := 'HL7  Archiver -  Archive H L7 Rows';
  617  
  618     CC_stat_ type_compl ete                 C ONSTANT NU MBER := 15 06921;
  619     CC_stat_ type_uncom p_wait_tra n        C ONSTANT NU MBER := 15 06922;
  620     CC_stat_ type_uncom p_wait_ack          C ONSTANT NU MBER := 15 06923;
  621     CC_stat_ type_uncom p_pending           C ONSTANT NU MBER := 15 06924;
  622     CC_stat_ type_uncom p_retrans           C ONSTANT NU MBER := 15 06925;
  623     CC_stat_ type_uncom p_not_tran s        C ONSTANT NU MBER := 15 06926;
  624     CC_stat_ type_uncom p_error             C ONSTANT NU MBER := 15 06927;
  625     CC_stat_ type_uncom p_rtran_fa il       C ONSTANT NU MBER := 15 06928;
  626  
  627     CC_tran_ type_orfz1 0s                  C ONSTANT NU MBER := 15 10423;
  628     CC_tran_ type_orfz1 1s                  C ONSTANT NU MBER := 15 10425;  --  CCR 1788
  629     CC_tran_ type_oruz0 4s                  C ONSTANT NU MBER := 15 10420;
  630     CC_tran_ type_oruz0 5e                  C ONSTANT NU MBER := 15 10407;  --  CCR 1788
  631     CC_tran_ type_oruz0 5s                  C ONSTANT NU MBER := 15 10421;
  632     CC_tran_ type_oruz1 0s                  C ONSTANT NU MBER := 15 10422;
  633     CC_tran_ type_oruz1 1e                  C ONSTANT NU MBER := 15 10408;
  634     CC_tran_ type_oruz1 1s                  C ONSTANT NU MBER := 15 10424;
  635     CC_tran_ type_qryz1 0e                  C ONSTANT NU MBER := 15 10403;
  636     CC_tran_ type_qryz1 1e                  C ONSTANT NU MBER := 15 10435;  --  CCR 1788
  637  
  638   -- VARIABL ES
  639  
  640     VB_allow _rpt_inst                      B OOLEAN :=  FALSE;
  641     VB_error                                B OOLEAN :=  FALSE;
  642     VB_run_s tandalone                      B OOLEAN :=  FALSE;
  643  
  644     VC_allow _rpt_inst                      V ARCHAR2(5)  := NULL;
  645     VC_insta nce_name                       V ARCHAR2(16 ) := NULL;
  646     VC_proce ss_duratio n                   V ARCHAR2(50 ) := NULL;
  647     VC_proce ss_msg                         V ARCHAR2(50 0) := NULL ;
  648     VC_run_s tandalone                      V ARCHAR2(5)  := NULL;
  649  
  650     VD_log_d ate                            D ATE;
  651     VD_proce ss_end_dat e                   D ATE;
  652     VD_proce ss_start_d ate                 D ATE;
  653  
  654     VI_rows_ to_keep_co unt                 B INARY_INTE GER;
  655  
  656     VN_archi ve_count                       N UMBER := 0 ;
  657     VN_curre nt_person_ id                  N UMBER := 0 ;
  658     VN_delet e_count                        N UMBER := 0 ;
  659     VN_insti tution_id                      N UMBER := 0 ;
  660     VN_inser t_count                        N UMBER := 0 ;
  661     VN_job_c ount                           N UMBER := 0 ;
  662     VN_log_a ge_to_keep                     N UMBER := 1 80;
  663     VN_msg_s tatus_id                       N UMBER;
  664     VN_msg_t ranstype_i d                   N UMBER;
  665     VN_parm_ keep_uncom pleted_day s        N UMBER := 3 0;
  666     VN_parm_ keep_orfz1 0s_count            N UMBER := 9 ;
  667     VN_parm_ keep_orfz1 1s_count            N UMBER := 4 ;  -- CCR  1788
  668     VN_parm_ keep_oruz0 4s_count            N UMBER := 4 ;
  669     VN_parm_ keep_oruz0 5e_count            N UMBER := 2 ;  -- CCR  1788
  670     VN_parm_ keep_oruz0 5s_count            N UMBER := 9 ;
  671     VN_parm_ keep_oruz1 0s_count            N UMBER := 9 ;
  672     VN_parm_ keep_oruz1 1e_count            N UMBER := 8 ;
  673     VN_parm_ keep_oruz1 1s_count            N UMBER := 9 ;
  674     VN_parm_ keep_qryz1 0e_count            N UMBER := 9 ;
  675     VN_parm_ keep_qryz1 1e_count            N UMBER := 4 ;  -- CCR  1788
  676     VN_perso n_count                        N UMBER := 0 ;
  677     VN_previ ous_person _id                 N UMBER := 0 ;
  678     VN_proce ss_control                     N UMBER := 0 ;
  679     VN_proce ss_days                        N UMBER;
  680     VN_proce ss_hours                       N UMBER;
  681     VN_proce ss_minutes                     N UMBER;
  682     VN_proce ss_seconds                     N UMBER;
  683     VN_proce ss_time_in _secs               N UMBER;
  684  
  685   -- RECORD  DEFINITION S
  686  
  687     TYPE TR_ hl7_txn_re c IS RECOR D
  688       (Hl7_t ransaction _log_id             A DR.Hl7_Tra nsaction_L og.Hl7_tra nsaction_l og_id%TYPE ,
  689        Recor d_created_ date                A DR.Hl7_Tra nsaction_L og.Record_ created_da te%TYPE);
  690  
  691   -- TABLE D EFINITIONS
  692  
  693     TYPE TT_ number_tab le IS TABL E OF NUMBE R INDEX BY  PLS_INTEG ER;
  694  
  695     TYPE TT_ hl7_txn IS  TABLE OF  TR_hl7_txn _rec
  696       INDEX  BY BINARY_ INTEGER;
  697  
  698   --TABLES
  699  
  700     T_instit ution_ids                      T T_number_t able;
  701  
  702     T_status _types                         T T_number_t able;
  703  
  704     T_trans_ types                          T T_number_t able;
  705  
  706     T_hl7_tx ns                             T T_hl7_txn;
  707  
  708   -- CURSORS
  709  
  710     CURSOR C _inst_id_r ec IS
  711       SELECT     DISTIN CT Std_ins titution_i d
  712       FROM       Hl7_Tr ansaction_ Log
  713       WHERE      Person _id = VN_c urrent_per son_id
  714       ORDER  BY  Std_in stitution_ id;
  715  
  716     CURSOR C _msg_statu s_rec IS
  717       SELECT     DISTIN CT Hl7_mes sage_statu s_type_id
  718       FROM       Hl7_Tr ansaction_ Log
  719       WHERE      Person _id = VN_c urrent_per son_id
  720       AND        Std_In stitution_ Id = VN_in stitution_ id
  721       ORDER  BY  Hl7_me ssage_stat us_type_id ;
  722  
  723     CURSOR C _msg_trans type_rec I S
  724       SELECT     DISTIN CT Message _transmiss ion_type_i d
  725       FROM       Hl7_Tr ansaction_ Log
  726       WHERE      Person _id = VN_c urrent_per son_id
  727       AND        Std_In stitution_ Id = VN_in stitution_ id
  728       AND        Hl7_me ssage_stat us_type_id  = VN_msg_ status_id
  729       ORDER  BY  Messag e_transmis sion_type_ id;
  730  
  731     CURSOR C _hl7_txn_r ec IS
  732       SELECT     Hl7_tr ansaction_ log_id,
  733                  Record _Created_d ate
  734       FROM       Hl7_Tr ansaction_ Log
  735       WHERE      Person _id = VN_c urrent_per son_id
  736       AND        Std_In stitution_ Id = VN_in stitution_ id
  737       AND        Hl7_me ssage_stat us_type_id  = VN_msg_ status_id
  738       AND        Messag e_transmis sion_type_ id = VN_ms g_transtyp e_id
  739       ORDER  BY  Record _Created_d ate ASC,
  740                  Hl7_tr ansaction_ log_id ASC ;
  741  
  742     CURSOR C _comp_oruz 11e_rec IS
  743       SELECT     Hl7_tr ansaction_ log_id,
  744                  Record _Created_d ate
  745       FROM       Hl7_Tr ansaction_ Log
  746       WHERE      Person _id = VN_c urrent_per son_id
  747       AND        Hl7_me ssage_stat us_type_id  = CC_stat _type_comp lete
  748       AND        Messag e_transmis sion_type_ id = CC_tr an_type_or uz11e
  749       ORDER  BY  Record _Created_d ate ASC,
  750                  Hl7_tr ansaction_ log_id ASC ;
  751  
  752     CURSOR C _comp_oruz 05e_rec IS   -- CCR17 88
  753       SELECT     Hl7_tr ansaction_ log_id,
  754                  Record _Created_d ate
  755       FROM       Hl7_Tr ansaction_ Log
  756       WHERE      Person _id = VN_c urrent_per son_id
  757       AND        Hl7_me ssage_stat us_type_id  = CC_stat _type_comp lete
  758       AND        Messag e_transmis sion_type_ id = CC_tr an_type_or uz05e
  759       ORDER  BY  Record _Created_d ate ASC,
  760                  Hl7_tr ansaction_ log_id ASC ;
  761  
  762   -- ******* ********** ********** ********** ********** ********** ********** ********
  763   -- *
  764   -- * Updat e Last Per son Proces sed Parame ter
  765   -- *
  766   -- ******* ********** ********** ********** ********** ********** ********** ********
  767  
  768   PROCEDURE  Update_Las t_Person_P arm
  769     (PN_pers on_id
  770        IN      NUMBER D EFAULT 0
  771     )
  772   IS
  773  
  774   BEGIN
  775  
  776     UPDATE     Adr_Para meter AP
  777     SET        AP.Value  = PN_pers on_id
  778     WHERE      Applicat ion_name =  'HL7_PROC ESS_ARCHIV ES'
  779     AND        Paramete r_name = ' LAST PERSO N_ID PROCE SSED';
  780  
  781     COMMIT;
  782  
  783   EXCEPTION
  784  
  785     WHEN OTH ERS THEN
  786  
  787       VB_err or := TRUE ;
  788  
  789       VD_log _date := S YSDATE;
  790  
  791       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  792                                    PD_job_log _date => V D_log_date ,
  793                                    PC_job_sta tus => SUB STR('ERROR        - A rchive Pro cess Loop' ,1,60),
  794                                    PC_job_log _message = > SUBSTR(' Failed to  update par ameter row  (person i d failure) .'
  795                                                                   | | ' Applic ation: HL7 _PROCESS_A RCHIVES'
  796                                                                   | | ' Parame ter: LAST  PERSON_ID  PROCESSED'
  797                                                                   | | ' Reques ted new Pe rson_id: '
  798                                                                   | | LTRIM(TO _CHAR(PN_p erson_id,' 9999999999 990'))
  799                                                                   | | ' Curren t Person_i d: '
  800                                                                   | | LTRIM(TO _CHAR(VN_c urrent_per son_id,'99 9999999999 0'))
  801                                                                   | | ' Previo us Person_ id: '
  802                                                                   | | LTRIM(TO _CHAR(VN_p revious_pe rson_id,'9 9999999999 90'))
  803                                                                   | | ' - Erro r: '
  804                                                                   | | SQLERRM, 1,2000),
  805                                    PD_date1 = > VD_proce ss_start_d ate,
  806                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  807  
  808       ADRMGT .Job_Proce ss_Err_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  809                                    PD_job_err or_date  = > VD_log_d ate,
  810                                    PC_job_err or_code =>  SUBSTR(SQ LCODE,1,60 ),
  811                                    PC_job_err or_message  => SUBSTR ('Failed t o update p arameter r ow (person  id failur e).'
  812                                                                   | | ' Applic ation: HL7 _PROCESS_A RCHIVES'
  813                                                                   | | ' Parame ter: LAST  PERSON_ID  PROCESSED'
  814                                                                   | | ' Reques ted new Pe rson_id: '
  815                                                                   | | LTRIM(TO _CHAR(PN_p erson_id,' 9999999999 990'))
  816                                                                   | | ' Curren t Person_i d: '
  817                                                                   | | LTRIM(TO _CHAR(VN_c urrent_per son_id,'99 9999999999 0'))
  818                                                                   | | ' Previo us Person_ id: '
  819                                                                   | | LTRIM(TO _CHAR(VN_p revious_pe rson_id,'9 9999999999 90'))
  820                                                                   | | ' - Erro r: '
  821                                                                   | | SQLERRM, 1,2000),
  822                                    PD_date1 = > VD_proce ss_start_d ate,
  823                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  824  
  825   END Update _Last_Pers on_Parm;
  826  
  827   -- ******* ********** ********** ********** ********** ********** ********** ********
  828   -- *
  829   -- * Table  Row Inser t/Delete S ub-Procedu re
  830   -- *
  831   -- ******* ********** ********** ********** ********** ********** ********** ********
  832  
  833   PROCEDURE  Process_Ar chive_Rows
  834     (PC_proc ess_msg
  835        IN      VARCHAR2  DEFAULT N ULL
  836     )
  837   IS
  838  
  839   -- EXCEPTI ONS
  840  
  841      EE_DML_ ERROR                          E XCEPTION;
  842      PRAGMA                                 E XCEPTION_I NIT(EE_DML _ERROR, -2 4381);
  843  
  844   BEGIN  --  insert/del ete of arc hive rows
  845  
  846   -- Archive  old compl eted HL7 r ows
  847  
  848     VN_inser t_count :=  0;
  849  
  850     DBMS_APP LICATION_I NFO.SET_AC TION(Actio n_name =>  'Inserting  Archive D ata');
  851  
  852   -- The num ber of row s in the t able that  will be ar chived wil l be adjus ted by the  number of  rows to k eep
  853   --  by sub tracting t he number  to keep (V I_rows_to_ keep_count ) from the  maximum i nternal ro w number i n
  854   --  the co llection t able. This  value is  set in the  main proc essing log ic.
  855  
  856     BEGIN  - - insert a rchive row s
  857  
  858       FORALL  I_hl7_txn s_ins IN T _hl7_txns. FIRST..T_h l7_txns.LA ST - VI_ro ws_to_keep _count SAV E EXCEPTIO NS
  859         INSE RT
  860         INTO       Hl7_ Archive_Tr ansaction_ Log
  861                    (HL7 _TRANSACTI ON_LOG_ID,
  862                     PER SON_ID,
  863                     MES SAGE_TRANS MISSION_TY PE_ID,
  864                     HL7 _MESSAGE_S TATUS_TYPE _ID,
  865                     REF _HL7_TRANS ACTION_LOG _ID,
  866                     STD _INSTITUTI ON_ID,
  867                     ACK _TYPE_ID,
  868                     MES SAGE_CONTR OL_NUMBER,
  869                     BAT CH_CONTROL _NUMBER,
  870                     ACK _DATE,
  871                     TRA NSMISSION_ DATE,
  872                     RET RANSMISSIO N_COUNT,
  873                     RET RANSMISSIO N_INFO_TEX T,
  874                     ERR OR_TEXT,
  875                     SIT E_RECORD_E LGBTY_STAT US_CODE,
  876                     REC ORD_CREATE D_BY,
  877                     REC ORD_CREATE D_DATE,
  878                     MES SAGE_BODY,
  879                     INT ERNAL_ERRO R_TEXT)
  880         SELE CT    HL7_ TRANSACTIO N_LOG_ID,
  881                    PERS ON_ID,
  882                    MESS AGE_TRANSM ISSION_TYP E_ID,
  883                    HL7_ MESSAGE_ST ATUS_TYPE_ ID,
  884                    REF_ HL7_TRANSA CTION_LOG_ ID,
  885                    STD_ INSTITUTIO N_ID,
  886                    ACK_ TYPE_ID,
  887                    MESS AGE_CONTRO L_NUMBER,
  888                    BATC H_CONTROL_ NUMBER,
  889                    ACK_ DATE,
  890                    TRAN SMISSION_D ATE,
  891                    RETR ANSMISSION _COUNT,
  892                    RETR ANSMISSION _INFO_TEXT ,
  893                    ERRO R_TEXT,
  894                    SITE _RECORD_EL GBTY_STATU S_CODE,
  895                    RECO RD_CREATED _BY,
  896                    RECO RD_CREATED _DATE,
  897                    MESS AGE_BODY,
  898                    INTE RNAL_ERROR _TEXT
  899         FROM       Hl7_ Transactio n_Log
  900         WHER E     Hl7_ transactio n_log_id =  T_hl7_txn s(I_hl7_tx ns_ins).Hl 7_transact ion_log_id ;
  901  
  902       VN_ins ert_count  := SQL%ROW COUNT;
  903  
  904       IF (T_ hl7_txns.C OUNT - VI_ rows_to_ke ep_count)  = VN_inser t_count TH EN  -- If  all the ro ws were in serted
  905  
  906     -- Delet e old comp leted HL7  rows
  907  
  908         VN_d elete_coun t := 0;
  909  
  910         DBMS _APPLICATI ON_INFO.SE T_ACTION(A ction_name  => 'Delet ing Archiv ed HL7 Dat a');
  911  
  912     -- The n umber of r ows in the  table tha t will be  archived w ill be adj usted by t he number  of rows to  keep
  913     --  by s ubtracting  the numbe r to keep  (VI_rows_t o_keep_cou nt) from t he maximum  internal  row number  in
  914     --  the  collection  table. Th is value i s set in t he main pr ocessing l ogic.
  915  
  916         BEGI N  -- dele te HL7 row s
  917  
  918           FO RALL I_hl7 _txns_del  IN T_hl7_t xns.FIRST. .T_hl7_txn s.LAST - V I_rows_to_ keep_count  SAVE EXCE PTIONS
  919              DELETE
  920              FROM       Hl7_Transa ction_Log
  921              WHERE      Hl7_Transa ction_Log_ id = T_hl7 _txns(I_hl 7_txns_del ).Hl7_Tran saction_Lo g_id;
  922  
  923           VN _delete_co unt := SQL %ROWCOUNT;
  924  
  925           IF  (T_hl7_tx ns.COUNT -  VI_rows_t o_keep_cou nt) = VN_d elete_coun t THEN  --  if all ro ws were de leted
  926  
  927              IF VN_inse rt_count =  VN_delete _count THE N  -- inse rt and del ete counts  match
  928  
  929                COMMIT;
  930  
  931                VN_archi ve_count : = VN_archi ve_count +  VN_insert _count;
  932                VN_perso n_count :=  VN_person _count + 1 ;
  933  
  934                DBMS_APP LICATION_I NFO.SET_CL IENT_INFO( TO_CHAR(SY SDATE,'DD- MON HH24:M I')
  935                                                          || ' -Tota l Persons  '  -- Tota l people p rocessed
  936                                                          || LTRIM(T O_CHAR(VN_ person_cou nt,'9,999, 999,990'))
  937                                                          || ' -Tota l Rows '   -- Total r ows proces sed
  938                                                          || LTRIM(T O_CHAR(VN_ archive_co unt,'999,9 99,999,990 '))
  939                                                          || LTRIM(T O_CHAR(T_h l7_txns.CO UNT - VI_r ows_to_kee p_count,'9 99,990'))
  940                                                          || '.');
  941  
  942              ELSE  -- i nsert and  delete cou nts do not  match
  943  
  944                VB_error  := TRUE;
  945  
  946                VD_log_d ate := SYS DATE;
  947  
  948                ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( CC_process _name,1,60 ),
  949                                            PD _job_log_d ate => VD_ log_date,
  950                                            PC _job_statu s => SUBST R('ERROR        - Arc hive Proce ss Loop',1 ,60),
  951                                            PC _job_log_m essage =>  SUBSTR('IN SERT/DELET E counts d o not matc h. '
  952                                                                            ||  LTRIM(RTRI M(PC_proce ss_msg))
  953                                                                            ||  ' - Rows i n collecti on after c lean up: '
  954                                                                            ||  LTRIM(TO_C HAR(T_hl7_ txns.COUNT  - VI_rows _to_keep_c ount,'999, 990'))
  955                                                                            ||  ' - INSERT  COUNT: '
  956                                                                            ||  LTRIM(TO_C HAR(VN_ins ert_count, '999,990') )
  957                                                                            ||  ' - DELETE  COUNT: '
  958                                                                            ||  LTRIM(TO_C HAR(VN_del ete_count, '999,990') ),1,2000),
  959                                            PD _date1 =>  VD_process _start_dat e,
  960                                            PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  961  
  962                ADRMGT.J ob_Process _Err_Sp(PC _job_name  => SUBSTR( CC_process _name,1,60 ),
  963                                            PD _job_error _date  =>  VD_log_dat e,
  964                                            PC _job_error _code => N ULL,
  965                                            PC _job_error _message = > SUBSTR(' INSERT/DEL ETE counts  do not ma tch. '
  966                                                                              | | LTRIM(RT RIM(PC_pro cess_msg))
  967                                                                              | | ' - Rows  in collec tion after  clean up:  '
  968                                                                              | | LTRIM(TO _CHAR(T_hl 7_txns.COU NT - VI_ro ws_to_keep _count,'99 9,990'))
  969                                                                              | | ' - INSE RT COUNT:  '
  970                                                                              | | LTRIM(TO _CHAR(VN_i nsert_coun t,'999,990 '))
  971                                                                              | | ' - DELE TE COUNT:  '
  972                                                                              | | LTRIM(TO _CHAR(VN_d elete_coun t,'999,990 ')),1,2000 ),
  973                                            PD _date1 =>  VD_process _start_dat e,
  974                                            PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  975  
  976                ROLLBACK ;
  977  
  978                Update_L ast_Person _Parm(VN_p revious_pe rson_id);
  979  
  980              END IF;--  insert and  delete co unts match
  981  
  982           EL SE  -- not  all rows  were delet ed
  983  
  984              VB_error : = TRUE;
  985  
  986              VD_log_dat e := SYSDA TE;
  987  
  988              ADRMGT.Job _Process_L og_Sp(PC_j ob_name =>  SUBSTR(CC _process_n ame,1,60),
  989                                          PD_j ob_log_dat e => VD_lo g_date,
  990                                          PC_j ob_status  => SUBSTR( 'ERROR        - Archi ve Process  Loop',1,6 0),
  991                                          PC_j ob_log_mes sage => SU BSTR('Numb er of rows  deleted d o not matc h number o f rows in  temp table . '
  992                                                                          || LT RIM(RTRIM( PC_process _msg))
  993                                                                          || '  - Rows in  collection  after cle an up: '
  994                                                                          || LT RIM(TO_CHA R(T_hl7_tx ns.COUNT -  VI_rows_t o_keep_cou nt,'999,99 0'))
  995                                                                          || '  - DELETE C OUNT: '
  996                                                                          || LT RIM(TO_CHA R(VN_delet e_count,'9 99,990')), 1,2000),
  997                                          PD_d ate1 => VD _process_s tart_date,
  998                                          PC_t ext1 => SU BSTR('Date 1 column c ontains th e daily pr ocess star t date',1, 255));
  999  
  1000              ADRMGT.Job _Process_E rr_Sp(PC_j ob_name =>  SUBSTR(CC _process_n ame,1,60),
  1001                                          PD_j ob_error_d ate  => VD _log_date,
  1002                                          PC_j ob_error_c ode => NUL L,
  1003                                          PC_j ob_error_m essage =>  SUBSTR('Nu mber of ro ws deleted  do not ma tch number  of rows i n temp tab le. '
  1004                                                                            ||  LTRIM(RTRI M(PC_proce ss_msg))
  1005                                                                            ||  ' - Rows i n collecti on after c lean up: '
  1006                                                                            ||  LTRIM(TO_C HAR(T_hl7_ txns.COUNT  - VI_rows _to_keep_c ount,'999, 990'))
  1007                                                                            ||  ' - DELETE  COUNT: '
  1008                                                                            ||  LTRIM(TO_C HAR(VN_del ete_count, '999,990') ),1,2000),
  1009                                          PD_d ate1 => VD _process_s tart_date,
  1010                                          PC_t ext1 => SU BSTR('Date 1 column c ontains th e daily pr ocess star t date',1, 255));
  1011  
  1012              ROLLBACK;
  1013  
  1014              Update_Las t_Person_P arm(VN_pre vious_pers on_id);
  1015  
  1016           EN D IF;  --  if all row s were del eted
  1017  
  1018         EXCE PTION   --  failed du ring delet e
  1019  
  1020           WH EN EE_DML_ ERROR THEN
  1021  
  1022              VB_error : = TRUE;
  1023              VN_delete_ count := S QL%ROWCOUN T;
  1024  
  1025              VD_log_dat e := SYSDA TE;
  1026  
  1027              ADRMGT.Job _Process_L og_Sp(PC_j ob_name =>  SUBSTR(CC _process_n ame,1,60),
  1028                                          PD_j ob_log_dat e => VD_lo g_date,
  1029                                          PC_j ob_status  => SUBSTR( 'ERROR        - Archi ve Process  Loop',1,6 0),
  1030                                          PC_j ob_log_mes sage => SU BSTR('All  rows not d eleted. '
  1031                                                                          || LT RIM(RTRIM( PC_process _msg))
  1032                                                                          || '  - Rows in  collection  after cle an up: '
  1033                                                                          || LT RIM(TO_CHA R(T_hl7_tx ns.COUNT -  VI_rows_t o_keep_cou nt,'999,99 0'))
  1034                                                                          || '.  Error cou nt: '
  1035                                                                          || LT RIM(TO_CHA R(SQL%BULK _EXCEPTION S.COUNT,'9 99,990'))
  1036                                                                          || '.  Rows atte mpted to d elete: '
  1037                                                                          || LT RIM(TO_CHA R(VN_delet e_count,'9 99,990')), 1,2000),
  1038                                          PD_d ate1 => VD _process_s tart_date,
  1039                                          PC_t ext1 => SU BSTR('Date 1 column c ontains th e daily pr ocess star t date',1, 255));
  1040  
  1041              ADRMGT.Job _Process_E rr_Sp(PC_j ob_name =>  SUBSTR(CC _process_n ame,1,60),
  1042                                          PD_j ob_error_d ate  => VD _log_date,
  1043                                          PC_j ob_error_c ode => NUL L,
  1044                                          PC_j ob_error_m essage =>  SUBSTR('Al l rows not  deleted.  '
  1045                                                                            ||  LTRIM(RTRI M(PC_proce ss_msg))
  1046                                                                            ||  ' - Rows i n collecti on after c lean up: '
  1047                                                                            ||  LTRIM(TO_C HAR(T_hl7_ txns.COUNT  - VI_rows _to_keep_c ount,'999, 990'))
  1048                                                                            ||  '. Error c ount: '
  1049                                                                            ||  LTRIM(TO_C HAR(SQL%BU LK_EXCEPTI ONS.COUNT, '999,990') )
  1050                                                                            ||  '. Rows at tempted to  delete: '
  1051                                                                            ||  LTRIM(TO_C HAR(VN_del ete_count, '999,990') ),1,2000),
  1052                                          PD_d ate1 => VD _process_s tart_date,
  1053                                          PC_t ext1 => SU BSTR('Date 1 column c ontains th e daily pr ocess star t date',1, 255));
  1054  
  1055              FOR I_del_ err IN 1.. SQL%BULK_E XCEPTIONS. COUNT LOOP
  1056  
  1057                VD_log_d ate := SYS DATE;
  1058  
  1059                ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( CC_process _name,1,60 ),
  1060                                            PD _job_log_d ate => VD_ log_date,
  1061                                            PC _job_statu s => SUBST R('ERROR        - Arc hive Proce ss Loop',1 ,60),
  1062                                            PC _job_log_m essage =>  SUBSTR('Fa iled DELET E row # '
  1063                                                                            ||  I_del_err
  1064                                                                            ||  ' occurred  during it eration #  '
  1065                                                                            ||  SQL%BULK_E XCEPTIONS( I_del_err) .ERROR_IND EX
  1066                                                                            ||  ' Error me ssage: '
  1067                                                                            ||  SQLERRM(-S QL%BULK_EX CEPTIONS(I _del_err). ERROR_CODE ),1,2000),
  1068                                            PD _date1 =>  VD_process _start_dat e,
  1069                                            PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  1070  
  1071                ADRMGT.J ob_Process _Err_Sp(PC _job_name  => SUBSTR( CC_process _name,1,60 ),
  1072                                            PD _job_error _date  =>  VD_log_dat e,
  1073                                            PC _job_error _code => S UBSTR(-SQL %BULK_EXCE PTIONS(I_d el_err).ER ROR_CODE,1 ,60),
  1074                                            PC _job_error _message = > SUBSTR(' Failed DEL ETE row #  '
  1075                                                                              | | I_del_er r
  1076                                                                              | | ' occurr ed during  iteration  # '
  1077                                                                              | | SQL%BULK _EXCEPTION S(I_del_er r).ERROR_I NDEX
  1078                                                                              | | ' Error  message: '
  1079                                                                              | | SQLERRM( -SQL%BULK_ EXCEPTIONS (I_del_err ).ERROR_CO DE),1,2000 ),
  1080                                            PD _date1 =>  VD_process _start_dat e,
  1081                                            PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  1082  
  1083              END LOOP;
  1084  
  1085              ROLLBACK;
  1086  
  1087              Update_Las t_Person_P arm(VN_pre vious_pers on_id);
  1088  
  1089           WH EN OTHERS  THEN
  1090  
  1091              VB_error : = TRUE;
  1092              VN_insert_ count := S QL%ROWCOUN T;
  1093  
  1094              VD_log_dat e := SYSDA TE;
  1095  
  1096              ADRMGT.Job _Process_L og_Sp(PC_j ob_name =>  SUBSTR(CC _process_n ame,1,60),
  1097                                          PD_j ob_log_dat e => VD_lo g_date,
  1098                                          PC_j ob_status  => SUBSTR( 'ERROR        - Archi ve Process  Loop',1,6 0),
  1099                                          PC_j ob_log_mes sage => SU BSTR('Unkn own error  while dele ting HL7 r ows. '
  1100                                                                          || LT RIM(RTRIM( PC_process _msg))
  1101                                                                          || '  - Rows in  collection  after cle an up: '
  1102                                                                          || LT RIM(TO_CHA R(T_hl7_tx ns.COUNT -  VI_rows_t o_keep_cou nt,'999,99 0'))
  1103                                                                          || '.  Error cou nt: '
  1104                                                                          || LT RIM(TO_CHA R(SQL%BULK _EXCEPTION S.COUNT,'9 99,990'))
  1105                                                                          || '.  Rows atte mpted to d elete: '
  1106                                                                          || LT RIM(TO_CHA R(VN_inser t_count,'9 99,990')), 1,2000),
  1107                                          PD_d ate1 => VD _process_s tart_date,
  1108                                          PC_t ext1 => SU BSTR('Date 1 column c ontains th e daily pr ocess star t date',1, 255));
  1109  
  1110              ADRMGT.Job _Process_E rr_Sp(PC_j ob_name =>  SUBSTR(CC _process_n ame,1,60),
  1111                                          PD_j ob_error_d ate  => VD _log_date,
  1112                                          PC_j ob_error_c ode => SUB STR(SQLCOD E,1,60),
  1113                                          PC_j ob_error_m essage =>  SUBSTR('Un known erro r while de leting HL7  rows. '
  1114                                                                            ||  LTRIM(RTRI M(PC_proce ss_msg))
  1115                                                                            ||  ' - Rows i n collecti on after c lean up: '
  1116                                                                            ||  LTRIM(TO_C HAR(T_hl7_ txns.COUNT  - VI_rows _to_keep_c ount,'999, 990'))
  1117                                                                            ||  '. Error c ount: '
  1118                                                                            ||  LTRIM(TO_C HAR(SQL%BU LK_EXCEPTI ONS.COUNT, '999,990') )
  1119                                                                            ||  '. Rows at tempted to  delete: '
  1120                                                                            ||  LTRIM(TO_C HAR(VN_ins ert_count, '999,990') ),1,2000),
  1121                                          PD_d ate1 => VD _process_s tart_date,
  1122                                          PC_t ext1 => SU BSTR('Date 1 column c ontains th e daily pr ocess star t date',1, 255));
  1123  
  1124              ROLLBACK;
  1125  
  1126              Update_Las t_Person_P arm(VN_pre vious_pers on_id);
  1127  
  1128         END;   -- end d elete HL7  rows
  1129  
  1130       ELSE   -- not all  the rows  were inser ted
  1131  
  1132         VB_e rror := TR UE;
  1133  
  1134         VD_l og_date :=  SYSDATE;
  1135  
  1136         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  1137                                      PD_job_l og_date =>  VD_log_da te,
  1138                                      PC_job_s tatus => S UBSTR('ERR OR       -  Archive P rocess Loo p',1,60),
  1139                                      PC_job_l og_message  => SUBSTR ('Number o f rows ins erted do n ot match n umber of r ows in tem p table. '
  1140                                                                      || LTRIM( RTRIM(PC_p rocess_msg ))
  1141                                                                      || ' - Ro ws in coll ection aft er clean u p: '
  1142                                                                      || LTRIM( TO_CHAR(T_ hl7_txns.C OUNT - VI_ rows_to_ke ep_count,' 999,990'))
  1143                                                                      || ' - IN SERT COUNT : '
  1144                                                                      || LTRIM( TO_CHAR(VN _insert_co unt,'999,9 90')),1,20 00),
  1145                                      PD_date1  => VD_pro cess_start _date,
  1146                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  1147  
  1148         ADRM GT.Job_Pro cess_Err_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  1149                                      PD_job_e rror_date   => VD_log _date,
  1150                                      PC_job_e rror_code  => NULL,
  1151                                      PC_job_e rror_messa ge => SUBS TR('Number  of rows i nserted do  not match  number of  rows in t emp table.  '
  1152                                                                        || LTRI M(RTRIM(PC _process_m sg))
  1153                                                                        || ' -  Rows in co llection a fter clean  up: '
  1154                                                                        || LTRI M(TO_CHAR( T_hl7_txns .COUNT - V I_rows_to_ keep_count ,'999,990' ))
  1155                                                                        || ' -  INSERT COU NT: '
  1156                                                                        || LTRI M(TO_CHAR( VN_insert_ count,'999 ,990')),1, 2000),
  1157                                      PD_date1  => VD_pro cess_start _date,
  1158                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  1159  
  1160         ROLL BACK;
  1161  
  1162         Upda te_Last_Pe rson_Parm( VN_previou s_person_i d);
  1163  
  1164       END IF ;  -- end  if all the  rows were  inserted
  1165  
  1166     EXCEPTIO N   -- fai led during  insert
  1167  
  1168       WHEN E E_DML_ERRO R THEN
  1169  
  1170         VB_e rror := TR UE;
  1171         VN_i nsert_coun t := SQL%R OWCOUNT;
  1172  
  1173         VD_l og_date :=  SYSDATE;
  1174  
  1175         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  1176                                      PD_job_l og_date =>  VD_log_da te,
  1177                                      PC_job_s tatus => S UBSTR('ERR OR       -  Archive P rocess Loo p',1,60),
  1178                                      PC_job_l og_message  => SUBSTR ('All rows  not inser ted. '
  1179                                                                      || LTRIM( RTRIM(PC_p rocess_msg ))
  1180                                                                      || ' - Ro ws in coll ection aft er clean u p: '
  1181                                                                      || LTRIM( TO_CHAR(T_ hl7_txns.C OUNT - VI_ rows_to_ke ep_count,' 999,990'))
  1182                                                                      || '. Err or count:  '
  1183                                                                      || LTRIM( TO_CHAR(SQ L%BULK_EXC EPTIONS.CO UNT,'999,9 90'))
  1184                                                                      || '. Row s attempte d to inser t: '
  1185                                                                      || LTRIM( TO_CHAR(VN _insert_co unt,'999,9 90')),1,20 00),
  1186                                      PD_date1  => VD_pro cess_start _date,
  1187                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  1188  
  1189         ADRM GT.Job_Pro cess_Err_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  1190                                      PD_job_e rror_date   => VD_log _date,
  1191                                      PC_job_e rror_code  => NULL,
  1192                                      PC_job_e rror_messa ge => SUBS TR('All ro ws not ins erted. '
  1193                                                                        || LTRI M(RTRIM(PC _process_m sg))
  1194                                                                        || ' -  Rows in co llection a fter clean  up: '
  1195                                                                        || LTRI M(TO_CHAR( T_hl7_txns .COUNT - V I_rows_to_ keep_count ,'999,990' ))
  1196                                                                        || '. E rror count : '
  1197                                                                        || LTRI M(TO_CHAR( SQL%BULK_E XCEPTIONS. COUNT,'999 ,990'))
  1198                                                                        || '. R ows attemp ted to ins ert: '
  1199                                                                        || LTRI M(TO_CHAR( VN_insert_ count,'999 ,990')),1, 2000),
  1200                                      PD_date1  => VD_pro cess_start _date,
  1201                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  1202  
  1203         FOR  I_ins_err  IN 1..SQL% BULK_EXCEP TIONS.COUN T LOOP
  1204  
  1205           VD _log_date  := SYSDATE ;
  1206  
  1207           AD RMGT.Job_P rocess_Log _Sp(PC_job _name => S UBSTR(CC_p rocess_nam e,1,60),
  1208                                        PD_job _log_date  => VD_log_ date,
  1209                                        PC_job _status =>  SUBSTR('E RROR        - Archive  Process L oop',1,60) ,
  1210                                        PC_job _log_messa ge => SUBS TR('Failed  INSERT ro w # '
  1211                                                                        || I_in s_err
  1212                                                                        || ' oc curred dur ing iterat ion # '
  1213                                                                        || SQL% BULK_EXCEP TIONS(I_in s_err).ERR OR_INDEX
  1214                                                                        || ' Er ror messag e: '
  1215                                                                        || SQLE RRM(-SQL%B ULK_EXCEPT IONS(I_ins _err).ERRO R_CODE),1, 2000),
  1216                                        PD_dat e1 => VD_p rocess_sta rt_date,
  1217                                        PC_tex t1 => SUBS TR('Date1  column con tains the  daily proc ess start  date',1,25 5));
  1218  
  1219           AD RMGT.Job_P rocess_Err _Sp(PC_job _name => S UBSTR(CC_p rocess_nam e,1,60),
  1220                                        PD_job _error_dat e  => VD_l og_date,
  1221                                        PC_job _error_cod e => SUBST R(-SQL%BUL K_EXCEPTIO NS(I_ins_e rr).ERROR_ CODE,1,60) ,
  1222                                        PC_job _error_mes sage => SU BSTR('Fail ed INSERT  row # '
  1223                                                                        || I_in s_err
  1224                                                                        || ' oc curred dur ing iterat ion # '
  1225                                                                        || SQL% BULK_EXCEP TIONS(I_in s_err).ERR OR_INDEX
  1226                                                                        || ' Er ror messag e: '
  1227                                                                        || SQLE RRM(-SQL%B ULK_EXCEPT IONS(I_ins _err).ERRO R_CODE),1, 2000),
  1228                                        PD_dat e1 => VD_p rocess_sta rt_date,
  1229                                        PC_tex t1 => SUBS TR('Date1  column con tains the  daily proc ess start  date',1,25 5));
  1230  
  1231         END  LOOP;
  1232  
  1233         ROLL BACK;
  1234  
  1235         Upda te_Last_Pe rson_Parm( VN_previou s_person_i d);
  1236  
  1237       WHEN O THERS THEN
  1238  
  1239         VB_e rror := TR UE;
  1240         VN_i nsert_coun t := SQL%R OWCOUNT;
  1241  
  1242         VD_l og_date :=  SYSDATE;
  1243  
  1244         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  1245                                      PD_job_l og_date =>  VD_log_da te,
  1246                                      PC_job_s tatus => S UBSTR('ERR OR       -  Archive P rocess Loo p',1,60),
  1247                                      PC_job_l og_message  => SUBSTR ('Unknown  error whil e insertin g archive  rows. '
  1248                                                                      || LTRIM( RTRIM(PC_p rocess_msg ))
  1249                                                                      || ' - Ro ws in coll ection aft er clean u p: '
  1250                                                                      || LTRIM( TO_CHAR(T_ hl7_txns.C OUNT - VI_ rows_to_ke ep_count,' 999,990'))
  1251                                                                      || '. Err or count:  '
  1252                                                                      || LTRIM( TO_CHAR(SQ L%BULK_EXC EPTIONS.CO UNT,'999,9 90'))
  1253                                                                      || '. Row s attempte d to inser t: '
  1254                                                                      || LTRIM( TO_CHAR(VN _insert_co unt,'999,9 90')),1,20 00),
  1255                                      PD_date1  => VD_pro cess_start _date,
  1256                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  1257  
  1258         ADRM GT.Job_Pro cess_Err_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  1259                                      PD_job_e rror_date   => VD_log _date,
  1260                                      PC_job_e rror_code  => SUBSTR( SQLCODE,1, 60),
  1261                                      PC_job_e rror_messa ge => SUBS TR('Unknow n error wh ile insert ing archiv e rows. '
  1262                                                                        || LTRI M(RTRIM(PC _process_m sg))
  1263                                                                        || ' -  Rows in co llection a fter clean  up: '
  1264                                                                        || LTRI M(TO_CHAR( T_hl7_txns .COUNT - V I_rows_to_ keep_count ,'999,990' ))
  1265                                                                        || '. E rror count : '
  1266                                                                        || LTRI M(TO_CHAR( SQL%BULK_E XCEPTIONS. COUNT,'999 ,990'))
  1267                                                                        || '. R ows attemp ted to ins ert: '
  1268                                                                        || LTRI M(TO_CHAR( VN_insert_ count,'999 ,990')),1, 2000),
  1269                                      PD_date1  => VD_pro cess_start _date,
  1270                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  1271  
  1272         ROLL BACK;
  1273  
  1274         Upda te_Last_Pe rson_Parm( VN_previou s_person_i d);
  1275  
  1276     END;  --  end inser t archive  rows
  1277  
  1278   EXCEPTION
  1279  
  1280     WHEN OTH ERS THEN
  1281  
  1282       VB_err or := TRUE ;
  1283  
  1284       VD_log _date := S YSDATE;
  1285  
  1286       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  1287                                    PD_job_log _date => V D_log_date ,
  1288                                    PC_job_sta tus => SUB STR('ERROR        - A rchive Pro cess Loop' ,1,60),
  1289                                    PC_job_log _message = > SUBSTR(' Unknown er ror in pro cedure Pro cess_Archi ve_Rows. '
  1290                                                                   | | LTRIM(RT RIM(PC_pro cess_msg))
  1291                                                                   | | ' - Rows  in collec tion after  clean up:  '
  1292                                                                   | | LTRIM(TO _CHAR(T_hl 7_txns.COU NT - VI_ro ws_to_keep _count,'99 9,990'))
  1293                                                                   | | ' - Erro r: '
  1294                                                                   | | SQLERRM, 1,2000),
  1295                                    PD_date1 = > VD_proce ss_start_d ate,
  1296                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  1297  
  1298       ADRMGT .Job_Proce ss_Err_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  1299                                    PD_job_err or_date  = > VD_log_d ate,
  1300                                    PC_job_err or_code =>  SUBSTR(SQ LCODE,1,60 ),
  1301                                    PC_job_err or_message  => SUBSTR ('Unknown  error in p rocedure P rocess_Arc hive_Rows.  '
  1302                                                                   | | LTRIM(RT RIM(PC_pro cess_msg))
  1303                                                                   | | ' - Rows  in collec tion after  clean up:  '
  1304                                                                   | | LTRIM(TO _CHAR(T_hl 7_txns.COU NT - VI_ro ws_to_keep _count,'99 9,990'))
  1305                                                                   | | ' - Erro r: '
  1306                                                                   | | SQLERRM, 1,2000),
  1307                                    PD_date1 = > VD_proce ss_start_d ate,
  1308                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  1309  
  1310       ROLLBA CK;
  1311  
  1312       Update _Last_Pers on_Parm(VN _previous_ person_id) ;
  1313  
  1314   END Proces s_Archive_ Rows;
  1315  
  1316   -- ******* ********** ********** ********** ********** ********** ********** ********
  1317   -- *
  1318   -- * Main  Procedure
  1319   -- *
  1320   -- ******* ********** ********** ********** ********** ********** ********** ********
  1321  
  1322   BEGIN
  1323  
  1324     DBMS_APP LICATION_I NFO.SET_MO DULE(Modul e_name =>  'Hl7_Proce ss_Archive s',
  1325                                         Actio n_name =>  NULL);
  1326  
  1327     VD_proce ss_start_d ate := SYS DATE;
  1328  
  1329     VD_log_d ate := SYS DATE;
  1330  
  1331     ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( CC_process _name,1,60 ),
  1332                                 PD _job_log_d ate => VD_ log_date,
  1333                                 PC _job_statu s => SUBST R('INFORMA TION - Pro cess Initi ation',1,6 0),
  1334                                 PC _job_log_m essage =>  NULL,
  1335                                 PD _date1 =>  VD_process _start_dat e,
  1336                                 PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  1337  
  1338   -- ******* ********** ********** ********** ********** ********** ********** ********
  1339   -- *
  1340   -- * Valid ate input  parameters
  1341   -- *
  1342   -- ******* ********** ********** ********** ********** ********** ********** ********
  1343  
  1344     DBMS_APP LICATION_I NFO.SET_AC TION(Actio n_name =>  'Validatin g Input Pa rameters') ;
  1345  
  1346   -- * Check  run stand alone flag
  1347  
  1348     IF PB_ru n_standalo ne IS NULL
  1349      OR NOT  PB_run_sta ndalone TH EN
  1350  
  1351       VB_run _standalon e := FALSE ;
  1352       VC_run _standalon e := 'FALS E'; -- use d for log  message, b oolean can 't be disp layed
  1353  
  1354     ELSE
  1355  
  1356       VB_run _standalon e := TRUE;
  1357       VC_run _standalon e := 'TRUE '; -- used  for log m essage, bo olean can' t be displ ayed
  1358  
  1359     END IF;
  1360  
  1361   -- * Check  run on re port insta nce flag
  1362  
  1363     IF PB_al low_rpt_in st IS NULL
  1364      OR NOT  PB_allow_r pt_inst TH EN
  1365  
  1366       VB_all ow_rpt_ins t := FALSE ;
  1367       VC_all ow_rpt_ins t := 'FALS E'; -- use d for log  message, b oolean can 't be disp layed
  1368  
  1369     ELSE
  1370  
  1371       VB_all ow_rpt_ins t := TRUE;
  1372       VC_all ow_rpt_ins t := 'TRUE '; -- used  for log m essage, bo olean can' t be displ ayed
  1373  
  1374     END IF;
  1375  
  1376     VD_log_d ate := SYS DATE;
  1377  
  1378     ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( CC_process _name,1,60 ),
  1379                                 PD _job_log_d ate => VD_ log_date,
  1380                                 PC _job_statu s => SUBST R('INFORMA TION - Com mand Line  Parameters ',1,60),
  1381                                 PC _job_log_m essage =>  SUBSTR('Cu rrent job  command li ne paramet ers - '
  1382                                                              || ' R un standal one: ' ||  VC_run_sta ndalone
  1383                                                              || ' R un on repo rting data bases: ' | | VC_allow _rpt_inst, 1,2000),
  1384                                 PD _date1 =>  VD_process _start_dat e,
  1385                                 PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  1386  
  1387   -- ******* ********** ********** ********** ********** ********** ********** ********
  1388   -- *
  1389   -- * Check  to see if  process i s running  on a repor ting datab ase.
  1390   -- *  - If  VB_allow_ rpt_inst i s FALSE, t hen it's n ot allowed . End the  job.
  1391   -- *
  1392   -- ******* ********** ********** ********** ********** ********** ********** ********
  1393  
  1394     DBMS_APP LICATION_I NFO.SET_AC TION(Actio n_name =>  'Check if  running on  reporting  DB');
  1395  
  1396     BEGIN
  1397  
  1398       SELECT     Instan ce_name
  1399       INTO       VC_ins tance_name
  1400       FROM       V$inst ance;
  1401  
  1402       VD_log _date := S YSDATE;
  1403       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  1404                                    PD_job_log _date => V D_log_date ,
  1405                                    PC_job_sta tus => SUB STR('INFOR MATION - I nstance Na me' ,1,60) ,
  1406                                    PC_job_log _message = > SUBSTR(' Job is run ning on in stance ' | | UPPER(VC _instance_ name) || ' .',1,2000) ,
  1407                                    PD_date1 = > VD_proce ss_start_d ate,
  1408                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  1409  
  1410       IF NOT  VB_allow_ rpt_inst
  1411        AND U PPER(SUBST R(VC_insta nce_name,1 ,4)) = 'AD RR' THEN
  1412  
  1413         VD_l og_date :=  SYSDATE;
  1414  
  1415         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  1416                                      PD_job_l og_date =>  VD_log_da te,
  1417                                      PC_job_s tatus => S UBSTR('ERR OR       -  Reporting  Database  Check',1,6 0),
  1418                                      PC_job_l og_message  => SUBSTR ('Attempti ng to run  on a repor ting datab ase with e xecution p arameter'
  1419                                                                  ||  ' VB_allo w_rpt_inst  set to FA LSE. This  job has be en termina ted.'
  1420                                                                  ||  ' To run  on a repor ting insta nce, set p arameter V B_allow_rp t_inst'
  1421                                                                  ||  ' to TRUE  and resub mit the jo b.',1,2000 ),
  1422                                      PD_date1  => VD_pro cess_start _date,
  1423                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  1424  
  1425         RETU RN;
  1426  
  1427       END IF ;
  1428  
  1429     EXCEPTIO N
  1430  
  1431       WHEN O THERS THEN
  1432  
  1433         VD_l og_date :=  SYSDATE;
  1434  
  1435         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  1436                                      PD_job_l og_date =>  VD_log_da te,
  1437                                      PC_job_s tatus => S UBSTR('ERR OR       -  Reporting  Database  Check',1,6 0),
  1438                                      PC_job_l og_message  => SUBSTR ('Unable t o retrieve  instance  name. Term inating sc ript.',1,2 000),
  1439                                      PD_date1  => VD_pro cess_start _date,
  1440                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  1441  
  1442         ADRM GT.Job_Pro cess_Err_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  1443                                      PD_job_e rror_date   => VD_log _date,
  1444                                      PC_job_e rror_code  => SUBSTR( SQLCODE,1, 60),
  1445                                      PC_job_e rror_messa ge => SUBS TR('Unable  to retrie ve instanc e name. '
  1446                                                                        || SQLE RRM,1,2000 ),
  1447                                      PD_date1  => VD_pro cess_start _date,
  1448                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  1449  
  1450         RETU RN;
  1451  
  1452     END;
  1453  
  1454   -- ******* ********** ********** ********** ********** ********** ********** ********
  1455   -- *
  1456   -- * Check  to see if  any other  jobs of t his proced ure are ru nning.
  1457   -- *  - If  yes, then  end this  job.
  1458   -- *
  1459   -- ******* ********** ********** ********** ********** ********** ********** ********
  1460  
  1461     DBMS_APP LICATION_I NFO.SET_AC TION(Actio n_name =>  'Check for  duplicate  jobs runn ing');
  1462  
  1463     SELECT C OUNT(*)
  1464     INTO   V N_job_coun t
  1465     FROM   S YS.DBA_JOB S J
  1466     WHERE  U PPER(J.WHA T) LIKE '% HL7_PROCES S_ARCHIVES %';
  1467  
  1468     IF VN_jo b_count >  1 THEN
  1469  
  1470       VD_log _date := S YSDATE;
  1471  
  1472       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  1473                                    PD_job_log _date => V D_log_date ,
  1474                                    PC_job_sta tus => SUB STR('ERROR        - M ultiple Ex ecution Ch eck',1,60) ,
  1475                                    PC_job_log _message = > SUBSTR(' There is a nother ins tance of t his job al ready in t he job que ue.'
  1476                                                                || '  Exiting j ob without  running.' ,1,2000),
  1477                                    PD_date1 = > VD_proce ss_start_d ate,
  1478                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  1479  
  1480       RETURN ;
  1481  
  1482     ELSE
  1483  
  1484       IF VB_ run_standa lone THEN
  1485  
  1486         VD_l og_date :=  SYSDATE;
  1487  
  1488         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  1489                                      PD_job_l og_date =>  VD_log_da te,
  1490                                      PC_job_s tatus => S UBSTR('INF ORMATION -  Execution  Mode',1,6 0),
  1491                                      PC_job_l og_message  => SUBSTR ('Starting  in STANDA LONE mode. ',1,2000),
  1492                                      PD_date1  => VD_pro cess_start _date,
  1493                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  1494  
  1495       ELSE
  1496  
  1497         VD_l og_date :=  SYSDATE;
  1498  
  1499         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  1500                                      PD_job_l og_date =>  VD_log_da te,
  1501                                      PC_job_s tatus => S UBSTR('INF ORMATION -  Execution  Mode',1,6 0),
  1502                                      PC_job_l og_message  => SUBSTR ('Starting  in DBMS_J OB mode.', 1,2000),
  1503                                      PD_date1  => VD_pro cess_start _date,
  1504                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  1505  
  1506       END IF ;
  1507  
  1508     END IF;
  1509  
  1510   -- ******* ********** ********** ********** ********** ********** ********** ********
  1511   -- *
  1512   -- * Retri eve modifi able param eters
  1513   -- *
  1514   -- *  If t he process  control p arameter =  0 then th e job retu rns contro l to
  1515   -- *  to D BMS_JOB an d waits un til it is  called to  run again.
  1516   -- *
  1517   -- ******* ********** ********** ********** ********** ********** ********** ********
  1518  
  1519     DBMS_APP LICATION_I NFO.SET_AC TION(Actio n_name =>  'Fetching  user param eters');
  1520  
  1521   -- * START _STOP_PROC ESS parame ter
  1522  
  1523     BEGIN
  1524  
  1525       SELECT     AP.Val ue
  1526       INTO       VN_pro cess_contr ol
  1527       FROM       Adr_Pa rameter AP
  1528       WHERE      Applic ation_name  = 'HL7_AR CHIVE_CONT ROL'
  1529       AND        Parame ter_name =  'START_ST OP_PROCESS ';
  1530  
  1531       IF VN_ process_co ntrol = 0  THEN
  1532  
  1533         VD_l og_date :=  SYSDATE;
  1534  
  1535         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  1536                                      PD_job_l og_date =>  VD_log_da te,
  1537                                      PC_job_s tatus => S UBSTR('INF ORMATION -  Process C ontrol',1, 60),
  1538                                      PC_job_l og_message  => SUBSTR ('Start/St op control  flag set  to STOP (0 ). Going b ack to sle ep.',1,200 0),
  1539                                      PD_date1  => VD_pro cess_start _date,
  1540                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  1541  
  1542         RETU RN;
  1543  
  1544       ELSE
  1545  
  1546         VD_l og_date :=  SYSDATE;
  1547  
  1548         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  1549                                      PD_job_l og_date =>  VD_log_da te,
  1550                                      PC_job_s tatus => S UBSTR('INF ORMATION -  Process C ontrol',1, 60),
  1551                                      PC_job_l og_message  => SUBSTR ('Start/St op control  flag set  to START ( 1). Archiv ing proces s starting .',1,2000) ,
  1552                                      PD_date1  => VD_pro cess_start _date,
  1553                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  1554  
  1555       END IF ;
  1556  
  1557     EXCEPTIO N
  1558  
  1559       WHEN O THERS THEN
  1560  
  1561         VD_l og_date :=  SYSDATE;
  1562  
  1563         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  1564                                      PD_job_l og_date =>  VD_log_da te,
  1565                                      PC_job_s tatus => S UBSTR('ERR OR       -  Process C ontrol',1, 60),
  1566                                      PC_job_l og_message  => SUBSTR ('Unable t o retrieve  parameter  START_STO P_PROCESS. '
  1567                                                                      || ' Term inating ex ecution of  the job.  '|| SQLERR M,1,2000),
  1568                                      PD_date1  => VD_pro cess_start _date,
  1569                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  1570  
  1571         ADRM GT.Job_Pro cess_Err_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  1572                                      PD_job_e rror_date   => VD_log _date,
  1573                                      PC_job_e rror_code  => SUBSTR( SQLCODE,1, 60),
  1574                                      PC_job_e rror_messa ge => SUBS TR('Unable  to retrie ve paramet er START_S TOP_PROCES S. '
  1575                                                                        || SQLE RRM,1,2000 ),
  1576                                      PD_date1  => VD_pro cess_start _date,
  1577                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  1578  
  1579         RETU RN;
  1580  
  1581     END;
  1582  
  1583   -- * OLDES T LOG FILE  DAYS KEPT  parameter
  1584  
  1585     BEGIN
  1586  
  1587       SELECT     AP.Val ue
  1588       INTO       VN_log _age_to_ke ep
  1589       FROM       Adr_Pa rameter AP
  1590       WHERE      Applic ation_name  = 'HL7_PR OCESS_ARCH IVES'
  1591       AND        Parame ter_name =  'OLDEST L OG FILE DA YS KEPT';
  1592  
  1593       VD_log _date := S YSDATE;
  1594  
  1595       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  1596                                    PD_job_log _date => V D_log_date ,
  1597                                    PC_job_sta tus => SUB STR('INFOR MATION - U ser Define d Paramete rs',1,60),
  1598                                    PC_job_log _message = > SUBSTR(' Parameter:  OLDEST LO G FILE DAY S KEPT  -  Value: '||  VN_log_ag e_to_keep, 1,2000),
  1599                                    PD_date1 = > VD_proce ss_start_d ate,
  1600                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  1601  
  1602     EXCEPTIO N
  1603  
  1604       WHEN O THERS THEN
  1605  
  1606         VD_l og_date :=  SYSDATE;
  1607  
  1608         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  1609                                      PD_job_l og_date =>  VD_log_da te,
  1610                                      PC_job_s tatus => S UBSTR('ERR OR       -  User Defi ned Parame ters',1,60 ),
  1611                                      PC_job_l og_message  => SUBSTR ('Unable t o retrieve  parameter  OLDEST LO G FILE DAY S KEPT.'
  1612                                                                      || ' Term inating ex ecution of  the job.  '|| SQLERR M,1,2000),
  1613                                      PD_date1  => VD_pro cess_start _date,
  1614                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  1615  
  1616         ADRM GT.Job_Pro cess_Err_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  1617                                      PD_job_e rror_date   => VD_log _date,
  1618                                      PC_job_e rror_code  => SUBSTR( SQLCODE,1, 60),
  1619                                      PC_job_e rror_messa ge => SUBS TR('Unable  to retrie ve paramet er OLDEST  LOG FILE D AYS KEPT.  '
  1620                                                                        || SQLE RRM,1,2000 ),
  1621                                      PD_date1  => VD_pro cess_start _date,
  1622                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  1623  
  1624         RETU RN;
  1625  
  1626     END;
  1627  
  1628   -- * OLDES T UNCOMPLE TED HL7 DA YS NOT ARC HIVED para meter
  1629  
  1630     BEGIN
  1631  
  1632       SELECT     AP.Val ue
  1633       INTO       VN_par m_keep_unc ompleted_d ays
  1634       FROM       Adr_Pa rameter AP
  1635       WHERE      Applic ation_name  = 'HL7_PR OCESS_ARCH IVES'
  1636       AND        Parame ter_name =  'OLDEST U NCOMPLETED  HL7 DAYS  NOT ARCHIV ED';
  1637  
  1638       VD_log _date := S YSDATE;
  1639  
  1640       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  1641                                    PD_job_log _date => V D_log_date ,
  1642                                    PC_job_sta tus => SUB STR('INFOR MATION - U ser Define d Paramete rs',1,60),
  1643                                    PC_job_log _message = > SUBSTR(' Parameter:  OLDEST UN COMPLETED  HL7 DAYS N OT ARCHIVE D - Value:  '|| VN_pa rm_keep_un completed_ days,1,200 0),
  1644                                    PD_date1 = > VD_proce ss_start_d ate,
  1645                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  1646  
  1647     EXCEPTIO N
  1648  
  1649       WHEN O THERS THEN
  1650  
  1651         VD_l og_date :=  SYSDATE;
  1652  
  1653         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  1654                                      PD_job_l og_date =>  VD_log_da te,
  1655                                      PC_job_s tatus => S UBSTR('ERR OR       -  User Defi ned Parame ters',1,60 ),
  1656                                      PC_job_l og_message  => SUBSTR ('Unable t o retrieve  parameter  OLDEST UN COMPLETED  HL7 DAYS N OT ARCHIVE D.'
  1657                                                                      || ' Term inating ex ecution of  the job.  '|| SQLERR M,1,2000),
  1658                                      PD_date1  => VD_pro cess_start _date,
  1659                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  1660  
  1661         ADRM GT.Job_Pro cess_Err_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  1662                                      PD_job_e rror_date   => VD_log _date,
  1663                                      PC_job_e rror_code  => SUBSTR( SQLCODE,1, 60),
  1664                                      PC_job_e rror_messa ge => SUBS TR('Unable  to retrie ve paramet er OLDEST  UNCOMPLETE D HL7 DAYS  NOT ARCHI VED. '
  1665                                                                        || SQLE RRM,1,2000 ),
  1666                                      PD_date1  => VD_pro cess_start _date,
  1667                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  1668  
  1669         RETU RN;
  1670  
  1671     END;
  1672  
  1673   -- * RECOR DS KEPT CO UNT - ORFZ 10-S param eter
  1674  
  1675     BEGIN
  1676  
  1677       SELECT     AP.Val ue
  1678       INTO       VN_par m_keep_orf z10s_count
  1679       FROM       Adr_Pa rameter AP
  1680       WHERE      Applic ation_name  = 'HL7_PR OCESS_ARCH IVES'
  1681       AND        Parame ter_name =  'RECORDS  KEPT COUNT  - ORFZ10- S';
  1682  
  1683       VD_log _date := S YSDATE;
  1684  
  1685       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  1686                                    PD_job_log _date => V D_log_date ,
  1687                                    PC_job_sta tus => SUB STR('INFOR MATION - U ser Define d Paramete rs',1,60),
  1688                                    PC_job_log _message = > SUBSTR(' Parameter:  RECORDS K EPT COUNT  - ORFZ10-S  - Value:  '|| VN_par m_keep_orf z10s_count ,1,2000),
  1689                                    PD_date1 = > VD_proce ss_start_d ate,
  1690                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  1691  
  1692     EXCEPTIO N
  1693  
  1694       WHEN O THERS THEN
  1695  
  1696         VD_l og_date :=  SYSDATE;
  1697  
  1698         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  1699                                      PD_job_l og_date =>  VD_log_da te,
  1700                                      PC_job_s tatus => S UBSTR('ERR OR       -  User Defi ned Parame ters',1,60 ),
  1701                                      PC_job_l og_message  => SUBSTR ('Unable t o retrieve  parameter  RECORDS K EPT COUNT  - ORFZ10-S .'
  1702                                                                      || ' Term inating ex ecution of  the job.  '|| SQLERR M,1,2000),
  1703                                      PD_date1  => VD_pro cess_start _date,
  1704                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  1705  
  1706         ADRM GT.Job_Pro cess_Err_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  1707                                      PD_job_e rror_date   => VD_log _date,
  1708                                      PC_job_e rror_code  => SUBSTR( SQLCODE,1, 60),
  1709                                      PC_job_e rror_messa ge => SUBS TR('Unable  to retrie ve paramet er RECORDS  KEPT COUN T - ORFZ10 -S. '
  1710                                                                        || SQLE RRM,1,2000 ),
  1711                                      PD_date1  => VD_pro cess_start _date,
  1712                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  1713  
  1714         RETU RN;
  1715  
  1716     END;
  1717  
  1718   -- * RECOR DS KEPT CO UNT - ORFZ 11-S param eter  -- C CR 1788 Be gin
  1719  
  1720     BEGIN
  1721  
  1722       SELECT     AP.Val ue
  1723       INTO       VN_par m_keep_orf z11s_count
  1724       FROM       Adr_Pa rameter AP
  1725       WHERE      Applic ation_name  = 'HL7_PR OCESS_ARCH IVES'
  1726       AND        Parame ter_name =  'RECORDS  KEPT COUNT  - ORFZ11- S';
  1727  
  1728       VD_log _date := S YSDATE;
  1729  
  1730       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  1731                                    PD_job_log _date => V D_log_date ,
  1732                                    PC_job_sta tus => SUB STR('INFOR MATION - U ser Define d Paramete rs',1,60),
  1733                                    PC_job_log _message = > SUBSTR(' Parameter:  RECORDS K EPT COUNT  - ORFZ11-S  - Value:  '|| VN_par m_keep_orf z11s_count ,1,2000),
  1734                                    PD_date1 = > VD_proce ss_start_d ate,
  1735                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  1736  
  1737     EXCEPTIO N
  1738  
  1739       WHEN O THERS THEN
  1740  
  1741         VD_l og_date :=  SYSDATE;
  1742  
  1743         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  1744                                      PD_job_l og_date =>  VD_log_da te,
  1745                                      PC_job_s tatus => S UBSTR('ERR OR       -  User Defi ned Parame ters',1,60 ),
  1746                                      PC_job_l og_message  => SUBSTR ('Unable t o retrieve  parameter  RECORDS K EPT COUNT  - ORFZ11-S .'
  1747                                                                      || ' Term inating ex ecution of  the job.  '|| SQLERR M,1,2000),
  1748                                      PD_date1  => VD_pro cess_start _date,
  1749                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  1750  
  1751         ADRM GT.Job_Pro cess_Err_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  1752                                      PD_job_e rror_date   => VD_log _date,
  1753                                      PC_job_e rror_code  => SUBSTR( SQLCODE,1, 60),
  1754                                      PC_job_e rror_messa ge => SUBS TR('Unable  to retrie ve paramet er RECORDS  KEPT COUN T - ORFZ11 -S. '
  1755                                                                        || SQLE RRM,1,2000 ),
  1756                                      PD_date1  => VD_pro cess_start _date,
  1757                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  1758  
  1759         RETU RN;
  1760  
  1761     END;  --  CCR 1788  End
  1762  
  1763   -- * RECOR DS KEPT CO UNT - ORUZ 04-S param eter
  1764  
  1765     BEGIN
  1766  
  1767       SELECT     AP.Val ue
  1768       INTO       VN_par m_keep_oru z04s_count
  1769       FROM       Adr_Pa rameter AP
  1770       WHERE      Applic ation_name  = 'HL7_PR OCESS_ARCH IVES'
  1771       AND        Parame ter_name =  'RECORDS  KEPT COUNT  - ORUZ04- S';
  1772  
  1773       VD_log _date := S YSDATE;
  1774  
  1775       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  1776                                    PD_job_log _date => V D_log_date ,
  1777                                    PC_job_sta tus => SUB STR('INFOR MATION - U ser Define d Paramete rs',1,60),
  1778                                    PC_job_log _message = > SUBSTR(' Parameter:  RECORDS K EPT COUNT  - ORUZ04-S  - Value:  '|| VN_par m_keep_oru z04s_count ,1,2000),
  1779                                    PD_date1 = > VD_proce ss_start_d ate,
  1780                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  1781  
  1782     EXCEPTIO N
  1783  
  1784       WHEN O THERS THEN
  1785  
  1786         VD_l og_date :=  SYSDATE;
  1787  
  1788         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  1789                                      PD_job_l og_date =>  VD_log_da te,
  1790                                      PC_job_s tatus => S UBSTR('ERR OR       -  User Defi ned Parame ters',1,60 ),
  1791                                      PC_job_l og_message  => SUBSTR ('Unable t o retrieve  parameter  RECORDS K EPT COUNT  - ORUZ04-S .'
  1792                                                                      || ' Term inating ex ecution of  the job.  '|| SQLERR M,1,2000),
  1793                                      PD_date1  => VD_pro cess_start _date,
  1794                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  1795  
  1796         ADRM GT.Job_Pro cess_Err_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  1797                                      PD_job_e rror_date   => VD_log _date,
  1798                                      PC_job_e rror_code  => SUBSTR( SQLCODE,1, 60),
  1799                                      PC_job_e rror_messa ge => SUBS TR('Unable  to retrie ve paramet er RECORDS  KEPT COUN T - ORUZ04 -S. '
  1800                                                                        || SQLE RRM,1,2000 ),
  1801                                      PD_date1  => VD_pro cess_start _date,
  1802                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  1803  
  1804         RETU RN;
  1805  
  1806     END;
  1807  
  1808   -- * RECOR DS KEPT CO UNT - ORUZ 05-E param eter  -- C CR 1788 Be gin
  1809  
  1810     BEGIN
  1811  
  1812       SELECT     AP.Val ue
  1813       INTO       VN_par m_keep_oru z05e_count
  1814       FROM       Adr_Pa rameter AP
  1815       WHERE      Applic ation_name  = 'HL7_PR OCESS_ARCH IVES'
  1816       AND        Parame ter_name =  'RECORDS  KEPT COUNT  - ORUZ05- E';
  1817  
  1818       VD_log _date := S YSDATE;
  1819  
  1820       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  1821                                    PD_job_log _date => V D_log_date ,
  1822                                    PC_job_sta tus => SUB STR('INFOR MATION - U ser Define d Paramete rs',1,60),
  1823                                    PC_job_log _message = > SUBSTR(' Parameter:  RECORDS K EPT COUNT  - ORUZ05-E  - Value:  '|| VN_par m_keep_oru z05e_count ,1,2000),
  1824                                    PD_date1 = > VD_proce ss_start_d ate,
  1825                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  1826  
  1827     EXCEPTIO N
  1828  
  1829       WHEN O THERS THEN
  1830  
  1831         VD_l og_date :=  SYSDATE;
  1832  
  1833         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  1834                                      PD_job_l og_date =>  VD_log_da te,
  1835                                      PC_job_s tatus => S UBSTR('ERR OR       -  User Defi ned Parame ters',1,60 ),
  1836                                      PC_job_l og_message  => SUBSTR ('Unable t o retrieve  parameter  RECORDS K EPT COUNT  - ORUZ05-E .'
  1837                                                                      || ' Term inating ex ecution of  the job.  '|| SQLERR M,1,2000),
  1838                                      PD_date1  => VD_pro cess_start _date,
  1839                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  1840  
  1841         ADRM GT.Job_Pro cess_Err_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  1842                                      PD_job_e rror_date   => VD_log _date,
  1843                                      PC_job_e rror_code  => SUBSTR( SQLCODE,1, 60),
  1844                                      PC_job_e rror_messa ge => SUBS TR('Unable  to retrie ve paramet er RECORDS  KEPT COUN T - ORUZ05 -E. '
  1845                                                                        || SQLE RRM,1,2000 ),
  1846                                      PD_date1  => VD_pro cess_start _date,
  1847                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  1848  
  1849         RETU RN;
  1850  
  1851     END;  --  CCR 1788  End
  1852  
  1853   -- * RECOR DS KEPT CO UNT - ORUZ 05-S param eter
  1854  
  1855     BEGIN
  1856  
  1857       SELECT     AP.Val ue
  1858       INTO       VN_par m_keep_oru z05s_count
  1859       FROM       Adr_Pa rameter AP
  1860       WHERE      Applic ation_name  = 'HL7_PR OCESS_ARCH IVES'
  1861       AND        Parame ter_name =  'RECORDS  KEPT COUNT  - ORUZ05- S';
  1862  
  1863       VD_log _date := S YSDATE;
  1864  
  1865       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  1866                                    PD_job_log _date => V D_log_date ,
  1867                                    PC_job_sta tus => SUB STR('INFOR MATION - U ser Define d Paramete rs',1,60),
  1868                                    PC_job_log _message = > SUBSTR(' Parameter:  RECORDS K EPT COUNT  - ORUZ05-S  - Value:  '|| VN_par m_keep_oru z05s_count ,1,2000),
  1869                                    PD_date1 = > VD_proce ss_start_d ate,
  1870                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  1871  
  1872     EXCEPTIO N
  1873  
  1874       WHEN O THERS THEN
  1875  
  1876         VD_l og_date :=  SYSDATE;
  1877  
  1878         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  1879                                      PD_job_l og_date =>  VD_log_da te,
  1880                                      PC_job_s tatus => S UBSTR('ERR OR       -  User Defi ned Parame ters',1,60 ),
  1881                                      PC_job_l og_message  => SUBSTR ('Unable t o retrieve  parameter  RECORDS K EPT COUNT  - ORUZ05-S .'
  1882                                                                      || ' Term inating ex ecution of  the job.  '|| SQLERR M,1,2000),
  1883                                      PD_date1  => VD_pro cess_start _date,
  1884                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  1885  
  1886         ADRM GT.Job_Pro cess_Err_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  1887                                      PD_job_e rror_date   => VD_log _date,
  1888                                      PC_job_e rror_code  => SUBSTR( SQLCODE,1, 60),
  1889                                      PC_job_e rror_messa ge => SUBS TR('Unable  to retrie ve paramet er RECORDS  KEPT COUN T - ORUZ05 -S. '
  1890                                                                        || SQLE RRM,1,2000 ),
  1891                                      PD_date1  => VD_pro cess_start _date,
  1892                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  1893  
  1894         RETU RN;
  1895  
  1896     END;
  1897  
  1898   -- * RECOR DS KEPT CO UNT - ORUZ 10-S param eter
  1899  
  1900     BEGIN
  1901  
  1902       SELECT     AP.Val ue
  1903       INTO       VN_par m_keep_oru z10s_count
  1904       FROM       Adr_Pa rameter AP
  1905       WHERE      Applic ation_name  = 'HL7_PR OCESS_ARCH IVES'
  1906       AND        Parame ter_name =  'RECORDS  KEPT COUNT  - ORUZ10- S';
  1907  
  1908       VD_log _date := S YSDATE;
  1909  
  1910       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  1911                                    PD_job_log _date => V D_log_date ,
  1912                                    PC_job_sta tus => SUB STR('INFOR MATION - U ser Define d Paramete rs',1,60),
  1913                                    PC_job_log _message = > SUBSTR(' Parameter:  RECORDS K EPT COUNT  - ORUZ10-S  - Value:  '|| VN_par m_keep_oru z10s_count ,1,2000),
  1914                                    PD_date1 = > VD_proce ss_start_d ate,
  1915                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  1916  
  1917     EXCEPTIO N
  1918  
  1919       WHEN O THERS THEN
  1920  
  1921         VD_l og_date :=  SYSDATE;
  1922  
  1923         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  1924                                      PD_job_l og_date =>  VD_log_da te,
  1925                                      PC_job_s tatus => S UBSTR('ERR OR       -  User Defi ned Parame ters',1,60 ),
  1926                                      PC_job_l og_message  => SUBSTR ('Unable t o retrieve  parameter  RECORDS K EPT COUNT  - ORUZ10-S .'
  1927                                                                      || ' Term inating ex ecution of  the job.  '|| SQLERR M,1,2000),
  1928                                      PD_date1  => VD_pro cess_start _date,
  1929                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  1930  
  1931         ADRM GT.Job_Pro cess_Err_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  1932                                      PD_job_e rror_date   => VD_log _date,
  1933                                      PC_job_e rror_code  => SUBSTR( SQLCODE,1, 60),
  1934                                      PC_job_e rror_messa ge => SUBS TR('Unable  to retrie ve paramet er RECORDS  KEPT COUN T - ORUZ10 -S. '
  1935                                                                        || SQLE RRM,1,2000 ),
  1936                                      PD_date1  => VD_pro cess_start _date,
  1937                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  1938  
  1939         RETU RN;
  1940  
  1941     END;
  1942  
  1943   -- * RECOR DS KEPT CO UNT - ORUZ 11-E param eter
  1944  
  1945     BEGIN
  1946  
  1947       SELECT     AP.Val ue
  1948       INTO       VN_par m_keep_oru z11e_count
  1949       FROM       Adr_Pa rameter AP
  1950       WHERE      Applic ation_name  = 'HL7_PR OCESS_ARCH IVES'
  1951       AND        Parame ter_name =  'RECORDS  KEPT COUNT  - ORUZ11- E';
  1952  
  1953       VD_log _date := S YSDATE;
  1954  
  1955       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  1956                                    PD_job_log _date => V D_log_date ,
  1957                                    PC_job_sta tus => SUB STR('INFOR MATION - U ser Define d Paramete rs',1,60),
  1958                                    PC_job_log _message = > SUBSTR(' Parameter:  RECORDS K EPT COUNT  - ORUZ11-E  - Value:  '|| VN_par m_keep_oru z11e_count ,1,2000),
  1959                                    PD_date1 = > VD_proce ss_start_d ate,
  1960                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  1961  
  1962     EXCEPTIO N
  1963  
  1964       WHEN O THERS THEN
  1965  
  1966         VD_l og_date :=  SYSDATE;
  1967  
  1968         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  1969                                      PD_job_l og_date =>  VD_log_da te,
  1970                                      PC_job_s tatus => S UBSTR('ERR OR       -  User Defi ned Parame ters',1,60 ),
  1971                                      PC_job_l og_message  => SUBSTR ('Unable t o retrieve  parameter  RECORDS K EPT COUNT  - ORUZ11-E .'
  1972                                                                      || ' Term inating ex ecution of  the job.  '|| SQLERR M,1,2000),
  1973                                      PD_date1  => VD_pro cess_start _date,
  1974                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  1975  
  1976         ADRM GT.Job_Pro cess_Err_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  1977                                      PD_job_e rror_date   => VD_log _date,
  1978                                      PC_job_e rror_code  => SUBSTR( SQLCODE,1, 60),
  1979                                      PC_job_e rror_messa ge => SUBS TR('Unable  to retrie ve paramet er RECORDS  KEPT COUN T - ORUZ11 -E. '
  1980                                                                        || SQLE RRM,1,2000 ),
  1981                                      PD_date1  => VD_pro cess_start _date,
  1982                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  1983  
  1984         RETU RN;
  1985  
  1986     END;
  1987  
  1988   -- * RECOR DS KEPT CO UNT - ORUZ 11-S param eter
  1989  
  1990     BEGIN
  1991  
  1992       SELECT     AP.Val ue
  1993       INTO       VN_par m_keep_oru z11s_count
  1994       FROM       Adr_Pa rameter AP
  1995       WHERE      Applic ation_name  = 'HL7_PR OCESS_ARCH IVES'
  1996       AND        Parame ter_name =  'RECORDS  KEPT COUNT  - ORUZ11- S';
  1997  
  1998       VD_log _date := S YSDATE;
  1999  
  2000       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  2001                                    PD_job_log _date => V D_log_date ,
  2002                                    PC_job_sta tus => SUB STR('INFOR MATION - U ser Define d Paramete rs',1,60),
  2003                                    PC_job_log _message = > SUBSTR(' Parameter:  RECORDS K EPT COUNT  - ORUZ11-S  - Value:  '|| VN_par m_keep_oru z11s_count ,1,2000),
  2004                                    PD_date1 = > VD_proce ss_start_d ate,
  2005                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  2006  
  2007     EXCEPTIO N
  2008  
  2009       WHEN O THERS THEN
  2010  
  2011         VD_l og_date :=  SYSDATE;
  2012  
  2013         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  2014                                      PD_job_l og_date =>  VD_log_da te,
  2015                                      PC_job_s tatus => S UBSTR('ERR OR       -  User Defi ned Parame ters',1,60 ),
  2016                                      PC_job_l og_message  => SUBSTR ('Unable t o retrieve  parameter  RECORDS K EPT COUNT  - ORUZ11-S .'
  2017                                                                      || ' Term inating ex ecution of  the job.  '|| SQLERR M,1,2000),
  2018                                      PD_date1  => VD_pro cess_start _date,
  2019                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  2020  
  2021         ADRM GT.Job_Pro cess_Err_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  2022                                      PD_job_e rror_date   => VD_log _date,
  2023                                      PC_job_e rror_code  => SUBSTR( SQLCODE,1, 60),
  2024                                      PC_job_e rror_messa ge => SUBS TR('Unable  to retrie ve paramet er RECORDS  KEPT COUN T - ORUZ11 -S. '
  2025                                                                        || SQLE RRM,1,2000 ),
  2026                                      PD_date1  => VD_pro cess_start _date,
  2027                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  2028  
  2029         RETU RN;
  2030  
  2031     END;
  2032  
  2033   -- * RECOR DS KEPT CO UNT - QRYZ 10-E param eter
  2034  
  2035     BEGIN
  2036  
  2037       SELECT     AP.Val ue
  2038       INTO       VN_par m_keep_qry z10e_count
  2039       FROM       Adr_Pa rameter AP
  2040       WHERE      Applic ation_name  = 'HL7_PR OCESS_ARCH IVES'
  2041       AND        Parame ter_name =  'RECORDS  KEPT COUNT  - QRYZ10- E';
  2042  
  2043       VD_log _date := S YSDATE;
  2044  
  2045       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  2046                                    PD_job_log _date => V D_log_date ,
  2047                                    PC_job_sta tus => SUB STR('INFOR MATION - U ser Define d Paramete rs',1,60),
  2048                                    PC_job_log _message = > SUBSTR(' Parameter:  RECORDS K EPT COUNT  - QRYZ10-E  - Value:  '|| VN_par m_keep_qry z10e_count ,1,2000),
  2049                                    PD_date1 = > VD_proce ss_start_d ate,
  2050                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  2051  
  2052     EXCEPTIO N
  2053  
  2054       WHEN O THERS THEN
  2055  
  2056         VD_l og_date :=  SYSDATE;
  2057  
  2058         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  2059                                      PD_job_l og_date =>  VD_log_da te,
  2060                                      PC_job_s tatus => S UBSTR('ERR OR       -  User Defi ned Parame ters',1,60 ),
  2061                                      PC_job_l og_message  => SUBSTR ('Unable t o retrieve  parameter  RECORDS K EPT COUNT  - QRYZ10-E .'
  2062                                                                      || ' Term inating ex ecution of  the job.  '|| SQLERR M,1,2000),
  2063                                      PD_date1  => VD_pro cess_start _date,
  2064                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  2065  
  2066         ADRM GT.Job_Pro cess_Err_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  2067                                      PD_job_e rror_date   => VD_log _date,
  2068                                      PC_job_e rror_code  => SUBSTR( SQLCODE,1, 60),
  2069                                      PC_job_e rror_messa ge => SUBS TR('Unable  to retrie ve paramet er RECORDS  KEPT COUN T - QRYZ10 -E. '
  2070                                                                        || SQLE RRM,1,2000 ),
  2071                                      PD_date1  => VD_pro cess_start _date,
  2072                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  2073  
  2074         RETU RN;
  2075  
  2076     END;
  2077  
  2078   -- * RECOR DS KEPT CO UNT - QRYZ 11-E param eter  -- C CR 1788 Be gin
  2079  
  2080     BEGIN
  2081  
  2082       SELECT     AP.Val ue
  2083       INTO       VN_par m_keep_qry z11e_count
  2084       FROM       Adr_Pa rameter AP
  2085       WHERE      Applic ation_name  = 'HL7_PR OCESS_ARCH IVES'
  2086       AND        Parame ter_name =  'RECORDS  KEPT COUNT  - QRYZ11- E';
  2087  
  2088       VD_log _date := S YSDATE;
  2089  
  2090       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  2091                                    PD_job_log _date => V D_log_date ,
  2092                                    PC_job_sta tus => SUB STR('INFOR MATION - U ser Define d Paramete rs',1,60),
  2093                                    PC_job_log _message = > SUBSTR(' Parameter:  RECORDS K EPT COUNT  - QRYZ11-E  - Value:  '|| VN_par m_keep_qry z11e_count ,1,2000),
  2094                                    PD_date1 = > VD_proce ss_start_d ate,
  2095                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  2096  
  2097     EXCEPTIO N
  2098  
  2099       WHEN O THERS THEN
  2100  
  2101         VD_l og_date :=  SYSDATE;
  2102  
  2103         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  2104                                      PD_job_l og_date =>  VD_log_da te,
  2105                                      PC_job_s tatus => S UBSTR('ERR OR       -  User Defi ned Parame ters',1,60 ),
  2106                                      PC_job_l og_message  => SUBSTR ('Unable t o retrieve  parameter  RECORDS K EPT COUNT  - QRYZ11-E .'
  2107                                                                      || ' Term inating ex ecution of  the job.  '|| SQLERR M,1,2000),
  2108                                      PD_date1  => VD_pro cess_start _date,
  2109                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  2110  
  2111         ADRM GT.Job_Pro cess_Err_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  2112                                      PD_job_e rror_date   => VD_log _date,
  2113                                      PC_job_e rror_code  => SUBSTR( SQLCODE,1, 60),
  2114                                      PC_job_e rror_messa ge => SUBS TR('Unable  to retrie ve paramet er RECORDS  KEPT COUN T - QRYZ11 -E. '
  2115                                                                        || SQLE RRM,1,2000 ),
  2116                                      PD_date1  => VD_pro cess_start _date,
  2117                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  2118  
  2119         RETU RN;
  2120  
  2121     END;  --  CCR 1788  End
  2122  
  2123   -- * LAST  PERSON_ID  PROCESSED  parameter
  2124  
  2125     BEGIN
  2126  
  2127       SELECT     AP.Val ue
  2128       INTO       VN_pre vious_pers on_id
  2129       FROM       Adr_Pa rameter AP
  2130       WHERE      Applic ation_name  = 'HL7_PR OCESS_ARCH IVES'
  2131       AND        Parame ter_name =  'LAST PER SON_ID PRO CESSED';
  2132  
  2133       VD_log _date := S YSDATE;
  2134  
  2135       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  2136                                    PD_job_log _date => V D_log_date ,
  2137                                    PC_job_sta tus => SUB STR('INFOR MATION - U ser Define d Paramete rs',1,60),
  2138                                    PC_job_log _message = > SUBSTR(' Parameter:  LAST PERS ON_ID PROC ESSED - Va lue: '|| V N_previous _person_id ,1,2000),
  2139                                    PD_date1 = > VD_proce ss_start_d ate,
  2140                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  2141  
  2142     EXCEPTIO N
  2143  
  2144       WHEN O THERS THEN
  2145  
  2146         VD_l og_date :=  SYSDATE;
  2147  
  2148         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  2149                                      PD_job_l og_date =>  VD_log_da te,
  2150                                      PC_job_s tatus => S UBSTR('ERR OR       -  User Defi ned Parame ters',1,60 ),
  2151                                      PC_job_l og_message  => SUBSTR ('Unable t o retrieve  parameter  LAST PERS ON_ID PROC ESSED.'
  2152                                                                      || ' Term inating ex ecution of  the job.  '|| SQLERR M,1,2000),
  2153                                      PD_date1  => VD_pro cess_start _date,
  2154                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  2155  
  2156         ADRM GT.Job_Pro cess_Err_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  2157                                      PD_job_e rror_date   => VD_log _date,
  2158                                      PC_job_e rror_code  => SUBSTR( SQLCODE,1, 60),
  2159                                      PC_job_e rror_messa ge => SUBS TR('Unable  to retrie ve paramet er LAST PE RSON_ID PR OCESSED. '
  2160                                                                        || SQLE RRM,1,2000 ),
  2161                                      PD_date1  => VD_pro cess_start _date,
  2162                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  2163  
  2164         RETU RN;
  2165  
  2166     END;
  2167  
  2168   -- ******* ********** ********** ********** ********** ********** ********** ********
  2169   -- *
  2170   -- * Remov e outdated  log and e rror file  rows
  2171   -- *
  2172   -- ******* ********** ********** ********** ********** ********** ********** ********
  2173  
  2174     DBMS_APP LICATION_I NFO.SET_AC TION(Actio n_name =>  'Removing  old logs a nd error r ows');
  2175  
  2176     BEGIN
  2177  
  2178       VD_log _date := S YSDATE;
  2179  
  2180       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  2181                                    PD_job_log _date => V D_log_date ,
  2182                                    PC_job_sta tus => SUB STR('INFOR MATION - L og File Cl eanup',1,6 0),
  2183                                    PC_job_log _message = > SUBSTR(' Removing E rror Logs  more than  '|| VN_log _age_to_ke ep || ' da ys old.',1 ,2000),
  2184                                    PD_date1 = > VD_proce ss_start_d ate,
  2185                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  2186  
  2187       DELETE
  2188       FROM       Job_Pr ocess_Errs
  2189       WHERE      Job_na me = CC_pr ocess_name
  2190       AND        Date1  < VD_proce ss_start_d ate - VN_l og_age_to_ keep;
  2191  
  2192       COMMIT ;
  2193  
  2194     EXCEPTIO N
  2195  
  2196       WHEN O THERS THEN
  2197  
  2198         VD_l og_date :=  SYSDATE;
  2199  
  2200         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  2201                                      PD_job_l og_date =>  VD_log_da te,
  2202                                      PC_job_s tatus => S UBSTR('ERR OR       -  Log file  cleanup',1 ,60),
  2203                                      PC_job_l og_message  => SUBSTR ('Unable t o remove r ows from e rror log t able.'
  2204                                                                      || ' Term inating ex ecution of  the job.  '|| SQLERR M,1,2000),
  2205                                      PD_date1  => VD_pro cess_start _date,
  2206                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  2207  
  2208         ADRM GT.Job_Pro cess_Err_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  2209                                      PD_job_e rror_date   => VD_log _date,
  2210                                      PC_job_e rror_code  => SUBSTR( SQLCODE,1, 60),
  2211                                      PC_job_e rror_messa ge => SUBS TR('Unable  to remove  rows from  error log  table. '
  2212                                                                        || SQLE RRM,1,2000 ),
  2213                                      PD_date1  => VD_pro cess_start _date,
  2214                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  2215  
  2216         RETU RN;
  2217  
  2218     END;
  2219  
  2220     BEGIN
  2221  
  2222       VD_log _date := S YSDATE;
  2223  
  2224       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  2225                                    PD_job_log _date => V D_log_date ,
  2226                                    PC_job_sta tus => SUB STR('INFOR MATION - L og File Cl eanup',1,6 0),
  2227                                    PC_job_log _message = > SUBSTR(' Removing P rocess Log s more tha n '|| VN_l og_age_to_ keep || '  days old.' ,1,2000),
  2228                                    PD_date1 = > VD_proce ss_start_d ate,
  2229                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  2230  
  2231       DELETE
  2232       FROM       Job_Pr ocess_Logs
  2233       WHERE      Job_na me = CC_pr ocess_name
  2234       AND        Date1  < VD_proce ss_start_d ate - VN_l og_age_to_ keep;
  2235  
  2236       COMMIT ;
  2237  
  2238     EXCEPTIO N
  2239  
  2240       WHEN O THERS THEN
  2241  
  2242         VD_l og_date :=  SYSDATE;
  2243  
  2244         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  2245                                      PD_job_l og_date =>  VD_log_da te,
  2246                                      PC_job_s tatus => S UBSTR('ERR OR       -  Log file  cleanup',1 ,60),
  2247                                      PC_job_l og_message  => SUBSTR ('Unable t o remove r ows from p rocess log  table.'
  2248                                                                      || ' Term inating ex ecution of  the job.  '|| SQLERR M,1,2000),
  2249                                      PD_date1  => VD_pro cess_start _date,
  2250                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  2251  
  2252         ADRM GT.Job_Pro cess_Err_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  2253                                      PD_job_e rror_date   => VD_log _date,
  2254                                      PC_job_e rror_code  => SUBSTR( SQLCODE,1, 60),
  2255                                      PC_job_e rror_messa ge => SUBS TR('Unable  to remove  rows from  process l og table.  '
  2256                                                                        || SQLE RRM,1,2000 ),
  2257                                      PD_date1  => VD_pro cess_start _date,
  2258                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  2259  
  2260         RETU RN;
  2261  
  2262     END;
  2263  
  2264   -- ******* ********** ********** ********** ********** ********** ********** ********
  2265   -- *
  2266   -- * Archi ve Process ing loop
  2267   -- *
  2268   -- ******* ********** ********** ********** ********** ********** ********** ********
  2269  
  2270     BEGIN  - - main pro cessing bl ock
  2271  
  2272       VD_log _date := S YSDATE;
  2273  
  2274       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  2275                                    PD_job_log _date => V D_log_date ,
  2276                                    PC_job_sta tus => SUB STR('INFOR MATION - A rchive Pro cess Loop' ,1,60),
  2277                                    PC_job_log _message = > SUBSTR(' Starting a rchival of  HL7 rows' ,1,2000),
  2278                                    PD_date1 = > VD_proce ss_start_d ate,
  2279                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  2280  
  2281       LOOP   -- main ar chive proc essing loo p
  2282  
  2283         DBMS _APPLICATI ON_INFO.SE T_ACTION(A ction_name  => 'Setti ng Up Arch ive Data') ;
  2284  
  2285         BEGI N  -- Get  next perso n_id to pr ocess
  2286  
  2287           SE LECT    NV L(MIN(Pers on_id),-1)  -- going  past the l ast Person _id (EOF)  returns a  NULL Perso n_id but n ot the exc eption NO_ DATA_FOUND
  2288           IN TO      VN _current_p erson_id    -- so fla g EOF by p utting -1  in VN_curr ent_person _id
  2289           FR OM      Hl 7_Transact ion_Log
  2290           WH ERE     Pe rson_id >  VN_previou s_person_i d;
  2291  
  2292           IF  VN_curren t_person_i d = -1 THE N  -- if p ast the la st Person_ id (EOF)
  2293  
  2294              RAISE NO_D ATA_FOUND;   -- force  a NO_DATA _FOUND exc eption to  tell the p rocess to  complete
  2295  
  2296           EN D IF;  --  end if pas t the last  Person_id  (EOF)
  2297  
  2298           DB MS_APPLICA TION_INFO. SET_CLIENT _INFO(TO_C HAR(SYSDAT E,'DD-MON  HH24:MI:SS ')
  2299                                                     || '  - Person  '
  2300                                                     || L TRIM(TO_CH AR(VN_curr ent_person _id,'99999 99999990') )
  2301                                                     || ' .');
  2302  
  2303   -- CCR 178 8 Begin
  2304   -- ******* ********** ********** ********** ********** ********** ********** ********
  2305   -- * Proce ss Status  = COMPLETE D (1506921 )
  2306   -- *          Transmi ssion Type  = ORUZ05- E txns (15 10407)
  2307   -- ******* ********** ********** ********** ********** ********** ********** ********
  2308  
  2309           BE GIN  -- pr ocess ORUZ 05-E txns  (1510407)
  2310  
  2311              DBMS_APPLI CATION_INF O.SET_CLIE NT_INFO(TO _CHAR(SYSD ATE,'DD-MO N HH24:MI' )
  2312                                                       ||  ' -P '  - - Person I D
  2313                                                       ||  LTRIM(TO_ CHAR(VN_cu rrent_pers on_id,'999 9999999990 '))
  2314                                                       ||  ' -T '  - - Msg Tran smission I D
  2315                                                       ||  LTRIM(TO_ CHAR(CC_tr an_type_or uz05e,'999 99990'))
  2316                                                       ||  '.');
  2317  
  2318              VI_rows_to _keep_coun t := 0; --  reset var iable that  determine s how many  rows to r emove from  archiving  request t able
  2319  
  2320              OPEN C_com p_oruz05e_ rec;
  2321  
  2322              FETCH C_co mp_oruz05e _rec
  2323              BULK COLLE CT INTO T_ hl7_txns;
  2324  
  2325              CLOSE C_co mp_oruz05e _rec;
  2326  
  2327              DBMS_APPLI CATION_INF O.SET_CLIE NT_INFO(TO _CHAR(SYSD ATE,'DD-MO N HH24:MI' )
  2328                                                       ||  ' -P '  - - Person I D
  2329                                                       ||  LTRIM(TO_ CHAR(VN_cu rrent_pers on_id,'999 9999999990 '))
  2330                                                       ||  ' -T '  - - Msg Tran smission I D
  2331                                                       ||  LTRIM(TO_ CHAR(CC_tr an_type_or uz05e,'999 99990'))
  2332                                                       ||  ' -C '  - - First co unt of row s in colle ction
  2333                                                       ||  LTRIM(TO_ CHAR(T_hl7 _txns.COUN T,'999,990 '))
  2334                                                       ||  '.');
  2335  
  2336              IF T_hl7_t xns.COUNT  > 0 THEN   -- complet ed ORUZ05- E txns exi st
  2337  
  2338                IF T_hl7 _txns.COUN T > VN_par m_keep_oru z05e_count  THEN  --  there are  more in th e table th an need to  be kept
  2339  
  2340                  VI_row s_to_keep_ count := V N_parm_kee p_oruz05e_ count;  --  save how  many need  to be kept
  2341  
  2342                END IF;   -- end th ere are mo re in the  table than  need to b e kept
  2343  
  2344              END IF;  - - end comp leted ORUZ 05-E txns  exist
  2345  
  2346              IF VI_rows _to_keep_c ount > 0 T HEN -- rem ove rows f rom archiv ing reques t table
  2347  
  2348                DBMS_APP LICATION_I NFO.SET_CL IENT_INFO( TO_CHAR(SY SDATE,'DD- MON HH24:M I')
  2349                                                          || ' -P '   -- Person  ID
  2350                                                          || LTRIM(T O_CHAR(VN_ current_pe rson_id,'9 9999999999 90'))
  2351                                                          || ' -T '   -- Msg Tr ansmission  ID
  2352                                                          || LTRIM(T O_CHAR(CC_ tran_type_ oruz05e,'9 9999990'))
  2353                                                          || ' -F '   -- Final  count of r ows in col lection
  2354                                                          || LTRIM(T O_CHAR(T_h l7_txns.CO UNT - VI_r ows_to_kee p_count,'9 99,990'))
  2355                                                          || '.');
  2356  
  2357                VC_proce ss_msg :=  'COMPLETED  ORUZ05-E  txn. Perso n ID: '
  2358                                    || LTRIM(T O_CHAR(VN_ current_pe rson_id,'9 9999999999 90'))
  2359                                    || ' - Sta tus Type I D: '
  2360                                    || CC_stat _type_comp lete
  2361                                    || ' - Msg  Transmiss ion Type I D: '
  2362                                    || CC_tran _type_oruz 05e;
  2363  
  2364                Process_ Archive_Ro ws(VC_proc ess_msg);  -- call IN SERT/DELET E procedur e
  2365  
  2366                IF VB_er ror THEN   -- error f lag is set  in sub-pr ocedure if  there wer e problems
  2367  
  2368                  RETURN ;
  2369  
  2370                END IF;
  2371  
  2372              END IF; --  end remov e rows fro m archivin g request  table
  2373  
  2374           EX CEPTION
  2375  
  2376              WHEN OTHER S THEN
  2377  
  2378                VD_log_d ate := SYS DATE;
  2379  
  2380                ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( CC_process _name,1,60 ),
  2381                                            PD _job_log_d ate => VD_ log_date,
  2382                                            PC _job_statu s => SUBST R('ERROR        - Arc hive Proce ss Loop',1 ,60),
  2383                                            PC _job_log_m essage =>  SUBSTR('Fa iled in tr ansmission  ID ORUZ05 -E process ing step.  Person_id:  '
  2384                                                                            ||  LTRIM(TO_C HAR(VN_cur rent_perso n_id,'9999 999999990' ))
  2385                                                                            ||  ' - Transm ission typ e ID: '
  2386                                                                            ||  LTRIM(TO_C HAR(CC_tra n_type_oru z05e,'9999 9990'))
  2387                                                                            ||  ' - Rows i n collecti on after c lean up: '
  2388                                                                            ||  LTRIM(TO_C HAR(T_hl7_ txns.COUNT  - VI_rows _to_keep_c ount,'999, 990'))
  2389                                                                            ||  ' - Error:  '
  2390                                                                            ||  SQLERRM,1, 2000),
  2391                                            PD _date1 =>  VD_process _start_dat e,
  2392                                            PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  2393  
  2394                ADRMGT.J ob_Process _Err_Sp(PC _job_name  => SUBSTR( CC_process _name,1,60 ),
  2395                                            PD _job_error _date  =>  VD_log_dat e,
  2396                                            PC _job_error _code => S UBSTR(SQLC ODE,1,60),
  2397                                            PC _job_error _message = > SUBSTR(' Failed in  transmissi on ID ORUZ 05-E proce ssing step . Person_i d: '
  2398                                                                              | | LTRIM(TO _CHAR(VN_c urrent_per son_id,'99 9999999999 0'))
  2399                                                                              | | ' - Tran smission t ype ID: '
  2400                                                                              | | LTRIM(TO _CHAR(CC_t ran_type_o ruz05e,'99 999990'))
  2401                                                                              | | ' - Rows  in collec tion after  clean up:  '
  2402                                                                              | | LTRIM(TO _CHAR(T_hl 7_txns.COU NT - VI_ro ws_to_keep _count,'99 9,990'))
  2403                                                                              | | ' - Erro r: '
  2404                                                                              | | SQLERRM, 1,2000),
  2405                                            PD _date1 =>  VD_process _start_dat e,
  2406                                            PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  2407  
  2408                Update_L ast_Person _Parm(VN_p revious_pe rson_id);
  2409  
  2410                RETURN;
  2411  
  2412           EN D;  -- end  process O RUZ05-E tx ns
  2413   -- CCR 178 8 End
  2414  
  2415   -- ******* ********** ********** ********** ********** ********** ********** ********
  2416   -- * Proce ss Status  = COMPLETE D (1506921 )
  2417   -- *          Transmi ssion Type  = ORUZ11- E txns (15 10408)
  2418   -- ******* ********** ********** ********** ********** ********** ********** ********
  2419  
  2420           BE GIN  -- pr ocess ORUZ 11-E txns  (1510408)
  2421  
  2422              DBMS_APPLI CATION_INF O.SET_CLIE NT_INFO(TO _CHAR(SYSD ATE,'DD-MO N HH24:MI' )
  2423                                                       ||  ' -P '  - - Person I D
  2424                                                       ||  LTRIM(TO_ CHAR(VN_cu rrent_pers on_id,'999 9999999990 '))
  2425                                                       ||  ' -T '  - - Msg Tran smission I D
  2426                                                       ||  LTRIM(TO_ CHAR(CC_tr an_type_or uz11e,'999 99990'))
  2427                                                       ||  '.');
  2428  
  2429              VI_rows_to _keep_coun t := 0; --  reset var iable that  determine s how many  rows to r emove from  archiving  request t able
  2430  
  2431              OPEN C_com p_oruz11e_ rec;
  2432  
  2433              FETCH C_co mp_oruz11e _rec
  2434              BULK COLLE CT INTO T_ hl7_txns;
  2435  
  2436              CLOSE C_co mp_oruz11e _rec;
  2437  
  2438              DBMS_APPLI CATION_INF O.SET_CLIE NT_INFO(TO _CHAR(SYSD ATE,'DD-MO N HH24:MI' )
  2439                                                       ||  ' -P '  - - Person I D
  2440                                                       ||  LTRIM(TO_ CHAR(VN_cu rrent_pers on_id,'999 9999999990 '))
  2441                                                       ||  ' -T '  - - Msg Tran smission I D
  2442                                                       ||  LTRIM(TO_ CHAR(CC_tr an_type_or uz11e,'999 99990'))
  2443                                                       ||  ' -C '  - - First co unt of row s in colle ction
  2444                                                       ||  LTRIM(TO_ CHAR(T_hl7 _txns.COUN T,'999,990 '))
  2445                                                       ||  '.');
  2446  
  2447              IF T_hl7_t xns.COUNT  > 0 THEN   -- complet ed ORUZ11- E txns exi st
  2448  
  2449                IF T_hl7 _txns.COUN T > VN_par m_keep_oru z11e_count  THEN  --  there are  more in th e table th an need to  be kept
  2450  
  2451                  VI_row s_to_keep_ count := V N_parm_kee p_oruz11e_ count;  --  save how  many need  to be kept
  2452  
  2453                END IF;   -- end th ere are mo re in the  table than  need to b e kept
  2454  
  2455              END IF;  - - end comp leted ORUZ 11-E txns  exist
  2456  
  2457              IF VI_rows _to_keep_c ount > 0 T HEN -- rem ove rows f rom archiv ing reques t table
  2458  
  2459                DBMS_APP LICATION_I NFO.SET_CL IENT_INFO( TO_CHAR(SY SDATE,'DD- MON HH24:M I')
  2460                                                          || ' -P '   -- Person  ID
  2461                                                          || LTRIM(T O_CHAR(VN_ current_pe rson_id,'9 9999999999 90'))
  2462                                                          || ' -T '   -- Msg Tr ansmission  ID
  2463                                                          || LTRIM(T O_CHAR(CC_ tran_type_ oruz11e,'9 9999990'))
  2464                                                          || ' -F '   -- Final  count of r ows in col lection
  2465                                                          || LTRIM(T O_CHAR(T_h l7_txns.CO UNT - VI_r ows_to_kee p_count,'9 99,990'))
  2466                                                          || '.');
  2467  
  2468                VC_proce ss_msg :=  'COMPLETED  ORUZ11-E  txn. Perso n ID: '
  2469                                    || LTRIM(T O_CHAR(VN_ current_pe rson_id,'9 9999999999 90'))
  2470                                    || ' - Sta tus Type I D: '
  2471                                    || CC_stat _type_comp lete
  2472                                    || ' - Msg  Transmiss ion Type I D: '
  2473                                    || CC_tran _type_oruz 11e;
  2474  
  2475                Process_ Archive_Ro ws(VC_proc ess_msg);  -- call IN SERT/DELET E procedur e
  2476  
  2477                IF VB_er ror THEN   -- error f lag is set  in sub-pr ocedure if  there wer e problems
  2478  
  2479                  RETURN ;
  2480  
  2481                END IF;
  2482  
  2483              END IF; --  end remov e rows fro m archivin g request  table
  2484  
  2485           EX CEPTION
  2486  
  2487              WHEN OTHER S THEN
  2488  
  2489                VD_log_d ate := SYS DATE;
  2490  
  2491                ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( CC_process _name,1,60 ),
  2492                                            PD _job_log_d ate => VD_ log_date,
  2493                                            PC _job_statu s => SUBST R('ERROR        - Arc hive Proce ss Loop',1 ,60),
  2494                                            PC _job_log_m essage =>  SUBSTR('Fa iled in tr ansmission  ID ORUZ11 -E process ing step.  Person_id:  '
  2495                                                                            ||  LTRIM(TO_C HAR(VN_cur rent_perso n_id,'9999 999999990' ))
  2496                                                                            ||  ' - Transm ission typ e ID: '
  2497                                                                            ||  LTRIM(TO_C HAR(CC_tra n_type_oru z11e,'9999 9990'))
  2498                                                                            ||  ' - Rows i n collecti on after c lean up: '
  2499                                                                            ||  LTRIM(TO_C HAR(T_hl7_ txns.COUNT  - VI_rows _to_keep_c ount,'999, 990'))
  2500                                                                            ||  ' - Error:  '
  2501                                                                            ||  SQLERRM,1, 2000),
  2502                                            PD _date1 =>  VD_process _start_dat e,
  2503                                            PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  2504  
  2505                ADRMGT.J ob_Process _Err_Sp(PC _job_name  => SUBSTR( CC_process _name,1,60 ),
  2506                                            PD _job_error _date  =>  VD_log_dat e,
  2507                                            PC _job_error _code => S UBSTR(SQLC ODE,1,60),
  2508                                            PC _job_error _message = > SUBSTR(' Failed in  transmissi on ID ORUZ 11-E proce ssing step . Person_i d: '
  2509                                                                              | | LTRIM(TO _CHAR(VN_c urrent_per son_id,'99 9999999999 0'))
  2510                                                                              | | ' - Tran smission t ype ID: '
  2511                                                                              | | LTRIM(TO _CHAR(CC_t ran_type_o ruz11e,'99 999990'))
  2512                                                                              | | ' - Rows  in collec tion after  clean up:  '
  2513                                                                              | | LTRIM(TO _CHAR(T_hl 7_txns.COU NT - VI_ro ws_to_keep _count,'99 9,990'))
  2514                                                                              | | ' - Erro r: '
  2515                                                                              | | SQLERRM, 1,2000),
  2516                                            PD _date1 =>  VD_process _start_dat e,
  2517                                            PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  2518  
  2519                Update_L ast_Person _Parm(VN_p revious_pe rson_id);
  2520  
  2521                RETURN;
  2522  
  2523           EN D;  -- end  process O RUZ11-E tx ns
  2524  
  2525           BE GIN  -- Pr ocess Inst itution ID s for sele cted perso n
  2526  
  2527              OPEN C_ins t_id_rec;
  2528  
  2529              FETCH C_in st_id_rec
  2530              BULK COLLE CT INTO T_ institutio n_ids;
  2531  
  2532              CLOSE C_in st_id_rec;
  2533  
  2534              IF T_insti tution_ids .COUNT = 0  THEN  --  check if a ny institu tion ID ro ws exist
  2535  
  2536                VD_log_d ate := SYS DATE;
  2537  
  2538                ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( CC_process _name,1,60 ),
  2539                                            PD _job_log_d ate => VD_ log_date,
  2540                                            PC _job_statu s => SUBST R('WARNING      - Fet ch Institu tion ID Ro ws',1,60),
  2541                                            PC _job_log_m essage =>  SUBSTR('No  instituti on IDs fou nd for Per son_id '
  2542                                                                            ||  VN_current _person_id
  2543                                                                            ||  '.',1,2000 ),
  2544                                            PD _date1 =>  VD_process _start_dat e,
  2545                                            PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  2546  
  2547              ELSE
  2548  
  2549                FOR I_in st_id IN T _instituti on_ids.FIR ST..T_inst itution_id s.LAST LOO P -- loop  through in stitution  IDs
  2550  
  2551                  VN_ins titution_i d := T_ins titution_i ds(I_inst_ id);
  2552  
  2553                  DBMS_A PPLICATION _INFO.SET_ CLIENT_INF O(TO_CHAR( SYSDATE,'D D-MON HH24 :MI:SS')
  2554                                                            || ' - P erson '
  2555                                                            || LTRIM (TO_CHAR(V N_current_ person_id, '999999999 9990'))
  2556                                                            || ' - I nst '
  2557                                                            || LTRIM (TO_CHAR(V N_institut ion_id,'99 999990'))
  2558                                                            || '.');
  2559  
  2560                  BEGIN  -- Process  message s tatuses fo r selected  person/in stitution
  2561  
  2562                    OPEN  C_msg_sta tus_rec;
  2563  
  2564                    FETC H C_msg_st atus_rec
  2565                    BULK  COLLECT I NTO T_stat us_types;
  2566  
  2567                    CLOS E C_msg_st atus_rec;
  2568  
  2569                    IF T _status_ty pes.COUNT  = 0 THEN   -- check i f any msg  status row s exist
  2570  
  2571                      VD _log_date  := SYSDATE ;
  2572  
  2573                      AD RMGT.Job_P rocess_Log _Sp(PC_job _name => S UBSTR(CC_p rocess_nam e,1,60),
  2574                                                   PD_job _log_date  => VD_log_ date,
  2575                                                   PC_job _status =>  SUBSTR('W ARNING      - Fetch M essage Sta tus Rows', 1,60),
  2576                                                   PC_job _log_messa ge => SUBS TR('No mes sage statu ses found  for Person  ID '
  2577                                                                                   || VN_c urrent_per son_id
  2578                                                                                   || ' an d Institut ion ID '
  2579                                                                                   || VN_i nstitution _id
  2580                                                                                   || '.', 1,2000),
  2581                                                   PD_dat e1 => VD_p rocess_sta rt_date,
  2582                                                   PC_tex t1 => SUBS TR('Date1  column con tains the  daily proc ess start  date',1,25 5));
  2583  
  2584                    ELSE
  2585  
  2586                      FO R I_status _id IN T_s tatus_type s.FIRST..T _status_ty pes.LAST L OOP -- loo p through  message st atuses
  2587  
  2588                         VN_msg_sta tus_id :=  T_status_t ypes(I_sta tus_id);
  2589  
  2590                         DBMS_APPLI CATION_INF O.SET_CLIE NT_INFO(TO _CHAR(SYSD ATE,'DD-MO N HH24:MI' )
  2591                                                                  ||  ' -P '  - - Person I D
  2592                                                                  ||  LTRIM(TO_ CHAR(VN_cu rrent_pers on_id,'999 9999999990 '))
  2593                                                                  ||  ' -I '  - - Institut ion ID
  2594                                                                  ||  LTRIM(TO_ CHAR(VN_in stitution_ id,'999999 90'))
  2595                                                                  ||  ' -S '  - - Status c ode ID
  2596                                                                  ||  LTRIM(TO_ CHAR(VN_ms g_status_i d,'9999999 0'))
  2597                                                                  ||  '.');
  2598  
  2599                         BEGIN -- P rocess mes sage trans mission ty pe for sel ected pers on/institu tion/statu s
  2600  
  2601                           OPEN C_m sg_transty pe_rec;
  2602  
  2603                           FETCH C_ msg_transt ype_rec
  2604                           BULK COL LECT INTO  T_trans_ty pes;
  2605  
  2606                           CLOSE C_ msg_transt ype_rec;
  2607  
  2608                           IF T_tra ns_types.C OUNT = 0 T HEN  -- ch eck if any  msg trans mission ty pe rows ex ist
  2609  
  2610                             VD_log _date := S YSDATE;
  2611  
  2612                             ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  2613                                                          PD_job_log _date => V D_log_date ,
  2614                                                          PC_job_sta tus => SUB STR('WARNI NG     - F etch Messa ge Transmi ssion Type  Rows',1,6 0),
  2615                                                          PC_job_log _message = > SUBSTR(' No message  transmiss ion types  found for  Person ID  '
  2616                                                                                         | | VN_curre nt_person_ id
  2617                                                                                         | | ' and In stitution  ID '
  2618                                                                                         | | VN_insti tution_id
  2619                                                                                         | | ' and St atus Type  ID '
  2620                                                                                         | | VN_msg_s tatus_id
  2621                                                                                         | | '.',1,20 00),
  2622                                                          PD_date1 = > VD_proce ss_start_d ate,
  2623                                                          PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  2624  
  2625                           ELSE
  2626  
  2627                             FOR I_ transtype_ id IN T_tr ans_types. FIRST..T_t rans_types .LAST LOOP  -- loop t hrough mes sage trans mission ty pes
  2628  
  2629                               VN_m sg_transty pe_id := T _trans_typ es(I_trans type_id);
  2630  
  2631                               DBMS _APPLICATI ON_INFO.SE T_CLIENT_I NFO(TO_CHA R(SYSDATE, 'DD-MON HH 24:MI')
  2632                                                                         || ' - P'  -- Per son ID
  2633                                                                         || LTR IM(TO_CHAR (VN_curren t_person_i d,'9999999 999990'))
  2634                                                                         || ' - I'  -- Ins titution I D
  2635                                                                         || LTR IM(TO_CHAR (VN_instit ution_id,' 99999990') )
  2636                                                                         || ' - S'  -- Sta tus code I D
  2637                                                                         || LTR IM(TO_CHAR (VN_msg_st atus_id,'9 9999990'))
  2638                                                                         || ' - T'  -- Tra nsmission  type ID
  2639                                                                         || LTR IM(TO_CHAR (VN_msg_tr anstype_id ,'99999990 '))
  2640                                                                         || '.' );
  2641  
  2642                               BEGI N  -- Load  HL7 txn t able (Data  for disti nct Person  ID, Inst  ID, Status  Type, and  Transmiss ion Type)
  2643  
  2644                                 VI _rows_to_k eep_count  := 0; -- r eset varia ble that d etermines  how many r ows to rem ove from a rchiving r equest tab le
  2645  
  2646                                 OP EN C_hl7_t xn_rec;
  2647  
  2648                                 FE TCH C_hl7_ txn_rec
  2649                                 BU LK COLLECT  INTO T_hl 7_txns;
  2650  
  2651                                 CL OSE C_hl7_ txn_rec;
  2652  
  2653                                 DB MS_APPLICA TION_INFO. SET_CLIENT _INFO(TO_C HAR(SYSDAT E,'DD-MON  HH24:MI')
  2654                                                                           || '  -P '  --  Person ID
  2655                                                                           || L TRIM(TO_CH AR(VN_curr ent_person _id,'99999 99999990') )
  2656                                                                           || '  -I '  --  Institutio n ID
  2657                                                                           || L TRIM(TO_CH AR(VN_inst itution_id ,'99999990 '))
  2658                                                                           || '  -T '  --  Msg Transm ission ID
  2659                                                                           || L TRIM(TO_CH AR(VN_msg_ transtype_ id,'999999 90'))
  2660                                                                           || '  -C '  --  First coun t of rows  in collect ion
  2661                                                                           || L TRIM(TO_CH AR(T_hl7_t xns.COUNT, '999,990') )
  2662                                                                           || ' .');
  2663  
  2664                               EXCE PTION
  2665  
  2666                                 WH EN OTHERS  THEN
  2667  
  2668                                    VD_log_dat e := SYSDA TE;
  2669  
  2670                                    ADRMGT.Job _Process_L og_Sp(PC_j ob_name =>  SUBSTR(CC _process_n ame,1,60),
  2671                                                                PD_j ob_log_dat e => VD_lo g_date,
  2672                                                                PC_j ob_status  => SUBSTR( 'ERROR        - Archi ve Process  Loop',1,6 0),
  2673                                                                PC_j ob_log_mes sage => SU BSTR('Fail ed in comp leted tran saction ta ble load s tep. Perso n_id: '
  2674                                                                                                || LT RIM(TO_CHA R(VN_curre nt_person_ id,'999999 9999990'))
  2675                                                                                                || '  - Institut ion ID: '
  2676                                                                                                || LT RIM(TO_CHA R(VN_insti tution_id, '99999990' ))
  2677                                                                                                || '  - Status c ode ID: '
  2678                                                                                                || LT RIM(TO_CHA R(VN_msg_s tatus_id,' 99999990') )
  2679                                                                                                || '  - Transmis sion type  ID: '
  2680                                                                                                || LT RIM(TO_CHA R(VN_msg_t ranstype_i d,'9999999 0'))
  2681                                                                                                || '  - Rows in  collection  after cle an up: '
  2682                                                                                                || LT RIM(TO_CHA R(T_hl7_tx ns.COUNT -  VI_rows_t o_keep_cou nt,'999,99 0'))
  2683                                                                                                || '  - Error: '
  2684                                                                                                || SQ LERRM,1,20 00),
  2685                                                                PD_d ate1 => VD _process_s tart_date,
  2686                                                                PC_t ext1 => SU BSTR('Date 1 column c ontains th e daily pr ocess star t date',1, 255));
  2687  
  2688                                    ADRMGT.Job _Process_E rr_Sp(PC_j ob_name =>  SUBSTR(CC _process_n ame,1,60),
  2689                                                                PD_j ob_error_d ate  => VD _log_date,
  2690                                                                PC_j ob_error_c ode => SUB STR(SQLCOD E,1,60),
  2691                                                                PC_j ob_error_m essage =>  SUBSTR('Fa iled in co mpleted tr ansaction  table load  step. Per son_id: '
  2692                                                                                                  ||  LTRIM(TO_C HAR(VN_cur rent_perso n_id,'9999 999999990' ))
  2693                                                                                                  ||  ' - Instit ution ID:  '
  2694                                                                                                  ||  LTRIM(TO_C HAR(VN_ins titution_i d,'9999999 0'))
  2695                                                                                                  ||  ' - Status  code ID:  '
  2696                                                                                                  ||  LTRIM(TO_C HAR(VN_msg _status_id ,'99999990 '))
  2697                                                                                                  ||  ' - Transm ission typ e ID: '
  2698                                                                                                  ||  LTRIM(TO_C HAR(VN_msg _transtype _id,'99999 990'))
  2699                                                                                                  ||  ' - Rows i n collecti on after c lean up: '
  2700                                                                                                  ||  LTRIM(TO_C HAR(T_hl7_ txns.COUNT  - VI_rows _to_keep_c ount,'999, 990'))
  2701                                                                                                  ||  ' - Error:  '
  2702                                                                                                  ||  SQLERRM,1, 2000),
  2703                                                                PD_d ate1 => VD _process_s tart_date,
  2704                                                                PC_t ext1 => SU BSTR('Date 1 column c ontains th e daily pr ocess star t date',1, 255));
  2705  
  2706                                    Update_Las t_Person_P arm(VN_pre vious_pers on_id);
  2707  
  2708                                    RETURN;
  2709  
  2710                               END;   -- End L oad HL7 tx n table (D ata for di stinct Per son ID, In st ID, Sta tus Type,  and Transm ission Typ e)
  2711  
  2712   -- ******* ********** ********** ********** ********** ********** ********** ********
  2713   -- * Proce ss Status  = COMPLETE D (1506921 )
  2714   -- *          Transmi ssion Type  = QRYZ10E  (1510403)
  2715   -- *                                ORUZ11E  (1510408)
  2716   -- *                                ORUZ04S  (1510420)
  2717   -- *                                ORUZ05S  (1510421)
  2718   -- *                                ORUZ10S  (1510422)
  2719   -- *                                ORFZ10S  (1510423)
  2720   -- *                                ORUZ11S  (1510424)
  2721   -- ******* ********** ********** ********** ********** ********** ********** ********
  2722  
  2723                               IF V N_msg_stat us_id = CC _stat_type _complete  -- Process  HL7 txn t able (Comp lete/Uncom plete)
  2724                                AND  VN_msg_tr anstype_id  IN (CC_tr an_type_or fz10s,
  2725                                                               CC_tr an_type_or fz11s,  --  CCR 1788
  2726                                                               CC_tr an_type_or uz04s,
  2727                                                               CC_tr an_type_or uz05s,
  2728                                                               CC_tr an_type_or uz10s,
  2729                                                               CC_tr an_type_or uz11s,
  2730                                                               CC_tr an_type_qr yz10e,
  2731                                                               CC_tr an_type_qr yz11e) THE N  -- CCR  1788
  2732                               -- p rocess com pleted txn s (status  1506921) w / currentl y defined  transmissi on types
  2733  
  2734                                 IF  T_hl7_txn s.COUNT =  0 THEN  --  completed  txn table  count sel ection
  2735                                 --  No rows f or this pe rson/insti tution/sta tus type/t ransmissio n type (th is shouldn 't happen)
  2736                                    VD_log_dat e := SYSDA TE;
  2737  
  2738                                    ADRMGT.Job _Process_L og_Sp(PC_j ob_name =>  SUBSTR(CC _process_n ame,1,60),
  2739                                                                PD_j ob_log_dat e => VD_lo g_date,
  2740                                                                PC_j ob_status  => SUBSTR( 'WARNING      - Fetch  HL7 Txn R ows',1,60) ,
  2741                                                                PC_j ob_log_mes sage => SU BSTR('No H L7 Txns fo und for Pe rson ID '
  2742                                                                                                || VN _current_p erson_id
  2743                                                                                                || '  and Instit ution ID '
  2744                                                                                                || VN _instituti on_id
  2745                                                                                                || '  and Status  Type '
  2746                                                                                                || VN _msg_statu s_id
  2747                                                                                                || '  and Transm ission ID  '
  2748                                                                                                || VN _msg_trans type_id
  2749                                                                                                || '. ',1,2000),
  2750                                                                PD_d ate1 => VD _process_s tart_date,
  2751                                                                PC_t ext1 => SU BSTR('Date 1 column c ontains th e daily pr ocess star t date',1, 255));
  2752  
  2753                                 EL SIF VN_msg _transtype _id = CC_t ran_type_o rfz10s THE N
  2754  
  2755                                    IF T_hl7_t xns.COUNT  > VN_parm_ keep_orfz1 0s_count T HEN
  2756  
  2757                                        VI_row s_to_keep_ count := V N_parm_kee p_orfz10s_ count;
  2758  
  2759                                    END IF;
  2760  
  2761                                 EL SIF VN_msg _transtype _id = CC_t ran_type_o rfz11s THE N  -- CCR  1788 Begin
  2762  
  2763                                    IF T_hl7_t xns.COUNT  > VN_parm_ keep_orfz1 1s_count T HEN
  2764  
  2765                                        VI_row s_to_keep_ count := V N_parm_kee p_orfz11s_ count;
  2766  
  2767                                    END IF;  - -CCR 1788  End
  2768  
  2769                                 EL SIF VN_msg _transtype _id = CC_t ran_type_o ruz04s THE N
  2770  
  2771                                    IF T_hl7_t xns.COUNT  > VN_parm_ keep_oruz0 4s_count T HEN
  2772  
  2773                                        VI_row s_to_keep_ count := V N_parm_kee p_oruz04s_ count;
  2774  
  2775                                    END IF;
  2776  
  2777                                 EL SIF VN_msg _transtype _id = CC_t ran_type_o ruz05s THE N
  2778  
  2779                                    IF T_hl7_t xns.COUNT  > VN_parm_ keep_oruz0 5s_count T HEN
  2780  
  2781                                        VI_row s_to_keep_ count := V N_parm_kee p_oruz05s_ count;
  2782  
  2783                                    END IF;
  2784  
  2785                                 EL SIF VN_msg _transtype _id = CC_t ran_type_o ruz10s THE N
  2786  
  2787                                    IF T_hl7_t xns.COUNT  > VN_parm_ keep_oruz1 0s_count T HEN
  2788  
  2789                                        VI_row s_to_keep_ count := V N_parm_kee p_oruz10s_ count;
  2790  
  2791                                    END IF;
  2792  
  2793                                 EL SIF VN_msg _transtype _id = CC_t ran_type_o ruz11s THE N
  2794  
  2795                                    IF T_hl7_t xns.COUNT  > VN_parm_ keep_oruz1 1s_count T HEN
  2796  
  2797                                        VI_row s_to_keep_ count := V N_parm_kee p_oruz11s_ count;
  2798  
  2799                                    END IF;
  2800  
  2801                                 EL SIF VN_msg _transtype _id = CC_t ran_type_q ryz10e THE N
  2802  
  2803                                    IF T_hl7_t xns.COUNT  > VN_parm_ keep_qryz1 0e_count T HEN
  2804  
  2805                                      VI_rows_ to_keep_co unt := VN_ parm_keep_ qryz10e_co unt;
  2806  
  2807                                    END IF;
  2808  
  2809                                 EL SIF VN_msg _transtype _id = CC_t ran_type_q ryz11e THE N  -- CCR  1788 Begin
  2810  
  2811                                    IF T_hl7_t xns.COUNT  > VN_parm_ keep_qryz1 1e_count T HEN
  2812  
  2813                                      VI_rows_ to_keep_co unt := VN_ parm_keep_ qryz11e_co unt;
  2814  
  2815                                    END IF;  - - CCR 1788  End
  2816  
  2817                                 EN D IF;  --  end comple ted txn ta ble count  selection
  2818  
  2819                                 IF  VI_rows_t o_keep_cou nt > 0 THE N -- remov e complete d rows fro m archivin g request  table
  2820  
  2821                                    DBMS_APPLI CATION_INF O.SET_CLIE NT_INFO(TO _CHAR(SYSD ATE,'DD-MO N HH24:MI' )
  2822                                                                             ||  ' -P '  - - Person I D
  2823                                                                             ||  LTRIM(TO_ CHAR(VN_cu rrent_pers on_id,'999 9999999990 '))
  2824                                                                             ||  ' -I '  - - Institut ion ID
  2825                                                                             ||  LTRIM(TO_ CHAR(VN_in stitution_ id,'999999 90'))
  2826                                                                             ||  ' -T '  - - Msg Tran smission I D
  2827                                                                             ||  LTRIM(TO_ CHAR(VN_ms g_transtyp e_id,'9999 9990'))
  2828                                                                             ||  ' -F '  - - Final co unt of row s in colle ction
  2829                                                                             ||  LTRIM(TO_ CHAR(T_hl7 _txns.COUN T - VI_row s_to_keep_ count,'999 ,990'))
  2830                                                                             ||  '.');
  2831  
  2832                                    VC_process _msg := 'C OMPLETED n on-ORUZ11- E txns. Pe rson ID: '
  2833                                                       ||  LTRIM(TO_ CHAR(VN_cu rrent_pers on_id,'999 9999999990 '))
  2834                                                       ||  ' - Insti tution ID:  '
  2835                                                       ||  LTRIM(TO_ CHAR(VN_in stitution_ id,'999999 90'))
  2836                                                       ||  ' - Statu s code ID:  '
  2837                                                       ||  LTRIM(TO_ CHAR(VN_ms g_status_i d,'9999999 0'))
  2838                                                       ||  ' - Trans mission ty pe ID: '
  2839                                                       ||  LTRIM(TO_ CHAR(VN_ms g_transtyp e_id,'9999 9990'));
  2840  
  2841                                    Process_Ar chive_Rows (VC_proces s_msg); --  call INSE RT/DELETE  procedure
  2842  
  2843                                    IF VB_erro r THEN  --  error fla g is set i n sub-proc edure if t here were  problems
  2844  
  2845                                      RETURN;
  2846  
  2847                                    END IF;
  2848  
  2849                                 EN D IF; -- e nd remove  completed  rows from  archiving  request ta ble
  2850  
  2851   -- ******* ********** ********** ********** ********** ********** ********** ********
  2852   -- * Proce ss Status  = ERROR       (150692 7)
  2853   -- *                    NOT_TRAN S  (150692 6)
  2854   -- *                    PENDING     (150692 4)
  2855   -- *                    RETRANS     (150692 5)
  2856   -- *                    RTRAN_FA IL (150692 8)
  2857   -- *                    WAIT_ACK    (150692 3)
  2858   -- *                    WAIT_TRA N  (150692 2)
  2859   -- *          Transmi ssion Type  = ALL
  2860   -- ******* ********** ********** ********** ********** ********** ********** ********
  2861  
  2862                               ELSI F VN_msg_s tatus_id I N (CC_stat _type_unco mp_error,              -- 150692 7
  2863                                                             CC_stat _type_unco mp_not_tra ns,         -- 150692 6
  2864                                                             CC_stat _type_unco mp_pending ,           -- 150692 4
  2865                                                             CC_stat _type_unco mp_retrans ,           -- 150692 5
  2866                                                             CC_stat _type_unco mp_rtran_f ail,        -- 150692 8
  2867                                                             CC_stat _type_unco mp_wait_ac k,          -- 150692 3
  2868                                                             CC_stat _type_unco mp_wait_tr an) THEN    -- 150692 2
  2869                               -- p rocess all  uncomplet ed status  txns (unco mpleted st atus types  all proce ss the sam e)
  2870  
  2871                                 IF  T_hl7_txn s.COUNT =  0 THEN  --  uncomplet ed txn tab le count s election
  2872                                 --  No rows f or this pe rson/insti tution/sta tus type/t ransmissio n type (th is shouldn 't happen)
  2873                                    VD_log_dat e := SYSDA TE;
  2874  
  2875                                    ADRMGT.Job _Process_L og_Sp(PC_j ob_name =>  SUBSTR(CC _process_n ame,1,60),
  2876                                                                PD_j ob_log_dat e => VD_lo g_date,
  2877                                                                PC_j ob_status  => SUBSTR( 'WARNING      - Fetch  HL7 Txn R ows',1,60) ,
  2878                                                                PC_j ob_log_mes sage => SU BSTR('No H L7 Txns fo und for Pe rson ID '
  2879                                                                                                || VN _current_p erson_id
  2880                                                                                                || '  and Instit ution ID '
  2881                                                                                                || VN _instituti on_id
  2882                                                                                                || '  and Status  Type '
  2883                                                                                                || VN _msg_statu s_id
  2884                                                                                                || '  and Transm ission ID  '
  2885                                                                                                || VN _msg_trans type_id
  2886                                                                                                || '. ',1,2000),
  2887                                                                PD_d ate1 => VD _process_s tart_date,
  2888                                                                PC_t ext1 => SU BSTR('Date 1 column c ontains th e daily pr ocess star t date',1, 255));
  2889  
  2890                                 EL SE
  2891  
  2892                                    IF T_hl7_t xns(T_hl7_ txns.LAST) .Record_cr eated_date  <= VD_pro cess_start _date - VN _parm_keep _uncomplet ed_days TH EN  -- che ck for row s to keep
  2893       -- No  rows exist  that are  newer than  the archi ve cutoff  date, so r emove the  newest row  from the  archiving  list so th at it stay s in the H L7 table.
  2894                                      VI_rows_ to_keep_co unt := 1;  -- remove  the last e ntry in th e collecti on table
  2895  
  2896                                    ELSE
  2897       -- Rem ove all ro ws that ar e newer th an the arc hive cutof f date fro m the arch iving list .
  2898       -- (TR IM deletes  starting  with the h ighest ind exed row i n the coll ection so  we index i n reverse  order [hig hest to lo west])
  2899                                      FOR I_un comp_hl7_t xns IN REV ERSE T_hl7 _txns.FIRS T..T_hl7_t xns.LAST L OOP
  2900  
  2901                                        IF T_h l7_txns(I_ uncomp_hl7 _txns).Rec ord_create d_date > V D_process_ start_date  - VN_parm _keep_unco mpleted_da ys THEN
  2902  
  2903                                          VI_r ows_to_kee p_count :=  VI_rows_t o_keep_cou nt + 1; --  remove an other entr y in the c ollection  table star ting with  the last o ne.
  2904  
  2905                                        ELSE
  2906  
  2907                                          EXIT ;
  2908  
  2909                                        END IF ;
  2910  
  2911                                      END LOOP ;
  2912  
  2913                                    END IF;  - - end chec k for rows  to keep
  2914  
  2915                                    IF T_hl7_t xns.COUNT  > VI_rows_ to_keep_co unt THEN   -- rows ex ist that a re older t han the ar chive cuto ff date.
  2916  
  2917                                      DBMS_APP LICATION_I NFO.SET_CL IENT_INFO( TO_CHAR(SY SDATE,'DD- MON HH24:M I')
  2918                                                                                || ' -P '   -- Person  ID
  2919                                                                                || LTRIM(T O_CHAR(VN_ current_pe rson_id,'9 9999999999 90'))
  2920                                                                                || ' -I '   -- Instit ution ID
  2921                                                                                || LTRIM(T O_CHAR(VN_ institutio n_id,'9999 9990'))
  2922                                                                                || ' -S '   -- Status  code ID
  2923                                                                                || LTRIM(T O_CHAR(VN_ msg_status _id,'99999 990'))
  2924                                                                                || ' -F '   -- Final  count of r ows in col lection af ter clean  up
  2925                                                                                || LTRIM(T O_CHAR(T_h l7_txns.CO UNT - VI_r ows_to_kee p_count,'9 99,990'))
  2926                                                                                || '.');
  2927  
  2928                                      VC_proce ss_msg :=  'UNCOMPLET ED txns. P erson ID:  '
  2929                                                          || LTRIM(T O_CHAR(VN_ current_pe rson_id,'9 9999999999 90'))
  2930                                                          || ' - Ins titution I D: '
  2931                                                          || LTRIM(T O_CHAR(VN_ institutio n_id,'9999 9990'))
  2932                                                          || ' - Sta tus code I D: '
  2933                                                          || LTRIM(T O_CHAR(VN_ msg_status _id,'99999 990'))
  2934                                                          || ' - Tra nsmission  type ID: '
  2935                                                          || LTRIM(T O_CHAR(VN_ msg_transt ype_id,'99 999990'));
  2936  
  2937                                      Process_ Archive_Ro ws(VC_proc ess_msg);  -- call IN SERT/DELET E procedur e
  2938  
  2939                                      IF VB_er ror THEN   -- error f lag is set  in sub-pr ocedure if  there wer e problems
  2940  
  2941                                        RETURN ;
  2942  
  2943                                      END IF;
  2944  
  2945                                    END IF;  - - end rows  exist tha t are olde r than the  archive c utoff date .
  2946  
  2947                                 EN D IF; -- e nd uncompl eted txn t able count  selection
  2948  
  2949                               END  IF;  -- en d Process  HL7 txn ta ble (Compl ete/Uncomp lete) (ign ore any un known stat us/tranmis sion types )
  2950  
  2951                             END LO OP;  -- en d loop thr ough messa ge transmi ssion type s
  2952  
  2953                           END IF;    -- end c heck if an y msg tran smission t ype rows e xist
  2954  
  2955                         EXCEPTION
  2956  
  2957                           WHEN OTH ERS THEN
  2958  
  2959                             VD_log _date := S YSDATE;
  2960  
  2961                             ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  2962                                                          PD_job_log _date => V D_log_date ,
  2963                                                          PC_job_sta tus => SUB STR('ERROR        - A rchive Pro cess Loop' ,1,60),
  2964                                                          PC_job_log _message = > SUBSTR(' Failed to  retrieve m essage tra nsmission  types. Per son_id: '
  2965                                                                                         | | LTRIM(TO _CHAR(VN_c urrent_per son_id,'99 9999999999 0'))
  2966                                                                                         | | ' - Inst itution ID : '
  2967                                                                                         | | LTRIM(TO _CHAR(VN_i nstitution _id,'99999 990'))
  2968                                                                                         | | ' - Stat us code ID : '
  2969                                                                                         | | LTRIM(TO _CHAR(VN_m sg_status_ id,'999999 90'))
  2970                                                                                         | | ' - Erro r: '
  2971                                                                                         | | SQLERRM, 1,2000),
  2972                                                          PD_date1 = > VD_proce ss_start_d ate,
  2973                                                          PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  2974  
  2975                             ADRMGT .Job_Proce ss_Err_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  2976                                                          PD_job_err or_date  = > VD_log_d ate,
  2977                                                          PC_job_err or_code =>  SUBSTR(SQ LCODE,1,60 ),
  2978                                                          PC_job_err or_message  => SUBSTR ('Failed t o retrieve  message t ransmissio n types. P erson_id:  '
  2979                                                                                            || LTRIM( TO_CHAR(VN _current_p erson_id,' 9999999999 990'))
  2980                                                                                            || ' - In stitution  ID: '
  2981                                                                                            || LTRIM( TO_CHAR(VN _instituti on_id,'999 99990'))
  2982                                                                                            || ' - St atus code  ID: '
  2983                                                                                            || LTRIM( TO_CHAR(VN _msg_statu s_id,'9999 9990'))
  2984                                                                                            || ' - Er ror: '
  2985                                                                                            || SQLERR M,1,2000),
  2986                                                          PD_date1 = > VD_proce ss_start_d ate,
  2987                                                          PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  2988  
  2989                             Update _Last_Pers on_Parm(VN _previous_ person_id) ;
  2990  
  2991                             RETURN ;
  2992  
  2993                         END;  -- E nd Process  message t ransmissio n type for  selected  person/ins titution/s tatus
  2994  
  2995                      EN D LOOP;  - - end loop  through m essage sta tuses
  2996  
  2997                    END  IF;  -- en d check if  any msg s tatus rows  exist
  2998  
  2999                  EXCEPT ION
  3000  
  3001                    WHEN  OTHERS TH EN
  3002  
  3003                      VD _log_date  := SYSDATE ;
  3004  
  3005                      AD RMGT.Job_P rocess_Log _Sp(PC_job _name => S UBSTR(CC_p rocess_nam e,1,60),
  3006                                                   PD_job _log_date  => VD_log_ date,
  3007                                                   PC_job _status =>  SUBSTR('E RROR        - Archive  Process L oop',1,60) ,
  3008                                                   PC_job _log_messa ge => SUBS TR('Failed  to retrie ve message  status ID s. Person_ id: '
  3009                                                                                   || LTRI M(TO_CHAR( VN_current _person_id ,'99999999 99990'))
  3010                                                                                   || ' -  Institutio n ID: '
  3011                                                                                   || LTRI M(TO_CHAR( VN_institu tion_id,'9 9999990'))
  3012                                                                                   || ' -  Error: '
  3013                                                                                   || SQLE RRM,1,2000 ),
  3014                                                   PD_dat e1 => VD_p rocess_sta rt_date,
  3015                                                   PC_tex t1 => SUBS TR('Date1  column con tains the  daily proc ess start  date',1,25 5));
  3016  
  3017                      AD RMGT.Job_P rocess_Err _Sp(PC_job _name => S UBSTR(CC_p rocess_nam e,1,60),
  3018                                                   PD_job _error_dat e  => VD_l og_date,
  3019                                                   PC_job _error_cod e => SUBST R(SQLCODE, 1,60),
  3020                                                   PC_job _error_mes sage => SU BSTR('Fail ed to retr ieve messa ge status  IDs. Perso n_id: '
  3021                                                                                     || LT RIM(TO_CHA R(VN_curre nt_person_ id,'999999 9999990'))
  3022                                                                                     || '  - Institut ion ID: '
  3023                                                                                     || LT RIM(TO_CHA R(VN_insti tution_id, '99999990' ))
  3024                                                                                     || '  - Error: '
  3025                                                                                     || SQ LERRM,1,20 00),
  3026                                                   PD_dat e1 => VD_p rocess_sta rt_date,
  3027                                                   PC_tex t1 => SUBS TR('Date1  column con tains the  daily proc ess start  date',1,25 5));
  3028  
  3029                      Up date_Last_ Person_Par m(VN_previ ous_person _id);
  3030  
  3031                      RE TURN;
  3032  
  3033                  END;   -- end pro cess messa ge statuse s for sele cted perso n/institut ion
  3034  
  3035                END LOOP ;  -- end  loop throu gh institu tion IDs
  3036  
  3037              END IF;  - - end chec k if any i nstitution  ID rows e xist
  3038  
  3039           EX CEPTION
  3040  
  3041              WHEN OTHER S THEN
  3042  
  3043                VD_log_d ate := SYS DATE;
  3044  
  3045                ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( CC_process _name,1,60 ),
  3046                                            PD _job_log_d ate => VD_ log_date,
  3047                                            PC _job_statu s => SUBST R('ERROR        - Arc hive Proce ss Loop',1 ,60),
  3048                                            PC _job_log_m essage =>  SUBSTR('Fa iled to re trieve ins titution I Ds. Person _id: '
  3049                                                                            ||  LTRIM(TO_C HAR(VN_cur rent_perso n_id,'9999 999999990' ))
  3050                                                                            ||  ' - Error:  '
  3051                                                                            ||  SQLERRM,1, 2000),
  3052                                            PD _date1 =>  VD_process _start_dat e,
  3053                                            PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  3054  
  3055                ADRMGT.J ob_Process _Err_Sp(PC _job_name  => SUBSTR( CC_process _name,1,60 ),
  3056                                            PD _job_error _date  =>  VD_log_dat e,
  3057                                            PC _job_error _code => S UBSTR(SQLC ODE,1,60),
  3058                                            PC _job_error _message = > SUBSTR(' Failed to  retrieve i nstitution  IDs. Pers on_id: '
  3059                                                                              | | LTRIM(TO _CHAR(VN_c urrent_per son_id,'99 9999999999 0'))
  3060                                                                              | | ' - Erro r: '
  3061                                                                              | | SQLERRM, 1,2000),
  3062                                            PD _date1 =>  VD_process _start_dat e,
  3063                                            PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  3064  
  3065                Update_L ast_Person _Parm(VN_p revious_pe rson_id);
  3066  
  3067                RETURN;
  3068  
  3069           EN D;  -- end  process i nstitution  IDs for s elected pe rson
  3070  
  3071           BE GIN  -- ch eck if sto p was requ ested
  3072  
  3073              SELECT     AP.Value
  3074              INTO       VN_process _control
  3075              FROM       Adr_Parame ter AP
  3076              WHERE      Applicatio n_name = ' HL7_ARCHIV E_CONTROL'
  3077              AND        Parameter_ name = 'ST ART_STOP_P ROCESS';
  3078  
  3079              IF VN_proc ess_contro l = 0 THEN
  3080  
  3081                VD_log_d ate := SYS DATE;
  3082  
  3083                ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( CC_process _name,1,60 ),
  3084                                            PD _job_log_d ate => VD_ log_date,
  3085                                            PC _job_statu s => SUBST R('INFORMA TION - Arc hive Proce ss Loop',1 ,60),
  3086                                            PC _job_log_m essage =>  SUBSTR('Ap plication  has cancel led the ar chiving pr ocess.',1, 2000),
  3087                                            PD _date1 =>  VD_process _start_dat e,
  3088                                            PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  3089  
  3090                VD_log_d ate := SYS DATE;
  3091  
  3092                ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( CC_process _name,1,60 ),
  3093                                            PD _job_log_d ate => VD_ log_date,
  3094                                            PC _job_statu s => SUBST R('INFORMA TION - Arc hive Proce ss Loop',1 ,60),
  3095                                            PC _job_log_m essage =>  SUBSTR('Nu mber of Pe rson_ids p rocessed:  '
  3096                                                                            ||  TO_CHAR(VN _person_co unt,'99,99 9,999,990' ),1,2000),
  3097                                            PD _date1 =>  VD_process _start_dat e,
  3098                                            PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  3099  
  3100                VD_log_d ate := SYS DATE;
  3101  
  3102   -- archive  row count  is accumu lated in t he Process _Archive_R ows proced ure
  3103                ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( CC_process _name,1,60 ),
  3104                                            PD _job_log_d ate => VD_ log_date,
  3105                                            PC _job_statu s => SUBST R('INFORMA TION - Arc hive Proce ss Loop',1 ,60),
  3106                                            PC _job_log_m essage =>  SUBSTR('Nu mber of ro ws archive d: '
  3107                                                                            ||  TO_CHAR(VN _archive_c ount,'99,9 99,999,990 '),1,2000) ,
  3108                                            PD _date1 =>  VD_process _start_dat e,
  3109                                            PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  3110  
  3111                Update_L ast_Person _Parm(VN_p revious_pe rson_id);
  3112  
  3113                DBMS_APP LICATION_I NFO.SET_AC TION(Actio n_name =>  'Archiving  Processin g Cancelle d');
  3114  
  3115                EXIT;
  3116  
  3117              END IF;
  3118  
  3119           EX CEPTION
  3120  
  3121              WHEN OTHER S THEN
  3122  
  3123                VD_log_d ate := SYS DATE;
  3124  
  3125                ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( CC_process _name,1,60 ),
  3126                                            PD _job_log_d ate => VD_ log_date,
  3127                                            PC _job_statu s => SUBST R('ERROR        - Arc hive Proce ss Loop',1 ,60),
  3128                                            PC _job_log_m essage =>  SUBSTR('Un able to re trieve par ameter STA RT_STOP_PR OCESS.'
  3129                                                                            ||  ' Terminat ing execut ion of the  job.'|| S QLERRM,1,2 000),
  3130                                            PD _date1 =>  VD_process _start_dat e,
  3131                                            PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  3132  
  3133                ADRMGT.J ob_Process _Err_Sp(PC _job_name  => SUBSTR( CC_process _name,1,60 ),
  3134                                            PD _job_error _date  =>  VD_log_dat e,
  3135                                            PC _job_error _code => S UBSTR(SQLC ODE,1,60),
  3136                                            PC _job_error _message = > SUBSTR(' Failure in  archive p rocessing  loop - Una ble to ret rieve para meter STAR T_STOP_PRO CESS. '
  3137                                                                              | | SQLERRM, 1,2000),
  3138                                            PD _date1 =>  VD_process _start_dat e,
  3139                                            PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  3140  
  3141                Update_L ast_Person _Parm(VN_p revious_pe rson_id);
  3142  
  3143                RETURN;
  3144  
  3145           EN D;  -- end  check if  stop was r equested
  3146  
  3147         EXCE PTION
  3148  
  3149           WH EN NO_DATA _FOUND THE N -- all r ows have b een proces sed
  3150  
  3151              VD_log_dat e := SYSDA TE;
  3152  
  3153              ADRMGT.Job _Process_L og_Sp(PC_j ob_name =>  SUBSTR(CC _process_n ame,1,60),
  3154                                          PD_j ob_log_dat e => VD_lo g_date,
  3155                                          PC_j ob_status  => SUBSTR( 'INFORMATI ON - Archi ve Process  Loop - CO MPLETED',1 ,60),
  3156                                          PC_j ob_log_mes sage => SU BSTR('All  Person_ids  have been  processed .',1,2000) ,
  3157                                          PD_d ate1 => VD _process_s tart_date,
  3158                                          PC_t ext1 => SU BSTR('Date 1 column c ontains th e daily pr ocess star t date',1, 255));
  3159  
  3160              VD_log_dat e := SYSDA TE;
  3161  
  3162              ADRMGT.Job _Process_L og_Sp(PC_j ob_name =>  SUBSTR(CC _process_n ame,1,60),
  3163                                          PD_j ob_log_dat e => VD_lo g_date,
  3164                                          PC_j ob_status  => SUBSTR( 'INFORMATI ON - Archi ve Process  Loop - CO MPLETED',1 ,60),
  3165                                          PC_j ob_log_mes sage => SU BSTR('Numb er of Pers on_ids pro cessed: '
  3166                                                                          || TO _CHAR(VN_p erson_coun t,'99,999, 999,990'), 1,2000),
  3167                                          PD_d ate1 => VD _process_s tart_date,
  3168                                          PC_t ext1 => SU BSTR('Date 1 column c ontains th e daily pr ocess star t date',1, 255));
  3169              VD_log_dat e := SYSDA TE;
  3170  
  3171              ADRMGT.Job _Process_L og_Sp(PC_j ob_name =>  SUBSTR(CC _process_n ame,1,60),
  3172                                          PD_j ob_log_dat e => VD_lo g_date,
  3173                                          PC_j ob_status  => SUBSTR( 'INFORMATI ON - Archi ve Process  Loop - CO MPLETED',1 ,60),
  3174                                          PC_j ob_log_mes sage => SU BSTR('Numb er of rows  archived:  '
  3175                                                                          || TO _CHAR(VN_a rchive_cou nt,'99,999 ,999,990') ,1,2000),
  3176                                          PD_d ate1 => VD _process_s tart_date,
  3177                                          PC_t ext1 => SU BSTR('Date 1 column c ontains th e daily pr ocess star t date',1, 255));
  3178  
  3179              DBMS_APPLI CATION_INF O.SET_ACTI ON(Action_ name => 'A rchive Pro cessing Co mpleted');
  3180  
  3181              BEGIN
  3182  
  3183                UPDATE     Adr_Para meter AP
  3184                SET        AP.Value  = 0
  3185                WHERE      Applicat ion_name =  'HL7_ARCH IVE_CONTRO L'
  3186                AND        Paramete r_name = ' START_STOP _PROCESS';
  3187  
  3188                COMMIT;
  3189  
  3190              EXCEPTION
  3191  
  3192                WHEN OTH ERS THEN
  3193  
  3194                  ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  3195                                               PD_job_log _date => V D_log_date ,
  3196                                               PC_job_sta tus => SUB STR('ERROR        - A rchive Pro cess Loop' ,1,60),
  3197                                               PC_job_log _message = > SUBSTR(' Unable to  update par ameter STA RT_STOP_PR OCESS.'
  3198                                                                              | | ' Termin ating exec ution of t he job.'||  SQLERRM,1 ,2000),
  3199                                               PD_date1 = > VD_proce ss_start_d ate,
  3200                                               PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  3201  
  3202                  ADRMGT .Job_Proce ss_Err_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  3203                                               PD_job_err or_date  = > VD_log_d ate,
  3204                                               PC_job_err or_code =>  SUBSTR(SQ LCODE,1,60 ),
  3205                                               PC_job_err or_message  => SUBSTR ('Failure  in archive  processin g loop - U nable to u pdate para meter STAR T_STOP_PRO CESS. '
  3206                                                                                 || SQLERR M,1,2000),
  3207                                               PD_date1 = > VD_proce ss_start_d ate,
  3208                                               PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  3209  
  3210              END;
  3211  
  3212              Update_Las t_Person_P arm(0);
  3213  
  3214              EXIT;
  3215  
  3216           WH EN OTHERS  THEN
  3217  
  3218              VD_log_dat e := SYSDA TE;
  3219  
  3220              ADRMGT.Job _Process_L og_Sp(PC_j ob_name =>  SUBSTR(CC _process_n ame,1,60),
  3221                                          PD_j ob_log_dat e => VD_lo g_date,
  3222                                          PC_j ob_status  => SUBSTR( 'ERROR        - Archi ve Process  Loop',1,6 0),
  3223                                          PC_j ob_log_mes sage => SU BSTR('Fail ed to retr ieve next  Person ID.  Previous  Person_id:  '
  3224                                                                          || LT RIM(TO_CHA R(VN_previ ous_person _id,'99999 99999990') )
  3225                                                                          || '  Current Pe rson_id'
  3226                                                                          || LT RIM(TO_CHA R(VN_curre nt_person_ id,'999999 9999990'))
  3227                                                                          || '  - Error: '
  3228                                                                          || SQ LERRM,1,20 00),
  3229                                          PD_d ate1 => VD _process_s tart_date,
  3230                                          PC_t ext1 => SU BSTR('Date 1 column c ontains th e daily pr ocess star t date',1, 255));
  3231  
  3232              ADRMGT.Job _Process_E rr_Sp(PC_j ob_name =>  SUBSTR(CC _process_n ame,1,60),
  3233                                          PD_j ob_error_d ate  => VD _log_date,
  3234                                          PC_j ob_error_c ode => SUB STR(SQLCOD E,1,60),
  3235                                          PC_j ob_error_m essage =>  SUBSTR('Fa iled to re trieve nex t Person I D. Previou s Person_i d: '
  3236                                                                          || LT RIM(TO_CHA R(VN_previ ous_person _id,'99999 99999990') )
  3237                                                                          || '  Current Pe rson_id'
  3238                                                                          || LT RIM(TO_CHA R(VN_curre nt_person_ id,'999999 9999990'))
  3239                                                                          || '  - Error: '
  3240                                                                          || SQ LERRM,1,20 00),
  3241                                          PD_d ate1 => VD _process_s tart_date,
  3242                                          PC_t ext1 => SU BSTR('Date 1 column c ontains th e daily pr ocess star t date',1, 255));
  3243  
  3244              Update_Las t_Person_P arm(VN_pre vious_pers on_id);
  3245  
  3246              RETURN;
  3247  
  3248         END;   -- end g et next pe rson_id to  process
  3249  
  3250         VN_p revious_pe rson_id :=  VN_curren t_person_i d;
  3251  
  3252       END LO OP;  -- en d main arc hive proce ssing loop
  3253  
  3254     EXCEPTIO N
  3255  
  3256       WHEN O THERS THEN
  3257  
  3258         VD_l og_date :=  SYSDATE;
  3259  
  3260         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  3261                                      PD_job_l og_date =>  VD_log_da te,
  3262                                      PC_job_s tatus => S UBSTR('ERR OR       -  Archive P rocess Loo p',1,60),
  3263                                      PC_job_l og_message  => SUBSTR ('Failure  in archive  processin g loop.'
  3264                                                                      || ' Term inating ex ecution of  the job.' || SQLERRM ,1,2000),
  3265                                      PD_date1  => VD_pro cess_start _date,
  3266                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  3267  
  3268         ADRM GT.Job_Pro cess_Err_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  3269                                      PD_job_e rror_date   => VD_log _date,
  3270                                      PC_job_e rror_code  => SUBSTR( SQLCODE,1, 60),
  3271                                      PC_job_e rror_messa ge => SUBS TR('Failur e in archi ve process ing loop.  '
  3272                                                                        || SQLE RRM,1,2000 ),
  3273                                      PD_date1  => VD_pro cess_start _date,
  3274                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  3275  
  3276         Upda te_Last_Pe rson_Parm( VN_previou s_person_i d);
  3277  
  3278         RETU RN;
  3279  
  3280     END;  --  end main  processing  block
  3281  
  3282     VD_proce ss_end_dat e := SYSDA TE;
  3283  
  3284     VN_proce ss_time_in _secs := ( VD_process _end_date  - VD_proce ss_start_d ate)*24*60 *60;
  3285  
  3286     VN_proce ss_days :=  TRUNC(VN_ process_ti me_in_secs /24/60/60) ;
  3287  
  3288     VN_proce ss_hours : = TRUNC((V N_process_ time_in_se cs -
  3289                                  ( VN_process _days*24*6 0*60))/60/ 60);
  3290  
  3291     VN_proce ss_minutes  := TRUNC( (VN_proces s_time_in_ secs -
  3292                                     (VN_proce ss_days*24 *60*60) -
  3293                                       (VN_pro cess_hours *60*60))/6 0);
  3294  
  3295     VN_proce ss_seconds  := TRUNC( VN_process _time_in_s ecs -
  3296                                     (VN_proce ss_days*24 *60*60) -
  3297                                       (VN_pro cess_hours *60*60) -
  3298                                         (VN_p rocess_min utes*60));
  3299  
  3300     VC_proce ss_duratio n := LTRIM (TO_CHAR(V N_process_ days,'9990 ')) || ' D ays '
  3301                              || LT RIM(TO_CHA R(VN_proce ss_hours,' 90')) || '  Hrs '
  3302                              || LT RIM(TO_CHA R(VN_proce ss_minutes ,'90')) ||  ' Mins '
  3303                              || LT RIM(TO_CHA R(VN_proce ss_seconds ,'90')) ||  ' Secs';
  3304  
  3305     VD_log_d ate := SYS DATE;
  3306  
  3307     ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( CC_process _name,1,60 ),
  3308                                 PD _job_log_d ate => VD_ log_date,
  3309                                 PC _job_statu s => SUBST R('INFORMA TION - Pro cess Compl etion',1,6 0),
  3310                                 PC _job_log_m essage =>  'Elapsed p rocessing  time: ' ||  VC_proces s_duration ,
  3311                                 PD _date1 =>  VD_process _start_dat e,
  3312                                 PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  3313  
  3314   EXCEPTION
  3315  
  3316     WHEN OTH ERS THEN
  3317  
  3318       VD_log _date := S YSDATE;
  3319  
  3320       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  3321                                    PD_job_log _date => V D_log_date ,
  3322                                    PC_job_sta tus => SUB STR('ERROR        - U nknown Err or',1,60),
  3323                                    PC_job_log _message = > SUBSTR(' Unknown er ror archiv ing HL7 ro ws.'
  3324                                                                   | | ' Termin ating exec ution of t he job.'||  SQLERRM,1 ,2000),
  3325                                    PD_date1 = > VD_proce ss_start_d ate,
  3326                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  3327  
  3328       ADRMGT .Job_Proce ss_Err_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  3329                                    PD_job_err or_date  = > VD_log_d ate,
  3330                                    PC_job_err or_code =>  SUBSTR(SQ LCODE,1,60 ),
  3331                                    PC_job_err or_message  => SUBSTR ('Unknown  error arch iving HL7  rows. '
  3332                                                                      || SQLERR M,1,2000),
  3333                                    PD_date1 = > VD_proce ss_start_d ate,
  3334                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  3335  
  3336       RETURN ;
  3337  
  3338   END Hl7_Pr ocess_Arch ives;
  3339  
  3340   /********* ********** ********** ********** ********** ********** ********** ********
  3341    *
  3342    *    NAME : Hl7_Proc ess_Delete s
  3343    *    TYPE : Procedur e
  3344    *
  3345    *    DESC RIPTION
  3346    *      Us ed to dele te rows fr om the Hl7 _Archive_T ransaction _log table  based
  3347    *      pm  the aging  of the Cr eation_dat e column.
  3348    *
  3349    *  PB_run _standalon e   Ignore  DBMS_JOB  logic for  checking r unning job s.
  3350    *                         Defau lt: FALSE
  3351    *
  3352    *  PB_all ow_rpt_ins t   Allow  stored pro cedure to  be submitt ed in the
  3353    *                        DBMS_J OB queue o n the ADR  reporting  databases
  3354    *                         Defau lt: FALSE
  3355    *
  3356    ********* ********** ********** ********** ********** ********** ********** ********
  3357    */
  3358  
  3359   PROCEDURE  Hl7_Proces s_Deletes
  3360     (PB_run_ standalone
  3361        IN      BOOLEAN  DEFAULT FA LSE,
  3362      PB_allo w_rpt_inst
  3363        IN      BOOLEAN  DEFAULT FA LSE
  3364     )
  3365   IS
  3366  
  3367   -- CONSTAN TS
  3368  
  3369     CC_proce ss_name                        V ARCHAR2(60 ) := 'HL7  Archiver -  Delete Ar chived Row s';
  3370  
  3371   -- VARIABL ES
  3372  
  3373     VB_allow _rpt_inst                      B OOLEAN :=  FALSE;
  3374     VB_run_s tandalone                      B OOLEAN :=  FALSE;
  3375  
  3376     VC_allow _rpt_inst                      V ARCHAR2(5)  := NULL;
  3377     VC_insta nce_name                       V ARCHAR2(16 );
  3378     VC_proce ss_duratio n                   V ARCHAR2(50 );
  3379     VC_run_s tandalone                      V ARCHAR2(5)  := NULL;
  3380  
  3381     VD_log_d ate                            D ATE;
  3382     VD_proce ss_end_dat e                   D ATE;
  3383     VD_proce ss_start_d ate                 D ATE;
  3384     VD_del_c utoff_date                     D ATE;
  3385  
  3386     VN_arch_ rows_age_t o_keep              N UMBER := 3 65;
  3387     VN_delet e_count                        N UMBER := 0 ;
  3388     VN_job_c ount                           N UMBER := 0 ;
  3389     VN_log_a ge_to_keep                     N UMBER := 1 80;
  3390     VN_num_r ows_to_pro cess                N UMBER := 2 0000;
  3391     VN_proce ss_control                     N UMBER := 0 ;
  3392     VN_proce ss_days                        N UMBER;
  3393     VN_proce ss_hours                       N UMBER;
  3394     VN_proce ss_minutes                     N UMBER;
  3395     VN_proce ss_seconds                     N UMBER;
  3396     VN_proce ss_time_in _secs               N UMBER;
  3397     VN_total _deletes_c ount                N UMBER :=0;
  3398  
  3399     TYPE TT_ pk_id IS T ABLE OF NU MBER INDEX  BY PLS_IN TEGER;
  3400  
  3401     T_pk_id                                 T T_pk_id;
  3402  
  3403     CURSOR C _hl7_arch_ rec IS
  3404       SELECT     Hl7_tr ansaction_ log_id
  3405       FROM       Hl7_Ar chive_Tran saction_Lo g
  3406       WHERE      Transm ission_dat e <= VD_de l_cutoff_d ate + 2 --  Transmiss ion_date m ay be up t o 2 days n ewer that  Record_cre ated_date
  3407       AND        Record _created_d ate <= VD_ del_cutoff _date;
  3408  
  3409   -- EXCEPTI ONS
  3410  
  3411      EE_DML_ ERROR                          E XCEPTION;
  3412      PRAGMA                                 E XCEPTION_I NIT(EE_DML _ERROR, -2 4381);
  3413  
  3414   BEGIN
  3415  
  3416     DBMS_APP LICATION_I NFO.SET_MO DULE(Modul e_name =>  'Hl7_Proce ss_Deletes ',
  3417                                         Actio n_name =>  NULL);
  3418  
  3419     VD_proce ss_start_d ate := SYS DATE;
  3420  
  3421     VD_log_d ate := SYS DATE;
  3422  
  3423     ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( CC_process _name,1,60 ),
  3424                                 PD _job_log_d ate => VD_ log_date,
  3425                                 PC _job_statu s => SUBST R('INFORMA TION - Pro cess Initi ation',1,6 0),
  3426                                 PC _job_log_m essage =>  NULL,
  3427                                 PD _date1 =>  VD_process _start_dat e,
  3428                                 PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  3429  
  3430   -- ******* ********** ********** ********** ********** ********** ********** ********
  3431   -- *
  3432   -- * Valid ate input  parameters
  3433   -- *
  3434   -- ******* ********** ********** ********** ********** ********** ********** ********
  3435  
  3436     DBMS_APP LICATION_I NFO.SET_AC TION(Actio n_name =>  'Validatin g Input Pa rameters') ;
  3437  
  3438   -- * Check  run stand alone flag
  3439  
  3440     IF PB_ru n_standalo ne IS NULL
  3441      OR NOT  PB_run_sta ndalone TH EN
  3442  
  3443       VB_run _standalon e := FALSE ;
  3444       VC_run _standalon e := 'FALS E'; -- use d for log  message, b oolean can 't be disp layed
  3445  
  3446     ELSE
  3447  
  3448       VB_run _standalon e := TRUE;
  3449       VC_run _standalon e := 'TRUE '; -- used  for log m essage, bo olean can' t be displ ayed
  3450  
  3451     END IF;
  3452  
  3453   -- * Check  run on re port insta nce flag
  3454  
  3455     IF PB_al low_rpt_in st IS NULL
  3456      OR NOT  PB_allow_r pt_inst TH EN
  3457  
  3458       VB_all ow_rpt_ins t := FALSE ;
  3459       VC_all ow_rpt_ins t := 'FALS E'; -- use d for log  message, b oolean can 't be disp layed
  3460  
  3461     ELSE
  3462  
  3463       VB_all ow_rpt_ins t := TRUE;
  3464       VC_all ow_rpt_ins t := 'TRUE '; -- used  for log m essage, bo olean can' t be displ ayed
  3465  
  3466     END IF;
  3467  
  3468     VD_log_d ate := SYS DATE;
  3469  
  3470     ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( CC_process _name,1,60 ),
  3471                                 PD _job_log_d ate => VD_ log_date,
  3472                                 PC _job_statu s => SUBST R('INFORMA TION - Com mand Line  Parameters ',1,60),
  3473                                 PC _job_log_m essage =>  SUBSTR('Cu rrent job  command li ne paramet ers - '
  3474                                                              || ' R un standal one: ' ||  VC_run_sta ndalone
  3475                                                              || ' R un on repo rting data bases: ' | | VC_allow _rpt_inst, 1,2000),
  3476                                 PD _date1 =>  VD_process _start_dat e,
  3477                                 PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  3478  
  3479   -- ******* ********** ********** ********** ********** ********** ********** ********
  3480   -- *
  3481   -- * Check  to see if  process i s running  on a repor ting datab ase.
  3482   -- *  - If  VB_allow_ rpt_inst i s FALSE, t hen it's n ot allowed . End the  job.
  3483   -- *
  3484   -- ******* ********** ********** ********** ********** ********** ********** ********
  3485  
  3486     DBMS_APP LICATION_I NFO.SET_AC TION(Actio n_name =>  'Check if  running on  reporting  DB');
  3487  
  3488     BEGIN
  3489  
  3490       SELECT     Instan ce_name
  3491       INTO       VC_ins tance_name
  3492       FROM       V$inst ance;
  3493  
  3494       VD_log _date := S YSDATE;
  3495       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  3496                                    PD_job_log _date => V D_log_date ,
  3497                                    PC_job_sta tus => SUB STR('INFOR MATION - I nstance Na me' ,1,60) ,
  3498                                    PC_job_log _message = > SUBSTR(' Job is run ning on in stance ' | | UPPER(VC _instance_ name) || ' .',1,2000) ,
  3499                                    PD_date1 = > VD_proce ss_start_d ate,
  3500                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  3501  
  3502       IF NOT  VB_allow_ rpt_inst
  3503        AND U PPER(SUBST R(VC_insta nce_name,1 ,4)) = 'AD RR' THEN
  3504  
  3505         VD_l og_date :=  SYSDATE;
  3506  
  3507         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  3508                                      PD_job_l og_date =>  VD_log_da te,
  3509                                      PC_job_s tatus => S UBSTR('ERR OR       -  Reporting  Database  Check',1,6 0),
  3510                                      PC_job_l og_message  => SUBSTR ('Attempti ng to run  on a repor ting datab ase with e xecution p arameter'
  3511                                                                  ||  ' VB_allo w_rpt_inst  set to FA LSE. This  job has be en termina ted.'
  3512                                                                  ||  ' To run  on a repor ting insta nce, set p arameter V B_allow_rp t_inst'
  3513                                                                  ||  ' to TRUE  and resub mit the jo b.',1,2000 ),
  3514                                      PD_date1  => VD_pro cess_start _date,
  3515                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  3516  
  3517         RETU RN;
  3518  
  3519       END IF ;
  3520  
  3521     EXCEPTIO N
  3522  
  3523       WHEN O THERS THEN
  3524  
  3525         VD_l og_date :=  SYSDATE;
  3526  
  3527         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  3528                                      PD_job_l og_date =>  VD_log_da te,
  3529                                      PC_job_s tatus => S UBSTR('ERR OR       -  Reporting  Database  Check',1,6 0),
  3530                                      PC_job_l og_message  => SUBSTR ('Unable t o retrieve  instance  name. Term inating sc ript.',1,2 000),
  3531                                      PD_date1  => VD_pro cess_start _date,
  3532                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  3533  
  3534         ADRM GT.Job_Pro cess_Err_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  3535                                      PD_job_e rror_date   => VD_log _date,
  3536                                      PC_job_e rror_code  => SUBSTR( SQLCODE,1, 60),
  3537                                      PC_job_e rror_messa ge => SUBS TR('Unable  to retrie ve instanc e name. '
  3538                                                                        || SQLE RRM,1,2000 ),
  3539                                      PD_date1  => VD_pro cess_start _date,
  3540                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  3541  
  3542         RETU RN;
  3543  
  3544     END;
  3545  
  3546   -- ******* ********** ********** ********** ********** ********** ********** ********
  3547   -- *
  3548   -- * Check  to see if  any other  jobs of t his proced ure are ru nning.
  3549   -- *  - If  yes, then  end this  job.
  3550   -- *
  3551   -- ******* ********** ********** ********** ********** ********** ********** ********
  3552  
  3553     DBMS_APP LICATION_I NFO.SET_AC TION(Actio n_name =>  'Check for  duplicate  jobs runn ing');
  3554  
  3555     SELECT C OUNT(*)
  3556     INTO   V N_job_coun t
  3557     FROM   S YS.DBA_JOB S J
  3558     WHERE  U PPER(J.WHA T) LIKE '% HL7_PROCES S_DELETES% ';
  3559  
  3560     IF VN_jo b_count >  1 THEN
  3561  
  3562       VD_log _date := S YSDATE;
  3563  
  3564       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  3565                                    PD_job_log _date => V D_log_date ,
  3566                                    PC_job_sta tus => SUB STR('ERROR        - M ultiple Ex ecution Ch eck',1,60) ,
  3567                                    PC_job_log _message = > SUBSTR(' There is a nother ins tance of t his job al ready in t he job que ue.'
  3568                                                                || '  Exiting j ob without  running.' ,1,2000),
  3569                                    PD_date1 = > VD_proce ss_start_d ate,
  3570                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  3571  
  3572       RETURN ;
  3573  
  3574     ELSE
  3575  
  3576       IF VB_ run_standa lone THEN
  3577  
  3578         VD_l og_date :=  SYSDATE;
  3579  
  3580         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  3581                                      PD_job_l og_date =>  VD_log_da te,
  3582                                      PC_job_s tatus => S UBSTR('INF ORMATION -  Execution  Mode',1,6 0),
  3583                                      PC_job_l og_message  => SUBSTR ('Starting  in STANDA LONE mode. ',1,2000),
  3584                                      PD_date1  => VD_pro cess_start _date,
  3585                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  3586  
  3587       ELSE
  3588  
  3589         VD_l og_date :=  SYSDATE;
  3590  
  3591         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  3592                                      PD_job_l og_date =>  VD_log_da te,
  3593                                      PC_job_s tatus => S UBSTR('INF ORMATION -  Execution  Mode',1,6 0),
  3594                                      PC_job_l og_message  => SUBSTR ('Starting  in DBMS_J OB mode.', 1,2000),
  3595                                      PD_date1  => VD_pro cess_start _date,
  3596                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  3597  
  3598       END IF ;
  3599  
  3600     END IF;
  3601  
  3602   -- ******* ********** ********** ********** ********** ********** ********** ********
  3603   -- *
  3604   -- * Retri eve modifi able param eters
  3605   -- *
  3606   -- *  If t he process  control p arameter =  0 then th e job retu rns contro l to
  3607   -- *  to D BMS_JOB an d waits un til it is  called to  run again.
  3608   -- *
  3609   -- ******* ********** ********** ********** ********** ********** ********** ********
  3610  
  3611     DBMS_APP LICATION_I NFO.SET_AC TION(Actio n_name =>  'Fetching  user param eters');
  3612  
  3613     BEGIN
  3614  
  3615       SELECT     AP.Val ue
  3616       INTO       VN_pro cess_contr ol
  3617       FROM       Adr_Pa rameter AP
  3618       WHERE      Applic ation_name  = 'HL7_DE LETE_CONTR OL'
  3619       AND        Parame ter_name =  'START_ST OP_PROCESS ';
  3620  
  3621       IF VN_ process_co ntrol = 0  THEN
  3622  
  3623         VD_l og_date :=  SYSDATE;
  3624  
  3625         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  3626                                      PD_job_l og_date =>  VD_log_da te,
  3627                                      PC_job_s tatus => S UBSTR('INF ORMATION -  Process C ontrol',1, 60),
  3628                                      PC_job_l og_message  => SUBSTR ('Start/St op control  flag set  to STOP (0 ). Going b ack to sle ep.',1,200 0),
  3629                                      PD_date1  => VD_pro cess_start _date,
  3630                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  3631  
  3632         RETU RN;
  3633  
  3634       ELSE
  3635  
  3636         VD_l og_date :=  SYSDATE;
  3637  
  3638         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  3639                                      PD_job_l og_date =>  VD_log_da te,
  3640                                      PC_job_s tatus => S UBSTR('INF ORMATION -  Process C ontrol',1, 60),
  3641                                      PC_job_l og_message  => SUBSTR ('Start/St op control  flag set  to START ( 1). Delete  process s tarting.', 1,2000),
  3642                                      PD_date1  => VD_pro cess_start _date,
  3643                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  3644  
  3645       END IF ;
  3646  
  3647     EXCEPTIO N
  3648  
  3649       WHEN O THERS THEN
  3650  
  3651         VD_l og_date :=  SYSDATE;
  3652  
  3653         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  3654                                      PD_job_l og_date =>  VD_log_da te,
  3655                                      PC_job_s tatus => S UBSTR('ERR OR       -  Process C ontrol',1, 60),
  3656                                      PC_job_l og_message  => SUBSTR ('Unable t o retrieve  parameter  START_STO P_PROCESS. '
  3657                                                                      || ' Term inating ex ecution of  the job.' || SQLERRM ,1,2000),
  3658                                      PD_date1  => VD_pro cess_start _date,
  3659                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  3660  
  3661         ADRM GT.Job_Pro cess_Err_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  3662                                      PD_job_e rror_date   => VD_log _date,
  3663                                      PC_job_e rror_code  => SUBSTR( SQLCODE,1, 60),
  3664                                      PC_job_e rror_messa ge => SUBS TR('Unable  to retrie ve paramet er START_S TOP_PROCES S. '
  3665                                                                        || SQLE RRM,1,2000 ),
  3666                                      PD_date1  => VD_pro cess_start _date,
  3667                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  3668  
  3669         RETU RN;
  3670  
  3671     END;
  3672  
  3673     BEGIN
  3674  
  3675       SELECT     AP.Val ue
  3676       INTO       VN_log _age_to_ke ep
  3677       FROM       Adr_Pa rameter AP
  3678       WHERE      Applic ation_name  = 'HL7_PR OCESS_DELE TES'
  3679       AND        Parame ter_name =  'OLDEST L OG FILE DA YS KEPT';
  3680  
  3681       VD_log _date := S YSDATE;
  3682  
  3683       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  3684                                    PD_job_log _date => V D_log_date ,
  3685                                    PC_job_sta tus => SUB STR('INFOR MATION - U ser Define d Paramete rs',1,60),
  3686                                    PC_job_log _message = > SUBSTR(' Parameter:  OLDEST LO G FILE DAY S KEPT  -  Value: '||  VN_log_ag e_to_keep, 1,2000),
  3687                                    PD_date1 = > VD_proce ss_start_d ate,
  3688                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  3689  
  3690     EXCEPTIO N
  3691  
  3692       WHEN O THERS THEN
  3693  
  3694         VD_l og_date :=  SYSDATE;
  3695  
  3696         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  3697                                      PD_job_l og_date =>  VD_log_da te,
  3698                                      PC_job_s tatus => S UBSTR('ERR OR       -  User Defi ned Parame ters',1,60 ),
  3699                                      PC_job_l og_message  => SUBSTR ('Unable t o retrieve  parameter  OLDEST LO G FILE DAY S KEPT.'
  3700                                                                      || ' Term inating ex ecution of  the job.' || SQLERRM ,1,2000),
  3701                                      PD_date1  => VD_pro cess_start _date,
  3702                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  3703  
  3704         ADRM GT.Job_Pro cess_Err_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  3705                                      PD_job_e rror_date   => VD_log _date,
  3706                                      PC_job_e rror_code  => SUBSTR( SQLCODE,1, 60),
  3707                                      PC_job_e rror_messa ge => SUBS TR('Unable  to retrie ve paramet er OLDEST  LOG FILE D AYS KEPT.  '
  3708                                                                        || SQLE RRM,1,2000 ),
  3709                                      PD_date1  => VD_pro cess_start _date,
  3710                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  3711  
  3712         RETU RN;
  3713  
  3714     END;
  3715  
  3716     BEGIN
  3717  
  3718       SELECT     AP.Val ue
  3719       INTO       VN_num _rows_to_p rocess
  3720       FROM       Adr_Pa rameter AP
  3721       WHERE      Applic ation_name  = 'HL7_PR OCESS_DELE TES'
  3722       AND        Parame ter_name =  'ROWS TO  PROCESS';
  3723  
  3724       VD_log _date := S YSDATE;
  3725  
  3726       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  3727                                    PD_job_log _date => V D_log_date ,
  3728                                    PC_job_sta tus => SUB STR('INFOR MATION - U ser Define d Paramete rs',1,60),
  3729                                    PC_job_log _message = > SUBSTR(' Parameter:  ROWS TO P ROCESS  -  Value: '||  VN_num_ro ws_to_proc ess,1,2000 ),
  3730                                    PD_date1 = > VD_proce ss_start_d ate,
  3731                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  3732  
  3733     EXCEPTIO N
  3734  
  3735       WHEN O THERS THEN
  3736  
  3737         VD_l og_date :=  SYSDATE;
  3738  
  3739         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  3740                                      PD_job_l og_date =>  VD_log_da te,
  3741                                      PC_job_s tatus => S UBSTR('ERR OR       -  User Defi ned Parame ters',1,60 ),
  3742                                      PC_job_l og_message  => SUBSTR ('Unable t o retrieve  parameter  ROWS TO P ROCESS.'
  3743                                                                     || ' Termi nating exe cution of  the job.'| | SQLERRM, 1,2000),
  3744                                      PD_date1  => VD_pro cess_start _date,
  3745                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  3746  
  3747         ADRM GT.Job_Pro cess_Err_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  3748                                      PD_job_e rror_date   => VD_log _date,
  3749                                      PC_job_e rror_code  => SUBSTR( SQLCODE,1, 60),
  3750                                      PC_job_e rror_messa ge => SUBS TR('Unable  to retrie ve paramet er ROWS TO  PROCESS.  '
  3751                                                                        || SQLE RRM,1,2000 ),
  3752                                      PD_date1  => VD_pro cess_start _date,
  3753                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  3754  
  3755         RETU RN;
  3756  
  3757     END;
  3758  
  3759     BEGIN
  3760  
  3761       SELECT     AP.Val ue
  3762       INTO       VN_arc h_rows_age _to_keep
  3763       FROM       Adr_Pa rameter AP
  3764       WHERE      Applic ation_name  = 'HL7_PR OCESS_DELE TES'
  3765       AND        Parame ter_name =  'OLDEST A RCHIVED HL 7 DAYS NOT  DELETED';
  3766  
  3767       VD_log _date := S YSDATE;
  3768  
  3769       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  3770                                    PD_job_log _date => V D_log_date ,
  3771                                    PC_job_sta tus => SUB STR('INFOR MATION - U ser Define d Paramete rs',1,60),
  3772                                    PC_job_log _message = > SUBSTR(' Parameter:  OLDEST AR CHIVED HL7  DAYS NOT  DELETED  -  Value: '| | VN_arch_ rows_age_t o_keep,1,2 000),
  3773                                    PD_date1 = > VD_proce ss_start_d ate,
  3774                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  3775  
  3776       VD_del _cutoff_da te := TRUN C(VD_proce ss_start_d ate) - VN_ arch_rows_ age_to_kee p;
  3777  
  3778     EXCEPTIO N
  3779  
  3780       WHEN O THERS THEN
  3781  
  3782         VD_l og_date :=  SYSDATE;
  3783  
  3784         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  3785                                      PD_job_l og_date =>  VD_log_da te,
  3786                                      PC_job_s tatus => S UBSTR('ERR OR       -  User Defi ned Parame ters',1,60 ),
  3787                                      PC_job_l og_message  => SUBSTR ('Unable t o retrieve  parameter  OLDEST AR CHIVED HL7  DAYS NOT  DELETED.'
  3788                                                                      || ' Term inating ex ecution of  the job.' || SQLERRM ,1,2000),
  3789                                      PD_date1  => VD_pro cess_start _date,
  3790                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  3791  
  3792         ADRM GT.Job_Pro cess_Err_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  3793                                      PD_job_e rror_date   => VD_log _date,
  3794                                      PC_job_e rror_code  => SUBSTR( SQLCODE,1, 60),
  3795                                      PC_job_e rror_messa ge => SUBS TR('Unable  to retrie ve paramet er OLDEST  ARCHIVED H L7 DAYS NO T DELETED.  '
  3796                                                                        || SQLE RRM,1,2000 ),
  3797                                      PD_date1  => VD_pro cess_start _date,
  3798                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  3799  
  3800     END;
  3801  
  3802   -- ******* ********** ********** ********** ********** ********** ********** ********
  3803   -- *
  3804   -- * Remov e outdated  log and e rror file  rows
  3805   -- *
  3806   -- ******* ********** ********** ********** ********** ********** ********** ********
  3807  
  3808     DBMS_APP LICATION_I NFO.SET_AC TION(Actio n_name =>  'Removing  old logs a nd error r ows');
  3809  
  3810     BEGIN
  3811  
  3812       VD_log _date := S YSDATE;
  3813  
  3814       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  3815                                    PD_job_log _date => V D_log_date ,
  3816                                    PC_job_sta tus => SUB STR('INFOR MATION - L og File Cl eanup',1,6 0),
  3817                                    PC_job_log _message = > SUBSTR(' Removing E rror Logs  more than  '|| VN_arc h_rows_age _to_keep | | 'days ol d.',1,2000 ),
  3818                                    PD_date1 = > VD_proce ss_start_d ate,
  3819                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  3820  
  3821       DELETE
  3822       FROM       Job_Pr ocess_Errs
  3823       WHERE      Job_na me = CC_pr ocess_name
  3824       AND        Date1  < VD_proce ss_start_d ate - VN_l og_age_to_ keep;
  3825  
  3826       COMMIT ;
  3827  
  3828     EXCEPTIO N
  3829  
  3830       WHEN O THERS THEN
  3831  
  3832         VD_l og_date :=  SYSDATE;
  3833  
  3834         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  3835                                      PD_job_l og_date =>  VD_log_da te,
  3836                                      PC_job_s tatus => S UBSTR('ERR OR       -  Log file  cleanup',1 ,60),
  3837                                      PC_job_l og_message  => SUBSTR ('Unable t o remove r ows from e rror log t able.'
  3838                                                                      || ' Term inating ex ecution of  the job.' || SQLERRM ,1,2000),
  3839                                      PD_date1  => VD_pro cess_start _date,
  3840                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  3841  
  3842         ADRM GT.Job_Pro cess_Err_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  3843                                      PD_job_e rror_date   => VD_log _date,
  3844                                      PC_job_e rror_code  => SUBSTR( SQLCODE,1, 60),
  3845                                      PC_job_e rror_messa ge => SUBS TR('Unable  to remove  rows from  error log  table. '
  3846                                                                        || SQLE RRM,1,2000 ),
  3847                                      PD_date1  => VD_pro cess_start _date,
  3848                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  3849  
  3850         RETU RN;
  3851  
  3852     END;
  3853  
  3854     BEGIN
  3855  
  3856       VD_log _date := S YSDATE;
  3857  
  3858       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  3859                                    PD_job_log _date => V D_log_date ,
  3860                                    PC_job_sta tus => SUB STR('INFOR MATION - L og File Cl eanup',1,6 0),
  3861                                    PC_job_log _message = > SUBSTR(' Removing P rocess Log s more tha n '|| VN_a rch_rows_a ge_to_keep  || 'days  old.',1,20 00),
  3862                                    PD_date1 = > VD_proce ss_start_d ate,
  3863                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  3864  
  3865       DELETE
  3866       FROM       Job_Pr ocess_Logs
  3867       WHERE      Job_na me = CC_pr ocess_name
  3868       AND        Date1  < VD_proce ss_start_d ate - VN_l og_age_to_ keep;
  3869  
  3870       COMMIT ;
  3871  
  3872     EXCEPTIO N
  3873  
  3874       WHEN O THERS THEN
  3875  
  3876         VD_l og_date :=  SYSDATE;
  3877  
  3878         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  3879                                      PD_job_l og_date =>  VD_log_da te,
  3880                                      PC_job_s tatus => S UBSTR('ERR OR       -  Log file  cleanup',1 ,60),
  3881                                      PC_job_l og_message  => SUBSTR ('Unable t o remove r ows from p rocess log  table.'
  3882                                                                      || ' Term inating ex ecution of  the job.' || SQLERRM ,1,2000),
  3883                                      PD_date1  => VD_pro cess_start _date,
  3884                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  3885  
  3886         ADRM GT.Job_Pro cess_Err_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  3887                                      PD_job_e rror_date   => VD_log _date,
  3888                                      PC_job_e rror_code  => SUBSTR( SQLCODE,1, 60),
  3889                                      PC_job_e rror_messa ge => SUBS TR('Unable  to remove  rows from  process l og table.  '
  3890                                                                        || SQLE RRM,1,2000 ),
  3891                                      PD_date1  => VD_pro cess_start _date,
  3892                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  3893  
  3894         RETU RN;
  3895  
  3896     END;
  3897  
  3898   -- ******* ********** ********** ********** ********** ********** ********** ********
  3899   -- *
  3900   -- * Main  processing  loop
  3901   -- *
  3902   -- ******* ********** ********** ********** ********** ********** ********** ********
  3903  
  3904     BEGIN  - - main pro cessing lo op block
  3905  
  3906       DBMS_A PPLICATION _INFO.SET_ ACTION(Act ion_name = > 'Process ing Delete s');
  3907  
  3908       VD_log _date := S YSDATE;
  3909  
  3910       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  3911                                    PD_job_log _date => V D_log_date ,
  3912                                    PC_job_sta tus => SUB STR('INFOR MATION - D elete Proc ess Loop', 1,60),
  3913                                    PC_job_log _message = > SUBSTR(' Starting d eletion of  archived  HL7 rows m ore than '
  3914                                                                   | | VN_arch_ rows_age_t o_keep
  3915                                                                   | | ' days o ld.',1,200 0),
  3916                                    PD_date1 = > VD_proce ss_start_d ate,
  3917                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  3918  
  3919       VN_tot al_deletes _count :=0 ;
  3920  
  3921       LOOP   -- main pr ocessing l oop
  3922  
  3923         OPEN  C_hl7_arc h_rec;
  3924  
  3925         FETC H C_hl7_ar ch_rec
  3926         BULK  COLLECT I NTO T_pk_i d
  3927         LIMI T VN_num_r ows_to_pro cess;
  3928  
  3929         CLOS E C_hl7_ar ch_rec;
  3930  
  3931         IF T _pk_id.COU NT = 0 THE N  -- if c ollection  table is e mpty, all  rows proce ssed
  3932  
  3933           VD _log_date  := SYSDATE ;
  3934  
  3935           AD RMGT.Job_P rocess_Log _Sp(PC_job _name => S UBSTR(CC_p rocess_nam e,1,60),
  3936                                        PD_job _log_date  => VD_log_ date,
  3937                                        PC_job _status =>  SUBSTR('I NFORMATION  - Delete  Process Lo op - COMPL ETED',1,60 ),
  3938                                        PC_job _log_messa ge => SUBS TR('All ar chived HL7  rows more  than '
  3939                                                                        || VN_a rch_rows_a ge_to_keep
  3940                                                                        || ' da ys old hav e been del eted.',1,2 000),
  3941                                        PD_dat e1 => VD_p rocess_sta rt_date,
  3942                                        PC_tex t1 => SUBS TR('Date1  column con tains the  daily proc ess start  date',1,25 5));
  3943  
  3944           VD _log_date  := SYSDATE ;
  3945  
  3946           AD RMGT.Job_P rocess_Log _Sp(PC_job _name => S UBSTR(CC_p rocess_nam e,1,60),
  3947                                        PD_job _log_date  => VD_log_ date,
  3948                                        PC_job _status =>  SUBSTR('I NFORMATION  - Delete  Process Lo op - COMPL ETED',1,60 ),
  3949                                        PC_job _log_messa ge => SUBS TR('Total  number of  rows delet ed: '
  3950                                                                        || TO_C HAR(VN_tot al_deletes _count,'99 9,999,999, 990'),1,20 00),
  3951                                        PD_dat e1 => VD_p rocess_sta rt_date,
  3952                                        PC_tex t1 => SUBS TR('Date1  column con tains the  daily proc ess start  date',1,25 5));
  3953  
  3954           DB MS_APPLICA TION_INFO. SET_ACTION (Action_na me => 'Del ete Proces sing Compl eted');
  3955  
  3956           BE GIN
  3957  
  3958              UPDATE     Adr_Parame ter AP
  3959              SET        AP.Value =  0
  3960              WHERE      Applicatio n_name = ' HL7_DELETE _CONTROL'
  3961              AND        Parameter_ name = 'ST ART_STOP_P ROCESS';
  3962  
  3963              COMMIT;
  3964  
  3965           EX CEPTION
  3966  
  3967              WHEN OTHER S THEN
  3968  
  3969                ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( CC_process _name,1,60 ),
  3970                                            PD _job_log_d ate => VD_ log_date,
  3971                                            PC _job_statu s => SUBST R('ERROR        - Del ete Proces s Loop',1, 60),
  3972                                            PC _job_log_m essage =>  SUBSTR('Un able to up date param eter START _STOP_PROC ESS(1).'
  3973                                                                            ||  ' Terminat ing execut ion of the  job.'|| S QLERRM,1,2 000),
  3974                                            PD _date1 =>  VD_process _start_dat e,
  3975                                            PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  3976  
  3977                ADRMGT.J ob_Process _Err_Sp(PC _job_name  => SUBSTR( CC_process _name,1,60 ),
  3978                                            PD _job_error _date  =>  VD_log_dat e,
  3979                                            PC _job_error _code => S UBSTR(SQLC ODE,1,60),
  3980                                            PC _job_error _message = > SUBSTR(' Failure in  delete pr ocessing l oop - Unab le to upda te paramet er START_S TOP_PROCES S(1). '
  3981                                                                              | | SQLERRM, 1,2000),
  3982                                            PD _date1 =>  VD_process _start_dat e,
  3983                                            PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  3984  
  3985           EN D;
  3986  
  3987           EX IT;
  3988  
  3989         ELSE   -- still  rows to p rocess
  3990  
  3991           BE GIN
  3992  
  3993              FORALL I_p k_id IN T_ pk_id.FIRS T..T_pk_id .LAST SAVE  EXCEPTION S
  3994                DELETE
  3995                FROM       Hl7_Arch ive_Transa ction_Log
  3996                WHERE      Hl7_Tran saction_Lo g_id = T_p k_id(I_pk_ id);
  3997  
  3998                VN_delet e_count :=  SQL%ROWCO UNT;
  3999  
  4000           EX CEPTION
  4001  
  4002              WHEN EE_DM L_ERROR TH EN
  4003  
  4004                VN_delet e_count :=  SQL%ROWCO UNT;
  4005  
  4006                VD_log_d ate := SYS DATE;
  4007  
  4008                ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( CC_process _name,1,60 ),
  4009                                            PD _job_log_d ate => VD_ log_date,
  4010                                            PC _job_statu s => SUBST R('ERROR        - Del ete Proces s Loop',1, 60),
  4011                                            PC _job_log_m essage =>  SUBSTR('Al l rows not  deleted.'
  4012                                                                            ||  ' - Rows i n collecti on: '
  4013                                                                            ||  LTRIM(TO_C HAR(T_pk_i d.COUNT,'9 99,990'))
  4014                                                                            ||  '. Error c ount: '
  4015                                                                            ||  LTRIM(TO_C HAR(SQL%BU LK_EXCEPTI ONS.COUNT, '999,990') )
  4016                                                                            ||  '. Rows at tempted to  delete: '
  4017                                                                            ||  LTRIM(TO_C HAR(VN_del ete_count, '999,990') ),1,2000),
  4018                                            PD _date1 =>  VD_process _start_dat e,
  4019                                            PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  4020  
  4021                ADRMGT.J ob_Process _Err_Sp(PC _job_name  => SUBSTR( CC_process _name,1,60 ),
  4022                                            PD _job_error _date  =>  VD_log_dat e,
  4023                                            PC _job_error _code => N ULL,
  4024                                            PC _job_error _message = > SUBSTR(' All rows n ot deleted . '
  4025                                                                              | | ' - Rows  in collec tion: '
  4026                                                                              | | LTRIM(TO _CHAR(T_pk _id.COUNT, '999,990') )
  4027                                                                              | | '. Error  count: '
  4028                                                                              | | LTRIM(TO _CHAR(SQL% BULK_EXCEP TIONS.COUN T,'999,990 '))
  4029                                                                              | | '. Rows  attempted  to delete:  '
  4030                                                                              | | LTRIM(TO _CHAR(VN_d elete_coun t,'999,990 ')),1,2000 ),
  4031                                            PD _date1 =>  VD_process _start_dat e,
  4032                                            PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  4033  
  4034                FOR I_de l_err IN 1 ..SQL%BULK _EXCEPTION S.COUNT LO OP
  4035  
  4036                  VD_log _date := S YSDATE;
  4037  
  4038                  ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  4039                                               PD_job_log _date => V D_log_date ,
  4040                                               PC_job_sta tus => SUB STR('ERROR        - D elete Proc ess Loop', 1,60),
  4041                                               PC_job_log _message = > SUBSTR(' Failed DEL ETE row #  '
  4042                                                                              | | I_del_er r
  4043                                                                              | | ' occurr ed during  iteration  # '
  4044                                                                              | | SQL%BULK _EXCEPTION S(I_del_er r).ERROR_I NDEX
  4045                                                                              | | ' Error  message: '
  4046                                                                              | | SQLERRM( -SQL%BULK_ EXCEPTIONS (I_del_err ).ERROR_CO DE),1,2000 ),
  4047                                               PD_date1 = > VD_proce ss_start_d ate,
  4048                                               PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  4049  
  4050                  ADRMGT .Job_Proce ss_Err_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  4051                                               PD_job_err or_date  = > VD_log_d ate,
  4052                                               PC_job_err or_code =>  SUBSTR(-S QL%BULK_EX CEPTIONS(I _del_err). ERROR_CODE ,1,60),
  4053                                               PC_job_err or_message  => SUBSTR ('Failed D ELETE row  # '
  4054                                                                                 || I_del_ err
  4055                                                                                 || ' occu rred durin g iteratio n # '
  4056                                                                                 || SQL%BU LK_EXCEPTI ONS(I_del_ err).ERROR _INDEX
  4057                                                                                 || ' Erro r message:  '
  4058                                                                                 || SQLERR M(-SQL%BUL K_EXCEPTIO NS(I_del_e rr).ERROR_ CODE),1,20 00),
  4059                                               PD_date1 = > VD_proce ss_start_d ate,
  4060                                               PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  4061  
  4062                END LOOP ;
  4063  
  4064                ROLLBACK ;
  4065  
  4066                BEGIN
  4067  
  4068                  UPDATE     Adr_Pa rameter AP
  4069                  SET        AP.Val ue = 0
  4070                  WHERE      Applic ation_name  = 'HL7_DE LETE_CONTR OL'
  4071                  AND        Parame ter_name =  'START_ST OP_PROCESS ';
  4072  
  4073                  COMMIT ;
  4074  
  4075                EXCEPTIO N
  4076  
  4077                  WHEN O THERS THEN
  4078  
  4079                    ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  4080                                                 PD_job_l og_date =>  VD_log_da te,
  4081                                                 PC_job_s tatus => S UBSTR('ERR OR       -  Delete Pr ocess Loop ',1,60),
  4082                                                 PC_job_l og_message  => SUBSTR ('Unable t o update p arameter S TART_STOP_ PROCESS(2) .'
  4083                                                                                 || ' Term inating ex ecution of  the job.' || SQLERRM ,1,2000),
  4084                                                 PD_date1  => VD_pro cess_start _date,
  4085                                                 PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  4086  
  4087                    ADRM GT.Job_Pro cess_Err_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  4088                                                 PD_job_e rror_date   => VD_log _date,
  4089                                                 PC_job_e rror_code  => SUBSTR( SQLCODE,1, 60),
  4090                                                 PC_job_e rror_messa ge => SUBS TR('Failur e in delet e processi ng loop -  Unable to  update par ameter STA RT_STOP_PR OCESS(2).  '
  4091                                                                                   || SQLE RRM,1,2000 ),
  4092                                                 PD_date1  => VD_pro cess_start _date,
  4093                                                 PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  4094  
  4095                END;
  4096  
  4097                RETURN;
  4098  
  4099              WHEN OTHER S THEN
  4100  
  4101                VD_log_d ate := SYS DATE;
  4102  
  4103                ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( CC_process _name,1,60 ),
  4104                                            PD _job_log_d ate => VD_ log_date,
  4105                                            PC _job_statu s => SUBST R('ERROR        - Del ete Proces s Loop',1, 60),
  4106                                            PC _job_log_m essage =>  SUBSTR('Un known erro r while de leting.'
  4107                                                                            ||  ' Terminat ing execut ion of the  job.'|| S QLERRM,1,2 000),
  4108                                            PD _date1 =>  VD_process _start_dat e,
  4109                                            PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  4110  
  4111                ADRMGT.J ob_Process _Err_Sp(PC _job_name  => SUBSTR( CC_process _name,1,60 ),
  4112                                            PD _job_error _date  =>  VD_log_dat e,
  4113                                            PC _job_error _code => S UBSTR(SQLC ODE,1,60),
  4114                                            PC _job_error _message = > SUBSTR(' Failure in  delete pr ocessing l oop - Unkn own error  while dele ting.'
  4115                                                                              | | SQLERRM, 1,2000),
  4116                                            PD _date1 =>  VD_process _start_dat e,
  4117                                            PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  4118  
  4119                ROLLBACK ;
  4120  
  4121                BEGIN
  4122  
  4123                  UPDATE     Adr_Pa rameter AP
  4124                  SET        AP.Val ue = 0
  4125                  WHERE      Applic ation_name  = 'HL7_DE LETE_CONTR OL'
  4126                  AND        Parame ter_name =  'START_ST OP_PROCESS ';
  4127  
  4128                  COMMIT ;
  4129  
  4130                EXCEPTIO N
  4131  
  4132                  WHEN O THERS THEN
  4133  
  4134                    ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  4135                                                 PD_job_l og_date =>  VD_log_da te,
  4136                                                 PC_job_s tatus => S UBSTR('ERR OR       -  Delete Pr ocess Loop ',1,60),
  4137                                                 PC_job_l og_message  => SUBSTR ('Unable t o update p arameter S TART_STOP_ PROCESS(3) .'
  4138                                                                                 || ' Term inating ex ecution of  the job.' || SQLERRM ,1,2000),
  4139                                                 PD_date1  => VD_pro cess_start _date,
  4140                                                 PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  4141  
  4142                    ADRM GT.Job_Pro cess_Err_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  4143                                                 PD_job_e rror_date   => VD_log _date,
  4144                                                 PC_job_e rror_code  => SUBSTR( SQLCODE,1, 60),
  4145                                                 PC_job_e rror_messa ge => SUBS TR('Failur e in delet e processi ng loop -  Unable to  update par ameter STA RT_STOP_PR OCESS(3).  '
  4146                                                                                   || SQLE RRM,1,2000 ),
  4147                                                 PD_date1  => VD_pro cess_start _date,
  4148                                                 PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  4149  
  4150                END;
  4151  
  4152                RETURN;
  4153  
  4154           EN D;
  4155  
  4156           IF  T_pk_id.C OUNT = VN_ delete_cou nt THEN  - - all coll ection row s were del eted
  4157  
  4158              COMMIT;
  4159  
  4160              VN_total_d eletes_cou nt := VN_t otal_delet es_count +  VN_delete _count;
  4161  
  4162              DBMS_APPLI CATION_INF O.SET_CLIE NT_INFO(TO _CHAR(SYSD ATE,'DD-MO N HH24:MI: SS')
  4163                                                       ||  ' - Curre nt delete  count: '
  4164                                                       ||  TO_CHAR(V N_total_de letes_coun t,'99,999, 999,990')) ;
  4165  
  4166              BEGIN  --  get proces s control  parameter
  4167  
  4168                SELECT     AP.Value
  4169                INTO       VN_proce ss_control
  4170                FROM       Adr_Para meter AP
  4171                WHERE      Applicat ion_name =  'HL7_DELE TE_CONTROL '
  4172                AND        Paramete r_name = ' START_STOP _PROCESS';
  4173  
  4174                IF VN_pr ocess_cont rol = 0 TH EN
  4175  
  4176                  VD_log _date := S YSDATE;
  4177  
  4178                  ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  4179                                               PD_job_log _date => V D_log_date ,
  4180                                               PC_job_sta tus => SUB STR('INFOR MATION - D elete Proc ess Loop -  CANCELLED ',1,60),
  4181                                               PC_job_log _message = > SUBSTR(' Applicatio n has canc elled the  delete pro cess.',1,2 000),
  4182                                               PD_date1 = > VD_proce ss_start_d ate,
  4183                                               PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  4184  
  4185                  VD_log _date := S YSDATE;
  4186  
  4187                  ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  4188                                               PD_job_log _date => V D_log_date ,
  4189                                               PC_job_sta tus => SUB STR('INFOR MATION - D elete Proc ess Loop -  CANCELLED ',1,60),
  4190                                               PC_job_log _message = > SUBSTR(' Total numb er of rows  deleted:  '
  4191                                                                              | | TO_CHAR( VN_total_d eletes_cou nt,'99,999 ,999,990') ,1,2000),
  4192                                               PD_date1 = > VD_proce ss_start_d ate,
  4193                                               PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  4194  
  4195                  DBMS_A PPLICATION _INFO.SET_ ACTION(Act ion_name = > 'Delete  Processing  Cancelled ');
  4196  
  4197                  EXIT;
  4198  
  4199                END IF;
  4200  
  4201              EXCEPTION
  4202  
  4203                WHEN OTH ERS THEN
  4204  
  4205                  VD_log _date := S YSDATE;
  4206  
  4207                  ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  4208                                               PD_job_log _date => V D_log_date ,
  4209                                               PC_job_sta tus => SUB STR('ERROR        - D elete Proc ess Loop', 1,60),
  4210                                               PC_job_log _message = > SUBSTR(' Unable to  retrieve p arameter S TART_STOP_ PROCESS.'
  4211                                                                              | | ' Termin ating exec ution of t he job.'||  SQLERRM,1 ,2000),
  4212                                               PD_date1 = > VD_proce ss_start_d ate,
  4213                                               PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  4214  
  4215                  ADRMGT .Job_Proce ss_Err_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  4216                                               PD_job_err or_date  = > VD_log_d ate,
  4217                                               PC_job_err or_code =>  SUBSTR(SQ LCODE,1,60 ),
  4218                                               PC_job_err or_message  => SUBSTR ('Failure  in delete  processing  loop - Un able to re trieve par ameter STA RT_STOP_PR OCESS. '
  4219                                                                                 || SQLERR M,1,2000),
  4220                                               PD_date1 = > VD_proce ss_start_d ate,
  4221                                               PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  4222  
  4223                  RETURN ;
  4224  
  4225              END;  -- e nd get pro cess contr ol paramet er
  4226  
  4227           EL SE  -- all  collectio n rows wer e not dele ted
  4228  
  4229              VD_log_dat e := SYSDA TE;
  4230  
  4231              ADRMGT.Job _Process_L og_Sp(PC_j ob_name =>  SUBSTR(CC _process_n ame,1,60),
  4232                                          PD_j ob_log_dat e => VD_lo g_date,
  4233                                          PC_j ob_status  => SUBSTR( 'ERROR        - Delet e Process  Loop',1,60 ),
  4234                                          PC_j ob_log_mes sage => SU BSTR('Dele te count d oes not ma tch collet ion table  count.'
  4235                                                                          || '  - Delete c ount: '
  4236                                                                          || VN _delete_co unt
  4237                                                                          || '  - Collecti on count:  '
  4238                                                                          || T_ pk_id.COUN T
  4239                                                                          || '  - Terminat ing execut ion of the  job.',1,2 000),
  4240                                          PD_d ate1 => VD _process_s tart_date,
  4241                                          PC_t ext1 => SU BSTR('Date 1 column c ontains th e daily pr ocess star t date',1, 255));
  4242  
  4243              ADRMGT.Job _Process_E rr_Sp(PC_j ob_name =>  SUBSTR(CC _process_n ame,1,60),
  4244                                          PD_j ob_error_d ate  => VD _log_date,
  4245                                          PC_j ob_error_c ode => NUL L,
  4246                                          PC_j ob_error_m essage =>  SUBSTR('Fa ilure in d elete proc essing loo p - Delete  count doe s not matc h colletio n table co unt.'
  4247                                                                          || '  - Delete c ount: '
  4248                                                                          || VN _delete_co unt
  4249                                                                          || '  - Collecti on count:  '
  4250                                                                          || T_ pk_id.COUN T
  4251                                                                          || '  - Terminat ing execut ion of the  job.',1,2 000),
  4252                                          PD_d ate1 => VD _process_s tart_date,
  4253                                          PC_t ext1 => SU BSTR('Date 1 column c ontains th e daily pr ocess star t date',1, 255));
  4254  
  4255              ROLLBACK;
  4256  
  4257              BEGIN
  4258  
  4259                UPDATE     Adr_Para meter AP
  4260                SET        AP.Value  = 0
  4261                WHERE      Applicat ion_name =  'HL7_DELE TE_CONTROL '
  4262                AND        Paramete r_name = ' START_STOP _PROCESS';
  4263  
  4264                COMMIT;
  4265  
  4266              EXCEPTION
  4267  
  4268                WHEN OTH ERS THEN
  4269  
  4270                  ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  4271                                               PD_job_log _date => V D_log_date ,
  4272                                               PC_job_sta tus => SUB STR('ERROR        - D elete Proc ess Loop', 1,60),
  4273                                               PC_job_log _message = > SUBSTR(' Unable to  update par ameter STA RT_STOP_PR OCESS(4).'
  4274                                                                              | | ' Termin ating exec ution of t he job.'||  SQLERRM,1 ,2000),
  4275                                               PD_date1 = > VD_proce ss_start_d ate,
  4276                                               PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  4277  
  4278                  ADRMGT .Job_Proce ss_Err_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  4279                                               PD_job_err or_date  = > VD_log_d ate,
  4280                                               PC_job_err or_code =>  SUBSTR(SQ LCODE,1,60 ),
  4281                                               PC_job_err or_message  => SUBSTR ('Failure  in delete  processing  loop - Un able to up date param eter START _STOP_PROC ESS(4). '
  4282                                                                                 || SQLERR M,1,2000),
  4283                                               PD_date1 = > VD_proce ss_start_d ate,
  4284                                               PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  4285  
  4286              END;
  4287  
  4288              RETURN;
  4289  
  4290           EN D IF;  --  end all co llection r ows were d eleted
  4291  
  4292         END  IF;  -- en d if colle ction tabl e is empty , all rows  processed
  4293  
  4294       END LO OP;  -- em d main pro cessing lo op
  4295  
  4296       VD_pro cess_end_d ate := SYS DATE;
  4297  
  4298       VN_pro cess_time_ in_secs :=  (VD_proce ss_end_dat e - VD_pro cess_start _date)*24* 60*60;
  4299  
  4300       VN_pro cess_days  := TRUNC(V N_process_ time_in_se cs/24/60/6 0);
  4301  
  4302       VN_pro cess_hours  := TRUNC( (VN_proces s_time_in_ secs -
  4303                                     (VN_proce ss_days*24 *60*60))/6 0/60);
  4304  
  4305       VN_pro cess_minut es := TRUN C((VN_proc ess_time_i n_secs -
  4306                                       (VN_pro cess_days* 24*60*60)  -
  4307                                         (VN_p rocess_hou rs*60*60)) /60);
  4308  
  4309       VN_pro cess_secon ds := TRUN C(VN_proce ss_time_in _secs -
  4310                                       (VN_pro cess_days* 24*60*60)  -
  4311                                         (VN_p rocess_hou rs*60*60)  -
  4312                                           (VN _process_m inutes*60) );
  4313  
  4314       VC_pro cess_durat ion := LTR IM(TO_CHAR (VN_proces s_days,'99 90')) || '  Days '
  4315                                ||  LTRIM(TO_C HAR(VN_pro cess_hours ,'90')) ||  ' Hrs '
  4316                                ||  LTRIM(TO_C HAR(VN_pro cess_minut es,'90'))  || ' Mins  '
  4317                                ||  LTRIM(TO_C HAR(VN_pro cess_secon ds,'90'))  || ' Secs' ;
  4318  
  4319       VD_log _date := S YSDATE;
  4320  
  4321       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  4322                                    PD_job_log _date => V D_log_date ,
  4323                                    PC_job_sta tus => SUB STR('INFOR MATION - P rocess Com pletion',1 ,60),
  4324                                    PC_job_log _message = > 'Elapsed  processin g time: '  || VC_proc ess_durati on,
  4325                                    PD_date1 = > VD_proce ss_start_d ate,
  4326                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  4327  
  4328     EXCEPTIO N
  4329  
  4330       WHEN O THERS THEN
  4331  
  4332         VD_l og_date :=  SYSDATE;
  4333  
  4334         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  4335                                      PD_job_l og_date =>  VD_log_da te,
  4336                                      PC_job_s tatus => S UBSTR('ERR OR       -  Delete Pr ocess Loop ',1,60),
  4337                                      PC_job_l og_message  => SUBSTR ('Failure  in delete  processing  loop.'
  4338                                                                      || ' Term inating ex ecution of  the job.' || SQLERRM ,1,2000),
  4339                                      PD_date1  => VD_pro cess_start _date,
  4340                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  4341  
  4342         ADRM GT.Job_Pro cess_Err_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  4343                                      PD_job_e rror_date   => VD_log _date,
  4344                                      PC_job_e rror_code  => SUBSTR( SQLCODE,1, 60),
  4345                                      PC_job_e rror_messa ge => SUBS TR('Failur e in delet e processi ng loop. '
  4346                                                                        || SQLE RRM,1,2000 ),
  4347                                      PD_date1  => VD_pro cess_start _date,
  4348                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  4349  
  4350         RETU RN;
  4351  
  4352     END;  --  end main  processing  loop bloc k
  4353  
  4354   EXCEPTION
  4355  
  4356     WHEN OTH ERS THEN
  4357  
  4358       VD_log _date := S YSDATE;
  4359  
  4360       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  4361                                    PD_job_log _date => V D_log_date ,
  4362                                    PC_job_sta tus => SUB STR('ERROR        - U nknown Err or',1,60),
  4363                                    PC_job_log _message = > SUBSTR(' Unknown er ror proces sing HL7 d eletions.'
  4364                                                                   | | ' Termin ating exec ution of t he job.'||  SQLERRM,1 ,2000),
  4365                                    PD_date1 = > VD_proce ss_start_d ate,
  4366                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  4367  
  4368       ADRMGT .Job_Proce ss_Err_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  4369                                    PD_job_err or_date  = > VD_log_d ate,
  4370                                    PC_job_err or_code =>  SUBSTR(SQ LCODE,1,60 ),
  4371                                    PC_job_err or_message  => SUBSTR ('Unknown  error proc essing HL7  deletions . '
  4372                                                                      || SQLERR M,1,2000),
  4373                                    PD_date1 = > VD_proce ss_start_d ate,
  4374                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  4375  
  4376       RETURN ;
  4377  
  4378   END Hl7_Pr ocess_Dele tes;
  4379  
  4380   END Hl7_Ar chive_Pkg;
  4381   /
  4382  
  4383  
  4384   GRANT EXEC UTE ON ADR .HL7_ARCHI VE_PKG TO  EEATUSR;
  4385  
  4386   GRANT EXEC UTE ON ADR .HL7_ARCHI VE_PKG TO  EEUSR;
  4387   DROP PACKA GE BODY AD R.ADR_UTIL ;
  4388  
  4389   CREATE OR  REPLACE PA CKAGE BODY  ADR.adr_u til
  4390   AS
  4391     CURSOR a dr_seq IS  select own er, object _name
  4392                           from dba _objects
  4393                          where own er in ('AD R', 'PSD',  'PSIM')
  4394                            and obj ect_type =  'SEQUENCE '
  4395                      or der by own er, object _name;
  4396  
  4397     CURSOR a dr_trig IS  select ow ner, objec t_name
  4398                            from db a_objects
  4399                           where ow ner in ('A DR', 'PSD' , 'PSIM')
  4400                             and ob ject_type  = 'TRIGGER '
  4401                       o rder by ow ner, objec t_name;
  4402  
  4403  
  4404     obj       varchar2( 50);
  4405  
  4406  
  4407   /********* ********** ********** ********** ********** ********** ********** ******
  4408    *
  4409    *    NAME
  4410    *      AD R_PIN_SEQ
  4411    *
  4412    *    DESC RIPTION
  4413    *      AD R_PIN_SEQ  marks all  ADR, PSIM  and PSD se quences as  objects t o be
  4414    *      ke pt in the  shared poo l memory.
  4415    *
  4416    */
  4417  
  4418     PROCEDUR E ADR_PIN_ SEQ IS
  4419     BEGIN
  4420       FOR fn d_seq IN a dr_seq LOO P
  4421         obj  := fnd_seq .owner ||' .'|| fnd_s eq.object_ name;
  4422         DBMS _SHARED_PO OL.KEEP(ob j,'Q');
  4423       END LO OP;
  4424  
  4425     END ADR_ PIN_SEQ;
  4426  
  4427   /********* ********** ********** ********** ********** ********** ********** ******
  4428    *
  4429    *    NAME
  4430    *      AD R_UNPIN_SE Q
  4431    *
  4432    *    DESC RIPTION
  4433    *      AD R_UNPIN_SE Q marks al l ADR, PSI M and PSD  sequences  as objects  to be
  4434    *      no t kept in  the shared  pool memo ry.
  4435    *
  4436    */
  4437  
  4438     PROCEDUR E ADR_UNPI N_SEQ IS
  4439     BEGIN
  4440       FOR fn d_seq IN a dr_seq LOO P
  4441         obj  := fnd_seq .owner ||' .'|| fnd_s eq.object_ name;
  4442         DBMS _SHARED_PO OL.UNKEEP( obj,'Q');
  4443       END LO OP;
  4444  
  4445     END ADR_ UNPIN_SEQ;
  4446  
  4447   /********* ********** ********** ********** ********** ********** ********** ******
  4448    *
  4449    *    NAME
  4450    *      AD R_PIN_TRIG GERS
  4451    *
  4452    *    DESC RIPTION
  4453    *      AD R_PIN_TRIG GERS marks  all ADR,  PSIM and P SD trigger s as objec ts
  4454    *      to  be kept i n the shar ed pool me mory.
  4455    *
  4456    */
  4457  
  4458     PROCEDUR E ADR_PIN_ TRIGGERS I S
  4459     BEGIN
  4460       FOR fn d_trig IN  adr_trig L OOP
  4461         obj  := fnd_tri g.owner || '.'|| fnd_ trig.objec t_name;
  4462         DBMS _SHARED_PO OL.KEEP(ob j,'R');
  4463       END LO OP;
  4464  
  4465     END ADR_ PIN_TRIGGE RS;
  4466  
  4467   /********* ********** ********** ********** ********** ********** ********** ******
  4468    *
  4469    *    NAME
  4470    *      AD R_UNPIN_TR IGGERS
  4471    *
  4472    *    DESC RIPTION
  4473    *      AD R_UNPIN_TR IGGERS mar ks all ADR , PSIM and  PSD trigg ers as obj ects
  4474    *      to  be not ke pt in the  shared poo l memory.
  4475    *
  4476    */
  4477  
  4478     PROCEDUR E ADR_UNPI N_TRIGGERS  IS
  4479     BEGIN
  4480       FOR fn d_trig IN  adr_trig L OOP
  4481         obj  := fnd_tri g.owner || '.'|| fnd_ trig.objec t_name;
  4482         DBMS _SHARED_PO OL.UNKEEP( obj,'R');
  4483       END LO OP;
  4484  
  4485     END ADR_ UNPIN_TRIG GERS;
  4486  
  4487   END adr_ut il;
  4488   /
  4489  
  4490  
  4491   CREATE OR  REPLACE PU BLIC SYNON YM ADR_UTI L FOR ADR. ADR_UTIL;
  4492  
  4493  
  4494   GRANT EXEC UTE ON ADR .ADR_UTIL  TO AACDBA;
  4495   DROP PACKA GE BODY AD R.MEC_PERI OD_PKG;
  4496  
  4497   CREATE OR  REPLACE PA CKAGE BODY  ADR.MEC_P ERIOD_PKG
  4498   AS
  4499      FUNCTIO N Calc_Exe c_time (v_ start_dt D ATE)
  4500         RETU RN VARCHAR
  4501      AS
  4502      BEGIN
  4503         RETU RN    ' Du ration: '
  4504                 || (    LTRIM (TO_ CHAR (TRUN C ( (SYSDA TE - v_sta rt_dt) * 2 4), '00'))
  4505                     ||  ' Hrs '
  4506                     ||  LTRIM (TO_ CHAR (TRUN C ( ( ( (S YSDATE - v _start_dt)  * 24) - T RUNC ( ( ( SYSDATE -  v_start_dt ) * 24)))  * 60), '00 '))
  4507                     ||  ' Mins '
  4508                     ||  LTRIM (
  4509                            TO_CHAR  (TRUNC (  ( ( (SYSDA TE - v_sta rt_dt) * 2 4 * 60) -  TRUNC ( (  (SYSDATE -  v_start_d t) * 24 *  60))) * 60 ), '00'))
  4510                     ||  ' Secs');
  4511      END Cal c_Exec_tim e;
  4512  
  4513      /****** ********** ********** ********** ********** ********** ********** *********
  4514              DESCRIPTIO N
  4515                 WRAPPER _JOB_PROCE SS_LOG_SP  procedure  for loggin g INFO, WA RN and ERR OR into ta ble.
  4516       ****** ********** ********** ********** ********** ********** ********** ********** **/
  4517      PROCEDU RE WRAPPER _JOB_PROCE SS_LOG_SP  (P_JOB_STA TUS VARCHA R2, P_JOB_ LOG_MESSAG E VARCHAR2 )
  4518      AS
  4519      BEGIN
  4520         ADRM GT.Job_Pro cess_Log_S p (PC_job_ name           => SUB STR (g_job _name, 1,  59),
  4521                                       PD_job_ log_date       => SYS DATE,
  4522                                       PC_job_ status         => SUB STR (P_JOB _STATUS, 1 , 59),
  4523                                       PC_job_ log_messag e   => SUB STR (P_JOB _LOG_MESSA GE, 1, 198 0));
  4524      EXCEPTI ON
  4525         WHEN  OTHERS
  4526         THEN
  4527            D BMS_OUTPUT .put_line  (   SQLERR M
  4528                                     || ' : '
  4529                                     || DBMS_U TILITY.FOR MAT_ERROR_ BACKTRACE) ;
  4530      END WRA PPER_JOB_P ROCESS_LOG _SP;
  4531  
  4532      /****** ********** ********** ********** ********** ********** ********** *********
  4533           DE SCRIPTION
  4534                          Procedure  does main  logic of  inserting  the data w ith all bu siness log ic.
  4535     ******** ********** ********** ********** ********** ********** ********** ********** /
  4536  
  4537      PROCEDU RE FINAL_L OADER_MEC_ PERIOD (p_ future_low er_bound N UMBER)
  4538      AS
  4539         v_re c_cnt    I NTEGER;
  4540         v_st art_dt   D ATE;
  4541      BEGIN
  4542         g_jo b_name :=
  4543                g_pkg_na me
  4544            | | '.FINAL_ LOADER_MEC _PERIOD';
  4545         v_st art_dt :=  SYSDATE;
  4546  
  4547         ---  All below  STEPS star ting from  3 through  6 happens  in one tra nsaction.
  4548         --ST EP 3: Dele te last in serted sta rt date th at doesn't  have a ma tching end  date.
  4549         DELE TE FROM ME C_PERIOD_N EW m
  4550                WHERE EX ISTS
  4551                          (SELECT 1
  4552                             FROM S TG_MEC_PER IOD f
  4553                            WHERE f .Person_id  = m.Perso n_id -- Ad ded fix WI -321159
  4554                                                              AND m. MEC_END_DA TE IS NULL  AND f.DER VD_MEC_END _DATE IS N OT NULL);
  4555  
  4556         v_re c_cnt := S QL%ROWCOUN T;
  4557  
  4558         WRAP PER_JOB_PR OCESS_LOG_ SP ('INFO' ,
  4559                                           'ST EP 3 - LOA DER: (DELE TE) MEC_PE RIOD_NEW v _rec_cnt:  '
  4560                                        || v_r ec_cnt
  4561                                        || Cal c_Exec_tim e (v_start _dt));
  4562         v_st art_dt :=  SYSDATE;
  4563  
  4564         --ST EP 4: inse rt final d ata set bo th increme ntal and i nitial loa ds
  4565         INSE RT INTO ME C_PERIOD_N EW (MEC_PE RIOD_ID,
  4566                                        PERSON _ID,
  4567                                        MEC_ST ART_DATE,
  4568                                        MEC_EN D_DATE,
  4569                                        RECORD _CREATED_B Y,
  4570                                        RECORD _CREATED_D ATE,
  4571                                        RECORD _MODIFIED_ BY,
  4572                                        RECORD _MODIFIED_ DATE,
  4573                                        RECORD _MODIFIED_ COUNT)
  4574            S ELECT s.ME C_PERIOD_I D,
  4575                    s.PE RSON_ID,
  4576                    s.DE RVD_MEC_ST ART_DATE,
  4577                    s.DE RVD_MEC_EN D_DATE,
  4578                    g_pk g_name REC ORD_CREATE D_BY,
  4579                    SYSD ATE RECORD _CREATED_D ATE,
  4580                    g_pk g_name REC ORD_MODIFI ED_BY,
  4581                    SYSD ATE RECORD _MODIFIED_ DATE,
  4582                    0 RE CORD_MODIF IED_COUNT
  4583               FROM STG_ MEC_PERIOD  s,
  4584                    -- A dded fix W I-321159
  4585                    (SEL ECT MEC_PE RIOD_ID FR OM STG_MEC _PERIOD
  4586                     MIN US
  4587                     SEL ECT MEC_PE RIOD_ID FR OM MEC_PER IOD_NEW) t
  4588              WHERE s.ME C_PERIOD_I D = t.MEC_ PERIOD_ID;
  4589  
  4590         v_re c_cnt := S QL%ROWCOUN T;
  4591         g_fi nal_rec_cn t := v_rec _cnt;
  4592  
  4593         WRAP PER_JOB_PR OCESS_LOG_ SP ('INFO' ,
  4594                                           'ST EP 4 - LOA DER: (INSE RT) MEC_PE RIOD_NEW v _rec_cnt:  '
  4595                                        || v_r ec_cnt
  4596                                        || Cal c_Exec_tim e (v_start _dt));
  4597         v_st art_dt :=  SYSDATE;
  4598  
  4599         --ST EP 5: Upda te / inser t max(LAST _ENROLL_DE TERM_H_ID)  for each  person id  for use in  next cycl e run
  4600         MERG E INTO MEC _PERIOD_LA ST_HIST_NE W d
  4601               USING (   SELECT MAX  (MEC_PERI OD_ID) LAS T_ENROLL_D ETERM_H_ID , person_i d
  4602                           FROM STG _MEC_PERIO D
  4603                      GR OUP BY per son_id) s
  4604                  ON (d. person_id  = s.person _id)
  4605         WHEN  MATCHED
  4606         THEN
  4607            U PDATE SET  d.LAST_ENR OLL_DETERM _H_ID = s. LAST_ENROL L_DETERM_H _ID, STATU S = 'Y'
  4608                     WHE RE d.LAST_ ENROLL_DET ERM_H_ID <  s.LAST_EN ROLL_DETER M_H_ID
  4609         WHEN  NOT MATCH ED
  4610         THEN
  4611            I NSERT      (PERSON_ID , LAST_ENR OLL_DETERM _H_ID, STA TUS)
  4612                 VALUES  (s.PERSON_ ID, s.LAST _ENROLL_DE TERM_H_ID,  'Y');
  4613  
  4614         v_re c_cnt := S QL%ROWCOUN T;
  4615  
  4616         WRAP PER_JOB_PR OCESS_LOG_ SP ('INFO' ,
  4617                                           'ST EP 5 - MET ADATA: (ME RGE) MEC_P ERIOD_LAST _HIST_NEW  v_rec_cnt:  '
  4618                                        || v_r ec_cnt
  4619                                        || Cal c_Exec_tim e (v_start _dt));
  4620         v_st art_dt :=  SYSDATE;
  4621  
  4622         --ST EP 6: upda te lower b ound for t omorrow wi th p_futur e_lower_bo und
  4623         UPDA TE ADRMGT. ADR_PARAME TER
  4624            S ET VALUE =  p_future_ lower_boun d, RECORD_ MODIFIED_B Y = SUBSTR  (g_job_na me, 1, 29) , RECORD_M ODIFIED_DA TE = SYSDA TE
  4625          WHE RE     APP LICATION_N AME = 'ACA _MEC'
  4626                 AND UPP ER (PARAME TER_NAME)  = g_param_ name_for_l ower_bound
  4627                 AND INA CTIVE_FLAG  = 'N'
  4628                 AND TO_ NUMBER (VA LUE) < p_f uture_lowe r_bound;
  4629  
  4630         v_re c_cnt := S QL%ROWCOUN T;
  4631  
  4632         COMM IT;
  4633  
  4634         -- L og correct ly based o n the abov e update
  4635         IF v _rec_cnt >  0
  4636         THEN
  4637            W RAPPER_JOB _PROCESS_L OG_SP ('IN FO',
  4638                                               'STEP 6a -  METADATA:  (UPDATE)  ADR_PARAME TER.VALUE  (future_lo wer_bound)  from: '
  4639                                           ||  g_current_ lower_boun d
  4640                                           ||  ' to: '
  4641                                           ||  p_future_l ower_bound
  4642                                           ||  Calc_Exec_ time (v_st art_dt));
  4643         ELSE
  4644            W RAPPER_JOB _PROCESS_L OG_SP ('IN FO',
  4645                                               'STEP 6a -  METADATA:  (NO-UPDAT E) ADR_PAR AMETER.VAL UE (future _lower_bou nd) remain s same: '
  4646                                           ||  g_current_ lower_boun d);
  4647         END  IF;
  4648      END FIN AL_LOADER_ MEC_PERIOD ;
  4649  
  4650      /****** ********** ********** ********** ********** ********** ********** *********
  4651                DESCRIPT ION
  4652                      Up date the A DR_PARAMET ER table w ith lower  bounds for  next run
  4653      ******* ********** ********** ********** ********** ********** ********** ********** */
  4654  
  4655      PROCEDU RE PREP_WO RK_MEC_PER IOD (p_upp er_bound N UMBER, p_m ulti_batch _flg BOOLE AN)
  4656      AS
  4657         v_re c_cnt               I NTEGER;
  4658         v_st art_dt              D ATE;
  4659         v_fu ture_lower _bound   I NTEGER;
  4660      BEGIN
  4661         g_jo b_name :=
  4662                g_pkg_na me
  4663            | | '.PREP_W ORK_MEC_PE RIOD';
  4664         v_st art_dt :=  SYSDATE;
  4665  
  4666         --ST EP 1: PREP -DATA FILT ERATION fo r processi ng daily i ncremental  and inita l loads.
  4667         --Bu ild person _id start  and end da tes with r anking cor rectly for  use in th e next ste ps
  4668         -- s tart and e nd dates s hall have  thier resp ective rec ords and t hey are mu tual exclu sive;
  4669         -- A  record wi th start d ates shall  not have  end date a nd vice-ve rsa.
  4670         INSE RT INTO ST G_MEC_PERI OD_ENRMNT_ DTRM_H (EN ROLLMENT_D ETERMINATI ON_H_ID,
  4671                                                       PE RSON_ID,
  4672                                                       DE RVD_MEC_ST ART_DATE,
  4673                                                       DE RVD_MEC_EN D_DATE,
  4674                                                       cu rrent_rank )
  4675            S ELECT Enro llment_det ermination _h_id,
  4676                    h.Pe rson_id,
  4677                    CASE  WHEN STD_ ENROLLMENT STATUS_ID  = 1504142  THEN NVL ( Enrollment _start_dat e, Record_ created_da te) END de rvd_MEC_ST ART_DATE,
  4678                    CASE
  4679                       W HEN STD_EN ROLLMENTST ATUS_ID IN  (1504151,  -- Reject ed
  4680                                                            1504152,  -- Reject ed
  4681                                                            1504153,  -- Reject ed
  4682                                                            1504154,  -- Reject ed
  4683                                                            1504162  -- Rejecte d
  4684                                                                   )
  4685                       T HEN
  4686                           Record_m odified_da te
  4687                       W HEN STD_EN ROLLMENTST ATUS_ID <>  1504142
  4688                       T HEN
  4689                           NVL (Enr ollment_en d_date, Re cord_modif ied_date)
  4690                    END
  4691                       d ervd_MEC_E ND_DATE,
  4692                    DENS E_RANK ()
  4693                       O VER (PARTI TION BY h. Person_id
  4694                              ORDER  BY
  4695                                 Re cord_creat ed_date,
  4696                                 DE CODE (tran saction_ty pe_code,   'I', 1,  ' U', 2,  'D ', 3,  tra nsaction_t ype_code),  -- WI 231 441 CSW
  4697                                 Re cord_modif ied_date,  -- WI 2347 31 CSW
  4698                                 En rollment_d eterminati on_h_id AS C NULLS LA ST)
  4699                       c urrent_ran k
  4700               FROM Enro llment_Det ermination _H h, STG_ MEC_PERIOD _PERSON_ID  prsn
  4701              WHERE      h.person_i d = prsn.p erson_id
  4702                    AND  Std_enroll mentstatus _id IN (15 04142, --  Verified
  4703                                                       15 04141, --  Unverified
  4704                                                       15 04144, --  Rejected
  4705                                                       15 04146, --  Deceased
  4706                                                       15 04147, --  Cancelled/ Declined
  4707                                                       15 04149, --  Pending
  4708                                                       15 04150, --  Not Eligib le
  4709                                                       15 04151, --  Rejected
  4710                                                       15 04152, --  Rejected
  4711                                                       15 04153, --  Rejected
  4712                                                       15 04154, --  Rejected
  4713                                                       15 04155, --  Pending; N o Eligibil ity Code
  4714                                                       15 04157, --  Pending; E ligibility  Status is  Unverifie d
  4715                                                       15 04158, --  Pending; O ther
  4716                                                       15 04159, --  Pending; O ther
  4717                                                       15 04160, --  Not Eligib le
  4718                                                       15 04162, --  Rejected
  4719                                                       15 04163 -- N ot Applica ble
  4720                                                               );
  4721  
  4722         v_re c_cnt := S QL%ROWCOUN T;
  4723  
  4724         WRAP PER_JOB_PR OCESS_LOG_ SP ('INFO' ,
  4725                                           'ST EP 1 - PRE P: (INSERT ) STG_MEC_ PERIOD_ENR MNT_DTRM_H   v_rec_cn t: '
  4726                                        || v_r ec_cnt
  4727                                        || Cal c_Exec_tim e (v_start _dt));
  4728  
  4729         v_st art_dt :=  SYSDATE;
  4730  
  4731         IF v _rec_cnt >  0
  4732         THEN
  4733            - -STEP 2: A pply Busin ess Logic:  by re-ali gning star t and end  dates corr ectly for  each perso n_id
  4734            I NSERT INTO  STG_MEC_P ERIOD (MEC _PERIOD_ID ,
  4735                                           PER SON_ID,
  4736                                           DER VD_MEC_STA RT_DATE,
  4737                                           DER VD_MEC_END _DATE)
  4738                SELECT f q.Enrollme nt_determi nation_h_i d MEC_PERI OD_ID,
  4739                                 -- MAX (Enrol lment_dete rmination_ h_id) MEC_ PERIOD_ID,
  4740                                 fq .person_id ,
  4741                                 fq .dervd_MEC _START_DAT E,
  4742                                 fq .dervd_MEC _END_DATE
  4743                  FROM ( SELECT CAS E
  4744                                    WHEN end_d te.Enrollm ent_determ ination_h_ id > start _dte.Enrol lment_dete rmination_ h_id
  4745                                    THEN
  4746                                       end_dte .Enrollmen t_determin ation_h_id
  4747                                    WHEN end_d te.Enrollm ent_determ ination_h_ id < start _dte.Enrol lment_dete rmination_ h_id
  4748                                    THEN
  4749                                       start_d te.Enrollm ent_determ ination_h_ id
  4750                                    WHEN end_d te.Enrollm ent_determ ination_h_ id IS NULL
  4751                                    THEN
  4752                                       start_d te.Enrollm ent_determ ination_h_ id
  4753                                END
  4754                                    Enrollment _determina tion_h_id,
  4755                                sta rt_dte.per son_id,
  4756                                sta rt_dte.der vd_MEC_STA RT_DATE,
  4757                                end _dte.dervd _MEC_END_D ATE,
  4758                                sta rt_dte.cur rent_rank  start_dte_ current_ra nk,
  4759                                end _dte.curre nt_rank en d_dte_curr ent_rank
  4760                           FROM (SE LECT Enrol lment_dete rmination_ h_id,
  4761                                         perso n_id,
  4762                                         dervd _MEC_START _DATE,
  4763                                         prev_ rank,
  4764                                         curre nt_rank,
  4765                                         NEXT_ rank
  4766                                    FROM (SELE CT Enrollm ent_determ ination_h_ id,
  4767                                                  Person_ id,
  4768                                                  dervd_M EC_START_D ATE,
  4769                                                  LAG (cu rrent_rank , 1, NULL)
  4770                                                     OVER  (PARTITIO N BY Perso n_id ORDER  BY Person _id, curre nt_rank AS C NULLS LA ST)
  4771                                                     prev _rank,
  4772                                                  current _rank,
  4773                                                  LEAD (c urrent_ran k, 1, NULL )
  4774                                                     OVER  (PARTITIO N BY Perso n_id ORDER  BY Person _id, curre nt_rank AS C NULLS LA ST)
  4775                                                     NEXT _rank
  4776                                            FR OM (SELECT  *
  4777                                                     FROM  STG_MEC_P ERIOD_ENRM NT_DTRM_H
  4778                                                    WHERE  dervd_MEC _START_DAT E IS NOT N ULL))
  4779                                  - -below whe re conditi on is remo ve consecu tive simil ar records
  4780                                  W HERE curre nt_rank <>  NVL (prev _rank, -1)  + 1) star t_dte
  4781                                LEF T OUTER JO IN
  4782                                (SE LECT Enrol lment_dete rmination_ h_id,
  4783                                         perso n_id,
  4784                                         dervd _MEC_END_D ATE,
  4785                                         prev_ rank,
  4786                                         curre nt_rank,
  4787                                         NEXT_ rank
  4788                                    FROM (SELE CT Enrollm ent_determ ination_h_ id,
  4789                                                  Person_ id,
  4790                                                  dervd_M EC_END_DAT E,
  4791                                                  LAG (cu rrent_rank , 1, NULL)
  4792                                                     OVER  (PARTITIO N BY Perso n_id ORDER  BY Person _id, curre nt_rank AS C NULLS LA ST)
  4793                                                     prev _rank,
  4794                                                  current _rank,
  4795                                                  LEAD (c urrent_ran k, 1, NULL )
  4796                                                     OVER  (PARTITIO N BY Perso n_id ORDER  BY Person _id, curre nt_rank AS C NULLS LA ST)
  4797                                                     NEXT _rank
  4798                                            FR OM (SELECT  *
  4799                                                     FROM  STG_MEC_P ERIOD_ENRM NT_DTRM_H
  4800                                                    WHERE  dervd_MEC _END_DATE  IS NOT NUL L))
  4801                                  - -below whe re conditi on is remo ve consecu tive simil ar records
  4802                                  W HERE curre nt_rank <>  NVL (prev _rank, -1)  + 1) end_ dte
  4803                                    -- The bel ow conditi on is very  critical  in alignin g the star t and end  dates corr ectly.
  4804                                    ON (    st art_dte.Pe rson_id =  end_dte.Pe rson_id
  4805                                        AND en d_dte.curr ent_rank B ETWEEN sta rt_dte.cur rent_rank  AND NVL (e nd_dte.nex t_rank, en d_dte.curr ent_rank)
  4806                                        AND NV L (end_dte .prev_rank , 1) <= st art_dte.cu rrent_rank )) fq
  4807                       - - outer jo in is to o nly consid er the new  records p lus open e nded recor ds with no  end dates
  4808                       L EFT OUTER  JOIN MEC_P ERIOD_LAST _HIST_NEW  mx ON (fq. person_id  = mx.perso n_id)
  4809                 WHERE     fq.Enrol lment_Dete rmination_ h_id >= NV L (mx.LAST _ENROLL_DE TERM_H_ID,  0)
  4810                       O R (dervd_M EC_end_DAT E IS NULL  AND fq.Enr ollment_De terminatio n_h_id <=  NVL (mx.LA ST_ENROLL_ DETERM_H_I D, 0))
  4811                       - - Added fi x WI-32115 9
  4812                       O R (    (de rvd_MEC_st art_DATE I S NOT NULL  AND dervd _MEC_end_D ATE IS NOT  NULL)
  4813                            AND fq. Enrollment _Determina tion_h_id  <= NVL (mx .LAST_ENRO LL_DETERM_ H_ID, 0));
  4814  
  4815            - - GROUP BY  person_id , dervd_ME C_START_DA TE, dervd_ MEC_END_DA TE;
  4816  
  4817            v _rec_cnt : = SQL%ROWC OUNT;
  4818  
  4819            W RAPPER_JOB _PROCESS_L OG_SP ('IN FO',
  4820                                               'STEP 2a -  PREP: (IN SERT) STG_ MEC_PERIOD  v_rec_cnt : '
  4821                                           ||  v_rec_cnt
  4822                                           ||  Calc_Exec_ time (v_st art_dt));
  4823            v _start_dt  := SYSDATE ;
  4824  
  4825            - - Below co mmit is us ed release  the tempa rory space  used by g lobal temp rary table  : STG_MEC _PERIOD_EN RMNT_DTRM_ H
  4826            - - Data in  STG_MEC_PE RIOD is pr eserved fo r use by b elow steps  3 through  6
  4827            C OMMIT;
  4828  
  4829            I F NOT p_mu lti_batch_ flg
  4830            T HEN
  4831                -- Get t he future  lower boun d for the  DELTA only .
  4832                SELECT N VL (MIN (M EC_PERIOD_ ID), 0)
  4833                  INTO v _future_lo wer_bound
  4834                  FROM S TG_MEC_PER IOD s LEFT  OUTER JOI N MEC_PERI OD_LAST_HI ST_NEW mx  ON (s.pers on_id = mx .person_id )
  4835                 WHERE s .MEC_PERIO D_ID > NVL  (mx.LAST_ ENROLL_DET ERM_H_ID,  0);
  4836  
  4837                WRAPPER_ JOB_PROCES S_LOG_SP ( 'INFO',
  4838                                                  'STEP 2 b - METADA TA: (COLLE CT) future _lower_bou nd from ST G_MEC_PERI OD '
  4839                                               || v_futur e_lower_bo und
  4840                                               || Calc_Ex ec_time (v _start_dt) );
  4841            E LSE
  4842                v_future _lower_bou nd := g_cu rrent_lowe r_bound;
  4843                WRAPPER_ JOB_PROCES S_LOG_SP ( 'INFO',
  4844                                                  'STEP 2 b - METADA TA: (INITI AL-COLLECT ) No chang e to futur e_lower_bo und ('
  4845                                               || v_futur e_lower_bo und
  4846                                               || ') sinc e it is in  INTIAL lo ading');
  4847            E ND IF;
  4848         END  IF;
  4849  
  4850         -- C all the fi nal insert er to MEC_ PERIOD, if  there is  any record  found
  4851         -- Y ou may hav e few reco rds in STG _MEC_PERIO D and if v _future_lo wer_bound= 0; this me ans there  is nothing  to insert  in the fi nal MEC_PE RIOD_NEW t able
  4852         -- s o we try a void going  to the FI NAL_LOADER _MEC_PERIO D
  4853         IF v _rec_cnt >  0 AND v_f uture_lowe r_bound >  0
  4854         THEN
  4855            F INAL_LOADE R_MEC_PERI OD (v_futu re_lower_b ound);
  4856         ELSE
  4857            W RAPPER_JOB _PROCESS_L OG_SP ('IN FO',
  4858                                               'STEP NOTH ING_TO_PRO CESS STG_M EC_PERIOD  insert cou nt: '
  4859                                           ||  v_rec_cnt
  4860                                           ||  ' and fina l insert i nto MEC_PE RIOD_NEW i s: '
  4861                                           ||  v_future_l ower_bound );
  4862         END  IF;
  4863  
  4864         IF p _multi_bat ch_flg
  4865         THEN
  4866            v _start_dt  := SYSDATE ;
  4867  
  4868            U PDATE MEC_ PERIOD_LAS T_HIST_NEW
  4869                SET STAT US = 'Y'
  4870              WHERE PERS ON_ID IN ( SELECT PER SON_ID
  4871                                      FROM STG _MEC_PERIO D_PERSON_I D);
  4872  
  4873            v _rec_cnt : = SQL%ROWC OUNT;
  4874  
  4875            C OMMIT;
  4876            W RAPPER_JOB _PROCESS_L OG_SP ('IN FO',
  4877                                               'STEP 6b -  METADATA:  (INITIAL- UPDATE) ME C_PERIOD_L AST_HIST_N EW.STATUS  = Y v_rec_ cnt: '
  4878                                           ||  v_rec_cnt
  4879                                           ||  Calc_Exec_ time (v_st art_dt));
  4880         END  IF;
  4881      EXCEPTI ON
  4882         WHEN  OTHERS
  4883         THEN
  4884            W RAPPER_JOB _PROCESS_L OG_SP ('ER ROR',
  4885                                               SQLERRM
  4886                                           ||  ' : '
  4887                                           ||  DBMS_UTILI TY.FORMAT_ ERROR_BACK TRACE);
  4888            R OLLBACK;
  4889      END PRE P_WORK_MEC _PERIOD;
  4890  
  4891      /****** ********** ********** ********** ********** ********** ********** *********
  4892          DES CRIPTION
  4893               Main proc edure that  shall be  called by  the DBMS_J OBS to pro cess MEC_P ERIOD
  4894      ******* ********** ********** ********** ********** ********** ********** ********** */
  4895      PROCEDU RE KICK_OF F_MEC_PERI OD
  4896      AS
  4897         v_mu lti_batch_ flg    BOO LEAN := FA LSE;
  4898         v_lo ading_type        VAR CHAR (60);
  4899         v_mi sc_text           VAR CHAR (300) ;
  4900         v_tr ansition_t ext    VAR CHAR (300) ;
  4901         v_to be_process _cnt   INT EGER := 0;
  4902         v_up per_bound         NUM BER;
  4903         v_st art_dt            DAT E;
  4904         v_ba tch_size          INT EGER;
  4905         v_jo b_number          NUM BER;
  4906         v_re c_cnt             INT EGER;
  4907      BEGIN
  4908         g_jo b_name :=
  4909                g_pkg_na me
  4910            | | '.KICK_O FF_MEC_PER IOD';
  4911         v_st art_dt :=  SYSDATE;
  4912  
  4913         SELE CT TO_NUMB ER (VALUE)
  4914           IN TO g_curre nt_lower_b ound
  4915           FR OM ADRMGT. ADR_PARAME TER
  4916          WHE RE APPLICA TION_NAME  = 'ACA_MEC ' AND UPPE R (PARAMET ER_NAME) =  g_param_n ame_for_lo wer_bound  AND INACTI VE_FLAG =  'N';
  4917  
  4918         SELE CT UPPER ( VALUE)
  4919           IN TO v_loadi ng_type
  4920           FR OM ADRMGT. ADR_PARAME TER
  4921          WHE RE APPLICA TION_NAME  = 'ACA_MEC ' AND UPPE R (PARAMET ER_NAME) =  'MEC_PERI OD_LOAD_TY PE' AND IN ACTIVE_FLA G = 'N';
  4922  
  4923         WRAP PER_JOB_PR OCESS_LOG_ SP ('INFO' ,
  4924                                           'ST ARTED:  cu rrent_lowe r_bound: '
  4925                                        || g_c urrent_low er_bound
  4926                                        || ' :  v_loading _type : '
  4927                                        || v_l oading_typ e);
  4928  
  4929         IF v _loading_t ype = 'INI TIAL'
  4930         THEN
  4931            S ELECT TO_N UMBER (VAL UE)
  4932               INTO v_ba tch_size
  4933               FROM ADRM GT.ADR_PAR AMETER
  4934              WHERE APPL ICATION_NA ME = 'ACA_ MEC' AND U PPER (PARA METER_NAME ) = 'MEC_P ERIOD_BATC H_SIZE' AN D INACTIVE _FLAG = 'N ';
  4935  
  4936            S ELECT COUN T (*)
  4937               INTO v_to be_process _cnt
  4938               FROM MEC_ PERIOD_LAS T_HIST_NEW
  4939              WHERE STAT US = 'N';
  4940  
  4941            I F v_tobe_p rocess_cnt  > 0
  4942            T HEN
  4943                -- Need  to catch u p with lot  of record s in more  than one b atch. This  is mainly  valid for  the initi al load
  4944                v_multi_ batch_flg  := TRUE;
  4945  
  4946                INSERT I NTO STG_ME C_PERIOD_P ERSON_ID ( PERSON_ID)
  4947                   SELEC T PERSON_I D
  4948                     FRO M MEC_PERI OD_LAST_HI ST_NEW
  4949                    WHER E STATUS =  'N' AND R OWNUM < v_ batch_size ;
  4950  
  4951                v_rec_cn t := SQL%R OWCOUNT;
  4952                v_misc_t ext :=
  4953                      '  v_batch_si ze : '
  4954                   || v_ batch_size
  4955                   || '  To Be Proc essed Pers on_ID Coun t : '
  4956                   || v_ rec_cnt;
  4957            E LSE
  4958                SELECT j ob
  4959                  INTO v _job_numbe r
  4960                  FROM S YS.DBA_JOB S J
  4961                 WHERE U PPER (J.WH AT) LIKE
  4962                              '%'
  4963                           || g_pkg _name
  4964                           || '%';
  4965  
  4966                UPDATE A DRMGT.ADR_ PARAMETER
  4967                   SET V ALUE = 'DE LTA', RECO RD_MODIFIE D_BY = SUB STR (g_job _name, 1,  29), RECOR D_MODIFIED _DATE = SY SDATE
  4968                 WHERE A PPLICATION _NAME = 'A CA_MEC' AN D UPPER (P ARAMETER_N AME) = 'ME C_PERIOD_L OAD_TYPE'  AND INACTI VE_FLAG =  'N';
  4969  
  4970                -- chang e the job  interval
  4971                DBMS_JOB .change (v _job_numbe r,
  4972                                  N ULL,
  4973                                  N ULL,
  4974                                  ' TRUNC(SYSD ATE+1)+7/2 4');
  4975  
  4976                v_transi tion_text  := ' : Aut o-Transiti oning from  INITIAL T O DELTA ';
  4977            E ND IF;
  4978         END  IF;
  4979  
  4980         IF v _loading_t ype <> 'IN ITIAL' OR  v_tobe_pro cess_cnt =  0
  4981         THEN
  4982            - - for curr ent run ;  this is fo r todays r un
  4983            S ELECT MAX  (Enrollmen t_Determin ation_h_id ) INTO v_u pper_bound  FROM Enro llment_Det ermination _H;
  4984  
  4985            I NSERT INTO  STG_MEC_P ERIOD_PERS ON_ID (PER SON_ID)
  4986                SELECT D ISTINCT s. person_id
  4987                  FROM E nrollment_ Determinat ion_H s
  4988                 WHERE E nrollment_ Determinat ion_h_id >  g_current _lower_bou nd AND Enr ollment_De terminatio n_h_id <=  v_upper_bo und;
  4989  
  4990            v _rec_cnt : = SQL%ROWC OUNT;
  4991            v _misc_text  :=
  4992                   v_tra nsition_te xt
  4993                || ' To  Be Process ed Person_ ID Count :  '
  4994                || v_rec _cnt
  4995                || ' v_u pper_bound : '
  4996                || v_upp er_bound;
  4997         END  IF;
  4998  
  4999         COMM IT;
  5000         WRAP PER_JOB_PR OCESS_LOG_ SP ('INFO' ,
  5001                                           'ST EP 0 - MET ADATA: (CO LLECT) '
  5002                                        || v_m isc_text
  5003                                        || Cal c_Exec_tim e (v_start _dt));
  5004  
  5005         PREP _WORK_MEC_ PERIOD (v_ upper_boun d, v_multi _batch_flg );
  5006  
  5007         WRAP PER_JOB_PR OCESS_LOG_ SP ('INFO' ,
  5008                                           'CO MPLETE: To tal insert ed records  : '
  5009                                        || g_f inal_rec_c nt
  5010                                        || ' T otal '
  5011                                        || Cal c_Exec_tim e (v_start _dt));
  5012      EXCEPTI ON
  5013         WHEN  OTHERS
  5014         THEN
  5015            W RAPPER_JOB _PROCESS_L OG_SP ('ER ROR',
  5016                                               SQLERRM
  5017                                           ||  ' : '
  5018                                           ||  DBMS_UTILI TY.FORMAT_ ERROR_BACK TRACE);
  5019            R OLLBACK;
  5020      END KIC K_OFF_MEC_ PERIOD;
  5021   END MEC_PE RIOD_PKG;
  5022   /
  5023  
  5024  
  5025   CREATE OR  REPLACE PU BLIC SYNON YM MEC_PER IOD_PKG FO R ADR.MEC_ PERIOD_PKG ;
  5026   DROP PACKA GE BODY AD R.SF_TIMER ;
  5027  
  5028   CREATE OR  REPLACE PA CKAGE BODY  ADR.sf_ti mer
  5029   IS
  5030  
  5031      last_ti ming     N UMBER := N ULL;
  5032      last_co ntext    V ARCHAR2 (3 2767) := N ULL;
  5033      v_facto r        N UMBER := N ULL;
  5034  
  5035      v_onoff          B OOLEAN :=  TRUE;
  5036      v_repea ts       N UMBER := 1 00;
  5037      v_base_ timing   N UMBER := N ULL;
  5038  
  5039  
  5040      PROCEDU RE set_fac tor (facto r_in IN NU MBER)
  5041      IS
  5042      BEGIN
  5043         v_fa ctor := fa ctor_in;
  5044      END set _factor;
  5045  
  5046  
  5047      FUNCTIO N factor
  5048         RETU RN NUMBER
  5049      IS
  5050         retv al   NUMBE R := v_fac tor;
  5051      BEGIN
  5052         RETU RN retval;
  5053      END fac tor;
  5054  
  5055      PROCEDU RE start_t imer (cont ext_in IN  VARCHAR2 : = NULL)
  5056      /* Save  current t ime and co ntext to p ackage var iables. */
  5057      IS
  5058      BEGIN
  5059         last _timing :=  DBMS_UTIL ITY.get_cp u_time;
  5060         last _context : = context_ in;
  5061      END;
  5062  
  5063      FUNCTIO N elapsed_ time
  5064         RETU RN NUMBER
  5065      IS
  5066         /* G rab the cu rrent time  before do ing anythi ng else. * /
  5067         /* W FS 9/4/08  - Used get _cpu_time  above and  get_time h ere */
  5068         l_en d_time   P LS_INTEGER  := DBMS_U TILITY.get _cpu_time;
  5069      BEGIN
  5070         IF v _onoff
  5071         THEN
  5072            R ETURN (MOD  (l_end_ti me - last_ timing + P OWER (2, 3 2)
  5073                         , POWER (2 , 32)
  5074                          ));
  5075         ELSE
  5076            / * 2015-05  Joao Barre to: avoid  ORA-6503 e rror! */
  5077            R ETURN NULL ;
  5078         END  IF;
  5079      END;
  5080  
  5081      FUNCTIO N elapsed_ message (p refix_in         IN V ARCHAR2:=  NULL
  5082                                , a djust_in         IN N UMBER:= 0
  5083                                , r eset_in          IN B OOLEAN:= T RUE
  5084                                , r eset_conte xt_in IN V ARCHAR2:=  NULL
  5085                                 )
  5086         RETU RN VARCHAR 2
  5087      /*
  5088        || Co nstruct me ssage for  display of  elapsed t ime. Progr ammer can
  5089      || incl ude a pref ix to the  message an d also ask  that the  last
  5090      || timi ng variabl e be reset /updated.  This saves  a separat e call
  5091      || to e lapsed.
  5092      */
  5093      IS
  5094         curr ent_timing    NUMBER;
  5095         retv al            VARCHAR 2 (32767)  := NULL;
  5096  
  5097         FUNC TION adj_t ime (time_ in      IN  BINARY_IN TEGER
  5098                            , facto r_in    IN  INTEGER
  5099                            , preci sion_in IN  INTEGER
  5100                             )
  5101            R ETURN VARC HAR2
  5102         IS
  5103         BEGI N
  5104            R ETURN (TO_ CHAR(ROUND  ( (time_i n - adjust _in) / (10 0 * factor _in)
  5105                                    , precisio n_in
  5106                                     )));
  5107         END;
  5108  
  5109         FUNC TION forma tted_time  (time_in     IN BINAR Y_INTEGER
  5110                                  ,  context_i n IN VARCH AR2:= NULL
  5111                                    )
  5112            R ETURN VARC HAR2
  5113         IS
  5114            r etval   VA RCHAR2 (32 767) := NU LL;
  5115         BEGI N
  5116            I F context_ in IS NOT  NULL
  5117            T HEN
  5118                retval : = ' since  ' || last_ context;
  5119            E ND IF;
  5120  
  5121            r etval :=
  5122                   prefi x_in
  5123                || ' - E lapsed CPU  '
  5124                || retva l
  5125                || ': '
  5126                || adj_t ime (time_ in, 1, 3)
  5127                || ' sec onds.';
  5128  
  5129            I F v_factor  IS NOT NU LL
  5130            T HEN
  5131                retval : =
  5132                      re tval
  5133                   || '  Factored:  '
  5134                   || ad j_time (ti me_in, v_f actor, 5)
  5135                   || '  seconds.';
  5136            E ND IF;
  5137  
  5138            R ETURN retv al;
  5139         END;
  5140      BEGIN
  5141         IF v _onoff
  5142         THEN
  5143            I F last_tim ing IS NUL L
  5144            T HEN
  5145                /* If th ere is no  last_timin g, cannot  show anyth ing. */
  5146                retval : = NULL;
  5147            E LSE
  5148                /* Const ruct messa ge with co ntext of l ast call t o elapsed  */
  5149                retval : = formatte d_time (el apsed_time  (), last_ context);
  5150                last_con text := NU LL;
  5151            E ND IF;
  5152  
  5153            I F reset_in
  5154            T HEN
  5155                start_ti mer (reset _context_i n);
  5156            E ND IF;
  5157         END  IF;
  5158  
  5159         RETU RN retval;
  5160      END;
  5161  
  5162      PROCEDU RE show_el apsed_time  (prefix_i n IN VARCH AR2:= NULL
  5163                                    , adjust_i n IN NUMBE R:= 0
  5164                                    , reset_in   IN BOOLE AN:= TRUE
  5165                                     )
  5166      /* Litt le more th an a call  to the ela psed_messa ge functio n! */
  5167      IS
  5168      BEGIN
  5169         IF v _onoff
  5170         THEN
  5171            D BMS_OUTPUT .put_line  (
  5172                elapsed_ message (p refix_in,  adjust_in,  reset_in)
  5173            ) ;
  5174         END  IF;
  5175      END;
  5176  
  5177   END sf_tim er;
  5178   /
  5179  
  5180  
  5181   CREATE OR  REPLACE PU BLIC SYNON YM SF_TIME R FOR ADR. SF_TIMER;
  5182   DROP PACKA GE BODY AD R.CCN_SRV_ LOAD_PKG;
  5183  
  5184   CREATE OR  REPLACE PA CKAGE BODY  ADR.CCN_S RV_LOAD_PK G
  5185   AS
  5186  
  5187     -- WI 96 6880   Ric hard Do      04/01/20 19  Added  2 new SP,  3 new colu mns and mo dified vie w
  5188     --              Ric hard Do      04/01/20 19  Added  logics to  retrieve d ata by a p artition f or perform ance
  5189     --  Temp  tables us ed
  5190     --    CC N_SERVLOG_ STG
  5191     --    VC ELIGIBILIT Y_STG
  5192     --    EN RDETERM_ST G
  5193     --    CC N_PERSON_S ELECTED_ST G
  5194     --    CC N_ADDRESS_ STG
  5195     --    CC N_ADDRESS_ H_STG
  5196     --    CC N_PREFERED _FACILITY_ H_STG
  5197     --    CC N_EMAIL_ST G
  5198     --    CC N_GEOCODE_ TRANSMIT_S TG
  5199     --    CC N_PHONE_ST G
  5200  
  5201      CC_ADDR ESSTYPE_ID _RESI CONS TANT NUMBE R :=  1807 412;
  5202      CC_ADDR ESSTYPE_ID _TEMP CONS TANT NUMBE R :=  1449 005;
  5203      CC_ADDR ESSTYPE_ID _PERM CONS TANT NUMBE R :=  1449 012;
  5204      CC_WI                    CONS TANT VARCH AR2(15):=  'CCN966880 ';  -- 1.0   under WI  591034
  5205  
  5206  
  5207       C_PERS ONSEL         CONSTAN T VARCHAR2 (80) := 'C CN_PERSON_ SELECTED_S TG';
  5208       C_CCNA DDRESS         CONSTA NT VARCHAR 2(80) := ' CCN_ADDRES S_STG';
  5209       C_CCNA DDRESSH        CONSTA NT VARCHAR 2(80) := ' CCN_ADDRES S_H_STG';
  5210       C_GEOT RANSMIT         CONST ANT VARCHA R2(80) :=  'CCN_GEOCO DE_TRANSMI T_STG';
  5211       C_PREF ERFACH         CONSTA NT VARCHAR 2(80) := ' CCN_PREFER ED_FACILIT Y_H_STG';
  5212  
  5213       TYPE V ARCHAR2_TA B_T IS TAB LE OF VARC HAR2(120)  INDEX BY B INARY_INTE GER;
  5214           PE RSONSEL_TA B       VA RCHAR2_TAB _T;
  5215           CC NADDRESS_T AB      VA RCHAR2_TAB _T;
  5216           CC NADDRESSH_ TAB     VA RCHAR2_TAB _T;
  5217           GE OTRANSMIT_ TAB     VA RCHAR2_TAB _T;
  5218           PR EFERFACH_T AB      VA RCHAR2_TAB _T;
  5219  
  5220      gc_serv ice_log_se q_id    NU MBER;
  5221      gc_cont ractor_id          NU MBER;
  5222      VC_log_ step               VA RCHAR2(500 );
  5223      gc_inte ration             NU MBER:= 0;
  5224  
  5225      VC_erro r_msg                   VARCHAR2 (5000);
  5226      VN_elap sed_time           NU MBER := 0;
  5227      VC_unit                             VARC HAR2(5);
  5228      VN_star t_time                  VARCHAR2 (60);
  5229      gc_reco rd_create_ by      VA RCHAR2(50)  := CC_WI;
  5230      VN_gran d_total_co unt     NU MBER:= 0;
  5231  
  5232      time_a      INTEGE R;
  5233      time_b      INTEGE R;
  5234  
  5235  
  5236      PROCEDU RE BULK_EX CEPTIONS ( p_row_coun t IN NUMBE R, p_log_s tep IN VAR CHAR2);
  5237  
  5238  
  5239   /********* ********** ********** ********** ********** ********** ********** ******
  5240    *
  5241    *    NAME
  5242    *      PU RGE_STG_TA BLE
  5243    *
  5244    *    DESC RIPTION
  5245    *       P URGE_STG_T ABLE is to  purage al l staging  tables pri or loading
  5246    *
  5247   ********** ********** ********** ********** ********** ********** ********** *****/
  5248   PROCEDURE  PURGE_STG_ TABLE
  5249   AS
  5250      VN_coun t_tmp          NUMBER  := 0;
  5251   BEGIN
  5252  
  5253       gc_sp_ name  := ' PURGE_STG_ TABLE';
  5254       time_a  := DBMS_U TILITY.get _time;
  5255  
  5256       adr.sf _timer.sta rt_timer;
  5257  
  5258       EXECUT E IMMEDIAT E 'TRUNCAT E TABLE CC N_SERVLOG_ STG';
  5259       EXECUT E IMMEDIAT E 'TRUNCAT E TABLE VC ELIGIBILIT Y_STG';
  5260       EXECUT E IMMEDIAT E 'TRUNCAT E TABLE EN RDETERM_ST G';
  5261       EXECUT E IMMEDIAT E 'TRUNCAT E TABLE CC N_PERSON_S ELECTED_ST G';
  5262       EXECUT E IMMEDIAT E 'TRUNCAT E TABLE CC N_ADDRESS_ STG';
  5263       EXECUT E IMMEDIAT E 'TRUNCAT E TABLE CC N_ADDRESS_ H_STG';
  5264       EXECUT E IMMEDIAT E 'TRUNCAT E TABLE CC N_PREFERED _FACILITY_ H_STG';
  5265       EXECUT E IMMEDIAT E 'TRUNCAT E TABLE CC N_EMAIL_ST G';
  5266       EXECUT E IMMEDIAT E 'TRUNCAT E TABLE CC N_GEOCODE_ TRANSMIT_S TG';
  5267       EXECUT E IMMEDIAT E 'TRUNCAT E TABLE CC N_PHONE_ST G';
  5268  
  5269       SELECT  COUNT(1)  INTO VN_co unt_tmp
  5270       FROM a ll_indexes
  5271       WHERE  index_name  = 'CCN_PE RSELSTG_PE RSONID'
  5272       AND ow ner = 'ADR ';
  5273  
  5274       IF VN_ count_tmp  > 0 THEN
  5275           EX ECUTE IMME DIATE 'DRO P INDEX CC N_PERSELST G_PERSONID ';
  5276  
  5277       END IF ;
  5278  
  5279       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => CC_MO DULE_NAME,
  5280                     PD_ job_log_da te => SYSD ATE,
  5281                     PC_ job_status  => '***** INFORMATIO N - PKG '| |CC_MODULE _NAME|| '  INITIATED. ..',
  5282                     PC_ job_log_me ssage => g c_sp_name| |' - PURGE D STAGE TA BLES',
  5283                     pc_ text1 => a dr.sf_time r.elapsed_ message (g c_sp_name) ,
  5284                     PD_ date1 => S YSDATE
  5285           );
  5286  
  5287   END PURGE_ STG_TABLE;
  5288   /********* ********** ********** ********** ********** ********** ********** ******
  5289    *
  5290    *    NAME
  5291    *      SE T_BULK_LOA D_LIMIT
  5292    *
  5293    *    DESC RIPTION
  5294    *       S et SET_BUL K_LOAD_LIM IT
  5295    *
  5296   ********** ********** ********** ********** ********** ********** ********** *****/
  5297   PROCEDURE  SET_BULK_L OAD_LIMIT  (p_bulk_lo ad_lim IN  NUMBER)
  5298   AS
  5299  
  5300   BEGIN
  5301  
  5302         gc_b ulk_limit: = p_bulk_l oad_lim;
  5303  
  5304  
  5305   END SET_BU LK_LOAD_LI MIT;
  5306  
  5307   /********* ********** ********** ********** ********** ********** ********** ******
  5308    *
  5309    *    NAME
  5310    *      FU NCTION Che ckDateForm at (p_date _str IN VA RCHAR2);
  5311    *
  5312    *    DESC RIPTION
  5313    *       F UNCTION Ch eckDateFor mat is to  check date  format
  5314    *
  5315   ********** ********** ********** ********** ********** ********** ********** *****/
  5316   FUNCTION C heckDateFo rmat (p_da te_str IN  VARCHAR2)
  5317      RETURN  NUMBER
  5318   AS
  5319      L_date_ str DATE;
  5320   BEGIN
  5321  
  5322       IF LEN GTH(p_date _str) = 8  THEN
  5323            L _date_str  := TO_DATE (p_date_st r,'YYYYMMD D');
  5324          RET URN 1;
  5325       ELSE
  5326          RET URN 0;
  5327       END IF ;
  5328  
  5329  
  5330     EXCEPTIO N
  5331        WHEN  OTHERS THE N
  5332           RE TURN 0;
  5333  
  5334   END CheckD ateFormat;
  5335  
  5336  
  5337   /********* ********** ********** ********** ********** ********** ********** ******
  5338    *
  5339    *    NAME
  5340    *      SE T_DOP
  5341    *
  5342    *    DESC RIPTION
  5343    *       S et SET_DOP  used for  parallelis m
  5344    *
  5345   ********** ********** ********** ********** ********** ********** ********** *****/
  5346   PROCEDURE  SET_DOP (p _parallel_ dop IN NUM BER)
  5347   AS
  5348  
  5349   BEGIN
  5350  
  5351         gc_p arallel_do p:= p_para llel_dop;
  5352  
  5353   END SET_DO P;
  5354  
  5355   FUNCTION e lapsed_tim e    RETUR N NUMBER
  5356      IS
  5357  
  5358         VN_e nd_time    PLS_INTEGE R := DBMS_ UTILITY.ge t_cpu_time ;
  5359   BEGIN
  5360  
  5361       RETURN  (MOD (VN_ end_time -  VN_start_ time + POW ER (2, 32)  , POWER ( 2, 32) ));
  5362   END;
  5363  
  5364  
  5365   /********* ********** ********** ********** ********** ********** ********** ******
  5366    *
  5367    *    NAME
  5368    *      AL TER_SESSIO N_SETTINGS
  5369    *
  5370    *    DESC RIPTION
  5371    *      Se t session  parallel
  5372    *
  5373    ********* ********** ********** ********** ********** ********** ********** ******/
  5374   PROCEDURE  ALTER_SESS ION_SETTIN GS (p_dop  NUMBER) IS
  5375  
  5376   BEGIN
  5377  
  5378      EXECUTE  IMMEDIATE  'ALTER SE SSION SET  ddl_lock_t imeout = 1 800';
  5379      EXECUTE  IMMEDIATE  'ALTER SE SSION FORC E PARALLEL  DDL PARAL LEL '|| p_ dop;
  5380      EXECUTE  IMMEDIATE  'ALTER SE SSION FORC E PARALLEL  DML PARAL LEL ' || p _dop;
  5381      EXECUTE  IMMEDIATE  'ALTER SE SSION FORC E PARALLEL  QUERY PAR ALLEL '||p _dop;
  5382      EXECUTE  IMMEDIATE  'ALTER SE SSION SET  DB_FILE_MU LTIBLOCK_R EAD_COUNT  = 128';
  5383      EXECUTE  IMMEDIATE  'ALTER SE SSION SET  PARALLEL_F ORCE_LOCAL =TRUE';
  5384  
  5385   END ALTER_ SESSION_SE TTINGS;
  5386  
  5387   /********* ********** ********** ********** ********** ********** ********** ******
  5388    *
  5389    *    NAME
  5390    *      IN ITIALIZE_C OLLECTION
  5391    *
  5392    *    DESC RIPTION
  5393    *      IN ITIALIZE_C OLLECTION  is to init ialize the  collectio ns
  5394    *
  5395    ********* ********** ********** ********** ********** ********** ********** ******/
  5396   PROCEDURE  INITIALIZE _COLLECTIO N AS
  5397  
  5398  
  5399   BEGIN
  5400  
  5401     ccn_stag e_rowcount _rec.rowco unt_person  := 0;
  5402     ccn_stag e_rowcount _rec.rowco unt_addr    := 0;
  5403     ccn_stag e_rowcount _rec.rowco unt_addr_h  := 0;
  5404     ccn_stag e_rowcount _rec.rowco unt_prefac  := 0;
  5405     ccn_stag e_rowcount _rec.rowco unt_email   := 0;
  5406     ccn_stag e_rowcount _rec.rowco unt_phone   := 0;
  5407     ccn_stag e_rowcount _rec.rowco unt_geotra ns:= 0;
  5408  
  5409   NULL;
  5410  
  5411   END INITIA LIZE_COLLE CTION;
  5412  
  5413   /********* ********** ********** ********** ********** ********** ********** ******
  5414    *
  5415    *    NAME
  5416    *      BU LK_EXCEPTI ONS
  5417    *
  5418    *    DESC RIPTION
  5419    *      BU LK_EXCEPTI ONS is to  display co llections  errors of  bulk excep tions
  5420    *
  5421    ********* ********** ********** ********** ********** ********** ********** ******/
  5422   PROCEDURE  BULK_EXCEP TIONS (p_r ow_count I N NUMBER,
  5423                                p_l og_step IN  VARCHAR2)  AS
  5424  
  5425      VN_EXCE PTION_CNT  NUMBER  :=  0;
  5426  
  5427   BEGIN
  5428  
  5429       VN_EXC EPTION_CNT  := SQL%BU LK_EXCEPTI ONS.COUNT;
  5430       FOR I  IN 1 .. VN _EXCEPTION _CNT LOOP
  5431  
  5432           VC _error_msg  :=
  5433               'ERROR BU LK: ' || p _log_step| |' ERROR#  '||I||' IN TERATION#  '||SQL%BUL K_EXCEPTIO NS(I).ERRO R_INDEX ||
  5434               ' ERR MSG : " ' ||   SQLERRM(-S QL%BULK_EX CEPTIONS(I ).ERROR_CO DE);
  5435  
  5436           AD RMGT.Job_P rocess_Log _Sp(PC_job _name => C C_MODULE_N AME,
  5437                   PD_jo b_log_date  => SYSDAT E,
  5438                   PC_jo b_status = > 'BULK ER ROR EXCEPT ION-TORAL  ROWS FAILE D: '||VN_E XCEPTION_C NT,
  5439                   PC_jo b_log_mess age => VC_ error_msg,
  5440                   PC_te xt1 => 'Ro ws Added:  '||p_row_c ount|| ' -  Elapse Ti me: '||adr .sf_timer. elapsed_me ssage (gc_ sp_name),
  5441                   PD_da te1 => SYS DATE
  5442                   );
  5443       END LO OP;
  5444  
  5445   NULL;
  5446  
  5447   END BULK_E XCEPTIONS;
  5448  
  5449  
  5450   /********* ********** ********** ********** ********** ********** ********** ******
  5451    *
  5452    *    NAME
  5453    *      IN ITIALIZE_T AB_PARTITI ON_ARRAY
  5454    *
  5455    *    DESC RIPTION
  5456    *      IN ITIALIZE_T AB_PARTITI ON_ARRAY i s to displ ay collect ions error s of bulk  exceptions
  5457    *
  5458    ********* ********** ********** ********** ********** ********** ********** ******/
  5459   PROCEDURE  INITIALIZE _TAB_PARTI TION_ARRAY  AS
  5460  
  5461       VC_sql _statement     VARCHA R2(800);
  5462  
  5463   BEGIN
  5464  
  5465       -- Loa d partitio n names of  CCN_PERSO N_SELECTED _STG table
  5466       VC_sql _statement  := 'SELEC T  partiti on_name '  ||CHR(10)| |--PERSONS EL_TAB
  5467           '  FROM all_t ab_partiti ons '||CHR (10)||
  5468           'W HERE table _name = :1 '||CHR(10) ||
  5469           'O RDER BY pa rtition_po sition';
  5470  
  5471       EXECUT E IMMEDIAT E VC_sql_s tatement B ULK COLLEC T INTO PER SONSEL_TAB  USING C_P ERSONSEL;
  5472  
  5473       -- Loa d partitio n names of  CCN_ADDRE SS_STG tab le
  5474       EXECUT E IMMEDIAT E VC_sql_s tatement B ULK COLLEC T INTO CCN ADDRESS_TA B USING C_ CCNADDRESS ;
  5475  
  5476       -- Loa d partitio n names of  CCN_ADDRE SS_H_STG t able
  5477       EXECUT E IMMEDIAT E VC_sql_s tatement B ULK COLLEC T INTO CCN ADDRESSH_T AB USING C _CCNADDRES SH;
  5478  
  5479  
  5480       -- Loa d partitio n names of  CCN_GEOCO DE_TRANSMI T_STG tabl e
  5481       --EXEC UTE IMMEDI ATE VC_sql _statement  BULK COLL ECT INTO G EOTRANSMIT _TAB USING  C_GEOTRAN SMIT;
  5482  
  5483  
  5484       -- Loa d partitio n names of  CCN_PREFE RED_FACILI TY_H_STG t able
  5485       --EXEC UTE IMMEDI ATE VC_sql _statement  BULK COLL ECT INTO P REFERFACH_ TAB USING  C_PREFERFA CH;
  5486  
  5487  
  5488   END INITIA LIZE_TAB_P ARTITION_A RRAY;
  5489   /********* ********** ********** ********** ********** ********** ********** ********** ********** ***
  5490    *
  5491    *    NAME
  5492    *      BU ILD_SERVIC ELOG_VW is  to load d ata into s taging tab le LOAD_CC NSERVLOG_S TG
  5493    *
  5494    *    DESC RIPTION
  5495    *      Th is temp ta lbe is lat er to chec k any chan ges for ro ws already  existed i n the ccn_ service_lo g
  5496    *      in  the ccn_s ervice_log . If yes,  then they  will be up dated
  5497    *
  5498    ********* ********** ********** ********** ********** ********** ********** ******/
  5499  
  5500   PROCEDURE  BUILD_SERV ICELOG_VW( p_part_num ber IN NUM BER)  AS
  5501  
  5502       ln_tmp                NUMBER := 0;
  5503       lv_col umns_stmnt     VARCHA R2(2000);
  5504       lv_sel ect_stmnt      VARCHA R2(2000);
  5505       lv_fro m_stmnt        VARCHA R2(2000);
  5506       lv_vw_ stmnt          VARCHA R2(7000);
  5507  
  5508   BEGIN
  5509  
  5510  
  5511       SELECT  COUNT(1)
  5512       INTO l n_tmp
  5513       FROM C CN_SERVICE _LOG
  5514       WHERE  ROWNUM <=  1;
  5515  
  5516   --dbms_out put.put_li ne('step1  '||gc_sp_n ame);
  5517  
  5518      lv_colu mns_stmnt  :=
  5519        'CREA TE OR REPL ACE VIEW A DR.CCN_SER VICE_LOG_L OAD_VW '|| CHR(10)||
  5520        '( SE RVICE_LOG_ STAT_ID, P ERSON_ID,  FIRST_NAME , LAST_NAM E, MID_NAM E,'||CHR(1 0)||
  5521        'SUFF IX,DATE_OF _BIRTH, DA TE_OF_BIRT H_TXT, DAT E_OF_DEATH , BIRTH_SE X, MAILING _ADDRESS_H _ID,'||CHR (10)||
  5522        'EMAI L, VCELIGI BILITY_H_I D, HPHONE_ NUM, CPHON E_NUM, TPH ONE_NUM, V ISN_GEO, R ESI_ADDRES S_H_ID,'|| CHR(10)||
  5523        'PREF ERRED_FACI LITY_H_ID,  GEOCODE_S TATION_H_I D, ADDR_RE CORD_MODIF IED_DATE,  VCELIGBTY_ RECORD_MOD IFIED_DATE ,'||CHR(10 )||
  5524        'SVL_ RECORD_MOD IFIED_DATE , VCE, PRI ORITY_GROU P, PRIORIT Y_GROUP_EF FECT_DATE_ TXT) AS';
  5525  
  5526   --DBMS_OUT PUT.PUT(lv _columns_s tmnt);
  5527       lv_sel ect_stmnt  :=   lv_se lect_stmnt   ||CHR(10 )||
  5528         'SEL ECT /*+ us e_hash (pe r addr prf  addrh prf ) */ ';
  5529  
  5530  
  5531       IF ln_ tmp >= 1 T HEN
  5532           lv _select_st mnt:= lv_s elect_stmn t ||CHR(10 )||
  5533                '(CASE   WHEN sl.CC N_SERVICE_ LOG_ID IS  NULL THEN  0 '||CHR(1 0)||
  5534                '  WHEN  sl.CCN_SER VICE_LOG_I D IS NOT N ULL THEN C CN_SERVICE _LOG_ID EN D)  servic e_log_stat _id ,';
  5535       ELSE
  5536              lv_select_ stmnt:= lv _select_st mnt || ' 0  service_l og_stat_id ,';
  5537       END IF ;
  5538  
  5539       lv_sel ect_stmnt  :=   lv_se lect_stmnt  ||CHR(10) ||
  5540               'per.pers on_id, per .first_nam e, per.las t_name, pe r.middle_n ame, per.s uffix,'||C HR(10)||
  5541               'per.date _of_birth,  per.date_ of_birth_t xt, per.de ath_date_t xt, per.ge nder_code,  addrh.mai ling_addre ss_h_id,'| |CHR(10)||
  5542               'em.email _address,  per.VCELIG IBILITY_H_ ID, ph.hph one_num, p h.cphone_n um, ph.tph one_num,'| |CHR(10)||
  5543               'geot.vis n_geo, add rh.resi_ad dress_h_id , prf.pref erred_faci lity_h_id,  geot.GEOC ODE_STATIO N_H_ID,'|| CHR(10)||
  5544               'addr.add r_record_m odified_da te, per.vc eligbty_re cord_modif ied_date,  sl.max_rec ord_modifi ed_date sv l_record_m odified_da te,'||CHR( 10)||
  5545               'per.VCE,  per.PRIOR ITY_GROUP,  per.PRIOR ITY_GROUP_ EFFECT_DAT E_TXT ';
  5546    --DBMS_OU TPUT.PUT(l v_select_s tmnt);
  5547       lv_fro m_stmnt:=
  5548        ' FRO M ADR.CCN_ PERSON_SEL ECTED_STG   PARTITION  ('||PERSO NSEL_TAB(p _part_numb er)||')  p er'||CHR(1 0)||
  5549              ' INNER JO IN adr.CCN _ADDRESS_S TG PARTITI ON ('||CCN ADDRESS_TA B(p_part_n umber)||')  addr'||CH R(10)||
  5550               '    ON p er.person_ id = addr. person_id  '||CHR(10) ||
  5551              -- ' LEFT  OUTER JOIN  ADR.CCN_A DDRESS_H_S TG PARTITI ON ('||CCN ADDRESSH_T AB(p_part_ number)||' )  addrh'| |CHR(10)||
  5552               ' LEFT OU TER JOIN A DR.CCN_ADD RESS_H_STG   addrh'|| CHR(10)||
  5553                  ' ON a ddrh.perso n_id = per .person_id  '||CHR(10 )||
  5554              -- ' LEFT  OUTER JOIN  ADR.CCN_P REFERED_FA CILITY_H_S TG PARTITI ON ('||PRE FERFACH_TA B(p_part_n umber)||')   prf'||CH R(10)||
  5555               ' LEFT OU TER JOIN A DR.CCN_PRE FERED_FACI LITY_H_STG  prf ON pr f.person_i d = per.pe rson_id '| |CHR(10)||
  5556               ' LEFT OU TER JOIN A DR.CCN_EMA IL_STG em  ON em.pers on_id = pe r.person_i d '||CHR(1 0)||
  5557              -- ' LEFT  OUTER JOIN  ADR.CCN_G EOCODE_TRA NSMIT_STG  PARTITION  ('||GEOTRA NSMIT_TAB( p_part_num ber)||')   geot'||CHR (10)||
  5558               ' LEFT OU TER JOIN A DR.CCN_GEO CODE_TRANS MIT_STG  g eot ON geo t.person_i d = per.pe rson_id '| |CHR(10)||
  5559               ' LEFT OU TER JOIN A DR.CCN_PHO NE_STG ph  ON ph.pers on_id = pe r.person_i d ';
  5560    --DBMS_OU TPUT.PUT(l v_from_stm nt);
  5561       IF ln_ tmp >= 1 T HEN
  5562          lv_ from_stmnt := lv_from _stmnt ||C HR(10)||
  5563                    ' LE FT OUTER J OIN ADR.CC N_SERVLOG_ STG sl '|| CHR(10)||
  5564                    ' ON      sl.pe rson_id || '''' = per .person_id  ';
  5565       END IF ;
  5566  
  5567       lv_vw_ stmnt := l v_columns_ stmnt  ||C HR(10)||
  5568                    lv_s elect_stmn t ||CHR(10 )||
  5569                    lv_f rom_stmnt;
  5570  
  5571      -- DBMS _OUTPUT.PU T(lv_vw_st mnt);
  5572      -- INSE RT INTO AD R.TEST1 (T EXT) VALUE S(lv_vw_st mnt);
  5573      -- comm it;
  5574       EXECUT E IMMEDIAT E (lv_vw_s tmnt);
  5575  
  5576   END BUILD_ SERVICELOG _VW;
  5577   /********* ********** ********** ********** ********** ********** ********** ********** ********** ***
  5578    *
  5579    *    NAME
  5580    *      LO AD_CCNSERV LOG_STG is  to load d ata into s taging tab le LOAD_CC NSERVLOG_S TG
  5581    *
  5582    *    DESC RIPTION
  5583    *      Th is temp ta lbe is lat er to chec k any chan ges for ro ws already  existed i n the ccn_ service_lo g
  5584    *      in  the ccn_s ervice_log . If yes,  then they  will be up dated
  5585    *
  5586    ********* ********** ********** ********** ********** ********** ********** ******/
  5587   PROCEDURE  LOAD_CCNSE RVLOG_STG  AS
  5588  
  5589     VN_total _count     NUMBER :=  0;
  5590     VN_count _tmp           NUMBER  := 0;
  5591      VN_EXCE PTION_CNT   NUMBER :=  0;
  5592  
  5593     CURSOR C CNServiceL og_C IS
  5594       SELECT  person_id , ccn_serv ice_log_id , record_m odified_da te max_rec ord_modifi ed_date
  5595       FROM (
  5596           SE LECT perso n_id, ccn_ service_lo g_id, reco rd_modifie d_date,
  5597                row_numb er() over  (partition  by person _id order  by record_ modified_d ate desc,c cn_service _log_id de sc) rn
  5598           FR OM CCN_SER VICE_LOG
  5599           WH ERE TRANSM ISSION_TYP E_ID = 1
  5600           AN D TRANSMIS SION_STTYP E_ID = 200 0590
  5601       )
  5602       WHERE  rn = 1;
  5603  
  5604       TYPE C CNServiceL og_TABLE I S TABLE OF  CCNServic eLog_C%ROW TYPE;
  5605        T_CCN ServiceLog _TAB    CC NServiceLo g_TABLE;
  5606  
  5607  
  5608      dml_err ors EXCEPT ION;
  5609      PRAGMA  EXCEPTION_ INIT(dml_e rrors, -24 381);
  5610  
  5611   BEGIN
  5612  
  5613       gc_sp_ name  := ' LOAD_CCNSE RVLOG_STG' ;
  5614  
  5615       VN_sta rt_time :=  TO_CHAR(S YSDATE,'MM /DD/YY HH2 4:MI:SS');
  5616       DBMS_A PPLICATION _INFO.set_ client_inf o(gc_sp_na me ||' @'| |VN_start_ time);
  5617       VC_log _step := ' BULK '||gc _sp_name|| ' BEGINS';
  5618  
  5619       adr.sf _timer.sta rt_timer;
  5620       -- === ========== ========== ========== ========== ========== ===
  5621       --
  5622       -- Beg in Bulk Co llect Fetc h
  5623       --
  5624       -- === ========== ========== ========== ========== ========== ===
  5625       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => CC_MO DULE_NAME,
  5626                                      PD_job_l og_date =>  SYSDATE,
  5627                                      PC_job_s tatus => ' INFORMATIO N - SP '|| gc_sp_name || ' Start ed.',
  5628                                      PC_job_l og_message  => 'Start ed '||VN_s tart_time,
  5629                                      pc_text1  => 'PARMS : - BULK L IMIT: '||  gc_bulk_li mit||' - D OP: '||gc_ parallel_d op,
  5630                                      PD_date1  => SYSDAT E
  5631            ) ;
  5632       VN_tot al_count : = 0;
  5633       gc_int eration  : = 0;
  5634  
  5635        DBMS_ APPLICATIO N_INFO.set _action(gc _sp_name);
  5636  
  5637       OPEN C CNServiceL og_C;
  5638       LOOP
  5639  
  5640          FET CH CCNServ iceLog_C B ULK COLLEC T INTO T_C CNServiceL og_TAB LIM IT gc_bulk _limit;
  5641          EXI T WHEN T_C CNServiceL og_TAB.COU NT = 0;
  5642          gc_ interation  := gc_int eration +  1;
  5643  
  5644          VC_ log_step : = 'ITER# ' ||gc_inter ation;
  5645  
  5646          DBM S_APPLICAT ION_INFO.s et_action( gc_sp_name ||' - It#:  '||gc_int eration);
  5647  
  5648          FOR ALL indx I N T_CCNSer viceLog_TA B.FIRST..  T_CCNServi ceLog_TAB. LAST SAVE  EXCEPTIONS
  5649            I NSERT  /*+  APPEND */  INTO ADR. CCN_SERVLO G_STG
  5650                    (per son_id, cc n_service_ log_id, ma x_record_m odified_da te)
  5651            V ALUES (T_C CNServiceL og_TAB(ind x).person_ id,
  5652                    T_CC NServiceLo g_TAB(indx ).ccn_serv ice_log_id ,
  5653                    T_CC NServiceLo g_TAB(indx ).max_reco rd_modifie d_date);
  5654  
  5655           VN _total_cou nt := VN_t otal_count  + SQL%ROW COUNT;
  5656  
  5657           CO MMIT;
  5658  
  5659        END L OOP;
  5660  
  5661        CLOSE  CCNServic eLog_C;
  5662  
  5663        ADRMG T.Job_Proc ess_Log_Sp (PC_job_na me => CC_M ODULE_NAME ,
  5664                     PD_ job_log_da te => SYSD ATE,
  5665                     PC_ job_status  => 'INFOR MATION - S P '||gc_sp _name|| '  Completed. ',
  5666                     PC_ job_log_me ssage => ' Rows Added : '||VN_to tal_count| |adr.sf_ti mer.elapse d_message  ('-'),
  5667                     pc_ text1 => a dr.sf_time r.elapsed_ message (g c_sp_name) ,
  5668                     PD_ date1 => S YSDATE
  5669           );
  5670  
  5671  
  5672      EXCEPTI ON
  5673  
  5674           WH EN dml_err ors THEN
  5675  
  5676            V N_EXCEPTIO N_CNT := S QL%BULK_EX CEPTIONS.C OUNT;
  5677  
  5678           FO R I IN 1 . . VN_EXCEP TION_CNT L OOP
  5679              VC_error_m sg :=
  5680                  'ERROR  BULK: ' | | VC_log_s tep||' ERR OR# '||I|| ' INTER# ' ||SQL%BULK _EXCEPTION S(I).ERROR _INDEX ||
  5681                  ' PERS ON ID: ' | | T_CCNSer viceLog_TA B(I).perso n_id ||
  5682                  ' Erro r Msg: ' | | SQLERRM( -SQL%BULK_ EXCEPTIONS (i).ERROR_ CODE);
  5683  
  5684                  ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => CC_MO DULE_NAME,
  5685                                                PD_job_lo g_date =>  SYSDATE,
  5686                                                PC_job_st atus => 'E RROR EXCEP TION - ROW S FAILED:  '||VN_EXCE PTION_CNT,
  5687                                                PC_job_lo g_message  => VC_erro r_msg,
  5688                                                PC_text1  => 'Rows A dded: '||V N_total_co unt|| ' -  Elapse Tim e: '||adr. sf_timer.e lapsed_mes sage (gc_s p_name),
  5689                                                PD_date1  => SYSDATE
  5690                                 );
  5691  
  5692              END LOOP;
  5693  
  5694         WHEN  OTHERS TH EN
  5695           AD RMGT.Job_P rocess_Log _Sp(PC_job _name => C C_MODULE_N AME,
  5696                   PD_jo b_log_date  => SYSDAT E,
  5697                   PC_jo b_status = > 'ERROR E XEPTION',
  5698                   PC_jo b_log_mess age =>VC_l og_step||' -'|| SUBST R('ERROR -  ' || SQLC ODE||': '| |SQLERRM,1 ,254),
  5699                   PC_te xt1 => 'Ad ded: '||VN _total_cou nt|| 'Elap se Time: ' ||adr.sf_t imer.elaps ed_message  (gc_sp_na me),
  5700                   PD_da te1 => SYS DATE
  5701                  );
  5702  
  5703    END LOAD_ CCNSERVLOG _STG;
  5704  
  5705   /********* ********** ********** ********** ********** ********** ********** ******
  5706    *
  5707    *    NAME
  5708    *      LO AD_VCELIGI BILITY_STG  is to loa d data int o staging  table VCEL IGIBILITY_ STG
  5709    *
  5710    *    DESC RIPTION
  5711    *      Se t session  parallel
  5712    *
  5713    ********* ********** ********** ********** ********** ********** ********** ******/
  5714   PROCEDURE  LOAD_VCELI GIBILITY_S TG AS
  5715  
  5716     VN_total _count     NUMBER :=  0;
  5717     VN_count _tmp           NUMBER  := 0;
  5718      VN_EXCE PTION_CNT   NUMBER :=  0;
  5719  
  5720     CURSOR V CEligibili ty_C IS
  5721       SELECT  t1.person _id
  5722                    ,t1. VCESTATUST YPE_ID
  5723                    ,t1. VCELIGIBIL ITY_ID
  5724                    ,lis tagg(t2.CO DE||'|'||t o_char(rec ord_modifi ed_date, ' YYYYMMDD') , ',')
  5725                                       within  group (ord er by t1.p erson_id)  vce
  5726       FROM   vceligibil ity t1,
  5727                              vcest atustype t 2
  5728       WHERE   t1.VCESTA TUSTYPE_ID  = t2.VCES TATUSTYPE_ ID
  5729       AND  t 2.VCESTATU STYPE_ID ! = 2000579
  5730       GROUP  BY t1.pers on_id ,t1. VCESTATUST YPE_ID, t1 .VCELIGIBI LITY_ID;
  5731  
  5732       TYPE t _VCEligibi lity_table  IS TABLE  OF VCEligi bility_C%R OWTYPE;
  5733        t_VCE ligibility _tab    t_ VCEligibil ity_table;
  5734  
  5735  
  5736      dml_err ors EXCEPT ION;
  5737      PRAGMA  EXCEPTION_ INIT(dml_e rrors, -24 381);
  5738  
  5739   BEGIN
  5740  
  5741       gc_sp_ name  := ' LOAD_VCELI GIBILITY_S TG';
  5742  
  5743       VN_sta rt_time :=  TO_CHAR(S YSDATE,'MM /DD/YY HH2 4:MI:SS');
  5744       DBMS_A PPLICATION _INFO.set_ client_inf o(gc_sp_na me ||' @'| |VN_start_ time);
  5745       VC_log _step := ' BULK '||gc _sp_name|| ' BEGINS';
  5746  
  5747       adr.sf _timer.sta rt_timer;
  5748       -- === ========== ========== ========== ========== ========== ===
  5749       --
  5750       -- Beg in Bulk Co llect Fetc h
  5751       --
  5752       -- === ========== ========== ========== ========== ========== ===
  5753       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => CC_MO DULE_NAME,
  5754                                      PD_job_l og_date =>  SYSDATE,
  5755                                      PC_job_s tatus => ' INFORMATIO N - SP '|| gc_sp_name || ' Start ed.',
  5756                                      PC_job_l og_message  => 'Start ed '||VN_s tart_time,
  5757                                      pc_text1  => 'PARMS : - BULK L IMIT: '||  gc_bulk_li mit||' - D OP: '||gc_ parallel_d op,
  5758                                      PD_date1  => SYSDAT E
  5759            ) ;
  5760       VN_tot al_count : = 0;
  5761       gc_int eration  : = 0;
  5762  
  5763        DBMS_ APPLICATIO N_INFO.set _action(gc _sp_name);
  5764  
  5765       OPEN V CEligibili ty_C;
  5766       LOOP
  5767  
  5768          FET CH VCEligi bility_C B ULK COLLEC T INTO t_V CEligibili ty_tab LIM IT gc_bulk _limit;
  5769          EXI T WHEN t_V CEligibili ty_tab.COU NT = 0;
  5770          gc_ interation  := gc_int eration +  1;
  5771  
  5772          VC_ log_step : = 'Iter# ' ||gc_inter ation;
  5773  
  5774          DBM S_APPLICAT ION_INFO.s et_action( gc_sp_name ||' - It#:  '||gc_int eration);
  5775  
  5776          FOR ALL indx I N t_VCElig ibility_ta b.FIRST..  t_VCEligib ility_tab. LAST SAVE  EXCEPTIONS
  5777            I NSERT  /*+  APPEND */  INTO ADR. VCELIGIBIL ITY_STG
  5778                    (per son_id,
  5779                     VCE STATUSTYPE _ID,
  5780                     VCE LIGIBILITY _ID,
  5781                     VCE )
  5782            V ALUES (t_V CEligibili ty_tab(ind x).person_ id,
  5783                    t_VC Eligibilit y_tab(indx ).VCESTATU STYPE_ID,
  5784                    t_VC Eligibilit y_tab(indx ).VCELIGIB ILITY_ID,
  5785                    t_VC Eligibilit y_tab(indx ).VCE);
  5786  
  5787           VN _total_cou nt := VN_t otal_count  + SQL%ROW COUNT;
  5788  
  5789           CO MMIT;
  5790  
  5791        END L OOP;
  5792  
  5793        CLOSE  VCEligibi lity_C;
  5794  
  5795        ADRMG T.Job_Proc ess_Log_Sp (PC_job_na me => CC_M ODULE_NAME ,
  5796                     PD_ job_log_da te => SYSD ATE,
  5797                     PC_ job_status  => 'INFOR MATION - S P '||gc_sp _name|| '  Completed. ',
  5798                     PC_ job_log_me ssage => ' Rows Added : '||VN_to tal_count| |adr.sf_ti mer.elapse d_message  ('-'),
  5799                     pc_ text1 => a dr.sf_time r.elapsed_ message (g c_sp_name) ,
  5800                     PD_ date1 => S YSDATE
  5801           );
  5802  
  5803  
  5804      EXCEPTI ON
  5805  
  5806           WH EN dml_err ors THEN
  5807  
  5808            V N_EXCEPTIO N_CNT := S QL%BULK_EX CEPTIONS.C OUNT;
  5809  
  5810           FO R I IN 1 . . VN_EXCEP TION_CNT L OOP
  5811              VC_error_m sg :=
  5812                  'ERROR  BULK: ' | | VC_log_s tep||' ERR OR# '||I|| ' INTER# ' ||SQL%BULK _EXCEPTION S(I).ERROR _INDEX ||
  5813                  ' PERS ON ID: ' | | t_VCElig ibility_ta b(I).perso n_id ||':' ||t_VCElig ibility_ta b(I).VCELI GIBILITY_I D||
  5814                  ' Erro r Msg: ' | | SQLERRM( -SQL%BULK_ EXCEPTIONS (i).ERROR_ CODE);
  5815  
  5816                  ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => CC_MO DULE_NAME,
  5817                                                PD_job_lo g_date =>  SYSDATE,
  5818                                                PC_job_st atus => 'E RROR EXCEP TION - ROW S FAILED:  '||VN_EXCE PTION_CNT,
  5819                                                PC_job_lo g_message  => VC_erro r_msg,
  5820                                                PC_text1  => 'Rows A dded: '||V N_total_co unt|| ' -  Elapse Tim e: '||adr. sf_timer.e lapsed_mes sage (gc_s p_name),
  5821                                                PD_date1  => SYSDATE
  5822                                 );
  5823  
  5824              END LOOP;
  5825  
  5826         WHEN  OTHERS TH EN
  5827           AD RMGT.Job_P rocess_Log _Sp(PC_job _name => C C_MODULE_N AME,
  5828                   PD_jo b_log_date  => SYSDAT E,
  5829                   PC_jo b_status = > 'ERROR E XEPTION',
  5830                   PC_jo b_log_mess age =>VC_l og_step||' -'|| SUBST R('ERROR -  ' || SQLC ODE||': '| |SQLERRM,1 ,254),
  5831                   PC_te xt1 => 'Ad ded: '||VN _total_cou nt|| 'Elap se Time: ' ||adr.sf_t imer.elaps ed_message  (gc_sp_na me),
  5832                   PD_da te1 => SYS DATE
  5833                  );
  5834  
  5835    END LOAD_ VCELIGIBIL ITY_STG;
  5836  
  5837  
  5838   /********* ********** ********** ********** ********** ********** ********** ******
  5839    *
  5840    *    NAME
  5841    *      LO AD_ENROLLM ENTDTERM_S TG is to l oad data i nto stagin g table EN RDETERM_ST G
  5842    *
  5843    *    DESC RIPTION
  5844    *      Se t session  parallel
  5845    *
  5846    ********* ********** ********** ********** ********** ********** ********** ******/
  5847   PROCEDURE  LOAD_ENROL LMENTDTERM _STG IS
  5848  
  5849     VN_total _count      NUMBER :=  0;
  5850     VN_count _tmp           NUMBER  := 0;
  5851      VN_EXCE PTION_CNT   NUMBER :=  0;
  5852  
  5853     CURSOR E nrollmentD eterm_C IS
  5854      SELECT   en.PERSON _ID,
  5855                x2.code  VCESTATUST YPE_ID,
  5856                TO_CHAR( NVL(en.cha nge_effect ive_date,  en.record_ modified_d ate), 'YYY YMMDD') pr iority_gro up_effect_ date_txt
  5857           FR OM enrollm ent_determ ination en ,
  5858                       e ligibility _determina tion el,
  5859                       e eusr.prior ity_group_ type x2
  5860           WH ERE el.enr ollment_de terminatio n_id = en. enrollment _determina tion_id
  5861           AN D el.prima ry_seconda ry_or_othe r = 'P'
  5862           AN D en.PRIOR ITY_GROUP_ TYPE_ID =  x2.id (+);
  5863  
  5864       TYPE t _Enrollmen tDeterm_ta ble IS TAB LE OF Enro llmentDete rm_C%ROWTY PE;
  5865        t_Enr ollmentDet erm_tab     t_Enrollm entDeterm_ table;
  5866  
  5867  
  5868      dml_err ors EXCEPT ION;
  5869      PRAGMA  EXCEPTION_ INIT(dml_e rrors, -24 381);
  5870  
  5871   BEGIN
  5872  
  5873       gc_sp_ name  := ' LOAD_ENROL LMENTDTERM _STG';
  5874  
  5875       VN_sta rt_time :=  TO_CHAR(S YSDATE,'MM /DD/YY HH2 4:MI:SS');
  5876       DBMS_A PPLICATION _INFO.set_ client_inf o(gc_sp_na me ||' @'| |VN_start_ time);
  5877       VC_log _step := ' BULK '||gc _sp_name|| ' BEGINS';
  5878  
  5879       adr.sf _timer.sta rt_timer;
  5880       -- === ========== ========== ========== ========== ========== ===
  5881       --
  5882       -- Beg in Bulk Co llect Fetc h
  5883       --
  5884       -- === ========== ========== ========== ========== ========== ===
  5885       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => CC_MO DULE_NAME,
  5886                                      PD_job_l og_date =>  SYSDATE,
  5887                                      PC_job_s tatus => ' INFORMATIO N - SP '|| gc_sp_name || ' Start ed.',
  5888                                      PC_job_l og_message  => 'Start ed '||VN_s tart_time,
  5889                                      pc_text1  => 'PARMS : - BULK L IMIT: '||  gc_bulk_li mit||' - D OP: '||gc_ parallel_d op,
  5890                                      PD_date1  => SYSDAT E
  5891            ) ;
  5892       VN_tot al_count : = 0;
  5893       gc_int eration  : = 0;
  5894  
  5895        DBMS_ APPLICATIO N_INFO.set _action(gc _sp_name);
  5896  
  5897       OPEN E nrollmentD eterm_C;
  5898       LOOP
  5899  
  5900          FET CH Enrollm entDeterm_ C BULK COL LECT INTO  t_Enrollme ntDeterm_t ab LIMIT g c_bulk_lim it;
  5901          EXI T WHEN t_E nrollmentD eterm_tab. COUNT = 0;
  5902          gc_ interation  := gc_int eration +  1;
  5903  
  5904          VC_ log_step : = 'Iter# ' ||gc_inter ation;
  5905  
  5906          DBM S_APPLICAT ION_INFO.s et_action( gc_sp_name ||' - It#:  '||gc_int eration);
  5907  
  5908          FOR ALL indx I N t_Enroll mentDeterm _tab.FIRST .. t_Enrol lmentDeter m_tab.LAST  SAVE EXCE PTIONS
  5909           IN SERT  /*+  APPEND */  INTO ADR.E NRDETERM_S TG
  5910                    (per son_id,
  5911                     PRI ORITY_GROU P,
  5912                     pri ority_grou p_effect_d ate_txt)
  5913            V ALUES (t_E nrollmentD eterm_tab( indx).pers on_id,
  5914                    t_En rollmentDe term_tab(i ndx).VCEST ATUSTYPE_I D,
  5915                    t_En rollmentDe term_tab(i ndx).prior ity_group_ effect_dat e_txt);
  5916  
  5917           VN _total_cou nt := VN_t otal_count  + SQL%ROW COUNT;
  5918  
  5919           CO MMIT;
  5920  
  5921        END L OOP;
  5922  
  5923        CLOSE  Enrollmen tDeterm_C;
  5924  
  5925        ADRMG T.Job_Proc ess_Log_Sp (PC_job_na me => CC_M ODULE_NAME ,
  5926                     PD_ job_log_da te => SYSD ATE,
  5927                     PC_ job_status  => 'INFOR MATION - S P '||gc_sp _name|| '  Completed. ',
  5928                     PC_ job_log_me ssage => ' Rows Added : '||VN_to tal_count| |adr.sf_ti mer.elapse d_message  ('-'),
  5929                     pc_ text1 => a dr.sf_time r.elapsed_ message (g c_sp_name) ,
  5930                     PD_ date1 => S YSDATE
  5931           );
  5932  
  5933  
  5934      EXCEPTI ON
  5935  
  5936          WHE N dml_erro rs THEN
  5937  
  5938            V N_EXCEPTIO N_CNT := S QL%BULK_EX CEPTIONS.C OUNT;
  5939  
  5940           FO R I IN 1 . . VN_EXCEP TION_CNT L OOP
  5941              VC_error_m sg :=
  5942                  'ERROR  BULK: ' | | VC_log_s tep||' ERR OR# '||I|| ' INTER# ' ||SQL%BULK _EXCEPTION S(I).ERROR _INDEX ||
  5943                  ' PERS ON ID: ' | | t_Enroll mentDeterm _tab(I).pe rson_id || ':'||t_Enr ollmentDet erm_tab(I) .VCESTATUS TYPE_ID||
  5944                  ' Erro r Msg: ' | | SQLERRM( -SQL%BULK_ EXCEPTIONS (i).ERROR_ CODE);
  5945  
  5946                  ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => CC_MO DULE_NAME,
  5947                                                PD_job_lo g_date =>  SYSDATE,
  5948                                                PC_job_st atus => 'E RROR EXCEP TION - ROW S FAILED:  '||VN_EXCE PTION_CNT,
  5949                                                PC_job_lo g_message  => VC_erro r_msg,
  5950                                                PC_text1  => 'Rows A dded: '||V N_total_co unt|| ' -  Elapse Tim e: '||adr. sf_timer.e lapsed_mes sage (gc_s p_name),
  5951                                                PD_date1  => SYSDATE
  5952                                 );
  5953  
  5954              END LOOP;
  5955  
  5956         WHEN  OTHERS TH EN
  5957           AD RMGT.Job_P rocess_Log _Sp(PC_job _name => C C_MODULE_N AME,
  5958                   PD_jo b_log_date  => SYSDAT E,
  5959                   PC_jo b_status = > 'ERROR E XEPTION',
  5960                   PC_jo b_log_mess age =>VC_l og_step||' -'|| SUBST R('ERROR -  ' || SQLC ODE||': '| |SQLERRM,1 ,254),
  5961                   PC_te xt1 => 'Ad ded: '||VN _total_cou nt|| 'Elap se Time: ' ||adr.sf_t imer.elaps ed_message  (gc_sp_na me),
  5962                   PD_da te1 => SYS DATE
  5963                  );
  5964  
  5965    END LOAD_ ENROLLMENT DTERM_STG;
  5966  
  5967   /********* ********** ********** ********** ********** ********** ********** ******
  5968    *
  5969    *    NAME
  5970    *      PR ECHECK_PRO C
  5971    *
  5972    *    DESC RIPTION
  5973    *      PR ECHECK_pro cedure is  to determi ne wether  or not the  job shoul d be run
  5974    *
  5975    ********* ********** ********** ********** ********** ********** ********** ******/
  5976   PROCEDURE  PRECHECK_P ROC(p_read y_run_stat us OUT BOO LEAN) IS
  5977  
  5978     l_run_st atus VARCH AR2(20) :=  'ABORT';
  5979  
  5980   BEGIN
  5981      gc_sp_n ame := 'PR ECHECK_PRO C';
  5982  
  5983       SELECT
  5984        CASE
  5985            W HEN contra ctor_id_pr ocessed <  contractor _id_not_pr ocessed TH EN 'READY'
  5986            W HEN contra ctor_id_pr ocessed >=  contracto r_id_not_p rocessed T HEN
  5987            C ASE status
  5988                   WHEN  'STARTED'  THEN 'READ Y'
  5989                   WHEN  'COMPLETED ' THEN 'AB ORT'
  5990                   END
  5991            E ND AS proc ess_status , contract or_id_not_ processed
  5992          INT O l_run_st atus, gc_c ontractor_ id
  5993          FRO M
  5994              (SELECT ma x_contract or_id cont ractor_id_ processed,  status
  5995               FROM ADR. CCN_DATALO AD_LOG_STG  s2
  5996               WHERE  s2 .CCN_DATAL OAD_LOG_ST G_ID = (
  5997                   SELEC T  MAX(CCN _DATALOAD_ LOG_STG_ID )
  5998                   FROM  ADR.CCN_DA TALOAD_LOG _STG)) s,
  5999           (S ELECT MAX( ccn_contra ctor_id) c ontractor_ id_not_pro cessed FRO M ccn_cont ractor);
  6000  
  6001  
  6002       IF l_r un_status  = 'READY'  THEN
  6003          p_r eady_run_s tatus := T RUE;
  6004          gc_ service_lo g_seq_id : = ADR.CCN_ DATALOAD_L OG_STG_S.N EXTVAL;
  6005  
  6006          INS ERT INTO A DR.CCN_DAT ALOAD_LOG_ STG
  6007                (CCN_DAT ALOAD_LOG_ STG_ID, MA X_CONTRACT OR_ID, REC ORD_CREATE D_DATE, ST ATUS)
  6008          VAL UES (gc_se rvice_log_ seq_id, gc _contracto r_id, SYSD ATE, 'STAR TED');
  6009  
  6010          COM MIT;
  6011  
  6012          INI TIALIZE_CO LLECTION;
  6013       ELSE
  6014          p_r eady_run_s tatus := F ALSE;
  6015       END IF ;
  6016  
  6017   EXCEPTION
  6018      WHEN OT HERS THEN
  6019         p_re ady_run_st atus := FA LSE;
  6020         RAIS E_APPLICAT ION_ERROR  (-20148, ' FAILED - '  ||gc_sp_n ame||': '| | SUBSTR(S QLCODE,1,6 0)||' - '  ||SUBSTR(S QLERRM,1,2 54));
  6021  
  6022   END PRECHE CK_PROC;
  6023  
  6024  
  6025   /********* ********** ********** ********** ********** ********** ********** ******
  6026    *
  6027    *    NAME
  6028    *      PO STCHECK_PR OC
  6029    *
  6030    *    DESC RIPTION
  6031    *      PO STCHECK_PR OC is to l og statist ics
  6032    *
  6033    ********* ********** ********** ********** ********** ********** ********** ******/
  6034   PROCEDURE  POSTCHECK_ PROC IS
  6035  
  6036   BEGIN
  6037  
  6038      UPDATE  ADR.CCN_DA TALOAD_LOG _STG s
  6039         SET  status = ' COMPLETED' ,
  6040            r owcount_pe rson = ccn _stage_row count_rec. rowcount_p erson,
  6041            r owcount_ad dr   = ccn _stage_row count_rec. rowcount_a ddr,
  6042            r owcount_ad dr_h = ccn _stage_row count_rec. rowcount_a ddr_h,
  6043            r owcount_pr efac = ccn _stage_row count_rec. rowcount_p refac ,
  6044            r owcount_em ail  = ccn _stage_row count_rec. rowcount_e mail,
  6045            r owcount_ph one  = ccn _stage_row count_rec. rowcount_p hone ,
  6046            r owcount_ge otrans = c cn_stage_r owcount_re c.rowcount _geotrans,
  6047            E LAPSE_TIME  = VN_elap sed_time
  6048      WHERE C CN_DATALOA D_LOG_STG_ ID= gc_ser vice_log_s eq_id;
  6049  
  6050      COMMIT;
  6051  
  6052   EXCEPTION
  6053      WHEN OT HERS THEN
  6054  
  6055         RAIS E_APPLICAT ION_ERROR  (-20139, ' POSTCHECK_ PROC: FAIL ED - '|| S UBSTR(SQLC ODE,1,60)| |' - ' ||S UBSTR(SQLE RRM,1,254) );
  6056  
  6057   END POSTCH ECK_PROC;
  6058  
  6059  
  6060   /********* ********** ********** ********** ********** ********** ********** ******
  6061    *
  6062    *    NAME
  6063    *      LO AD_SELECTE D_PERSON_S TG
  6064    *
  6065    *    DESC RIPTION
  6066    *      Se t session  parallel
  6067    *
  6068    ********* ********** ********** ********** ********** ********** ********** ******/
  6069   PROCEDURE  LOAD_SELEC TED_PERSON _STG IS
  6070  
  6071     VN_total _count     NUMBER :=  0;
  6072     VN_count _tmp           NUMBER  := 0;
  6073     VN_EXCEP TION_CNT N UMBER := 0 ;
  6074  
  6075     CURSOR S electedPer son_C IS
  6076      WITH
  6077       VCELIG BTY
  6078       AS
  6079           (S ELECT PERS ON_ID,
  6080                    VCE,
  6081                    VCEL IGIBILITY_ H_ID,
  6082                    VCES TATUSTYPE_ ID,
  6083                    RECO RD_MODIFIE D_DATE
  6084               FROM (SEL ECT /*+ le ading(vc v ch) use_ha sh (vc) */
  6085                             vc.PER SON_ID,
  6086                             vc.VCE ,
  6087                             vch.VC ELIGIBILIT Y_H_ID,
  6088                             vch.VC ESTATUSTYP E_ID,
  6089                             vch.RE CORD_MODIF IED_DATE,
  6090                             MAX (v ch.VCELIGI BILITY_H_I D)
  6091                                 OV ER (PARTIT ION BY vch .PERSON_ID )
  6092                                 MA X_VCELIGIB ILITY_H_ID
  6093                       F ROM ADR.VC ELIGIBILIT Y_STG  vc
  6094                             INNER  JOIN VCELI GIBILITY_H  vch
  6095                                 ON      vch.V CELIGIBILI TY_ID = VC .VCELIGIBI LITY_ID
  6096                                     AND VC.VC ESTATUSTYP E_ID = vch .VCESTATUS TYPE_ID
  6097                                     AND VC.VC ESTATUSTYP E_ID != 20 00579)
  6098              WHERE VCEL IGIBILITY_ H_ID = MAX _VCELIGIBI LITY_H_ID) ,
  6099       PRIORI TY_INFO
  6100       AS
  6101           (S ELECT PERS ON_ID, PRI ORITY_GROU P, PRIORIT Y_GROUP_EF FECT_DATE_ TXT
  6102               FROM ADR. ENRDETERM_ STG)
  6103   SELECT /*+
  6104           le ading(pif  per) use_h ash (pif p er vc t)
  6105           sw ap_join_in puts(vch)
  6106           pq _distribut e(vc broad cast none)
  6107           */
  6108          per .PERSON_ID ,
  6109          CAS E WHEN NVL (LENGTH(T. DATE_OF_BI RTH),1) =  8
  6110              THEN TO_DA TE(T.DATE_ OF_BIRTH,' YYYYMMDD')
  6111              ELSE NULL
  6112              END DATE_O F_BIRTH,
  6113          T.D ATE_OF_BIR TH  DATE_O F_BIRTH_TX T,
  6114          per .DEATH_DAT E_TXT,
  6115          T.F IRST_NAME,
  6116          T.M IDDLE_NAME ,
  6117          T.L AST_NAME,
  6118          T.S UFFIX,
  6119          T.G ENDER_CODE ,
  6120          VC. VCELIGIBIL ITY_H_ID,
  6121          VC. RECORD_MOD IFIED_DATE      VCELI GBTY_RECOR D_MODIFIED _DATE,
  6122          VC. VCE,
  6123          pif .PRIORITY_ GROUP,
  6124          pif .PRIORITY_ GROUP_EFFE CT_DATE_TX T
  6125     FROM PER SON  per
  6126          INN ER JOIN AD R.PERSON_T RAITS T ON  T.VPID_VA LUE = per. VPID_VALUE
  6127          INN ER JOIN VC ELIGBTY VC  ON PER.PE RSON_ID =  VC.PERSON_ ID
  6128          INN ER JOIN PR IORITY_INF O pif ON V C.PERSON_I D = pif.PE RSON_ID;
  6129  
  6130      TYPE t_ SelectedPe rson_table  IS TABLE  OF Selecte dPerson_C% ROWTYPE;
  6131        t_Sel ectedPerso n_tab    t _SelectedP erson_tabl e;
  6132  
  6133      dml_err ors EXCEPT ION;
  6134      PRAGMA  EXCEPTION_ INIT(dml_e rrors, -24 381);
  6135  
  6136   BEGIN
  6137  
  6138       LOAD_V CELIGIBILI TY_STG;
  6139       LOAD_E NROLLMENTD TERM_STG;
  6140  
  6141       gc_sp_ name  := ' LOAD_SELEC TED_PERSON _STG';
  6142  
  6143       VN_sta rt_time :=  TO_CHAR(S YSDATE,'MM /DD/YY HH2 4:MI:SS');
  6144       DBMS_A PPLICATION _INFO.set_ client_inf o(gc_sp_na me ||' @'| |VN_start_ time);
  6145       VC_log _step := ' BULK '||gc _sp_name|| ' BEGINS';
  6146  
  6147       adr.sf _timer.sta rt_timer;
  6148       -- === ========== ========== ========== ========== ========== ===
  6149       --
  6150       -- Beg in Bulk Co llect Fetc h
  6151       --
  6152       -- === ========== ========== ========== ========== ========== ===
  6153       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => CC_MO DULE_NAME,
  6154                                      PD_job_l og_date =>  SYSDATE,
  6155                                      PC_job_s tatus => ' INFORMATIO N - SP '|| gc_sp_name || ' Start ed.',
  6156                                      PC_job_l og_message  => 'Start ed '||VN_s tart_time,
  6157                                      pc_text1  => 'PARMS : - BULK L IMIT: '||  gc_bulk_li mit||' - D OP: '||gc_ parallel_d op,
  6158                                      PD_date1  => SYSDAT E
  6159            ) ;
  6160       VN_tot al_count : = 0;
  6161       gc_int eration  : = 0;
  6162  
  6163        DBMS_ APPLICATIO N_INFO.set _action('L OAD_SELECT ED_PERSON' );
  6164  
  6165       OPEN S electedPer son_C;
  6166       LOOP
  6167  
  6168          FET CH Selecte dPerson_C  BULK COLLE CT INTO t_ SelectedPe rson_tab L IMIT gc_bu lk_limit;
  6169          EXI T WHEN t_S electedPer son_tab.CO UNT = 0;
  6170          gc_ interation  := gc_int eration +  1;
  6171  
  6172          VC_ log_step : = 'Iter# ' ||gc_inter ation;
  6173  
  6174          DBM S_APPLICAT ION_INFO.s et_action( 'LOAD_SELE CTED_PERSO N: It#: '| |gc_intera tion);
  6175  
  6176          FOR ALL indx I N t_Select edPerson_t ab.FIRST..  t_Selecte dPerson_ta b.LAST SAV E EXCEPTIO NS
  6177            I NSERT  /*+  APPEND */  INTO ADR. CCN_PERSON _SELECTED_ STG
  6178                    (per son_id,
  6179                     dat e_of_birth ,
  6180                 date_of _birth_txt ,
  6181                 death_d ate_txt,
  6182                     fir st_name,
  6183                 middle_ name,
  6184                 last_na me,
  6185                 suffix,
  6186                 gender_ code,
  6187                 VCELIGI BILITY_H_I D,
  6188                 vceligb ty_record_ modified_d ate,
  6189                 vce,
  6190                 priorit y_group,
  6191                 priorit y_group_ef fect_date_ txt)
  6192            V ALUES (t_S electedPer son_tab(in dx).person _id,
  6193                     t_S electedPer son_tab(in dx).date_o f_birth,
  6194                     t_S electedPer son_tab(in dx).date_o f_birth_tx t,
  6195                     t_S electedPer son_tab(in dx).death_ date_txt,
  6196                     t_S electedPer son_tab(in dx).first_ name,
  6197                     t_S electedPer son_tab(in dx).middle _name,
  6198                     t_S electedPer son_tab(in dx).last_n ame,
  6199                     t_S electedPer son_tab(in dx).suffix ,
  6200                     t_S electedPer son_tab(in dx).gender _code,
  6201                     t_S electedPer son_tab(in dx).VCELIG IBILITY_H_ ID,
  6202                     t_S electedPer son_tab(in dx).vcelig bty_record _modified_ date,
  6203                     t_S electedPer son_tab(in dx).vce ,
  6204                     t_S electedPer son_tab(in dx).priori ty_group ,
  6205                     t_S electedPer son_tab(in dx).priori ty_group_e ffect_date _txt);
  6206  
  6207           VN _total_cou nt := VN_t otal_count  + SQL%ROW COUNT;
  6208  
  6209           CO MMIT;
  6210  
  6211        END L OOP;
  6212  
  6213        CLOSE  SelectedP erson_C;
  6214  
  6215        ccn_s tage_rowco unt_rec.ro wcount_per son :=   V N_total_co unt;
  6216  
  6217        SELEC T COUNT(1)  INTO VN_c ount_tmp
  6218        FROM  all_indexe s
  6219        WHERE  index_nam e = 'CCN_P ERSELSTG_P ERSONID'
  6220        AND o wner = 'AD R';
  6221  
  6222        IF VN _count_tmp  = 0 THEN
  6223           EX ECUTE IMME DIATE 'CRE ATE INDEX  ADR.CCN_PE RSELSTG_PE RSONID ON  ADR.CCN_PE RSON_SELEC TED_STG (P ERSON_ID)  ' ||CHR(10 )||
  6224           '  TABLESPACE  M_INDEX_0 1 ' ||CHR( 10)||
  6225           '  NOLOGGING  ' ||CHR(10 )||
  6226           '  PARALLEL (  DEGREE 2  INSTANCES  DEFAULT )  ';
  6227        END I F;
  6228  
  6229        ADRMG T.Job_Proc ess_Log_Sp (PC_job_na me => CC_M ODULE_NAME ,
  6230                     PD_ job_log_da te => SYSD ATE,
  6231                     PC_ job_status  => 'INFOR MATION - S P '||gc_sp _name|| '  Completed. ',
  6232                     PC_ job_log_me ssage => ' Rows Added : '||VN_to tal_count| |adr.sf_ti mer.elapse d_message  ('-'),
  6233                     pc_ text1 => a dr.sf_time r.elapsed_ message (g c_sp_name) ,
  6234                     PD_ date1 => S YSDATE
  6235           );
  6236  
  6237  
  6238      EXCEPTI ON
  6239         WHEN  dml_error s THEN
  6240  
  6241            V N_EXCEPTIO N_CNT := S QL%BULK_EX CEPTIONS.C OUNT;
  6242  
  6243            F OR I IN 1  .. VN_EXCE PTION_CNT  LOOP
  6244              VC_error_m sg :=
  6245                  'ERROR  BULK: ' | | VC_log_s tep||' ERR OR# '||I|| ' INTER# ' ||SQL%BULK _EXCEPTION S(I).ERROR _INDEX ||
  6246                  ' PERS ON ID: ' | | t_Select edPerson_t ab(I).pers on_id ||': '||t_Selec tedPerson_ tab(I).dat e_of_birth ||
  6247                  ' Erro r Msg: ' | | SQLERRM( -SQL%BULK_ EXCEPTIONS (i).ERROR_ CODE);
  6248  
  6249                  ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => CC_MO DULE_NAME,
  6250                                                PD_job_lo g_date =>  SYSDATE,
  6251                                                PC_job_st atus => 'E RROR EXCEP TION - ROW S FAILED:  '||VN_EXCE PTION_CNT,
  6252                                                PC_job_lo g_message  => VC_erro r_msg,
  6253                                                PC_text1  => 'Rows A dded: '||V N_total_co unt|| ' -  Elapse Tim e: '||adr. sf_timer.e lapsed_mes sage (gc_s p_name),
  6254                                                PD_date1  => SYSDATE
  6255                                 );
  6256  
  6257              END LOOP;
  6258  
  6259         WHEN  OTHERS TH EN
  6260           AD RMGT.Job_P rocess_Log _Sp(PC_job _name => C C_MODULE_N AME,
  6261                   PD_jo b_log_date  => SYSDAT E,
  6262                   PC_jo b_status = > 'ERROR E XEPTION',
  6263                   PC_jo b_log_mess age =>VC_l og_step||' -'|| SUBST R('ERROR -  ' || SQLC ODE||': '| |SQLERRM,1 ,254),
  6264                   PC_te xt1 => 'Ad ded: '||VN _total_cou nt|| 'Elap se Time: ' ||adr.sf_t imer.elaps ed_message  (gc_sp_na me),
  6265                   PD_da te1 => SYS DATE
  6266                  );
  6267  
  6268    END LOAD_ SELECTED_P ERSON_STG;
  6269  
  6270   /********* ********** ********** ********** ********** ********** ********** ******
  6271    *
  6272    *    NAME
  6273    *      LO AD_ADDR_ST G
  6274    *
  6275    *    DESC RIPTION
  6276    *      Th is procedu re is to l oad addres s info int o LOAD_ADD R_STG stag ing
  6277    *
  6278    ********* ********** ********** ********** ********** ********** ********** ******/
  6279   PROCEDURE  LOAD_ADDR_ STG  IS
  6280  
  6281  
  6282     -- VN_ro wcnt_fetch ed  NUMBER  := 0;
  6283  
  6284     VN_total _count         NUMBER  := 0;
  6285      VN_EXCE PTION_CNT      NUMBER := 0;
  6286  
  6287     CURSOR L oadAddress Stage_C IS
  6288        SELEC T  addr2.P ERSON_ID,   addr2.STD _ADDRESSTY PE_ID, add r2.ADDRESS _ID MAILIN G_ADDRESS_ ID,
  6289                    addr 2.record_m odified_da te ADDR_RE CORD_MODIF IED_DATE
  6290        FROM  (
  6291            S ELECT  ROW _NUMBER ()  OVER (PAR TITION BY  addr.perso n_id ORDER  BY (
  6292                  CASE a ddr.STD_AD DRESSTYPE_ ID
  6293                         WHEN   144 9005 THEN  3
  6294                         WHEN   144 9012 THEN  2
  6295                         WHEN   180 7412 THEN  1
  6296                         ELSE NULL
  6297                         END) DESC,  addr.addr ess_id des c) RN,
  6298                addr.per son_id, ad dr.address _id, addr. STD_ADDRES STYPE_ID,  addr.recor d_modified _date
  6299            F ROM ADDRES S addr
  6300                INNER JO IN adr.CCN _PERSON_SE LECTED_STG  pss --Sel ectedPERSO N per
  6301                  ON add r.PERSON_I D = pss.PE RSON_ID
  6302              WHERE    (     (   LE NGTH (addr .ADDRESS_E ND_DATE_TX T) = 8
  6303                                    OR addr.AD DRESS_END_ DATE_TXT I S NULL)
  6304                             AND (    LENGTH ( addr.ADDRE SS_START_D ATE_TXT) =  8
  6305                                OR  addr.ADDRE SS_START_D ATE_TXT IS  NULL)
  6306              AND (    a ddr.STD_AD DRESSTYPE_ ID = CC_AD DRESSTYPE_ ID_TEMP
  6307              AND SYSDAT E >   TO_D ATE (  SUB STR ( addr .ADDRESS_S TART_DATE_ TXT, 0, 8) , 'YYYYMMD D')
  6308                       A ND (   (ad dr.ADDRESS _END_DATE_ TXT IS NUL L)
  6309                            OR (SYS DATE < TO_ DATE ( SUB STR ( addr .ADDRESS_E ND_DATE_TX T,  0, 8),   'YYYYMMD D'))))
  6310   --
  6311                           OR addr. STD_ADDRES STYPE_ID I N (CC_ADDR ESSTYPE_ID _RESI, CC_ ADDRESSTYP E_ID_PERM) )
  6312                          ) addr2
  6313           WH ERE rn =1;
  6314  
  6315          TYP E t_CCNAdr ess_table  IS TABLE O F LoadAddr essStage_C %ROWTYPE;
  6316           t_ CCNAdress_ tab    t_C CNAdress_t able;
  6317  
  6318        dml_e rrors EXCE PTION;
  6319        PRAGM A EXCEPTIO N_INIT(dml _errors, - 24381);
  6320  
  6321   BEGIN
  6322       gc_sp_ name  := ' LOAD_ADDR_ STG';
  6323  
  6324       VN_sta rt_time :=  TO_CHAR(S YSDATE,'MM /DD/YY HH2 4:MI:SS');
  6325       DBMS_A PPLICATION _INFO.set_ client_inf o(gc_sp_na me ||' @'| |VN_start_ time);
  6326       VC_log _step := ' BULK '||gc _sp_name|| ' BEGINS';
  6327  
  6328       adr.sf _timer.sta rt_timer;
  6329       -- === ========== ========== ========== ========== ========== ===
  6330       --
  6331       -- Beg in Bulk Co llect Fetc h
  6332       --
  6333       -- === ========== ========== ========== ========== ========== ===
  6334        ADRMG T.Job_Proc ess_Log_Sp (PC_job_na me => CC_M ODULE_NAME ,
  6335                     PD_ job_log_da te => SYSD ATE,
  6336                     PC_ job_status  => 'INFOR MATION - S P '||gc_sp _name|| '  Started.',
  6337                     PC_ job_log_me ssage => ' Started '| |VN_start_ time,
  6338                     pc_ text1 => ' PARMS: - B ULK LIMIT:  '|| gc_bu lk_limit|| ' - DOP: ' ||gc_paral lel_dop,
  6339                     PD_ date1 => S YSDATE
  6340            ) ;
  6341       VN_tot al_count : = 0;
  6342       gc_int eration  : = 0;
  6343  
  6344       DBMS_A PPLICATION _INFO.set_ action('LO AD_ADDR');
  6345  
  6346       OPEN L oadAddress Stage_C;
  6347       LOOP
  6348  
  6349          FET CH LoadAdd ressStage_ C BULK COL LECT INTO  t_CCNAdres s_tab LIMI T gc_bulk_ limit;
  6350          EXI T WHEN t_C CNAdress_t ab.COUNT =  0;
  6351          gc_ interation  := gc_int eration +  1;
  6352  
  6353          VC_ log_step : = 'Iter# ' ||gc_inter ation;
  6354  
  6355          DBM S_APPLICAT ION_INFO.s et_action( 'LOAD_ADDR : It#: '|| gc_interat ion);
  6356  
  6357          FOR ALL indx I N t_CCNAdr ess_tab.FI RST.. t_CC NAdress_ta b.LAST SAV E EXCEPTIO NS
  6358              INSERT  /* + APPEND * / INTO ADR .CCN_ADDRE SS_STG
  6359                   (PERS ON_ID,
  6360                   STD_A DDRESSTYPE _ID,
  6361                   MAILI NG_ADDRESS _ID,
  6362                   ADDR_ RECORD_MOD IFIED_DATE  )
  6363              VALUES (t_ CCNAdress_ tab(indx). PERSON_ID,
  6364                      t_ CCNAdress_ tab(indx). STD_ADDRES STYPE_ID,
  6365                      t_ CCNAdress_ tab(indx). MAILING_AD DRESS_ID,
  6366                      t_ CCNAdress_ tab(indx). ADDR_RECOR D_MODIFIED _DATE);
  6367  
  6368           VN _total_cou nt := VN_t otal_count  + SQL%ROW COUNT;
  6369           CO MMIT;
  6370  
  6371       END LO OP;
  6372  
  6373       CLOSE  LoadAddres sStage_C;
  6374  
  6375       ccn_st age_rowcou nt_rec.row count_addr  := VN_tot al_count;
  6376       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => CC_MO DULE_NAME,
  6377                   PD_jo b_log_date  => SYSDAT E,
  6378                   PC_jo b_status = > 'INFORMA TION - SP  '||gc_sp_n ame|| ' Co mpleted.',
  6379                   PC_jo b_log_mess age => 'Ro ws Added:  '||VN_tota l_count||a dr.sf_time r.elapsed_ message ('  '),
  6380                   pc_te xt1 => adr .sf_timer. elapsed_me ssage (gc_ sp_name),
  6381                   PD_da te1 => SYS DATE
  6382           );
  6383  
  6384  
  6385      EXCEPTI ON
  6386  
  6387         WHEN  dml_error s THEN
  6388  
  6389            V N_EXCEPTIO N_CNT := S QL%BULK_EX CEPTIONS.C OUNT;
  6390  
  6391           FO R I IN 1 . . VN_EXCEP TION_CNT L OOP
  6392              VC_error_m sg :=
  6393                  'ERROR  BULK: ' | | VC_log_s tep||' ERR OR# '||I|| ' INTER# ' ||SQL%BULK _EXCEPTION S(I).ERROR _INDEX ||
  6394                  ' PERS ON ID: ' | | t_CCNAdr ess_tab(I) .person_id  ||':'||t_ CCNAdress_ tab(I).STD _ADDRESSTY PE_ID||
  6395                  ' Erro r Msg: ' | | SQLERRM( -SQL%BULK_ EXCEPTIONS (i).ERROR_ CODE);
  6396  
  6397                  ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => CC_MO DULE_NAME,
  6398                                                PD_job_lo g_date =>  SYSDATE,
  6399                                                PC_job_st atus => 'E RROR EXCEP TION - ROW S FAILED:  '||VN_EXCE PTION_CNT,
  6400                                                PC_job_lo g_message  => VC_erro r_msg,
  6401                                                PC_text1  => 'Rows A dded: '||V N_total_co unt|| ' -  Elapse Tim e: '||adr. sf_timer.e lapsed_mes sage (gc_s p_name),
  6402                                                PD_date1  => SYSDATE
  6403                                 );
  6404  
  6405              END LOOP;
  6406  
  6407         WHEN  OTHERS TH EN
  6408           AD RMGT.Job_P rocess_Log _Sp(PC_job _name => C C_MODULE_N AME,
  6409                   PD_jo b_log_date  => SYSDAT E,
  6410                   PC_jo b_status = > 'ERROR E XEPTION',
  6411                   PC_jo b_log_mess age =>VC_l og_step||' -'|| SUBST R('ERROR -  ' || SQLC ODE||': '| |SQLERRM,1 ,254),
  6412                   PC_te xt1 => 'Ad ded: '||VN _total_cou nt|| 'Elap se Time: ' ||adr.sf_t imer.elaps ed_message  (gc_sp_na me),
  6413                   PD_da te1 => SYS DATE
  6414                  );
  6415  
  6416   END LOAD_A DDR_STG;
  6417  
  6418  
  6419   /********* ********** ********** ********** ********** ********** ********** ******
  6420    *
  6421    *    NAME
  6422    *      LO AD_ADDR_H_ STG
  6423    *
  6424    *    DESC RIPTION
  6425    *      Th is procedu re is to l oad addres s info int o LOAD_ADD R_H_STG st aging
  6426    *
  6427    ********* ********** ********** ********** ********** ********** ********** ******/
  6428   PROCEDURE  LOAD_ADDR_ H_STG  IS
  6429  
  6430  
  6431     -- VN_ro wcnt_fetch ed  NUMBER  := 0;
  6432  
  6433      VN_tota l_count        NUMBER  := 0;
  6434      VN_EXCE PTION_CNT      NUMBER := 0;
  6435  
  6436     CURSOR L oadAddress _H_Stage_C  IS
  6437  
  6438       SELECT  *
  6439       FROM (
  6440           WI TH addr_st g AS
  6441           (S ELECT pers on_id, mai ling_addre ss_id, std _addressty pe_id
  6442           FR OM ADR.CCN _ADDRESS_S TG),
  6443           AH 1 AS
  6444                (  SELEC T AH.PERSO N_ID, ah.S TD_ADDRESS TYPE_ID, A H.ADDRESS_ H_ID, ah.A DDRESS_ID
  6445                   FROM  ADDRESS_H  AH
  6446                  where  ah.STD_ADD RESSTYPE_I D IN (CC_A DDRESSTYPE _ID_RESI,  CC_ADDRESS TYPE_ID_TE MP, CC_ADD RESSTYPE_I D_PERM)    --1807412= RES, 14490 05=TEMPORA RY, 144901 2=PERMANEN T
  6447                  --  AN D ah.perso n_id in (1 71,185,186 ,2229,5444 )
  6448                ),
  6449           AH _RESI AS
  6450                ( SELECT   *
  6451                FROM (
  6452                SELECT a h1.person_ id, ah1.ST D_ADDRESST YPE_ID, AH 1.ADDRESS_ H_ID, ah1. ADDRESS_ID  ,
  6453                MAX(AH1. ADDRESS_H_ ID) OVER ( PARTITION  BY AH1.PER SON_ID, AH 1.STD_ADDR ESSTYPE_ID )  MAX_ADD RESS_H_ID
  6454                FROM  AH 1--, addr_ stg s
  6455                WHERE  a h1.STD_ADD RESSTYPE_I D = CC_ADD RESSTYPE_I D_RESI
  6456              )     WHER E ADDRESS_ H_ID = MAX _ADDRESS_H _ID
  6457           ),
  6458           AH _TMP_PERM  AS
  6459              (  SELECT   *
  6460                FROM (   SELECT AH1 .PERSON_ID , ah1.STD_ ADDRESSTYP E_ID, AH1. ADDRESS_H_ ID, ah1.AD DRESS_ID ,
  6461                    MAX( AH1.ADDRES S_H_ID) OV ER (PARTIT ION BY AH1 .PERSON_ID , AH1.STD_ ADDRESSTYP E_ID, AH1. ADDRESS_ID )  MAX_ADD RESS_H_ID
  6462                    FROM  AH1
  6463                    WHER E  STD_ADD RESSTYPE_I D  IN (CC_ ADDRESSTYP E_ID_TEMP,  CC_ADDRES STYPE_ID_P ERM)
  6464                )    WHE RE ADDRESS _H_ID = MA X_ADDRESS_ H_ID
  6465              )
  6466           SE LECT /*+ u se_hash (p  r a) */ p .person_id , p.addres s_h_id mai ling_addre ss_h_id, r .address_h _id resi_a ddress_h_i d
  6467           FR OM  addr_s tg a, AH_T MP_PERM p,  AH_RESI r
  6468           WH ERE  a.per son_id = p .person_id
  6469           AN D   a.mail ing_addres s_id = p.a ddress_id
  6470           AN D  p.perso n_id = r.p erson_id(+ )
  6471        );
  6472  
  6473       TYPE t _CCNAdress H_table IS  TABLE OF  LoadAddres s_H_Stage_ C%ROWTYPE;
  6474        t_CCN AdressH_ta b    t_CCN AdressH_ta ble;
  6475  
  6476      dml_err ors EXCEPT ION;
  6477      PRAGMA  EXCEPTION_ INIT(dml_e rrors, -24 381);
  6478  
  6479   BEGIN
  6480       gc_sp_ name  := ' LOAD_ADDR_ H_STG';
  6481  
  6482       VN_sta rt_time :=  TO_CHAR(S YSDATE,'MM /DD/YY HH2 4:MI:SS');
  6483       DBMS_A PPLICATION _INFO.set_ client_inf o(gc_sp_na me ||' @'| |VN_start_ time);
  6484       VC_log _step := ' BULK '||gc _sp_name|| ' BEGINS';
  6485  
  6486       adr.sf _timer.sta rt_timer;
  6487       -- === ========== ========== ========== ========== ========== ===
  6488       --
  6489       -- Beg in Bulk Co llect Fetc h
  6490       --
  6491       -- === ========== ========== ========== ========== ========== ===
  6492        ADRMG T.Job_Proc ess_Log_Sp (PC_job_na me => CC_M ODULE_NAME ,
  6493                     PD_ job_log_da te => SYSD ATE,
  6494                     PC_ job_status  => 'INFOR MATION - S P '||gc_sp _name|| '  Started.',
  6495                     PC_ job_log_me ssage => ' Time: '||V N_start_ti me,
  6496                     pc_ text1 => ' PARMS: - B ULK LIMIT:  '|| gc_bu lk_limit|| ' - DOP: ' ||gc_paral lel_dop,
  6497                     PD_ date1 => S YSDATE
  6498            ) ;
  6499       VN_tot al_count : = 0;
  6500       gc_int eration  : = 0;
  6501  
  6502       DBMS_A PPLICATION _INFO.set_ action('LO AD_ADDR_H' );
  6503  
  6504       OPEN L oadAddress _H_Stage_C ;
  6505       LOOP
  6506  
  6507          FET CH LoadAdd ress_H_Sta ge_C BULK  COLLECT IN TO t_CCNAd ressH_tab  LIMIT gc_b ulk_limit;
  6508          EXI T WHEN t_C CNAdressH_ tab.COUNT  = 0;
  6509          gc_ interation  := gc_int eration +  1;
  6510  
  6511          VC_ log_step : = 'Iter# ' ||gc_inter ation;
  6512  
  6513          DBM S_APPLICAT ION_INFO.s et_action( 'LOAD_ADDR _H: It#: ' ||gc_inter ation);
  6514  
  6515          FOR ALL indx I N t_CCNAdr essH_tab.F IRST.. t_C CNAdressH_ tab.LAST S AVE EXCEPT IONS
  6516            I NSERT  /*+  APPEND */  INTO ADR. CCN_ADDRES S_H_STG
  6517                      (P ERSON_ID,
  6518                      ma iling_addr ess_h_id,
  6519                      RE SI_ADDRESS _H_ID)
  6520              VALUES (t_ CCNAdressH _tab(indx) .PERSON_ID ,
  6521                      t_ CCNAdressH _tab(indx) .mailing_a ddress_h_i d,
  6522                      t_ CCNAdressH _tab(indx) .resi_addr ess_h_id);
  6523  
  6524           VN _total_cou nt := VN_t otal_count  + SQL%ROW COUNT;
  6525           CO MMIT;
  6526  
  6527       END LO OP;
  6528  
  6529       CLOSE  LoadAddres s_H_Stage_ C;
  6530       ccn_st age_rowcou nt_rec.row count_addr _h := VN_t otal_count ;
  6531  
  6532        ADRMG T.Job_Proc ess_Log_Sp (PC_job_na me => CC_M ODULE_NAME ,
  6533                  PD_job _log_date  => SYSDATE ,
  6534                  PC_job _status =>  'INFORMAT ION - SP ' ||gc_sp_na me|| ' Com pleted.',
  6535                  PC_job _log_messa ge => 'Row s Added: ' ||VN_total _count||ad r.sf_timer .elapsed_m essage ('  '),
  6536                  pc_tex t1 => adr. sf_timer.e lapsed_mes sage (gc_s p_name),
  6537                  PD_dat e1 => SYSD ATE
  6538           );
  6539  
  6540  
  6541      EXCEPTI ON
  6542  
  6543         WHEN  dml_error s THEN
  6544  
  6545            V N_EXCEPTIO N_CNT := S QL%BULK_EX CEPTIONS.C OUNT;
  6546  
  6547           FO R I IN 1 . . VN_EXCEP TION_CNT L OOP
  6548              VC_error_m sg :=
  6549                  'ERROR  BULK: ' | | VC_log_s tep||' ERR OR# '||I|| ' INTER# ' ||SQL%BULK _EXCEPTION S(I).ERROR _INDEX ||
  6550                  ' PERS ON ID: ' | | t_CCNAdr essH_tab(I ).person_i d ||':'||t _CCNAdress H_tab(I).r esi_addres s_h_id||
  6551                  ' Erro r Msg: ' | | SQLERRM( -SQL%BULK_ EXCEPTIONS (i).ERROR_ CODE);
  6552  
  6553                  ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => CC_MO DULE_NAME,
  6554                                                PD_job_lo g_date =>  SYSDATE,
  6555                                                PC_job_st atus => 'E RROR EXCEP TION - ROW S FAILED:  '||VN_EXCE PTION_CNT,
  6556                                                PC_job_lo g_message  => VC_erro r_msg,
  6557                                                PC_text1  => 'Rows A dded: '||V N_total_co unt|| ' -  Elapse Tim e: '||adr. sf_timer.e lapsed_mes sage (gc_s p_name),
  6558                                                PD_date1  => SYSDATE
  6559                                 );
  6560  
  6561              END LOOP;
  6562  
  6563         WHEN  OTHERS TH EN
  6564           AD RMGT.Job_P rocess_Log _Sp(PC_job _name => C C_MODULE_N AME,
  6565                   PD_jo b_log_date  => SYSDAT E,
  6566                   PC_jo b_status = > 'ERROR E XEPTION',
  6567                   PC_jo b_log_mess age =>VC_l og_step||' -'|| SUBST R('ERROR -  ' || SQLC ODE||': '| |SQLERRM,1 ,254),
  6568                   PC_te xt1 => 'Ad ded: '||VN _total_cou nt|| 'Elap se Time: ' ||adr.sf_t imer.elaps ed_message  (gc_sp_na me),
  6569                   PD_da te1 => SYS DATE
  6570                  );
  6571  
  6572   END LOAD_A DDR_H_STG;
  6573  
  6574   /********* ********** ********** ********** ********** ********** ********** ******
  6575    *
  6576    *    NAME
  6577    *      LO AD_PREFERE D_FACILITY _H_STG
  6578    *
  6579    *    DESC RIPTION
  6580    *      Th is procedu re is to l oad addres s info int o LOAD_PRE FERED_FACI LITY_H_STG  staging
  6581    *
  6582    ********* ********** ********** ********** ********** ********** ********** ******/
  6583   PROCEDURE  LOAD_PREFE RED_FACILI TY_H_STG   IS
  6584  
  6585      VN_tota l_count        NUMBER  := 0;
  6586      VN_EXCE PTION_CNT      NUMBER := 0;
  6587  
  6588      CURSOR  Loadreferr edFac_H_St age_C IS
  6589        SELEC T  pref.pe rson_id, p ref.prefer red_facili ty_h_id
  6590        FROM  (SELECT pf .person_id , pf.prefe rred_facil ity_h_id,
  6591                     ROW _NUMBER ()  OVER ( PA RTITION BY  pf.person _id
  6592                                ORD ER BY DECO DE (UPPER  (src.code) ,  'PA', 1 ,  'E', 2,  'V', 3, ' PI', 4,  5 ),
  6593                            pf.assi gnment_dat e DESC)  p fno
  6594               FROM adr. preferred_ facility_h  pf
  6595                 INNER J OIN adr.PR EFERRED_FA CILITY pfm ain ON      pfmain.PE RSON_ID =  pf.PERSON_ ID
  6596                 AND pfm ain.PREFER RED_FACILI TY_ID =  p f.PREFERRE D_FACILITY _ID
  6597                 INNER J OIN  ADR.C CN_PERSON_ SELECTED_S TG per   O N pf.perso n_id = per .person_id
  6598                 LEFT JO IN sdsadm. std_preffa csrcdesig  src  ON sr c.id = pf. std_prefer red_facili ty_src_id
  6599              ) pref
  6600        WHERE  pref.pfno  = 1;
  6601  
  6602        TYPE  t_CCNPrefe rredFacH_t able IS TA BLE OF Loa dreferredF ac_H_Stage _C%ROWTYPE ;
  6603        t_CCN PreferredF acH_tab     t_CCNPref erredFacH_ table;
  6604  
  6605       dml_er rors EXCEP TION;
  6606       PRAGMA  EXCEPTION _INIT(dml_ errors, -2 4381);
  6607  
  6608   BEGIN
  6609       gc_sp_ name  := ' LOAD_PREFE RED_FACILI TY_H_STG';
  6610  
  6611       VN_sta rt_time :=  TO_CHAR(S YSDATE,'MM /DD/YY HH2 4:MI:SS');
  6612       DBMS_A PPLICATION _INFO.set_ client_inf o(gc_sp_na me ||' @'| |VN_start_ time);
  6613       VC_log _step := ' BULK '||gc _sp_name|| ' BEGINS';
  6614  
  6615       adr.sf _timer.sta rt_timer;
  6616       -- === ========== ========== ========== ========== ========== ===
  6617       --
  6618       -- Beg in Bulk Co llect Fetc h
  6619       --
  6620       -- === ========== ========== ========== ========== ========== ===
  6621        ADRMG T.Job_Proc ess_Log_Sp (PC_job_na me => CC_M ODULE_NAME ,
  6622                   PD_jo b_log_date  => SYSDAT E,
  6623                   PC_jo b_status = > 'INFORMA TION - SP  '||gc_sp_n ame|| ' St arted.',
  6624                   PC_jo b_log_mess age => 'St arted '||V N_start_ti me,
  6625                   pc_te xt1 => 'PA RMS: - BUL K LIMIT: ' || gc_bulk _limit||'  - DOP: '|| gc_paralle l_dop,
  6626                   PD_da te1 => SYS DATE
  6627            ) ;
  6628       VN_tot al_count : = 0;
  6629       gc_int eration  : = 0;
  6630  
  6631       DBMS_A PPLICATION _INFO.set_ action('LO AD_PREFERE D_FACILITY ');
  6632  
  6633       OPEN L oadreferre dFac_H_Sta ge_C;
  6634       LOOP
  6635  
  6636          FET CH Loadref erredFac_H _Stage_C B ULK COLLEC T INTO t_C CNPreferre dFacH_tab  LIMIT gc_b ulk_limit;
  6637          EXI T WHEN t_C CNPreferre dFacH_tab. COUNT = 0;
  6638          gc_ interation  := gc_int eration +  1;
  6639  
  6640          VC_ log_step : = 'Iter# ' ||gc_inter ation;
  6641         DBMS _APPLICATI ON_INFO.se t_action(' LOAD_PREFE RED_FACILI TY: It#: ' ||gc_inter ation);
  6642  
  6643          FOR ALL indx I N t_CCNPre ferredFacH _tab.FIRST .. t_CCNPr eferredFac H_tab.LAST  SAVE EXCE PTIONS
  6644            I NSERT  /*+  APPEND */  INTO ADR. CCN_PREFER ED_FACILIT Y_H_STG
  6645                      (P ERSON_ID,
  6646                      PR EFERRED_FA CILITY_H_I D)
  6647              VALUES (t_ CCNPreferr edFacH_tab (indx).PER SON_ID,
  6648                      t_ CCNPreferr edFacH_tab (indx).PRE FERRED_FAC ILITY_H_ID );
  6649  
  6650           VN _total_cou nt := VN_t otal_count  + SQL%ROW COUNT;
  6651           CO MMIT;
  6652  
  6653       END LO OP;
  6654  
  6655       CLOSE  Loadreferr edFac_H_St age_C;
  6656       ccn_st age_rowcou nt_rec.row count_pref ac := VN_t otal_count ;
  6657  
  6658       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => CC_MO DULE_NAME,
  6659               PD_job_lo g_date =>  SYSDATE,
  6660               PC_job_st atus => 'I NFORMATION  - SP '||g c_sp_name| | ' Comple ted.',
  6661               PC_job_lo g_message  => 'Rows A dded: '||V N_total_co unt||adr.s f_timer.el apsed_mess age (' '),
  6662               pc_text1  => adr.sf_ timer.elap sed_messag e (gc_sp_n ame),
  6663               PD_date1  => SYSDATE
  6664           );
  6665  
  6666      EXCEPTI ON
  6667  
  6668         WHEN  dml_error s THEN
  6669  
  6670            V N_EXCEPTIO N_CNT := S QL%BULK_EX CEPTIONS.C OUNT;
  6671  
  6672           FO R I IN 1 . . VN_EXCEP TION_CNT L OOP
  6673              VC_error_m sg :=
  6674                  'ERROR  BULK: ' | | VC_log_s tep||' ERR OR# '||I|| ' INTER# ' ||SQL%BULK _EXCEPTION S(I).ERROR _INDEX ||
  6675                  ' PERS ON ID: ' | | t_CCNPre ferredFacH _tab(I).pe rson_id || ':'||t_CCN PreferredF acH_tab(I) .PREFERRED _FACILITY_ H_ID||
  6676                  ' Erro r Msg: ' | | SQLERRM( -SQL%BULK_ EXCEPTIONS (i).ERROR_ CODE);
  6677  
  6678                  ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => CC_MO DULE_NAME,
  6679                                                PD_job_lo g_date =>  SYSDATE,
  6680                                                PC_job_st atus => 'E RROR EXCEP TION - ROW S FAILED:  '||VN_EXCE PTION_CNT,
  6681                                                PC_job_lo g_message  => VC_erro r_msg,
  6682                                                PC_text1  => 'Rows A dded: '||V N_total_co unt|| ' -  Elapse Tim e: '||adr. sf_timer.e lapsed_mes sage (gc_s p_name),
  6683                                                PD_date1  => SYSDATE
  6684                                 );
  6685  
  6686              END LOOP;
  6687  
  6688         WHEN  OTHERS TH EN
  6689           AD RMGT.Job_P rocess_Log _Sp(PC_job _name => C C_MODULE_N AME,
  6690                   PD_jo b_log_date  => SYSDAT E,
  6691                   PC_jo b_status = > 'ERROR E XEPTION',
  6692                   PC_jo b_log_mess age =>VC_l og_step||' -'|| SUBST R('ERROR -  ' || SQLC ODE||': '| |SQLERRM,1 ,254),
  6693                   PC_te xt1 => 'Ad ded: '||VN _total_cou nt|| 'Elap se Time: ' ||adr.sf_t imer.elaps ed_message  (gc_sp_na me),
  6694                   PD_da te1 => SYS DATE
  6695                  );
  6696  
  6697   END LOAD_P REFERED_FA CILITY_H_S TG;
  6698  
  6699   /********* ********** ********** ********** ********** ********** ********** ******
  6700    *
  6701    *    NAME
  6702    *      LO AD_EMAIL_S TG
  6703    *
  6704    *    DESC RIPTION
  6705    *      Th is procedu re is to l oad Email  Address in fo into LO AD_EMAIL_S TG staging
  6706    *
  6707    ********* ********** ********** ********** ********** ********** ********** ******/
  6708   PROCEDURE  LOAD_EMAIL _STG  IS
  6709  
  6710  
  6711     -- VN_ro wcnt_fetch ed  NUMBER  := 0;
  6712  
  6713      VN_tota l_count        NUMBER  := 0;
  6714      VN_EXCE PTION_CNT      NUMBER := 0;
  6715  
  6716     CURSOR L oadCCNPEma il_Stage_C  IS
  6717     SELECT p erson_id,  email_addr ess
  6718           FR OM (
  6719                SELECT   em.person_ id,  email _address,  em.email_i d,
  6720                   MAX ( em.email_i d)  OVER ( PARTITION  BY em.pers on_id) max _email_id
  6721                FROM EMA IL em
  6722                   INNER  JOIN ADR. CCN_PERSON _SELECTED_ STG per
  6723                   ON pe r.person_i d = em.per son_id
  6724                   AND e m.email_ty pe_id = 15 10061)  --  personal  email type
  6725          WHE RE email_i d = max_em ail_id;
  6726  
  6727        TYPE  t_CCNEmail _table IS  TABLE OF L oadCCNPEma il_Stage_C %ROWTYPE;
  6728        t_CCN Email_tab     t_CCNEm ail_table;
  6729  
  6730       dml_er rors EXCEP TION;
  6731       PRAGMA  EXCEPTION _INIT(dml_ errors, -2 4381);
  6732  
  6733   BEGIN
  6734       gc_sp_ name  := ' LOAD_EMAIL _STG';
  6735  
  6736       VN_sta rt_time :=  TO_CHAR(S YSDATE,'MM /DD/YY HH2 4:MI:SS');
  6737       DBMS_A PPLICATION _INFO.set_ client_inf o(gc_sp_na me ||' @'| |VN_start_ time);
  6738       VC_log _step := ' BULK '||gc _sp_name|| ' BEGINS';
  6739  
  6740       adr.sf _timer.sta rt_timer;
  6741       -- === ========== ========== ========== ========== ========== ===
  6742       --
  6743       -- Beg in Bulk Co llect Fetc h
  6744       --
  6745       -- === ========== ========== ========== ========== ========== ===
  6746        ADRMG T.Job_Proc ess_Log_Sp (PC_job_na me => CC_M ODULE_NAME ,
  6747                  PD_job _log_date  => SYSDATE ,
  6748                  PC_job _status =>  'INFORMAT ION - SP ' ||gc_sp_na me|| ' Sta rted.',
  6749                  PC_job _log_messa ge => 'Sta rted '||VN _start_tim e,
  6750                  pc_tex t1 => 'PAR MS: - BULK  LIMIT: '| | gc_bulk_ limit||' -  DOP: '||g c_parallel _dop,
  6751                  PD_dat e1 => SYSD ATE
  6752            ) ;
  6753       VN_tot al_count : = 0;
  6754       gc_int eration  : = 0;
  6755  
  6756       DBMS_A PPLICATION _INFO.set_ action('LO AD_EMAIL') ;
  6757  
  6758       OPEN L oadCCNPEma il_Stage_C ;
  6759       LOOP
  6760  
  6761          FET CH LoadCCN PEmail_Sta ge_C BULK  COLLECT IN TO t_CCNEm ail_tab LI MIT gc_bul k_limit;
  6762          EXI T WHEN t_C CNEmail_ta b.COUNT =  0;
  6763          gc_ interation  := gc_int eration +  1;
  6764  
  6765          VC_ log_step : = 'Iter# ' ||gc_inter ation;
  6766          DBM S_APPLICAT ION_INFO.s et_action( 'LOAD_EMAI L: It#: '| |gc_intera tion);
  6767  
  6768          FOR ALL indx I N t_CCNEma il_tab.FIR ST.. t_CCN Email_tab. LAST SAVE  EXCEPTIONS
  6769            I NSERT  /*+  APPEND */  INTO ADR. CCN_EMAIL_ STG
  6770                      (p erson_id,
  6771                      em ail_addres s)
  6772              VALUES (t_ CCNEmail_t ab(indx).p erson_id,
  6773                      t_ CCNEmail_t ab(indx).e mail_addre ss);
  6774  
  6775           VN _total_cou nt := VN_t otal_count  + SQL%ROW COUNT;
  6776           CO MMIT;
  6777  
  6778       END LO OP;
  6779  
  6780       CLOSE  LoadCCNPEm ail_Stage_ C;
  6781  
  6782       ccn_st age_rowcou nt_rec.row count_emai l := VN_to tal_count;
  6783  
  6784       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => CC_MO DULE_NAME,
  6785              PD_job_log _date => S YSDATE,
  6786              PC_job_sta tus => 'IN FORMATION  - SP '||gc _sp_name||  ' Complet ed.',
  6787              PC_job_log _message = >'Rows Add ed: '||VN_ total_coun t||adr.sf_ timer.elap sed_messag e (' '),
  6788              pc_text1 = > adr.sf_t imer.elaps ed_message  (gc_sp_na me),
  6789              PD_date1 = > SYSDATE
  6790           );
  6791  
  6792  
  6793      EXCEPTI ON
  6794  
  6795           WH EN dml_err ors THEN
  6796  
  6797            V N_EXCEPTIO N_CNT := S QL%BULK_EX CEPTIONS.C OUNT;
  6798  
  6799           FO R I IN 1 . . VN_EXCEP TION_CNT L OOP
  6800              VC_error_m sg :=
  6801                  'ERROR  BULK: ' | | VC_log_s tep||' ERR OR# '||I|| ' INTER# ' ||SQL%BULK _EXCEPTION S(I).ERROR _INDEX ||
  6802                  ' PERS ON ID: ' | | t_CCNEma il_tab(I). person_id  ||
  6803                  ' Erro r Msg: ' | | SQLERRM( -SQL%BULK_ EXCEPTIONS (i).ERROR_ CODE);
  6804  
  6805                  ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => CC_MO DULE_NAME,
  6806                                                PD_job_lo g_date =>  SYSDATE,
  6807                                                PC_job_st atus => 'E RROR EXCEP TION - ROW S FAILED:  '||VN_EXCE PTION_CNT,
  6808                                                PC_job_lo g_message  => VC_erro r_msg,
  6809                                                PC_text1  => 'Rows A dded: '||V N_total_co unt|| ' -  Elapse Tim e: '||adr. sf_timer.e lapsed_mes sage (gc_s p_name),
  6810                                                PD_date1  => SYSDATE
  6811                                 );
  6812  
  6813              END LOOP;
  6814         WHEN  OTHERS TH EN
  6815           AD RMGT.Job_P rocess_Log _Sp(PC_job _name => C C_MODULE_N AME,
  6816                   PD_jo b_log_date  => SYSDAT E,
  6817                   PC_jo b_status = > 'ERROR E XEPTION',
  6818                   PC_jo b_log_mess age =>VC_l og_step||' -'|| SUBST R('ERROR -  ' || SQLC ODE||': '| |SQLERRM,1 ,254),
  6819                   PC_te xt1 => 'Ad ded: '||VN _total_cou nt|| 'Elap se Time: ' ||adr.sf_t imer.elaps ed_message  (gc_sp_na me),
  6820                   PD_da te1 => SYS DATE
  6821                  );
  6822  
  6823   END LOAD_E MAIL_STG;
  6824  
  6825   /********* ********** ********** ********** ********** ********** ********** ******
  6826    *
  6827    *    NAME
  6828    *      LO AD_CCN_GEO CODE_TRANS MIT_STG
  6829    *
  6830    *    DESC RIPTION
  6831    *      Th is procedu re is to l oad Geocod e Transmit t info int o LOAD_CCN _GEOCODE_T RANSMIT_ST G staging
  6832    *
  6833    ********* ********** ********** ********** ********** ********** ********** ******/
  6834   PROCEDURE  LOAD_GEOCO DE_TRANSMI T_STG  IS
  6835  
  6836  
  6837     -- VN_ro wcnt_fetch ed  NUMBER  := 0;
  6838  
  6839      VN_tota l_count        NUMBER  := 0;
  6840      VN_EXCE PTION_CNT   NUMBER:=  0;
  6841  
  6842     CURSOR L oadCCNGeoc Trans_Stag e_C IS
  6843       SELECT  person_id , visn_geo , geocode_ station_h_ id
  6844        FROM  (
  6845           WI TH INST AS (
  6846                SELECT   ins.id, vi sn.name AS  visnname
  6847                FROM std _instituti on ins
  6848                    LEFT  OUTER JOI N std_inst itution vi sn ON ins. visn_id =  visn.id),
  6849           GE OCODE_STA_ H AS(
  6850           SE LECT geoco de_station _id, geoco de_station _h_id, std _instituti on_id
  6851           FR OM (
  6852                SELECT g h.geocode_ station_id , gh.geoco de_station _h_id, gh. STD_INSTIT UTION_ID,
  6853                    MAX( gh.geocode _station_h _id) OVER  (PARTITION  BY gh.geo code_stati on_id) MAX _GEOCODE_S TATION_H_I D
  6854                FROM GEO CODE_STATI ON_H gh
  6855                    INNE R JOIN GEO CODE_STATI ON g ON g. geocode_st ation_id =  gh.geocod e_station_ id
  6856                    AND  g.RECORD_M ODIFIED_DA TE = gh.RE CORD_MODIF IED_DATE
  6857                )
  6858                 WHERE g eocode_sta tion_h_id  = MAX_GEOC ODE_STATIO N_H_ID)
  6859           SE LECT tran. PERSON_ID,  gh.geocod e_station_ h_id, SUBS TR (inst.v isnname, 6 ) VISN_GEO
  6860           FR OM GEOCODE _TRANSMIT  tran
  6861                INNER JO IN ADR.CCN _PERSON_SE LECTED_STG  p  ON p.P ERSON_ID =  tran.PERS ON_ID
  6862                LEFT OUT ER JOIN GE OCODE_STA_ H gh ON tr an.GEOCODE _STATION_I D = gh.GEO CODE_STATI ON_ID
  6863                LEFT OUT ER JOIN IN ST inst    ON gh.STD_ INSTITUTIO N_ID = ins t.id
  6864           );
  6865  
  6866       TYPE t _CCNGeoCod eTrans_tab le IS TABL E OF LoadC CNGeocTran s_Stage_C% ROWTYPE;
  6867        t_CCN GeoCodeTra ns_tab     t_CCNGeoCo deTrans_ta ble;
  6868  
  6869       dml_er rors EXCEP TION;
  6870       PRAGMA  EXCEPTION _INIT(dml_ errors, -2 4381);
  6871  
  6872   BEGIN
  6873       gc_sp_ name  := ' LOAD_CCN_G EOCODE_TRA NSMIT_STG' ;
  6874  
  6875       VN_sta rt_time :=  TO_CHAR(S YSDATE,'MM /DD/YY HH2 4:MI:SS');
  6876       DBMS_A PPLICATION _INFO.set_ client_inf o(gc_sp_na me ||' @'| |VN_start_ time);
  6877       VC_log _step := ' BULK '||gc _sp_name|| ' BEGINS';
  6878  
  6879       adr.sf _timer.sta rt_timer;
  6880       -- === ========== ========== ========== ========== ========== ===
  6881       --
  6882       -- Beg in Bulk Co llect Fetc h
  6883       --
  6884       -- === ========== ========== ========== ========== ========== ===
  6885        ADRMG T.Job_Proc ess_Log_Sp (PC_job_na me => CC_M ODULE_NAME ,
  6886                 PD_job_ log_date = > SYSDATE,
  6887                 PC_job_ status =>  'INFORMATI ON - SP '| |gc_sp_nam e|| ' Star ted.',
  6888                 PC_job_ log_messag e => 'Star ted '||VN_ start_time ,
  6889                 pc_text 1 => 'PARM S: - BULK  LIMIT: '||  gc_bulk_l imit||' -  DOP: '||gc _parallel_ dop,
  6890                 PD_date 1 => SYSDA TE
  6891            ) ;
  6892       VN_tot al_count : = 0;
  6893       gc_int eration  : = 0;
  6894  
  6895       DBMS_A PPLICATION _INFO.set_ action('LO AD_GEOCODE _TRANSMIT' );
  6896  
  6897       OPEN L oadCCNGeoc Trans_Stag e_C;
  6898       LOOP
  6899  
  6900          FET CH LoadCCN GeocTrans_ Stage_C BU LK COLLECT  INTO t_CC NGeoCodeTr ans_tab LI MIT gc_bul k_limit;
  6901          EXI T WHEN t_C CNGeoCodeT rans_tab.C OUNT = 0;
  6902          gc_ interation  := gc_int eration +  1;
  6903  
  6904          VC_ log_step : = 'Iter# ' ||gc_inter ation;
  6905          DBM S_APPLICAT ION_INFO.s et_action( 'LOAD_GEOC ODE_TRANSM IT: It#: ' ||gc_inter ation);
  6906  
  6907  
  6908          FOR ALL indx I N t_CCNGeo CodeTrans_ tab.FIRST. . t_CCNGeo CodeTrans_ tab.LAST S AVE EXCEPT IONS
  6909              INSERT  /* + APPEND * / INTO ADR .CCN_GEOCO DE_TRANSMI T_STG
  6910                      (p erson_id,
  6911                      vi sn_geo,
  6912                      ge ocode_stat ion_h_id)
  6913              VALUES (t_ CCNGeoCode Trans_tab( indx).pers on_id,
  6914                      t_ CCNGeoCode Trans_tab( indx).visn _geo,
  6915                      t_ CCNGeoCode Trans_tab( indx).geoc ode_statio n_h_id);
  6916  
  6917           VN _total_cou nt := VN_t otal_count  + SQL%ROW COUNT;
  6918           CO MMIT;
  6919  
  6920         END  LOOP;
  6921  
  6922       CLOSE  LoadCCNGeo cTrans_Sta ge_C;
  6923       ccn_st age_rowcou nt_rec.row count_geot rans := VN _total_cou nt;
  6924  
  6925       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => CC_MO DULE_NAME,
  6926                PD_job_l og_date =>  SYSDATE,
  6927                PC_job_s tatus => ' INFORMATIO N - SP '|| gc_sp_name || ' Compl eted.',
  6928                PC_job_l og_message  => 'Rows  Added: '|| VN_total_c ount||adr. sf_timer.e lapsed_mes sage (' ') ,
  6929                pc_text1  => adr.sf _timer.ela psed_messa ge (gc_sp_ name),
  6930                PD_date1  => SYSDAT E
  6931           );
  6932  
  6933  
  6934      EXCEPTI ON
  6935  
  6936          WHE N dml_erro rs THEN
  6937  
  6938            V N_EXCEPTIO N_CNT := S QL%BULK_EX CEPTIONS.C OUNT;
  6939  
  6940           FO R I IN 1 . . VN_EXCEP TION_CNT L OOP
  6941              VC_error_m sg :=
  6942                  'ERROR  BULK: ' | | VC_log_s tep||' ERR OR# '||I|| ' INTER# ' ||SQL%BULK _EXCEPTION S(I).ERROR _INDEX ||
  6943                  ' PERS ON ID: ' | | t_CCNGeo CodeTrans_ tab(I).per son_id ||' :'||t_CCNG eoCodeTran s_tab(I).g eocode_sta tion_h_id| |
  6944                  ' Erro r Msg: ' | | SQLERRM( -SQL%BULK_ EXCEPTIONS (i).ERROR_ CODE);
  6945  
  6946                  ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => CC_MO DULE_NAME,
  6947                                                PD_job_lo g_date =>  SYSDATE,
  6948                                                PC_job_st atus => 'E RROR EXCEP TION - ROW S FAILED:  '||VN_EXCE PTION_CNT,
  6949                                                PC_job_lo g_message  => VC_erro r_msg,
  6950                                                PC_text1  => 'Rows A dded: '||V N_total_co unt|| ' -  Elapse Tim e: '||adr. sf_timer.e lapsed_mes sage (gc_s p_name),
  6951                                                PD_date1  => SYSDATE
  6952                                 );
  6953  
  6954              END LOOP;
  6955  
  6956         WHEN  OTHERS TH EN
  6957            A DRMGT.Job_ Process_Lo g_Sp(PC_jo b_name =>  CC_MODULE_ NAME,
  6958                   PD_jo b_log_date  => SYSDAT E,
  6959                   PC_jo b_status = > 'ERROR E XEPTION',
  6960                   PC_jo b_log_mess age =>VC_l og_step||' -'|| SUBST R('ERROR -  ' || SQLC ODE||': '| |SQLERRM,1 ,254),
  6961                   PC_te xt1 => 'Ad ded: '||VN _total_cou nt|| 'Elap se Time: ' ||adr.sf_t imer.elaps ed_message  (gc_sp_na me),
  6962                   PD_da te1 => SYS DATE
  6963                  );
  6964  
  6965   END LOAD_G EOCODE_TRA NSMIT_STG;
  6966  
  6967  
  6968   /********* ********** ********** ********** ********** ********** ********** ******
  6969    *
  6970    *    NAME
  6971    *      LO AD_PHONE_S TG
  6972    *
  6973    *    DESC RIPTION
  6974    *      Th is procedu re is to l oad LOAD_P HONE_STG
  6975    *
  6976    ********* ********** ********** ********** ********** ********** ********** ******/
  6977   PROCEDURE  LOAD_PHONE _STG  IS
  6978  
  6979      VN_tota l_count        NUMBER  := 0;
  6980      VN_EXCE PTION_CNT      NUMBER  ;
  6981  
  6982     CURSOR L oadCCNVPho ne_Stage_C  IS
  6983      WITH PH ONE_ALL AS
  6984           (  SELECT --  PHONE_HOME
  6985                       p erson_id,   phone_id,   phone_ty pe_id, pho ne_number
  6986                    FROM  PHONE
  6987                    WHER E phone_ty pe_id  IN  (1504841,  1504844,   1621417)),    -- PHON E HOME, MO BILE, TEMP
  6988              PHONE_HOME  AS
  6989                 (SELECT  *
  6990                   FROM
  6991                     ( S ELECT   pe rson_id,   phone_id,   phone_typ e_id, phon e_number p hone_home,
  6992                     MAX  (phone_id )  OVER (P ARTITION B Y person_i d, phone_t ype_id) ma x_phone_id
  6993                    FROM  PHONE_ALL
  6994                    WHER E phone_ty pe_id = 15 04841)
  6995                     WHE RE phone_i d = max_ph one_id),
  6996              PHONE_MOBI LE AS--PHO NE_MOBILE
  6997                 (SELECT  *
  6998                   FROM
  6999                     (SE LECT  pers on_id,  ph one_id,  p hone_type_ id, phone_ number pho ne_cell,
  7000                     MAX  (phone_id )  OVER (P ARTITION B Y person_i d, phone_t ype_id) ma x_phone_id
  7001                    FROM  PHONE_ALL
  7002                    WHER E phone_ty pe_id = 15 04844)
  7003                     WHE RE phone_i d = max_ph one_id
  7004                 ),
  7005              PHONE_TMP  AS
  7006                (SELECT  *
  7007                   FROM
  7008                     (SE LECT   --P HONE_TEMP
  7009                          person_id ,  phone_i d,  phone_ type_id, p hone_numbe r phone_tm p  ,
  7010                          MAX (phon e_id)  OVE R (PARTITI ON BY pers on_id, pho ne_type_id ) max_phon e_id
  7011                      FR OM PHONE_A LL
  7012                      WH ERE  phone _type_id =  1621417)          -- PHONE_TEMP
  7013                      WH ERE phone_ id = max_p hone_id
  7014                )
  7015              SELECT  p. person_id,   phh.phon e_home HPH ONE_NUM, p hm.phone_c ell CPHONE _NUM, pht. phone_tmp    TPHONE_N UM
  7016              FROM  ADR. CCN_PERSON _SELECTED_ STG p, PHO NE_HOME ph h, PHONE_M OBILE phm,  PHONE_TMP  pht
  7017              WHERE p.PE RSON_ID =  phh.PERSON _ID(+)
  7018              AND   p.PE RSON_ID =  phm.PERSON _ID(+)
  7019              AND   p.PE RSON_ID =  pht.PERSON _ID(+);
  7020  
  7021        TYPE  t_CCNPhone _table IS  TABLE OF L oadCCNVPho ne_Stage_C %ROWTYPE;
  7022        t_CCN Phone_tab     t_CCNPh one_table;
  7023  
  7024       dml_er rors EXCEP TION;
  7025       PRAGMA  EXCEPTION _INIT(dml_ errors, -2 4381);
  7026  
  7027   BEGIN
  7028       gc_sp_ name  := ' LOAD_PHONE _STG';
  7029  
  7030       VN_sta rt_time :=  TO_CHAR(S YSDATE,'MM /DD/YY HH2 4:MI:SS');
  7031       DBMS_A PPLICATION _INFO.set_ client_inf o(gc_sp_na me ||' @'| |VN_start_ time);
  7032       VC_log _step := ' BULK '||gc _sp_name|| ' BEGINS';
  7033  
  7034       adr.sf _timer.sta rt_timer;
  7035       -- === ========== ========== ========== ========== ========== ===
  7036       --
  7037       -- Beg in Bulk Co llect Fetc h
  7038       --
  7039       -- === ========== ========== ========== ========== ========== ===
  7040        ADRMG T.Job_Proc ess_Log_Sp (PC_job_na me => CC_M ODULE_NAME ,
  7041                   PD_jo b_log_date  => SYSDAT E,
  7042                   PC_jo b_status = > 'INFORMA TION - SP  '||gc_sp_n ame|| ' St arted.',
  7043                   PC_jo b_log_mess age =>'Sta rted '||VN _start_tim e,
  7044                   pc_te xt1 => 'PA RMS: - BUL K LIMIT: ' || gc_bulk _limit||'  - DOP: '|| gc_paralle l_dop,
  7045                   PD_da te1 => SYS DATE
  7046            ) ;
  7047       VN_tot al_count : = 0;
  7048       gc_int eration  : = 0;
  7049  
  7050        DBMS_ APPLICATIO N_INFO.set _action(gc _sp_name);
  7051  
  7052       OPEN L oadCCNVPho ne_Stage_C ;
  7053       LOOP
  7054  
  7055          FET CH LoadCCN VPhone_Sta ge_C BULK  COLLECT IN TO t_CCNPh one_tab LI MIT gc_bul k_limit;
  7056          EXI T WHEN t_C CNPhone_ta b.COUNT =  0;
  7057          gc_ interation  := gc_int eration +  1;
  7058  
  7059          VC_ log_step : = 'Iter# ' ||gc_inter ation;
  7060          DBM S_APPLICAT ION_INFO.s et_action( gc_sp_name ||' It#: ' ||gc_inter ation);
  7061  
  7062          FOR ALL indx I N t_CCNPho ne_tab.FIR ST.. t_CCN Phone_tab. LAST SAVE  EXCEPTIONS
  7063              INSERT  /* + APPEND * / INTO ADR .CCN_PHONE _STG
  7064                      (p erson_id,
  7065                      hp hone_num,
  7066                      cp hone_num,
  7067                      tp hone_num)
  7068              VALUES (t_ CCNPhone_t ab(indx).p erson_id,
  7069                      t_ CCNPhone_t ab(indx).h phone_num,
  7070                      t_ CCNPhone_t ab(indx).c phone_num,
  7071                      t_ CCNPhone_t ab(indx).t phone_num) ;
  7072  
  7073           VN _total_cou nt := VN_t otal_count  + SQL%ROW COUNT;
  7074           CO MMIT;
  7075  
  7076       END LO OP;
  7077  
  7078       CLOSE  LoadCCNVPh one_Stage_ C;
  7079       ccn_st age_rowcou nt_rec.row count_phon e := VN_to tal_count;
  7080  
  7081        ADRMG T.Job_Proc ess_Log_Sp (PC_job_na me => CC_M ODULE_NAME ,
  7082                 PD_job_ log_date = > SYSDATE,
  7083                 PC_job_ status =>  'INFORMATI ON - SP '| |gc_sp_nam e|| ' Comp leted.',
  7084                 PC_job_ log_messag e => 'Rows  Added: '| |VN_total_ count||adr .sf_timer. elapsed_me ssage (' ' ),
  7085                 pc_text 1 => adr.s f_timer.el apsed_mess age (gc_sp _name),
  7086                 PD_date 1 => SYSDA TE
  7087           );
  7088  
  7089     EXCEPTIO N
  7090  
  7091        WHEN  dml_errors  THEN
  7092  
  7093           VN _EXCEPTION _CNT := SQ L%BULK_EXC EPTIONS.CO UNT;
  7094  
  7095           FO R I IN 1 . . VN_EXCEP TION_CNT L OOP
  7096              VC_error_m sg :=
  7097                  'ERROR  BULK: ' | | VC_log_s tep||' ERR OR# '||I|| ' INTER# ' ||SQL%BULK _EXCEPTION S(I).ERROR _INDEX ||
  7098                  ' PERS ON ID: ' | | t_CCNPho ne_tab(I). person_id  ||':'||t_C CNPhone_ta b(I).hphon e_num||
  7099                  ' Erro r Msg: ' | | SQLERRM( -SQL%BULK_ EXCEPTIONS (i).ERROR_ CODE);
  7100  
  7101                  ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => CC_MO DULE_NAME,
  7102                                                PD_job_lo g_date =>  SYSDATE,
  7103                                                PC_job_st atus => 'E RROR EXCEP TION - ROW S FAILED:  '||VN_EXCE PTION_CNT,
  7104                                                PC_job_lo g_message  => VC_erro r_msg,
  7105                                                PC_text1  => 'Rows A dded: '||V N_total_co unt|| ' -  Elapse Tim e: '||adr. sf_timer.e lapsed_mes sage (gc_s p_name),
  7106                                                PD_date1  => SYSDATE
  7107                                 );
  7108  
  7109              END LOOP;
  7110  
  7111         WHEN  OTHERS TH EN
  7112              ADRMGT.Job _Process_L og_Sp(PC_j ob_name =>  CC_MODULE _NAME,
  7113                    PD_j ob_log_dat e => SYSDA TE,
  7114                    PC_j ob_status  => 'ERROR  EXEPTION',
  7115                    PC_j ob_log_mes sage =>VC_ log_step|| '-'|| SUBS TR('ERROR  - ' || SQL CODE||': ' ||SQLERRM, 1,254),
  7116                    PC_t ext1 => 'A dded: '||V N_total_co unt|| 'Ela pse Time:  '||adr.sf_ timer.elap sed_messag e (gc_sp_n ame),
  7117                    PD_d ate1 => SY SDATE
  7118                    );
  7119  
  7120   END LOAD_P HONE_STG;
  7121  
  7122  
  7123   /********* ********** ********** ********** ********** ********** ********** ******
  7124    *
  7125    *    NAME
  7126    *      CC NSERVICELO G_PTF
  7127    *
  7128    *    DESC RIPTION
  7129    *      Th is functio n is to di splay usin g PIPE ROW  each reco rd of the  table
  7130    *
  7131    ********* ********** ********** ********** ********** ********** ********** ******/
  7132  
  7133   FUNCTION C CNSERVICEL OG_PTF (da taset_refc ur CCNSERV LOG_SRC_RE FCUR)
  7134       RETURN  CCNSERVIC ELOG_TGT_T AB
  7135           PA RALLEL_ENA BLE(PARTIT ION datase t_refcur B Y HASH (PE RSON_ID))  PIPELINED
  7136    IS
  7137       lc_sp_ name            VARCH AR2(120);
  7138       l_row_ as_object  CCNSERVICE LOG_TGT_RE C;-- :=
  7139           --     ADR.CC NSERVICELO G_TGT_REC( (NULL, NUL L, NULL, N ULL, NULL,  NULL, NUL L, NULL, N ULL, NULL,  NULL, NUL L,
  7140              --      NU LL, NULL,  NULL, NULL , NULL, NU LL,NULL, N ULL, NULL, NULL, NULL , NULL, NU LL, NULL);
  7141  
  7142        l_dat aset_tgt   CCNSERVICE LOG_TGT_TA B;
  7143        ln_co unt NUMBER ;
  7144        VN_EX CEPTION_CN T NUMBER:=  0;
  7145  
  7146    BEGIN
  7147  
  7148       lc_sp_ name := 'C CNSERVICEL OG_PTF';
  7149       VN_sta rt_time :=  TO_CHAR(S YSDATE,'MM /DD/YY HH2 4:MI:SS');
  7150       DBMS_A PPLICATION _INFO.set_ client_inf o(gc_sp_na me ||' @'| |VN_start_ time);
  7151       VC_log _step := ' BULK-PIPE  ROW '||gc_ sp_name||'  BEGINS';
  7152  
  7153      LOOP
  7154  
  7155         FETC H dataset_ refcur BUL K COLLECT  INTO l_dat aset_tgt L IMIT gc_bu lk_limit;
  7156         ln_c ount := l_ dataset_tg t.COUNT ;
  7157         EXIT  WHEN l_da taset_tgt. COUNT = 0;
  7158  
  7159         VC_l og_step :=  'ITER# '| |gc_intera tion;
  7160  
  7161         DBMS _APPLICATI ON_INFO.se t_action(' CCNSERVICE LOG_PTF: I TER#: '||g c_interati on);
  7162  
  7163         FOR  idx IN 1 . . l_datase t_tgt.COUN T  LOOP
  7164  
  7165           l_ row_as_obj ect.SERVIC E_LOG_STAT _ID     :=  l_dataset _tgt(idx). SERVICE_LO G_STAT_ID;
  7166           l_ row_as_obj ect.PERSON _ID                :=  l_dataset _tgt(idx). PERSON_ID;
  7167           l_ row_as_obj ect.FIRST_ NAME               :=  l_dataset _tgt(idx). FIRST_NAME ;
  7168           l_ row_as_obj ect.LAST_N AME                :=  l_dataset _tgt(idx). LAST_NAME;
  7169           l_ row_as_obj ect.MID_NA ME                 :=  l_dataset _tgt(idx). MID_NAME;
  7170           l_ row_as_obj ect.SUFFIX                    :=  l_dataset _tgt(idx). SUFFIX;
  7171            l _row_as_ob ject.DATE_ OF_BIRTH           :=  l_dataset _tgt(idx). DATE_OF_BI RTH;
  7172           l_ row_as_obj ect.DATE_O F_BIRTH_TX T       :=  l_dataset _tgt(idx). DATE_OF_BI RTH_TXT;
  7173           l_ row_as_obj ect.DATE_O F_DEATH            :=  l_dataset _tgt(idx). DATE_OF_DE ATH;
  7174           l_ row_as_obj ect.BIRTH_ SEX                :=  l_dataset _tgt(idx). BIRTH_SEX;
  7175           l_ row_as_obj ect.MAILIN G_ADDRESS_ H_ID    :=  l_dataset _tgt(idx). MAILING_AD DRESS_H_ID ;
  7176           l_ row_as_obj ect.EMAIL                     :=  l_dataset _tgt(idx). EMAIL;
  7177            l _row_as_ob ject.VCELI GIBILITY_H _ID     :=  l_dataset _tgt(idx). VCELIGIBIL ITY_H_ID;
  7178           l_ row_as_obj ect.HPHONE _NUM               :=  l_dataset _tgt(idx). HPHONE_NUM ;
  7179           l_ row_as_obj ect.CPHONE _NUM               :=  l_dataset _tgt(idx). CPHONE_NUM ;
  7180           l_ row_as_obj ect.TPHONE _NUM               :=  l_dataset _tgt(idx). TPHONE_NUM ;
  7181           l_ row_as_obj ect.VISN_G EO                 :=  l_dataset _tgt(idx). VISN_GEO;
  7182           l_ row_as_obj ect.RESI_A DDRESS_H_I D       :=  l_dataset _tgt(idx). RESI_ADDRE SS_H_ID;
  7183           l_ row_as_obj ect.PREFER RED_FACILI TY_H_ID :=  l_dataset _tgt(idx). PREFERRED_ FACILITY_H _ID;
  7184           l_ row_as_obj ect.GEOCOD E_STATION_ H_ID    :=  l_dataset _tgt(idx). GEOCODE_ST ATION_H_ID ;
  7185           l_ row_as_obj ect.ADDR_R ECORD_MODI FIED_DATE: = l_datase t_tgt(idx) .ADDR_RECO RD_MODIFIE D_DATE;
  7186           l_ row_as_obj ect.VCELIG BTY_RECORD _MODIFIED_ DATE  := l _dataset_t gt(idx).VC ELIGBTY_RE CORD_MODIF IED_DATE;
  7187           l_ row_as_obj ect.SVL_RE CORD_MODIF IED_DATE         := l _dataset_t gt(idx).SV L_RECORD_M ODIFIED_DA TE;
  7188           l_ row_as_obj ect.VCE                              := l_d ataset_tgt (idx).VCE;
  7189           l_ row_as_obj ect.PRIORI TY_GROUP                  := l_d ataset_tgt (idx).PRIO RITY_GROUP ;
  7190           l_ row_as_obj ect.PRIORI TY_GROUP_E FFECT_DATE _TXT := l_ dataset_tg t(idx).PRI ORITY_GROU P_EFFECT_D ATE_TXT;
  7191  
  7192           PI PE ROW (l_ row_as_obj ect);
  7193         END  LOOP;
  7194  
  7195       END LO OP;
  7196      CLOSE d ataset_ref cur;
  7197  
  7198       RETURN ;
  7199  
  7200    EXCEPTION
  7201         WHEN  NO_DATA_N EEDED
  7202            T HEN RETURN ;
  7203  
  7204         WHEN  OTHERS TH EN
  7205           AD RMGT.Job_P rocess_Log _Sp(PC_job _name => C C_MODULE_N AME,
  7206                   PD_jo b_log_date  => SYSDAT E,
  7207                   PC_jo b_status = > 'ERROR E XEPTION',
  7208                    PC_j ob_log_mes sage =>VC_ log_step|| '-'|| SUBS TR('ERROR  - ' || SQL CODE||': ' ||SQLERRM, 1,254),
  7209                    PC_t ext1 => 'A dded: '||l n_count||  'Elapse Ti me: '||adr .sf_timer. elapsed_me ssage (gc_ sp_name),
  7210                    PD_d ate1 => SY SDATE
  7211                    );
  7212            R ETURN;
  7213    END CCNSE RVICELOG_P TF;
  7214  
  7215   /********* ********** ********** ********** ********** ********** ********** ******
  7216    *
  7217    *    NAME
  7218    *      LO AD_SRV_LOG _DATA
  7219    *
  7220    *    DESC RIPTION
  7221    *      Th is procedu re is to a dd data in to CCN_SER VICE_LOG t able when
  7222    *      se rvice_log_ stat_id =  0
  7223    *
  7224    ********* ********** ********** ********** ********** ********** ********** ******/
  7225   PROCEDURE  LOAD_SRV_L OG_DATA IS
  7226  
  7227      VN_tota l_count     NUMBER :=  0;
  7228      VN_tota l_part_cou nt  NUMBER := 0;
  7229      VN_EXCE PTION_CNT   NUMBER :=  0;
  7230  
  7231  
  7232     -- ln_pa rtition_nu mber  NUMB ER:= 1;
  7233  
  7234      CURSOR  SRVLOG_ADD ED_C  IS
  7235         SELE CT *
  7236           FR OM TABLE ( CCN_SRV_LO AD_PKG.CCN SERVICELOG _PTF(CURSO R(SELECT / *+ PARALLE L(v1, 4) * / * FROM A DR.CCN_SER VICE_LOG_L OAD_VW v1  )))
  7237           WH ERE servic e_log_stat _id = 0;   -- new row s will be  added to t he ccn_ser vice_log t able
  7238  
  7239       TYPE t _servicelo g_table is  table of  SRVLOG_ADD ED_C%ROWTY PE;
  7240        t_ser vicelog_ta b t_servic elog_table ;
  7241  
  7242      dml_err ors EXCEPT ION;
  7243      PRAGMA  EXCEPTION_ INIT(dml_e rrors, -24 381);
  7244  
  7245    BEGIN
  7246  
  7247       gc_sp_ name  := ' LOAD_SRV_L OG_DATA';
  7248       VC_log _step := ' BULK '||gc _sp_name|| ' BEGINS';
  7249  
  7250       adr.sf _timer.sta rt_timer;
  7251        -- == ========== ========== ========== ========== ========== ====
  7252       --
  7253       -- Beg in Bulk Co llect Fetc h
  7254       --
  7255       -- === ========== ========== ========== ========== ========== ===
  7256       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => CC_MO DULE_NAME,
  7257                    PD_j ob_log_dat e => SYSDA TE,
  7258                    PC_j ob_status  => 'INFORM ATION - SP  '||gc_sp_ name|| ' S tarted.',
  7259                    PC_j ob_log_mes sage => 'S tarted '|| VN_start_t ime,
  7260                    pc_t ext1 => 'P ARMS: - BU LK LIMIT:  '|| gc_bul k_limit||'  - DOP: '| |gc_parall el_dop,
  7261                    PD_d ate1 => SY SDATE
  7262            ) ;
  7263  
  7264       gc_int eration :=  0;
  7265  
  7266       FOR I  IN 1..15   --  15 PAR TITIONS: p rocess is  looping a  partition  by a parti tion
  7267       LOOP
  7268  
  7269           VN _total_cou nt  := 0;
  7270           gc _interatio n    := 0;
  7271           VN _total_par t_count :=  0;
  7272  
  7273    --dbms_ou tput.put_l ine('step1  '||gc_sp_ name);
  7274  
  7275  
  7276            - - Build a  dynamic vi ew based o n a each p artition
  7277           BU ILD_SERVIC ELOG_VW(I) ;
  7278  
  7279           --  Process r ows by a p artition a t a time
  7280           OP EN SRVLOG_ ADDED_C;
  7281           LO OP
  7282  
  7283                FETCH SR VLOG_ADDED _C BULK CO LLECT INTO  t_service log_tab LI MIT gc_bul k_limit;
  7284                EXIT WHE N t_servic elog_tab.c ount = 0;
  7285  
  7286                gc_inter ation := g c_interati on + 1;
  7287  
  7288                VC_log_s tep := 'Pa rt# '||I|| ' - ITER#  '||gc_inte ration;
  7289                DBMS_APP LICATION_I NFO.set_ac tion(gc_sp _name||' P art# '||I| |'-ITER#:  '||gc_inte ration);
  7290  
  7291                ADRMGT.J ob_Process _Log_Sp(PC _job_name  => CC_MODU LE_NAME,
  7292                         PD_job_log _date => S YSDATE,
  7293                         PC_job_sta tus => 'IN FORMATION  - '||gc_sp _name|| '  Started (' ||PERSONSE L_TAB(I)|| ')',
  7294                         PC_job_log _message = > 'PARTITI ON NAME:'| |PERSONSEL _TAB(I)||  ' - Starte d '||TO_CH AR(SYSDATE ,'DDMMYYY: HH24:MI'),
  7295                         pc_text1 = > 'PARMS:  - BULK LIM IT: '|| gc _bulk_limi t|| ' - IT ER#: '||gc _interatio n,
  7296                         PD_date1 = > SYSDATE
  7297                    );
  7298  
  7299                FORALL i dx IN t_se rvicelog_t ab.FIRST..  t_service log_tab.LA ST SAVE EX CEPTIONS
  7300                    INSE RT /*+ APP END */ INT O CCN_SERV ICE_LOG
  7301                         (ccn_servi ce_log_id,
  7302                         person_id,
  7303                         FIRST_NAME ,
  7304                         LAST_NAME,
  7305                         MID_NAME,
  7306                         SUFFIX,
  7307                         DATE_OF_BI RTH_TXT,
  7308                         DATE_OF_BI RTH,
  7309                         DATE_OF_DE ATH,
  7310                         BIRTH_SEX,
  7311                         EMAIL,
  7312                         HPHONE_NUM ,
  7313                         CPHONE_NUM ,
  7314                         TPHONE_NUM ,
  7315                         VISN_GEO,
  7316                         VCELIGIBIL ITY_H_ID,
  7317                         TRANSMISSI ON_DATE,
  7318                         MAILING_AD DRESS_H_ID ,
  7319                         RESI_ADDRE SS_H_ID,
  7320                         PREFERRED_ FACILITY_H _ID,
  7321                         GEOCODE_ST ATION_H_ID ,
  7322                         TRANSMISSI ON_TYPE_ID ,
  7323                         TRANSMISSI ON_STTYPE_ ID,
  7324                         RECORD_CRE ATED_BY,
  7325                         RECORD_CRE ATED_DATE,
  7326                         RECORD_MOD IFIED_BY,
  7327                         RECORD_MOD IFIED_DATE ,
  7328                         RECORD_MOD IFIED_COUN T,
  7329                         VCE,
  7330                         PRIORITY_G ROUP,
  7331                         PRIORITY_G ROUP_EFFEC T_DATE_TXT )
  7332                    VALU ES (CCN_SE RVICE_LOG_ S.nextval,
  7333                         t_servicel og_tab(idx ).person_i d,
  7334                         t_servicel og_tab(idx ).FIRST_NA ME,
  7335                         t_servicel og_tab(idx ).LAST_NAM E,
  7336                         t_servicel og_tab(idx ).MID_NAME ,
  7337                         t_servicel og_tab(idx ).SUFFIX,
  7338                         t_servicel og_tab(idx ).DATE_OF_ BIRTH_TXT,
  7339                         t_servicel og_tab(idx ).DATE_OF_ BIRTH,
  7340                         t_servicel og_tab(idx ).DATE_OF_ DEATH,
  7341                         t_servicel og_tab(idx ).BIRTH_SE X,
  7342                         t_servicel og_tab(idx ).EMAIL,
  7343                         t_servicel og_tab(idx ).HPHONE_N UM,
  7344                         t_servicel og_tab(idx ).CPHONE_N UM,
  7345                         t_servicel og_tab(idx ).TPHONE_N UM,
  7346                         TO_NUMBER( t_servicel og_tab(idx ).VISN_GEO ),
  7347                         t_servicel og_tab(idx ).VCELIGIB ILITY_H_ID ,
  7348                         SYSDATE,
  7349                         t_servicel og_tab(idx ).MAILING_ ADDRESS_H_ ID,
  7350                         t_servicel og_tab(idx ).RESI_ADD RESS_H_ID,
  7351                         t_servicel og_tab(idx ).PREFERRE D_FACILITY _H_ID,
  7352                         t_servicel og_tab(idx ).GEOCODE_ STATION_H_ ID,
  7353                         1,
  7354                         2000590,
  7355                         gc_record_ create_by,
  7356                         SYSDATE,
  7357                         gc_record_ create_by,
  7358                         SYSDATE,
  7359                         0,
  7360                         t_servicel og_tab(idx ).VCE,
  7361                         t_servicel og_tab(idx ).PRIORITY _GROUP,
  7362                         t_servicel og_tab(idx ).PRIORITY _GROUP_EFF ECT_DATE_T XT);
  7363  
  7364                    VN_t otal_count  := VN_tot al_count +  SQL%ROWCO UNT;
  7365                    VN_t otal_part_ count := V N_total_pa rt_count +  VN_total_ count;
  7366  
  7367   --dbms_out put.put_li ne('total  cnt: '||VN _total_cou nt||' - PA RT CNT: '| |VN_total_ part_count );
  7368                    COMM IT;
  7369  
  7370                END LOOP ;
  7371  
  7372  
  7373                -- Initi alize arra y
  7374                FOR IDX  IN 1.. t_s ervicelog_ tab.COUNT  LOOP
  7375  
  7376                         t_servicel og_tab(idx ).person_i d          := NULL;
  7377                         t_servicel og_tab(idx ).FIRST_NA ME         := NULL;
  7378                         t_servicel og_tab(idx ).LAST_NAM E          := NULL;
  7379                         t_servicel og_tab(idx ).MID_NAME            := NULL;
  7380                         t_servicel og_tab(idx ).SUFFIX              := NULL;
  7381                         t_servicel og_tab(idx ).DATE_OF_ BIRTH_TXT  := NULL;
  7382                         t_servicel og_tab(idx ).DATE_OF_ BIRTH      := NULL;
  7383                         t_servicel og_tab(idx ).DATE_OF_ DEATH      := NULL;
  7384                         t_servicel og_tab(idx ).BIRTH_SE X          := NULL;
  7385                         t_servicel og_tab(idx ).EMAIL               := NULL;
  7386                         t_servicel og_tab(idx ).HPHONE_N UM         := NULL;
  7387                         t_servicel og_tab(idx ).CPHONE_N UM         := NULL;
  7388                         t_servicel og_tab(idx ).TPHONE_N UM         := NULL;
  7389                         t_servicel og_tab(idx ).VISN_GEO            := NULL;
  7390                         t_servicel og_tab(idx ).VCELIGIB ILITY_H_ID     := NUL L;
  7391                         t_servicel og_tab(idx ).MAILING_ ADDRESS_H_ ID  := NUL L;
  7392                         t_servicel og_tab(idx ).RESI_ADD RESS_H_ID      := NUL L;
  7393                         t_servicel og_tab(idx ).PREFERRE D_FACILITY _H_ID := N ULL;
  7394                         t_servicel og_tab(idx ).GEOCODE_ STATION_H_ ID  := NUL L;
  7395                         t_servicel og_tab(idx ).VCE                     := NUL L;
  7396                         t_servicel og_tab(idx ).PRIORITY _GROUP         := NUL L;
  7397                         t_servicel og_tab(idx ).PRIORITY _GROUP_EFF ECT_DATE_T XT:= NULL;
  7398  
  7399                END LOOP ;
  7400  
  7401                CLOSE SR VLOG_ADDED _C;
  7402  
  7403                 ADRMGT. Job_Proces s_Log_Sp(P C_job_name  => CC_MOD ULE_NAME,
  7404                    PD_j ob_log_dat e => SYSDA TE,
  7405                    PC_j ob_status  => '*INFOR MATION - P ARTITION C ompleted.' ,
  7406                    PC_j ob_log_mes sage => 'P ARTITION:  '||PERSONS EL_TAB(I)| |' - Rows  Added: '|| VN_total_p art_count| |adr.sf_ti mer.elapse d_message  (' '),
  7407                    pc_t ext1 => 'T otal ITER# : '||gc_in teration|| ' - Elapse d: '|| adr .sf_timer. elapsed_ti me,
  7408                    PD_d ate1 => SY SDATE
  7409                    );
  7410  
  7411                VN_grand _total_cou nt := VN_g rand_total _count + V N_total_pa rt_count;
  7412    --  dbms_ output.put _line('gra nd total c nt: '||VN_ grand_tota l_count||'  - PART CN T: '||VN_t otal_part_ count);
  7413       END LO OP;
  7414  
  7415       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => CC_MO DULE_NAME,
  7416               PD_job_lo g_date =>  SYSDATE,
  7417               PC_job_st atus => 'I NFORMATION  - SP '||g c_sp_name| | ' Comple ted.',
  7418               PC_job_lo g_message  => 'Total  Rows Added : '||VN_gr and_total_ count||adr .sf_timer. elapsed_me ssage (' ' ),
  7419               pc_text1  => adr.sf_ timer.elap sed_messag e (gc_sp_n ame),
  7420               PD_date1  => SYSDATE
  7421           );
  7422  
  7423      EXCEPTI ON
  7424  
  7425         WHEN  dml_error s THEN
  7426  
  7427            V N_EXCEPTIO N_CNT := S QL%BULK_EX CEPTIONS.C OUNT;
  7428  
  7429           FO R I IN 1 . . VN_EXCEP TION_CNT L OOP
  7430              VC_error_m sg :=
  7431                  'ERROR  BULK: ' | | VC_log_s tep||' ERR OR# '||I|| ' INTER# ' ||SQL%BULK _EXCEPTION S(I).ERROR _INDEX ||
  7432                  ' PERS ON ID: ' | | t_servic elog_tab(I ).person_i d ||':'||t _servicelo g_tab(I).V CELIGIBILI TY_H_ID||
  7433                  ' Erro r Msg: ' | | SQLERRM( -SQL%BULK_ EXCEPTIONS (i).ERROR_ CODE);
  7434  
  7435                  ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => CC_MO DULE_NAME,
  7436                                                PD_job_lo g_date =>  SYSDATE,
  7437                                                PC_job_st atus => 'E RROR EXCEP TION - ROW S FAILED:  '||VN_EXCE PTION_CNT,
  7438                                                PC_job_lo g_message  => VC_erro r_msg,
  7439                                                PC_text1  => 'Rows A dded: '||V N_grand_to tal_count| | ' - Elap se Time: ' ||adr.sf_t imer.elaps ed_message  (gc_sp_na me),
  7440                                                PD_date1  => SYSDATE
  7441                                 );
  7442  
  7443              END LOOP;
  7444  
  7445         WHEN  OTHERS TH EN
  7446           AD RMGT.Job_P rocess_Log _Sp(PC_job _name => C C_MODULE_N AME,
  7447                   PD_jo b_log_date  => SYSDAT E,
  7448                   PC_jo b_status = > 'ERROR E XEPTION',
  7449                   PC_jo b_log_mess age =>VC_l og_step||' -'|| SUBST R('ERROR -  ' || SQLC ODE||': '| |SQLERRM,1 ,254),
  7450                   PC_te xt1 => 'Ad ded: '||VN _grand_tot al_count||  'Elapse T ime: '||ad r.sf_timer .elapsed_m essage (gc _sp_name),
  7451                   PD_da te1 => SYS DATE
  7452                  );
  7453  
  7454   END LOAD_S RV_LOG_DAT A;
  7455  
  7456   /********* ********** ********** ********** ********** ********** ********** ******
  7457    *
  7458    *    NAME
  7459    *      UP DATE_SRV_L OG_DATA
  7460    *
  7461    *    DESC RIPTION
  7462    *      Th is procedu re is to u pdate CCN_ SERVICE_LO G table wh en
  7463    *      se rvice_log_ stat_id =  1
  7464    *
  7465    ********* ********** ********** ********** ********** ********** ********** ******/
  7466   PROCEDURE  UPDATE_SRV _LOG_DATA  IS
  7467  
  7468      VN_tota l_count        NUMBER  := 0;
  7469      VN_tota l_part_cou nt  NUMBER  := 0;
  7470      VN_EXCE PTION_CNT      NUMBER  := 0;
  7471  
  7472  
  7473      CURSOR  SRVLOG_UPD ATED_C IS
  7474         SELE CT *
  7475           FR OM TABLE ( CCN_SRV_LO AD_PKG.CCN SERVICELOG _PTF(CURSO R(SELECT / *+ PARALLE L(v1, 4) * / * FROM A DR.CCN_SER VICE_LOG_L OAD_VW v1  )))
  7476           WH ERE servic e_log_stat _id > 0;   -- existin g rows wil l be UPDAT ED to the  ccn_servic e_log tabl e
  7477  
  7478       TYPE t _servicelo g_updtable  is table  of SRVLOG_ UPDATED_C% ROWTYPE;
  7479        t_ser vicelog_up dtab t_ser vicelog_up dtable;
  7480  
  7481       dml_er rors EXCEP TION;
  7482       PRAGMA  EXCEPTION _INIT(dml_ errors, -2 4381);
  7483  
  7484    BEGIN
  7485  
  7486       gc_sp_ name  := ' UPDATE_SRV _LOG_DATA' ;
  7487       VC_log _step := ' BULK '||gc _sp_name|| ' BEGINS';
  7488  
  7489       adr.sf _timer.sta rt_timer;
  7490        -- == ========== ========== ========== ========== ========== ====
  7491       --
  7492       -- Beg in Bulk Co llect Fetc h
  7493       --
  7494       -- === ========== ========== ========== ========== ========== ===
  7495       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => CC_MO DULE_NAME,
  7496                    PD_j ob_log_dat e => SYSDA TE,
  7497                    PC_j ob_status  => 'INFORM ATION - SP  '||gc_sp_ name|| ' S tarted.',
  7498                    PC_j ob_log_mes sage => 'S tarted '|| VN_start_t ime,
  7499                    pc_t ext1 => 'P ARMS: - BU LK LIMIT:  '|| gc_bul k_limit||'  - DOP: '| |gc_parall el_dop,
  7500                    PD_d ate1 => SY SDATE
  7501            ) ;
  7502       gc_int eration :=  0;
  7503       VN_gra nd_total_c ount := 0;
  7504  
  7505       FOR I  IN 1..15   --  15 PAR TITIONS: p rocess is  looping a  partition  by a parti tion
  7506       LOOP
  7507  
  7508           VN _total_cou nt  := 0;
  7509           gc _interatio n   := 0;
  7510           VN _total_par t_count :=  0;
  7511  
  7512            - - Build a  dynamic vi ew based o n a each p artition
  7513           BU ILD_SERVIC ELOG_VW(I) ;
  7514  
  7515           --  Process r ows by a p artition a t a time
  7516           OP EN SRVLOG_ UPDATED_C;
  7517           LO OP
  7518  
  7519                DBMS_APP LICATION_I NFO.set_cl ient_info( gc_sp_name  ||' '||VC _log_step) ;
  7520                FETCH SR VLOG_UPDAT ED_C BULK  COLLECT IN TO t_servi celog_updt ab LIMIT g c_bulk_lim it;
  7521                EXIT WHE N t_servic elog_updta b.count =  0;
  7522  
  7523                gc_inter ation := g c_interati on + 1;
  7524                VC_log_s tep := 'Pa rt# '||I|| ' - ITER#  '||gc_inte ration;
  7525                DBMS_APP LICATION_I NFO.set_ac tion(gc_sp _name||' P art# '||I| |'-ITER#:  '||gc_inte ration);
  7526  
  7527                ADRMGT.J ob_Process _Log_Sp(PC _job_name  => CC_MODU LE_NAME,
  7528                         PD_job_log _date => S YSDATE,
  7529                         PC_job_sta tus => 'IN FORMATION  - '||gc_sp _name|| '  Started (' ||PERSONSE L_TAB(I)|| ')',
  7530                         PC_job_log _message = > 'PARTITI ON NAME:'| |PERSONSEL _TAB(I)||  ' - Starte d '||TO_CH AR(SYSDATE ,'DDMMYYY: HH24:MI'),
  7531                         pc_text1 = > 'PARMS:  - BULK LIM IT: '|| gc _bulk_limi t|| ' - IT ER#: '||gc _interatio n,
  7532                         PD_date1 = > SYSDATE
  7533                    );
  7534  
  7535                FORALL i dx IN t_se rvicelog_u pdtab.FIRS T.. t_serv icelog_upd tab.LAST S AVE EXCEPT IONS
  7536  
  7537                UPDATE C CN_SERVICE _LOG
  7538                SET FIRS T_NAME           = t_ servicelog _updtab(id x).FIRST_N AME,
  7539                    LAST _NAME            = t_ servicelog _updtab(id x).LAST_NA ME,
  7540                    MID_ NAME             = t_ servicelog _updtab(id x).MID_NAM E,
  7541                    SUFF IX               = t_ servicelog _updtab(id x).SUFFIX,
  7542                    DATE _OF_BIRTH_ TXT   = t_ servicelog _updtab(id x).DATE_OF _BIRTH_TXT ,
  7543                    DATE _OF_BIRTH        = t_ servicelog _updtab(id x).DATE_OF _BIRTH,
  7544                    DATE _OF_DEATH        = t_ servicelog _updtab(id x).DATE_OF _DEATH,
  7545                    BIRT H_SEX            = t_ servicelog _updtab(id x).BIRTH_S EX,
  7546                    EMAI L                = t_ servicelog _updtab(id x).EMAIL,
  7547                    HPHO NE_NUM           = t_ servicelog _updtab(id x).HPHONE_ NUM,
  7548                    CPHO NE_NUM           = t_ servicelog _updtab(id x).CPHONE_ NUM,
  7549                    TPHO NE_NUM           = t_ servicelog _updtab(id x).TPHONE_ NUM,
  7550                    VISN _GEO             = t_ servicelog _updtab(id x).VISN_GE O,
  7551                    VCEL IGIBILITY_ H_ID  = t_ servicelog _updtab(id x).VCELIGI BILITY_H_I D,
  7552                    MAIL ING_ADDRES S_H_ID= t_ servicelog _updtab(id x).MAILING _ADDRESS_H _ID,
  7553                    RESI _ADDRESS_H _ID   = t_ servicelog _updtab(id x).RESI_AD DRESS_H_ID ,
  7554                    PREF ERRED_FACI LITY_H_ID  = t_servic elog_updta b(idx).PRE FERRED_FAC ILITY_H_ID ,
  7555                    GEOC ODE_STATIO N_H_ID     = t_servic elog_updta b(idx).GEO CODE_STATI ON_H_ID,
  7556                    RECO RD_CREATED _BY        = gc_recor d_create_b y,
  7557                    RECO RD_CREATED _DATE      = SYSDATE,
  7558                    RECO RD_MODIFIE D_BY       = gc_recor d_create_b y,
  7559                    RECO RD_MODIFIE D_DATE     = SYSDATE,
  7560                    RECO RD_MODIFIE D_COUNT     = RECORD_ MODIFIED_C OUNT+1,
  7561                    VCE                                    = t_servi celog_updt ab(idx).VC E,
  7562                    PRIO RITY_GROUP                       = t_servic elog_updta b(idx).PRI ORITY_GROU P,
  7563                    PRIO RITY_GROUP _EFFECT_DA TE_TXT     = t_servic elog_updta b(idx).PRI ORITY_GROU P_EFFECT_D ATE_TXT
  7564                WHERE cc n_service_ log_id = t _servicelo g_updtab(i dx).servic e_log_stat _id
  7565                AND   RE CORD_MODIF IED_DATE <  GREATEST( t_servicel og_updtab( idx).ADDR_ RECORD_MOD IFIED_DATE , t_servic elog_updta b(idx).VCE LIGBTY_REC ORD_MODIFI ED_DATE);
  7566  
  7567                VN_total _count :=  VN_total_c ount + SQL %ROWCOUNT;
  7568                VN_total _part_coun t := VN_to tal_part_c ount + VN_ total_coun t;
  7569  
  7570        --    dbms_outpu t.put_line ('UPD:tota l cnt: '|| VN_total_c ount||' -  PART CNT:  '||VN_tota l_part_cou nt);
  7571           CO MMIT;
  7572  
  7573           EN D LOOP;
  7574  
  7575           --  Initializ e array
  7576           FO R IDX IN 1 .. t_servi celog_updt ab.COUNT L OOP
  7577                t_servic elog_updta b(idx).per son_id          := NU LL;
  7578                t_servic elog_updta b(idx).FIR ST_NAME         := NU LL;
  7579                t_servic elog_updta b(idx).LAS T_NAME          := NU LL;
  7580                t_servic elog_updta b(idx).MID _NAME           := NU LL;
  7581                t_servic elog_updta b(idx).SUF FIX             := NU LL;
  7582                t_servic elog_updta b(idx).DAT E_OF_BIRTH _TXT := NU LL;
  7583                t_servic elog_updta b(idx).DAT E_OF_BIRTH      := NU LL;
  7584                t_servic elog_updta b(idx).DAT E_OF_DEATH      := NU LL;
  7585                t_servic elog_updta b(idx).BIR TH_SEX          := NU LL;
  7586                t_servic elog_updta b(idx).EMA IL              := NU LL;
  7587                t_servic elog_updta b(idx).HPH ONE_NUM         := NU LL;
  7588                t_servic elog_updta b(idx).CPH ONE_NUM         := NU LL;
  7589                t_servic elog_updta b(idx).TPH ONE_NUM         := NU LL;
  7590                t_servic elog_updta b(idx).VIS N_GEO           := NU LL;
  7591                t_servic elog_updta b(idx).VCE LIGIBILITY _H_ID    : = NULL;
  7592                t_servic elog_updta b(idx).MAI LING_ADDRE SS_H_ID  : = NULL;
  7593                t_servic elog_updta b(idx).RES I_ADDRESS_ H_ID     : = NULL;
  7594                t_servic elog_updta b(idx).PRE FERRED_FAC ILITY_H_ID  := NULL;
  7595                t_servic elog_updta b(idx).GEO CODE_STATI ON_H_ID  : = NULL;
  7596                t_servic elog_updta b(idx).VCE                     : = NULL;
  7597                t_servic elog_updta b(idx).PRI ORITY_GROU P        : = NULL;
  7598                t_servic elog_updta b(idx).PRI ORITY_GROU P_EFFECT_D ATE_TXT:=  NULL;
  7599  
  7600           EN D LOOP;
  7601  
  7602           CL OSE SRVLOG _UPDATED_C ;
  7603  
  7604  
  7605           AD RMGT.Job_P rocess_Log _Sp(PC_job _name => C C_MODULE_N AME,
  7606                    PD_j ob_log_dat e => SYSDA TE,
  7607                    PC_j ob_status  => '*INFOR MATION - P ARTITION C ompleted.' ,
  7608                    PC_j ob_log_mes sage => 'P ARTITION:  '||PERSONS EL_TAB(I)| |' - Rows  Added: '|| VN_total_p art_count| |adr.sf_ti mer.elapse d_message  (' '),
  7609                    pc_t ext1 => 'T otal ITER# : '||gc_in teration|| ' - Elapse d: '|| adr .sf_timer. elapsed_ti me,
  7610                    PD_d ate1 => SY SDATE
  7611                    );
  7612  
  7613                VN_grand _total_cou nt := VN_g rand_total _count + V N_total_pa rt_count;
  7614     -- dbms_ output.put _line('UPD : grand to tal cnt: ' ||VN_grand _total_cou nt||' - PA RT CNT: '| |VN_total_ part_count );
  7615  
  7616       END LO OP;
  7617  
  7618       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => CC_MO DULE_NAME,
  7619               PD_job_lo g_date =>  SYSDATE,
  7620               PC_job_st atus => 'I NFORMATION  - SP '||g c_sp_name| | ' Comple ted.',
  7621               PC_job_lo g_message  => 'Total  Rows Added : '||VN_gr and_total_ count||adr .sf_timer. elapsed_me ssage (' ' ),
  7622               pc_text1  => adr.sf_ timer.elap sed_messag e (gc_sp_n ame),
  7623               PD_date1  => SYSDATE
  7624           );
  7625  
  7626      EXCEPTI ON
  7627  
  7628         WHEN  dml_error s THEN
  7629  
  7630            V N_EXCEPTIO N_CNT := S QL%BULK_EX CEPTIONS.C OUNT;
  7631  
  7632           FO R I IN 1 . . VN_EXCEP TION_CNT L OOP
  7633              VC_error_m sg :=
  7634                  'ERROR  BULK: ' | | VC_log_s tep||' ERR OR# '||I|| ' INTER# ' ||SQL%BULK _EXCEPTION S(I).ERROR _INDEX ||
  7635                  ' PERS ON ID: ' | | t_servic elog_updta b(I).perso n_id ||':' ||t_servic elog_updta b(I).VCELI GIBILITY_H _ID||
  7636                  ' Erro r Msg: ' | | SQLERRM( -SQL%BULK_ EXCEPTIONS (i).ERROR_ CODE);
  7637  
  7638                  ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => CC_MO DULE_NAME,
  7639                                                PD_job_lo g_date =>  SYSDATE,
  7640                                                PC_job_st atus => 'E RROR EXCEP TION - ROW S FAILED:  '||VN_EXCE PTION_CNT,
  7641                                                PC_job_lo g_message  => VC_erro r_msg,
  7642                                                PC_text1  => 'Rows A dded: '||V N_total_co unt|| ' -  Elapse Tim e: '||adr. sf_timer.e lapsed_mes sage (gc_s p_name),
  7643                                                PD_date1  => SYSDATE
  7644                                 );
  7645  
  7646              END LOOP;
  7647  
  7648         WHEN  OTHERS TH EN
  7649           AD RMGT.Job_P rocess_Log _Sp(PC_job _name => C C_MODULE_N AME,
  7650                   PD_jo b_log_date  => SYSDAT E,
  7651                   PC_jo b_status = > 'ERROR E XEPTION',
  7652                   PC_jo b_log_mess age =>VC_l og_step||' -'|| SUBST R('ERROR -  ' || SQLC ODE||': '| |SQLERRM,1 ,254),
  7653                   PC_te xt1 => 'Ad ded: '||VN _total_cou nt|| 'Elap se Time: ' ||adr.sf_t imer.elaps ed_message  (gc_sp_na me),
  7654                   PD_da te1 => SYS DATE
  7655                  );
  7656  
  7657   END UPDATE _SRV_LOG_D ATA;
  7658  
  7659   /********* ********** ********** ********** ********** ********** ********** ******
  7660    *
  7661    *    NAME
  7662    *      PR OCESS_CCN_ SERVICE_LO G_MAIN
  7663    *
  7664    *    DESC RIPTION
  7665    *      Th is procedu re is the  main SP to  load data  into CCN_ SERVICE_LO G
  7666    *
  7667    ********* ********** ********** ********** ********** ********** ********** ******/
  7668   PROCEDURE  PROCESS_CC N_SERVICE_ LOG_MAIN   IS
  7669  
  7670      lc_sp_n ame                     VARCHAR2 (80) := 'P ROCESS_CCN _SERVICE_L OG_MAIN';
  7671      VN_tota l_rows_add ed               NUMB ER := 0;
  7672      VN_tota l_rows_upd ated         NUMBER : = 0;
  7673      p_ready _run_statu s BOOLEAN    := FALSE ;
  7674  
  7675   BEGIN
  7676  
  7677  
  7678       time_a  :=  dbms_ utility.ge t_time;
  7679       ALTER_ SESSION_SE TTINGS (gc _parallel_ dop);
  7680  
  7681       -- Che ck to make  sure last  contracto r id proce ssed
  7682       PRECHE CK_PROC (p _ready_run _status);
  7683  
  7684       IF  p_ ready_run_ status THE N
  7685  
  7686          PUR GE_STG_TAB LE;
  7687          INI TIALIZE_TA B_PARTITIO N_ARRAY;
  7688          LOA D_CCNSERVL OG_STG;
  7689          LOA D_SELECTED _PERSON_ST G;
  7690          LOA D_ADDR_STG ;
  7691          LOA D_ADDR_H_S TG;
  7692          LOA D_PREFERED _FACILITY_ H_STG;
  7693          LOA D_EMAIL_ST G;
  7694          LOA D_GEOCODE_ TRANSMIT_S TG;
  7695          LOA D_PHONE_ST G;
  7696  
  7697          gc_ record_cre ate_by :=  gc_record_ create_by| |'-'||TO_C HAR(SYSDAT E,'YYYYMMD D:HH24');
  7698          LOA D_SRV_LOG_ DATA;
  7699          VN_ grand_tota l_count :=  0;
  7700          UPD ATE_SRV_LO G_DATA;
  7701  
  7702         -- = ========== ========== ========== ========== ========== ========== ==========
  7703         --
  7704         -- D isplay out puts rows  updated in formation
  7705         --
  7706         -- = ========== ========== ========== ========== ========== ========== ==========
  7707         time _b := dbms _utility.g et_time;
  7708  
  7709         IF ( time_b - t ime_a)/100  > 60 THEN
  7710           VC _unit := ' min';
  7711           VN _elapsed_t ime := ROU ND((time_b  - time_a) /100/60,2) ;
  7712  
  7713         ELSE
  7714  
  7715          VC_ unit := 's ec';
  7716          VN_ elapsed_ti me := roun d((time_b  - time_a)/ 100,2);
  7717  
  7718         END  IF;
  7719  
  7720         POST CHECK_PROC ;
  7721  
  7722         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => CC_ MODULE_NAM E,
  7723                  PD_job _log_date  => SYSDATE ,
  7724                  PC_job _status =>  'INFORMAT ION - PKG  CCN SERVCI E LOG PROC  COMPLETED .',
  7725                  PC_job _log_messa ge => 'Row s Added/Up dated: '|| VN_total_r ows_added| |'/'||VN_t otal_rows_ updated||'  Elapse Ti me: '||VN_ elapsed_ti me||' '||V C_unit,
  7726                  pc_tex t1 => adr. sf_timer.e lapsed_mes sage (lc_s p_name),
  7727                  PD_dat e1 => SYSD ATE
  7728           );
  7729  
  7730       ELSE
  7731          ADR MGT.Job_Pr ocess_Log_ Sp(PC_job_ name => CC _MODULE_NA ME,
  7732               PD_job_lo g_date =>  SYSDATE,
  7733               PC_job_st atus => 'I NFORMATION  - PKG '|| CC_MODULE_ NAME|| '.  PROCESSED  ABOTED.',
  7734               PC_job_lo g_message  => lc_sp_n ame||' - N O NEW CCN  CONTRACTOR  FOUND. '| |VN_start_ time,
  7735               pc_text1  => 'Last C ontractor  ID Process ed: '||gc_ contractor _id||' - P ARMS: - BU LK LIMIT:  '|| gc_bul k_limit||'  - DOP: '| |gc_parall el_dop,
  7736               PD_date1  => SYSDATE
  7737           );
  7738  
  7739  
  7740       END IF ;
  7741  
  7742   EXCEPTION
  7743  
  7744         WHEN  OTHERS TH EN
  7745            A DRMGT.Job_ Process_Lo g_Sp(
  7746                    PC_j ob_name =>  CC_MODULE _NAME,
  7747                    PD_j ob_log_dat e => SYSDA TE,
  7748                    PC_j ob_status  => 'EXCEPT ION ERROR  - '||SUBST R(VC_log_s tep,1,60),
  7749                    PC_j ob_log_mes sage => SU BSTR(SQLCO DE,1,60)|| ' - ' ||SU BSTR(SQLER RM,1,254),
  7750                    PC_t ext1 => SU BSTR(SUBST R(VC_log_s tep,1,60)
  7751                                      || DBMS_ UTILITY.FO RMAT_CALL_ STACK
  7752                                      || DBMS_ UTILITY.fo rmat_error _stack
  7753                                      || DBMS_ UTILITY.fo rmat_error _backtrace ,1,255),
  7754                     PD_ date1 => S YSDATE);
  7755  
  7756   END PROCES S_CCN_SERV ICE_LOG_MA IN;
  7757  
  7758   END CCN_SR V_LOAD_PKG ;
  7759   /
  7760  
  7761  
  7762   CREATE OR  REPLACE PU BLIC SYNON YM CCN_SRV _LOAD_PKG  FOR ADR.CC N_SRV_LOAD _PKG;