4. EPMO Open Source Coordination Office Redaction File Detail Report

Produced by Araxis Merge on 4/5/2017 7:54:23 PM Eastern 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.

4.1 Files compared

# Location File Last Modified
1 ADR_v17.0.0.0, build 3_April_2017.zip\ADR_v17.0.0.0, build 3_April_2017\DDL\ADR package body.sql Thu Mar 30 18:44:08 2017 UTC
2 ADR_v17.0.0.0, build 3_April_2017.zip\ADR_v17.0.0.0, build 3_April_2017\DDL\ADR package body.sql Tue Apr 4 14:25:49 2017 UTC

4.2 Comparison summary

Description Between
Files 1 and 2
Text Blocks Lines
Unchanged 2 10044
Changed 1 2
Inserted 0 0
Removed 0 0

4.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

4.4 Active regular expressions

No regular expressions were active.

4.5 Comparison detail

  1   DROP PACKA GE BODY AD R.MEC_PERI OD_PKG;
  2  
  3   CREATE OR  REPLACE PA CKAGE BODY  ADR.MEC_P ERIOD_PKG
  4   AS
  5      FUNCTIO N Calc_Exe c_time (v_ start_dt D ATE)
  6         RETU RN VARCHAR
  7      AS
  8      BEGIN
  9         RETU RN    ' Du ration: '
  10                 || (    LTRIM (TO_ CHAR (TRUN C ( (SYSDA TE - v_sta rt_dt) * 2 4), '00'))
  11                     ||  ' Hrs '
  12                     ||  LTRIM (TO_ CHAR (TRUN C ( ( ( (S YSDATE - v _start_dt)  * 24) - T RUNC ( ( ( SYSDATE -  v_start_dt ) * 24)))  * 60), '00 '))
  13                     ||  ' Mins '
  14                     ||  LTRIM (
  15                            TO_CHAR  (TRUNC (  ( ( (SYSDA TE - v_sta rt_dt) * 2 4 * 60) -  TRUNC ( (  (SYSDATE -  v_start_d t) * 24 *  60))) * 60 ), '00'))
  16                     ||  ' Secs');
  17      END Cal c_Exec_tim e;
  18  
  19      /****** ********** ********** ********** ********** ********** ********** *********
  20              DESCRIPTIO N
  21                 WRAPPER _JOB_PROCE SS_LOG_SP  procedure  for loggin g INFO, WA RN and ERR OR into ta ble.
  22       ****** ********** ********** ********** ********** ********** ********** ********** **/
  23      PROCEDU RE WRAPPER _JOB_PROCE SS_LOG_SP  (P_JOB_STA TUS VARCHA R2, P_JOB_ LOG_MESSAG E VARCHAR2 )
  24      AS
  25      BEGIN
  26         ADRM GT.Job_Pro cess_Log_S p (PC_job_ name           => SUB STR (g_job _name, 1,  59),
  27                                       PD_job_ log_date       => SYS DATE,
  28                                       PC_job_ status         => SUB STR (P_JOB _STATUS, 1 , 59),
  29                                       PC_job_ log_messag e   => SUB STR (P_JOB _LOG_MESSA GE, 1, 198 0));
  30      EXCEPTI ON
  31         WHEN  OTHERS
  32         THEN
  33            D BMS_OUTPUT .put_line  (   SQLERR M
  34                                     || ' : '
  35                                     || DBMS_U TILITY.FOR MAT_ERROR_ BACKTRACE) ;
  36      END WRA PPER_JOB_P ROCESS_LOG _SP;
  37  
  38      /****** ********** ********** ********** ********** ********** ********** *********
  39           DE SCRIPTION
  40                          Procedure  does main  logic of  inserting  the data w ith all bu siness log ic.
  41     ******** ********** ********** ********** ********** ********** ********** ********** /
  42  
  43      PROCEDU RE FINAL_L OADER_MEC_ PERIOD (p_ future_low er_bound N UMBER)
  44      AS
  45         v_re c_cnt    I NTEGER;
  46         v_st art_dt   D ATE;
  47      BEGIN
  48         g_jo b_name :=
  49                g_pkg_na me
  50            | | '.FINAL_ LOADER_MEC _PERIOD';
  51         v_st art_dt :=  SYSDATE;
  52  
  53         ---  All below  STEPS star ting from  3 through  6 happens  in one tra nsaction.
  54         --ST EP 3: Dele te last in serted sta rt date th at doesn't  have a ma tching end  date.
  55         DELE TE FROM ME C_PERIOD_N EW m
  56                WHERE EX ISTS
  57                          (SELECT 1
  58                             FROM S TG_MEC_PER IOD f
  59                            WHERE f .Person_id  = m.Perso n_id -- Ad ded fix WI -321159
  60                                                              AND m. MEC_END_DA TE IS NULL  AND f.DER VD_MEC_END _DATE IS N OT NULL);
  61  
  62         v_re c_cnt := S QL%ROWCOUN T;
  63  
  64         WRAP PER_JOB_PR OCESS_LOG_ SP ('INFO' ,
  65                                           'ST EP 3 - LOA DER: (DELE TE) MEC_PE RIOD_NEW v _rec_cnt:  '
  66                                        || v_r ec_cnt
  67                                        || Cal c_Exec_tim e (v_start _dt));
  68         v_st art_dt :=  SYSDATE;
  69  
  70         --ST EP 4: inse rt final d ata set bo th increme ntal and i nitial loa ds
  71         INSE RT INTO ME C_PERIOD_N EW (MEC_PE RIOD_ID,
  72                                        PERSON _ID,
  73                                        MEC_ST ART_DATE,
  74                                        MEC_EN D_DATE,
  75                                        RECORD _CREATED_B Y,
  76                                        RECORD _CREATED_D ATE,
  77                                        RECORD _MODIFIED_ BY,
  78                                        RECORD _MODIFIED_ DATE,
  79                                        RECORD _MODIFIED_ COUNT)
  80            S ELECT s.ME C_PERIOD_I D,
  81                    s.PE RSON_ID,
  82                    s.DE RVD_MEC_ST ART_DATE,
  83                    s.DE RVD_MEC_EN D_DATE,
  84                    g_pk g_name REC ORD_CREATE D_BY,
  85                    SYSD ATE RECORD _CREATED_D ATE,
  86                    g_pk g_name REC ORD_MODIFI ED_BY,
  87                    SYSD ATE RECORD _MODIFIED_ DATE,
  88                    0 RE CORD_MODIF IED_COUNT
  89               FROM STG_ MEC_PERIOD  s,
  90                    -- A dded fix W I-321159
  91                    (SEL ECT MEC_PE RIOD_ID FR OM STG_MEC _PERIOD
  92                     MIN US
  93                     SEL ECT MEC_PE RIOD_ID FR OM MEC_PER IOD_NEW) t
  94              WHERE s.ME C_PERIOD_I D = t.MEC_ PERIOD_ID;
  95  
  96         v_re c_cnt := S QL%ROWCOUN T;
  97         g_fi nal_rec_cn t := v_rec _cnt;
  98  
  99         WRAP PER_JOB_PR OCESS_LOG_ SP ('INFO' ,
  100                                           'ST EP 4 - LOA DER: (INSE RT) MEC_PE RIOD_NEW v _rec_cnt:  '
  101                                        || v_r ec_cnt
  102                                        || Cal c_Exec_tim e (v_start _dt));
  103         v_st art_dt :=  SYSDATE;
  104  
  105         --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
  106         MERG E INTO MEC _PERIOD_LA ST_HIST_NE W d
  107               USING (   SELECT MAX  (MEC_PERI OD_ID) LAS T_ENROLL_D ETERM_H_ID , person_i d
  108                           FROM STG _MEC_PERIO D
  109                      GR OUP BY per son_id) s
  110                  ON (d. person_id  = s.person _id)
  111         WHEN  MATCHED
  112         THEN
  113            U PDATE SET  d.LAST_ENR OLL_DETERM _H_ID = s. LAST_ENROL L_DETERM_H _ID, STATU S = 'Y'
  114                     WHE RE d.LAST_ ENROLL_DET ERM_H_ID <  s.LAST_EN ROLL_DETER M_H_ID
  115         WHEN  NOT MATCH ED
  116         THEN
  117            I NSERT      (PERSON_ID , LAST_ENR OLL_DETERM _H_ID, STA TUS)
  118                 VALUES  (s.PERSON_ ID, s.LAST _ENROLL_DE TERM_H_ID,  'Y');
  119  
  120         v_re c_cnt := S QL%ROWCOUN T;
  121  
  122         WRAP PER_JOB_PR OCESS_LOG_ SP ('INFO' ,
  123                                           'ST EP 5 - MET ADATA: (ME RGE) MEC_P ERIOD_LAST _HIST_NEW  v_rec_cnt:  '
  124                                        || v_r ec_cnt
  125                                        || Cal c_Exec_tim e (v_start _dt));
  126         v_st art_dt :=  SYSDATE;
  127  
  128         --ST EP 6: upda te lower b ound for t omorrow wi th p_futur e_lower_bo und
  129         UPDA TE ADRMGT. ADR_PARAME TER
  130            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
  131          WHE RE     APP LICATION_N AME = 'ACA _MEC'
  132                 AND UPP ER (PARAME TER_NAME)  = g_param_ name_for_l ower_bound
  133                 AND INA CTIVE_FLAG  = 'N'
  134                 AND TO_ NUMBER (VA LUE) < p_f uture_lowe r_bound;
  135  
  136         v_re c_cnt := S QL%ROWCOUN T;
  137  
  138         COMM IT;
  139  
  140         -- L og correct ly based o n the abov e update
  141         IF v _rec_cnt >  0
  142         THEN
  143            W RAPPER_JOB _PROCESS_L OG_SP ('IN FO',
  144                                               'STEP 6a -  METADATA:  (UPDATE)  ADR_PARAME TER.VALUE  (future_lo wer_bound)  from: '
  145                                           ||  g_current_ lower_boun d
  146                                           ||  ' to: '
  147                                           ||  p_future_l ower_bound
  148                                           ||  Calc_Exec_ time (v_st art_dt));
  149         ELSE
  150            W RAPPER_JOB _PROCESS_L OG_SP ('IN FO',
  151                                               'STEP 6a -  METADATA:  (NO-UPDAT E) ADR_PAR AMETER.VAL UE (future _lower_bou nd) remain s same: '
  152                                           ||  g_current_ lower_boun d);
  153         END  IF;
  154      END FIN AL_LOADER_ MEC_PERIOD ;
  155  
  156      /****** ********** ********** ********** ********** ********** ********** *********
  157                DESCRIPT ION
  158                      Up date the A DR_PARAMET ER table w ith lower  bounds for  next run
  159      ******* ********** ********** ********** ********** ********** ********** ********** */
  160  
  161      PROCEDU RE PREP_WO RK_MEC_PER IOD (p_upp er_bound N UMBER, p_m ulti_batch _flg BOOLE AN)
  162      AS
  163         v_re c_cnt               I NTEGER;
  164         v_st art_dt              D ATE;
  165         v_fu ture_lower _bound   I NTEGER;
  166      BEGIN
  167         g_jo b_name :=
  168                g_pkg_na me
  169            | | '.PREP_W ORK_MEC_PE RIOD';
  170         v_st art_dt :=  SYSDATE;
  171  
  172         --ST EP 1: PREP -DATA FILT ERATION fo r processi ng daily i ncremental  and inita l loads.
  173         --Bu ild person _id start  and end da tes with r anking cor rectly for  use in th e next ste ps
  174         -- s tart and e nd dates s hall have  thier resp ective rec ords and t hey are mu tual exclu sive;
  175         -- A  record wi th start d ates shall  not have  end date a nd vice-ve rsa.
  176         INSE RT INTO ST G_MEC_PERI OD_ENRMNT_ DTRM_H (EN ROLLMENT_D ETERMINATI ON_H_ID,
  177                                                       PE RSON_ID,
  178                                                       DE RVD_MEC_ST ART_DATE,
  179                                                       DE RVD_MEC_EN D_DATE,
  180                                                       cu rrent_rank )
  181            S ELECT Enro llment_det ermination _h_id,
  182                    h.Pe rson_id,
  183                    CASE  WHEN STD_ ENROLLMENT STATUS_ID  = 1504142  THEN NVL ( Enrollment _start_dat e, Record_ created_da te) END de rvd_MEC_ST ART_DATE,
  184                    CASE
  185                       W HEN STD_EN ROLLMENTST ATUS_ID IN  (1504151,  -- Reject ed
  186                                                            1504152,  -- Reject ed
  187                                                            1504153,  -- Reject ed
  188                                                            1504154,  -- Reject ed
  189                                                            1504162  -- Rejecte d
  190                                                                   )
  191                       T HEN
  192                           Record_m odified_da te
  193                       W HEN STD_EN ROLLMENTST ATUS_ID <>  1504142
  194                       T HEN
  195                           NVL (Enr ollment_en d_date, Re cord_modif ied_date)
  196                    END
  197                       d ervd_MEC_E ND_DATE,
  198                    DENS E_RANK ()
  199                       O VER (PARTI TION BY h. Person_id
  200                              ORDER  BY
  201                                 Re cord_creat ed_date,
  202                                 DE CODE (tran saction_ty pe_code,   'I', 1,  ' U', 2,  'D ', 3,  tra nsaction_t ype_code),  -- WI 231 441 CSW
  203                                 Re cord_modif ied_date,  -- WI 2347 31 CSW
  204                                 En rollment_d eterminati on_h_id AS C NULLS LA ST)
  205                       c urrent_ran k
  206               FROM Enro llment_Det ermination _H h, STG_ MEC_PERIOD _PERSON_ID  prsn
  207              WHERE      h.person_i d = prsn.p erson_id
  208                    AND  Std_enroll mentstatus _id IN (15 04142, --  Verified
  209                                                       15 04141, --  Unverified
  210                                                       15 04144, --  Rejected
  211                                                       15 04146, --  Deceased
  212                                                       15 04147, --  Cancelled/ Declined
  213                                                       15 04149, --  Pending
  214                                                       15 04150, --  Not Eligib le
  215                                                       15 04151, --  Rejected
  216                                                       15 04152, --  Rejected
  217                                                       15 04153, --  Rejected
  218                                                       15 04154, --  Rejected
  219                                                       15 04155, --  Pending; N o Eligibil ity Code
  220                                                       15 04157, --  Pending; E ligibility  Status is  Unverifie d
  221                                                       15 04158, --  Pending; O ther
  222                                                       15 04159, --  Pending; O ther
  223                                                       15 04160, --  Not Eligib le
  224                                                       15 04162, --  Rejected
  225                                                       15 04163 -- N ot Applica ble
  226                                                               );
  227  
  228         v_re c_cnt := S QL%ROWCOUN T;
  229  
  230         WRAP PER_JOB_PR OCESS_LOG_ SP ('INFO' ,
  231                                           'ST EP 1 - PRE P: (INSERT ) STG_MEC_ PERIOD_ENR MNT_DTRM_H   v_rec_cn t: '
  232                                        || v_r ec_cnt
  233                                        || Cal c_Exec_tim e (v_start _dt));
  234  
  235         v_st art_dt :=  SYSDATE;
  236  
  237         IF v _rec_cnt >  0
  238         THEN
  239            - -STEP 2: A pply Busin ess Logic:  by re-ali gning star t and end  dates corr ectly for  each perso n_id
  240            I NSERT INTO  STG_MEC_P ERIOD (MEC _PERIOD_ID ,
  241                                           PER SON_ID,
  242                                           DER VD_MEC_STA RT_DATE,
  243                                           DER VD_MEC_END _DATE)
  244                SELECT f q.Enrollme nt_determi nation_h_i d MEC_PERI OD_ID,
  245                                 -- MAX (Enrol lment_dete rmination_ h_id) MEC_ PERIOD_ID,
  246                                 fq .person_id ,
  247                                 fq .dervd_MEC _START_DAT E,
  248                                 fq .dervd_MEC _END_DATE
  249                  FROM ( SELECT CAS E
  250                                    WHEN end_d te.Enrollm ent_determ ination_h_ id > start _dte.Enrol lment_dete rmination_ h_id
  251                                    THEN
  252                                       end_dte .Enrollmen t_determin ation_h_id
  253                                    WHEN end_d te.Enrollm ent_determ ination_h_ id < start _dte.Enrol lment_dete rmination_ h_id
  254                                    THEN
  255                                       start_d te.Enrollm ent_determ ination_h_ id
  256                                    WHEN end_d te.Enrollm ent_determ ination_h_ id IS NULL
  257                                    THEN
  258                                       start_d te.Enrollm ent_determ ination_h_ id
  259                                END
  260                                    Enrollment _determina tion_h_id,
  261                                sta rt_dte.per son_id,
  262                                sta rt_dte.der vd_MEC_STA RT_DATE,
  263                                end _dte.dervd _MEC_END_D ATE,
  264                                sta rt_dte.cur rent_rank  start_dte_ current_ra nk,
  265                                end _dte.curre nt_rank en d_dte_curr ent_rank
  266                           FROM (SE LECT Enrol lment_dete rmination_ h_id,
  267                                         perso n_id,
  268                                         dervd _MEC_START _DATE,
  269                                         prev_ rank,
  270                                         curre nt_rank,
  271                                         NEXT_ rank
  272                                    FROM (SELE CT Enrollm ent_determ ination_h_ id,
  273                                                  Person_ id,
  274                                                  dervd_M EC_START_D ATE,
  275                                                  LAG (cu rrent_rank , 1, NULL)
  276                                                     OVER  (PARTITIO N BY Perso n_id ORDER  BY Person _id, curre nt_rank AS C NULLS LA ST)
  277                                                     prev _rank,
  278                                                  current _rank,
  279                                                  LEAD (c urrent_ran k, 1, NULL )
  280                                                     OVER  (PARTITIO N BY Perso n_id ORDER  BY Person _id, curre nt_rank AS C NULLS LA ST)
  281                                                     NEXT _rank
  282                                            FR OM (SELECT  *
  283                                                     FROM  STG_MEC_P ERIOD_ENRM NT_DTRM_H
  284                                                    WHERE  dervd_MEC _START_DAT E IS NOT N ULL))
  285                                  - -below whe re conditi on is remo ve consecu tive simil ar records
  286                                  W HERE curre nt_rank <>  NVL (prev _rank, -1)  + 1) star t_dte
  287                                LEF T OUTER JO IN
  288                                (SE LECT Enrol lment_dete rmination_ h_id,
  289                                         perso n_id,
  290                                         dervd _MEC_END_D ATE,
  291                                         prev_ rank,
  292                                         curre nt_rank,
  293                                         NEXT_ rank
  294                                    FROM (SELE CT Enrollm ent_determ ination_h_ id,
  295                                                  Person_ id,
  296                                                  dervd_M EC_END_DAT E,
  297                                                  LAG (cu rrent_rank , 1, NULL)
  298                                                     OVER  (PARTITIO N BY Perso n_id ORDER  BY Person _id, curre nt_rank AS C NULLS LA ST)
  299                                                     prev _rank,
  300                                                  current _rank,
  301                                                  LEAD (c urrent_ran k, 1, NULL )
  302                                                     OVER  (PARTITIO N BY Perso n_id ORDER  BY Person _id, curre nt_rank AS C NULLS LA ST)
  303                                                     NEXT _rank
  304                                            FR OM (SELECT  *
  305                                                     FROM  STG_MEC_P ERIOD_ENRM NT_DTRM_H
  306                                                    WHERE  dervd_MEC _END_DATE  IS NOT NUL L))
  307                                  - -below whe re conditi on is remo ve consecu tive simil ar records
  308                                  W HERE curre nt_rank <>  NVL (prev _rank, -1)  + 1) end_ dte
  309                                    -- The bel ow conditi on is very  critical  in alignin g the star t and end  dates corr ectly.
  310                                    ON (    st art_dte.Pe rson_id =  end_dte.Pe rson_id
  311                                        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)
  312                                        AND NV L (end_dte .prev_rank , 1) <= st art_dte.cu rrent_rank )) fq
  313                       - - outer jo in is to o nly consid er the new  records p lus open e nded recor ds with no  end dates
  314                       L EFT OUTER  JOIN MEC_P ERIOD_LAST _HIST_NEW  mx ON (fq. person_id  = mx.perso n_id)
  315                 WHERE     fq.Enrol lment_Dete rmination_ h_id >= NV L (mx.LAST _ENROLL_DE TERM_H_ID,  0)
  316                       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))
  317                       - - Added fi x WI-32115 9
  318                       O R (    (de rvd_MEC_st art_DATE I S NOT NULL  AND dervd _MEC_end_D ATE IS NOT  NULL)
  319                            AND fq. Enrollment _Determina tion_h_id  <= NVL (mx .LAST_ENRO LL_DETERM_ H_ID, 0));
  320  
  321            - - GROUP BY  person_id , dervd_ME C_START_DA TE, dervd_ MEC_END_DA TE;
  322  
  323            v _rec_cnt : = SQL%ROWC OUNT;
  324  
  325            W RAPPER_JOB _PROCESS_L OG_SP ('IN FO',
  326                                               'STEP 2a -  PREP: (IN SERT) STG_ MEC_PERIOD  v_rec_cnt : '
  327                                           ||  v_rec_cnt
  328                                           ||  Calc_Exec_ time (v_st art_dt));
  329            v _start_dt  := SYSDATE ;
  330  
  331            - - 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
  332            - - Data in  STG_MEC_PE RIOD is pr eserved fo r use by b elow steps  3 through  6
  333            C OMMIT;
  334  
  335            I F NOT p_mu lti_batch_ flg
  336            T HEN
  337                -- Get t he future  lower boun d for the  DELTA only .
  338                SELECT N VL (MIN (M EC_PERIOD_ ID), 0)
  339                  INTO v _future_lo wer_bound
  340                  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 )
  341                 WHERE s .MEC_PERIO D_ID > NVL  (mx.LAST_ ENROLL_DET ERM_H_ID,  0);
  342  
  343                WRAPPER_ JOB_PROCES S_LOG_SP ( 'INFO',
  344                                                  'STEP 2 b - METADA TA: (COLLE CT) future _lower_bou nd from ST G_MEC_PERI OD '
  345                                               || v_futur e_lower_bo und
  346                                               || Calc_Ex ec_time (v _start_dt) );
  347            E LSE
  348                v_future _lower_bou nd := g_cu rrent_lowe r_bound;
  349                WRAPPER_ JOB_PROCES S_LOG_SP ( 'INFO',
  350                                                  'STEP 2 b - METADA TA: (INITI AL-COLLECT ) No chang e to futur e_lower_bo und ('
  351                                               || v_futur e_lower_bo und
  352                                               || ') sinc e it is in  INTIAL lo ading');
  353            E ND IF;
  354         END  IF;
  355  
  356         -- C all the fi nal insert er to MEC_ PERIOD, if  there is  any record  found
  357         -- 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
  358         -- s o we try a void going  to the FI NAL_LOADER _MEC_PERIO D
  359         IF v _rec_cnt >  0 AND v_f uture_lowe r_bound >  0
  360         THEN
  361            F INAL_LOADE R_MEC_PERI OD (v_futu re_lower_b ound);
  362         ELSE
  363            W RAPPER_JOB _PROCESS_L OG_SP ('IN FO',
  364                                               'STEP NOTH ING_TO_PRO CESS STG_M EC_PERIOD  insert cou nt: '
  365                                           ||  v_rec_cnt
  366                                           ||  ' and fina l insert i nto MEC_PE RIOD_NEW i s: '
  367                                           ||  v_future_l ower_bound );
  368         END  IF;
  369  
  370         IF p _multi_bat ch_flg
  371         THEN
  372            v _start_dt  := SYSDATE ;
  373  
  374            U PDATE MEC_ PERIOD_LAS T_HIST_NEW
  375                SET STAT US = 'Y'
  376              WHERE PERS ON_ID IN ( SELECT PER SON_ID
  377                                      FROM STG _MEC_PERIO D_PERSON_I D);
  378  
  379            v _rec_cnt : = SQL%ROWC OUNT;
  380  
  381            C OMMIT;
  382            W RAPPER_JOB _PROCESS_L OG_SP ('IN FO',
  383                                               'STEP 6b -  METADATA:  (INITIAL- UPDATE) ME C_PERIOD_L AST_HIST_N EW.STATUS  = Y v_rec_ cnt: '
  384                                           ||  v_rec_cnt
  385                                           ||  Calc_Exec_ time (v_st art_dt));
  386         END  IF;
  387      EXCEPTI ON
  388         WHEN  OTHERS
  389         THEN
  390            W RAPPER_JOB _PROCESS_L OG_SP ('ER ROR',
  391                                               SQLERRM
  392                                           ||  ' : '
  393                                           ||  DBMS_UTILI TY.FORMAT_ ERROR_BACK TRACE);
  394            R OLLBACK;
  395      END PRE P_WORK_MEC _PERIOD;
  396  
  397      /****** ********** ********** ********** ********** ********** ********** *********
  398          DES CRIPTION
  399               Main proc edure that  shall be  called by  the DBMS_J OBS to pro cess MEC_P ERIOD
  400      ******* ********** ********** ********** ********** ********** ********** ********** */
  401      PROCEDU RE KICK_OF F_MEC_PERI OD
  402      AS
  403         v_mu lti_batch_ flg    BOO LEAN := FA LSE;
  404         v_lo ading_type        VAR CHAR (60);
  405         v_mi sc_text           VAR CHAR (300) ;
  406         v_tr ansition_t ext    VAR CHAR (300) ;
  407         v_to be_process _cnt   INT EGER := 0;
  408         v_up per_bound         NUM BER;
  409         v_st art_dt            DAT E;
  410         v_ba tch_size          INT EGER;
  411         v_jo b_number          NUM BER;
  412         v_re c_cnt             INT EGER;
  413      BEGIN
  414         g_jo b_name :=
  415                g_pkg_na me
  416            | | '.KICK_O FF_MEC_PER IOD';
  417         v_st art_dt :=  SYSDATE;
  418  
  419         SELE CT TO_NUMB ER (VALUE)
  420           IN TO g_curre nt_lower_b ound
  421           FR OM ADRMGT. ADR_PARAME TER
  422          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';
  423  
  424         SELE CT UPPER ( VALUE)
  425           IN TO v_loadi ng_type
  426           FR OM ADRMGT. ADR_PARAME TER
  427          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';
  428  
  429         WRAP PER_JOB_PR OCESS_LOG_ SP ('INFO' ,
  430                                           'ST ARTED:  cu rrent_lowe r_bound: '
  431                                        || g_c urrent_low er_bound
  432                                        || ' :  v_loading _type : '
  433                                        || v_l oading_typ e);
  434  
  435         IF v _loading_t ype = 'INI TIAL'
  436         THEN
  437            S ELECT TO_N UMBER (VAL UE)
  438               INTO v_ba tch_size
  439               FROM ADRM GT.ADR_PAR AMETER
  440              WHERE APPL ICATION_NA ME = 'ACA_ MEC' AND U PPER (PARA METER_NAME ) = 'MEC_P ERIOD_BATC H_SIZE' AN D INACTIVE _FLAG = 'N ';
  441  
  442            S ELECT COUN T (*)
  443               INTO v_to be_process _cnt
  444               FROM MEC_ PERIOD_LAS T_HIST_NEW
  445              WHERE STAT US = 'N';
  446  
  447            I F v_tobe_p rocess_cnt  > 0
  448            T HEN
  449                -- 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
  450                v_multi_ batch_flg  := TRUE;
  451  
  452                INSERT I NTO STG_ME C_PERIOD_P ERSON_ID ( PERSON_ID)
  453                   SELEC T PERSON_I D
  454                     FRO M MEC_PERI OD_LAST_HI ST_NEW
  455                    WHER E STATUS =  'N' AND R OWNUM < v_ batch_size ;
  456  
  457                v_rec_cn t := SQL%R OWCOUNT;
  458                v_misc_t ext :=
  459                      '  v_batch_si ze : '
  460                   || v_ batch_size
  461                   || '  To Be Proc essed Pers on_ID Coun t : '
  462                   || v_ rec_cnt;
  463            E LSE
  464                SELECT j ob
  465                  INTO v _job_numbe r
  466                  FROM S YS.DBA_JOB S J
  467                 WHERE U PPER (J.WH AT) LIKE
  468                              '%'
  469                           || g_pkg _name
  470                           || '%';
  471  
  472                UPDATE A DRMGT.ADR_ PARAMETER
  473                   SET V ALUE = 'DE LTA', RECO RD_MODIFIE D_BY = SUB STR (g_job _name, 1,  29), RECOR D_MODIFIED _DATE = SY SDATE
  474                 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';
  475  
  476                -- chang e the job  interval
  477                DBMS_JOB .change (v _job_numbe r,
  478                                  N ULL,
  479                                  N ULL,
  480                                  ' TRUNC(SYSD ATE+1)+7/2 4');
  481  
  482                v_transi tion_text  := ' : Aut o-Transiti oning from  INITIAL T O DELTA ';
  483            E ND IF;
  484         END  IF;
  485  
  486         IF v _loading_t ype <> 'IN ITIAL' OR  v_tobe_pro cess_cnt =  0
  487         THEN
  488            - - for curr ent run ;  this is fo r todays r un
  489            S ELECT MAX  (Enrollmen t_Determin ation_h_id ) INTO v_u pper_bound  FROM Enro llment_Det ermination _H;
  490  
  491            I NSERT INTO  STG_MEC_P ERIOD_PERS ON_ID (PER SON_ID)
  492                SELECT D ISTINCT s. person_id
  493                  FROM E nrollment_ Determinat ion_H s
  494                 WHERE E nrollment_ Determinat ion_h_id >  g_current _lower_bou nd AND Enr ollment_De terminatio n_h_id <=  v_upper_bo und;
  495  
  496            v _rec_cnt : = SQL%ROWC OUNT;
  497            v _misc_text  :=
  498                   v_tra nsition_te xt
  499                || ' To  Be Process ed Person_ ID Count :  '
  500                || v_rec _cnt
  501                || ' v_u pper_bound : '
  502                || v_upp er_bound;
  503         END  IF;
  504  
  505         COMM IT;
  506         WRAP PER_JOB_PR OCESS_LOG_ SP ('INFO' ,
  507                                           'ST EP 0 - MET ADATA: (CO LLECT) '
  508                                        || v_m isc_text
  509                                        || Cal c_Exec_tim e (v_start _dt));
  510  
  511         PREP _WORK_MEC_ PERIOD (v_ upper_boun d, v_multi _batch_flg );
  512  
  513         WRAP PER_JOB_PR OCESS_LOG_ SP ('INFO' ,
  514                                           'CO MPLETE: To tal insert ed records  : '
  515                                        || g_f inal_rec_c nt
  516                                        || ' T otal '
  517                                        || Cal c_Exec_tim e (v_start _dt));
  518      EXCEPTI ON
  519         WHEN  OTHERS
  520         THEN
  521            W RAPPER_JOB _PROCESS_L OG_SP ('ER ROR',
  522                                               SQLERRM
  523                                           ||  ' : '
  524                                           ||  DBMS_UTILI TY.FORMAT_ ERROR_BACK TRACE);
  525            R OLLBACK;
  526      END KIC K_OFF_MEC_ PERIOD;
  527   END MEC_PE RIOD_PKG;
  528   /
  529  
  530  
  531   CREATE OR  REPLACE PU BLIC SYNON YM MEC_PER IOD_PKG FO R ADR.MEC_ PERIOD_PKG ;
  532   DROP PACKA GE BODY AD R.IAM_UTIL _PKG;
  533  
  534   CREATE OR  REPLACE PA CKAGE BODY  ADR.IAM_U TIL_PKG
  535   AS
  536   PROCEDURE  USERS_IAM_ INSERT_SP(
  537              p_USERNAME         IN  USERS.USE RNAME%TYPE ,
  538              p_LAST_NAM E        I N USERS.LA ST_NAME%TY PE,
  539              p_FIRST_NA ME         IN USERS.F IRST_NAME% TYPE,
  540              p_MIDDLE_N AME         IN USERS. MIDDLE_NAM E%TYPE,
  541              p_STD_INST ITUTION_ID     IN STD _INSTITUTI ON.ID%TYPE ,
  542              p_JOB_TITL E        I N USERS.JO B_TITLE%TY PE,
  543              p_PASSWORD         IN  USERS.PAS SWORD%TYPE ,
  544              p_ACCOUNT_ EXPIRE_DAT E    IN US ERS.ACCOUN T_EXPIRE_D ATE%TYPE,
  545              p_PASSWORD _EXPIRE_DA TE    IN U SERS.PASSW ORD_EXPIRE _DATE%TYPE ,
  546              p_AGREEMEN T_SIGNATUR E_CODE IN  USERS.AGRE EMENT_SIGN ATURE_CODE %TYPE,
  547              p_PASSWORD _CHANGE_DA TE    IN U SERS.PASSW ORD_CHANGE _DATE%TYPE ,
  548              p_PASSWORD _CREATE_DA TE    IN U SERS.PASSW ORD_CREATE _DATE%TYPE ,
  549              p_INACTIVE _FLAG         IN USER S.INACTIVE _FLAG%TYPE ,
  550              p_NUMBER_O F_LOGIN_AT TEMPTS IN  USERS.NUMB ER_OF_LOGI N_ATTEMPTS %TYPE,
  551              p_SIGNATUR E_VERIFIED _IND   IN  USERS.SIGN ATURE_VERI FIED_IND%T YPE,
  552              p_ROLES             I N VARCHAR2
  553   ) IS
  554  
  555                  lb_cnt  integer;
  556                         la_Tab_Str  IAM_UTIL_ PKG.varcha r2_table;
  557                  lo_Val   VARCHAR2 (1000);
  558                  lo_use rid NUMBER ;
  559                  lo_use r_role_id  number;
  560  
  561              BEGIN
  562                 Select  TRANSACTIO N_S.NEXTVA L
  563                 INTO lo _userid
  564                 FROM du al;
  565                  INSERT  INTO USER S(USERID
  566                                                   ,USERN AME
  567                                                   ,LAST_ NAME
  568                                                   ,FIRST _NAME
  569                                                   ,MIDDL E_NAME
  570                                                   ,STD_I NSTITUTION _ID
  571                                                   ,JOB_T ITLE
  572                                                   ,PASSW ORD
  573                                                   ,ACCOU NT_EXPIRE_ DATE
  574                                                   ,PASSW ORD_EXPIRE _DATE
  575                                                   ,AGREE MENT_SIGNA TURE_CODE
  576                                                   ,PASSW ORD_CHANGE _DATE
  577                                                   ,PASSW ORD_CREATE _DATE
  578                                                   ,INACT IVE_FLAG
  579                                                   ,NUMBE R_OF_LOGIN _ATTEMPTS
  580                                                   ,SIGNA TURE_VERIF IED_IND
  581                                                   ,RECOR D_CREATED_ BY
  582                                                   ,RECOR D_CREATED_ DATE
  583                                                   ,RECOR D_MODIFIED _BY
  584                                                   ,RECOR D_MODIFIED _DATE
  585                                                   ,RECOR D_MODIFIED _COUNT)
  586                  VALUES
  587                  (lo_us erid
  588                 , p_USE RNAME
  589                 , p_LAS T_NAME
  590                 ,  p_FI RST_NAME
  591                 , p_MID DLE_NAME
  592                 , p_STD _INSTITUTI ON_ID
  593                 , p_JOB _TITLE
  594                 , p_PAS SWORD
  595                 , p_ACC OUNT_EXPIR E_DATE
  596                 , p_PAS SWORD_EXPI RE_DATE
  597                 , p_AGR EEMENT_SIG NATURE_COD E
  598                 , SYSDA TE
  599                 , p_PAS SWORD_CREA TE_DATE
  600                 , p_INA CTIVE_FLAG
  601                 , p_NUM BER_OF_LOG IN_ATTEMPT S
  602                 , p_SIG NATURE_VER IFIED_IND
  603                 , USER
  604                 , SYSDA TE
  605                 , USER
  606                 , SYSDA TE
  607                 , 0);
  608              IF (p_ROLE S IS NOT N ULL)
  609              THEN
  610                IAM_UTIL _PKG.delim string_to_ table (p_R OLES,la_Ta b_Str,lb_c nt);
  611                FOR i IN  1 .. lb_c nt LOOP
  612  
  613                Select T RANSACTION _S.NEXTVAL
  614                 INTO lo _user_role _id
  615                 FROM du al;
  616  
  617                lo_Val : = REPLACE( la_Tab_Str (i), '"',  '');
  618                INSERT I NTO USER_R OLES(USER_ ROLE_ID
  619                                                           ,USERID
  620                                                           ,ROLE_ID
  621                                                           ,RECORD_C REATED_BY
  622                                                           , RECORD_ CREATED_DA TE
  623                                                           ,RECORD_M ODIFIED_BY
  624                                                           ,RECORD_M ODIFIED_DA TE
  625                                                           ,RECORD_M ODIFIED_CO UNT)
  626                VALUES (   lo_user_ role_id
  627                              ,  lo _userid
  628                              , (SE LECT ROLE_ ID FROM RO LES WHERE  ROLE_NAME= lo_Val)
  629                              , USE R
  630                              , SYS DATE
  631                              , USE R
  632                              , SYS DATE
  633                              , 0 ) ;
  634                END LOOP ;
  635              END IF;
  636                  COMMIT ;
  637              EXCEPTION
  638                  WHEN O THERS THEN
  639                      RO LLBACK;
  640                      RA ISE_APPLIC ATION_ERRO R(-20900,  'Insert Er ror - ' ||  SUBSTR(SQ LERRM,1,20 00));
  641  
  642   END USERS_ IAM_INSERT _SP;
  643  
  644   PROCEDURE  USERS_IAM_ UPDATE_SP
  645              (p_USERNAM E        I N USERS.US ERNAME%TYP E,
  646              p_LAST_NAM E        I N USERS.LA ST_NAME%TY PE,
  647              p_FIRST_NA ME         IN USERS.F IRST_NAME% TYPE,
  648              p_MIDDLE_N AME         IN USERS. MIDDLE_NAM E%TYPE,
  649              p_STD_INST ITUTION_ID     IN STD _INSTITUTI ON.ID%TYPE ,
  650              p_JOB_TITL E        I N USERS.JO B_TITLE%TY PE,
  651              p_PASSWORD         IN  USERS.PAS SWORD%TYPE ,
  652              p_ACCOUNT_ EXPIRE_DAT E    IN US ERS.ACCOUN T_EXPIRE_D ATE%TYPE,
  653              p_PASSWORD _EXPIRE_DA TE    IN U SERS.PASSW ORD_EXPIRE _DATE%TYPE ,
  654              p_AGREEMEN T_SIGNATUR E_CODE IN  USERS.AGRE EMENT_SIGN ATURE_CODE %TYPE,
  655              p_PASSWORD _CHANGE_DA TE    IN U SERS.PASSW ORD_CHANGE _DATE%TYPE ,
  656              p_PASSWORD _CREATE_DA TE    IN U SERS.PASSW ORD_CREATE _DATE%TYPE ,
  657              p_INACTIVE _FLAG         IN USER S.INACTIVE _FLAG%TYPE ,
  658              p_NUMBER_O F_LOGIN_AT TEMPTS IN  USERS.NUMB ER_OF_LOGI N_ATTEMPTS %TYPE,
  659              p_SIGNATUR E_VERIFIED _IND   IN  USERS.SIGN ATURE_VERI FIED_IND%T YPE,
  660              p_ROLES             I N VARCHAR2
  661   )  IS
  662  
  663                  lb_cnt  integer;
  664                         la_Tab_Str  IAM_UTIL_ PKG.varcha r2_table;
  665                  lo_Val   VARCHAR2 (1000);
  666                  lo_Val 1 VARCHAR2 (1000);
  667                  l_exis ts INTEGER ;
  668                  r_exis ts INTEGER ;
  669                  lo_use r_role_id  Number;
  670                  lo_use rid Number ;
  671                  Userna me_not_fou nd EXCEPTI ON;
  672                  PRAGMA  EXCEPTION _INIT(User name_not_f ound, -209 05);
  673  
  674              BEGIN
  675  
  676                  SELECT  USERID
  677                  INTO l o_userid
  678                  FROM U SERS
  679                  WHERE  USERNAME =  p_USERNAM E;
  680  
  681                  UPDATE  USERS SET  LAST_NAME  = p_LAST_ NAME
  682                                                 , FIRST_ NAME = p_F IRST_NAME
  683                                                 , MIDDLE _NAME = p_ MIDDLE_NAM E
  684                                                 , STD_IN STITUTION_ ID = p_STD _INSTITUTI ON_ID
  685                                                 , JOB_TI TLE = p_JO B_TITLE
  686                                                 , PASSWO RD = p_PAS SWORD
  687                                                 , ACCOUN T_EXPIRE_D ATE = p_AC COUNT_EXPI RE_DATE
  688                                                 , PASSWO RD_EXPIRE_ DATE = p_P ASSWORD_CR EATE_DATE
  689                                                 , AGREEM ENT_SIGNAT URE_CODE =  p_AGREEME NT_SIGNATU RE_CODE
  690                                                 , PASSWO RD_CHANGE_ DATE = p_P ASSWORD_CH ANGE_DATE
  691                                                 , PASSWO RD_CREATE_ DATE = p_P ASSWORD_CR EATE_DATE
  692                                                 , INACTI VE_FLAG =  p_INACTIVE _FLAG
  693                                                 , NUMBER _OF_LOGIN_ ATTEMPTS =  p_NUMBER_ OF_LOGIN_A TTEMPTS
  694                                                 , SIGNAT URE_VERIFI ED_IND  =  p_SIGNATUR E_VERIFIED _IND
  695                                                 , RECORD _MODIFIED_ BY = USER
  696                                                 , RECORD _MODIFIED_ DATE = SYS DATE
  697                                                 , RECORD _MODIFIED_ COUNT = RE CORD_MODIF IED_COUNT  + 1
  698                  WHERE  USERID = l o_userid;
  699                  IF SQL %ROWCOUNT  = 0 THEN
  700                     RAI SE Usernam e_not_foun d;
  701                  END IF ;
  702  
  703                  IF p_R OLES IS NU LL THEN
  704                      DE LETE FROM  USER_ROLES  WHERE USE RID = lo_u serid;
  705                  ELSE
  706                      lo _Val1 := R EPLACE(p_R OLES, '"',  '');
  707                      SE LECT COUNT (*)
  708                      IN TO r_exist s
  709                      FR OM USER_RO LES
  710                      WH ERE USERID  = lo_user id
  711                      AN D ROLE_ID  NOT IN (SE LECT ROLE_ ID FROM RO LES WHERE  ROLE_NAME  IN (lo_Val 1) );
  712  
  713                      IF  r_exists  >= 1 THEN
  714                           DELETE F ROM USER_R OLES
  715                           WHERE US ERID = lo_ userid
  716                           AND ROLE _ID NOT IN  (SELECT R OLE_ID FRO M  ROLES W HERE ROLE_ NAME IN (l o_Val1) )  ;
  717                      EN D IF;
  718  
  719         IAM_ UTIL_PKG.d elimstring _to_table  (p_ROLES,l a_Tab_Str, lb_cnt);
  720                  FOR i  IN 1 .. lb _cnt LOOP
  721  
  722                           lo_Val : = REPLACE( la_Tab_Str (i), '"',  '');
  723                           SELECT C OUNT(*)
  724                           INTO l_e xists
  725                           FROM USE R_ROLES
  726                           WHERE US ERID =  lo _userid AN D ROLE_ID  = (SELECT  ROLE_ID FR OM  ROLES  WHERE ROLE _NAME IN ( lo_Val) );
  727  
  728                           IF l_exi sts != 1   THEN
  729                              Selec t TRANSACT ION_S.NEXT VAL
  730                              INTO  lo_user_ro le_id
  731                              FROM  dual;
  732                               INSE RT INTO US ER_ROLES(U SER_ROLE_I D
  733                                                                          ,USER ID
  734                                                                          ,ROLE _ID
  735                                                                          ,RECO RD_CREATED _BY
  736                                                                          ,RECO RD_CREATED _DATE
  737                                                                          ,RECO RD_MODIFIE D_BY
  738                                                                          ,RECO RD_MODIFIE D_DATE
  739                                                                          ,RECO RD_MODIFIE D_COUNT)
  740                              VALUE S ( lo_use r_role_id
  741                                          , lo _userid
  742                                          , (S ELECT ROLE _ID FROM R OLES WHERE  ROLE_NAME =lo_Val)
  743                                          , US ER
  744                                          , SY SDATE
  745                                          , US ER
  746                                          , SY SDATE
  747                                          , 0) ;
  748                           END IF;
  749  
  750                      EN D LOOP;
  751                  END IF ;
  752                  COMMIT ;
  753              EXCEPTION
  754                  WHEN U sername_no t_found TH EN
  755                       R OLLBACK;
  756                       R AISE_APPLI CATION_ERR OR(-20905,  'Username  not found ');
  757                  WHEN N O_DATA_FOU ND THEN
  758                       R OLLBACK;
  759                       R AISE_APPLI CATION_ERR OR(-20904,  'Unable t o retrieve  USERID');
  760                  WHEN O THERS THEN
  761                      RO LLBACK;
  762                      RA ISE_APPLIC ATION_ERRO R(-20901,  'Update Er ror - ' ||  SUBSTR(SQ LERRM,1,20 00));
  763   END USERS_ IAM_UPDATE _SP;
  764  
  765   PROCEDURE  USERS_IAM_ DELETE_SP(
  766   p_USERNAME     IN            USE RS.USERNAM E%TYPE
  767   ) IS
  768                  Userna me_not_fou nd EXCEPTI ON;
  769                  PRAGMA  EXCEPTION _INIT(User name_not_f ound, -209 05);
  770   BEGIN
  771              UPDATE USE RS SET INA CTIVE_FLAG  = 1
  772                                            ,  INACTIVE_D ATE = SYSD ATE
  773                                            ,  RECORD_MOD IFIED_BY =  USER
  774                                            ,  RECORD_MOD IFIED_DATE  = SYSDATE
  775                                            ,  RECORD_MOD IFIED_COUN T = RECORD _MODIFIED_ COUNT   +  1
  776              WHERE USER NAME = p_U SERNAME;
  777              IF SQL%ROW COUNT = 0  THEN
  778                    RAIS E Username _not_found ;
  779                 END IF;
  780              COMMIT;
  781  
  782              EXCEPTION
  783                  WHEN U sername_no t_found TH EN
  784                      RO LLBACK;
  785                      RA ISE_APPLIC ATION_ERRO R(-20905,  'Username  not found' );
  786                  WHEN O THERS THEN
  787                      RO LLBACK;
  788                      RA ISE_APPLIC ATION_ERRO R(-20902,  'Delete Er ror - ' ||  SUBSTR(SQ LERRM,1,20 00));
  789   END USERS_ IAM_DELETE _SP;
  790  
  791   PROCEDURE  delimstrin g_to_table
  792     ( p_deli mstring IN  VARCHAR2
  793     , p_tabl e OUT varc har2_table
  794     , p_nfie lds OUT IN TEGER
  795     , p_deli m IN VARCH AR2 DEFAUL T ','
  796     )
  797   IS
  798     v_string  VARCHAR2( 32767) :=  p_delimstr ing;
  799     v_nfield s PLS_INTE GER := 1;
  800     v_table  varchar2_t able;
  801     v_delimp os PLS_INT EGER := IN STR(p_deli mstring, p _delim);
  802     v_deliml en PLS_INT EGER := LE NGTH(p_del im);
  803   BEGIN
  804     WHILE v_ delimpos >  0
  805     LOOP
  806       v_tabl e(v_nfield s) := SUBS TR(v_strin g,1,v_deli mpos-1);
  807       v_stri ng := SUBS TR(v_strin g,v_delimp os+v_delim len);
  808       v_nfie lds := v_n fields+1;
  809       v_deli mpos := IN STR(v_stri ng, p_deli m);
  810     END LOOP ;
  811     v_table( v_nfields)  := v_stri ng;
  812     p_table  := v_table ;
  813     p_nfield s := v_nfi elds;
  814   END delims tring_to_t able;
  815  
  816   PROCEDURE  table_to_d elimstring
  817     ( p_tabl e IN varch ar2_table
  818     , p_deli mstring OU T VARCHAR2
  819     , p_deli m IN VARCH AR2 DEFAUL T ','
  820     )
  821   IS
  822     v_nfield s PLS_INTE GER := p_t able.COUNT ;
  823     v_string  VARCHAR2( 32767);
  824   BEGIN
  825     FOR i IN  1..v_nfie lds
  826     LOOP
  827       v_stri ng := v_st ring || p_ table(i);
  828       IF i ! = v_nfield s THEN
  829         v_st ring := v_ string ||  p_delim;
  830       END IF ;
  831     END LOOP ;
  832     p_delims tring := v _string;
  833   END table_ to_delimst ring;
  834  
  835   END IAM_UT IL_PKG;
  836   /
  837  
  838  
  839   CREATE OR  REPLACE PU BLIC SYNON YM IAM_UTI L_PKG FOR  ADR.IAM_UT IL_PKG;
  840  
  841  
  842   GRANT EXEC UTE ON ADR .IAM_UTIL_ PKG TO IAM USR;
  843   DROP PACKA GE BODY AD R.HL7_ARCH IVE_PKG;
  844  
  845   CREATE OR  REPLACE PA CKAGE BODY  ADR.Hl7_A rchive_Pkg
  846   AS
  847  
  848   /********* ********** ********** ********** ********** ********** ********** ********
  849    *
  850    *    NAME : Hl7_Arch ive_Contro l
  851    *    TYPE : Function
  852    *             RETURN  VALUE: VA RCHAR2
  853    *
  854    *    DESC RIPTION
  855    *      Us ed to requ est that t he HL7 arc hiving job  in the Or acle job s cheduler
  856    *      ei ther start s or stops  processin g.
  857    *
  858    *      It  sets the  Value colu mn in the  ADR.Adr_Pa rameter ta ble
  859    *      (A pplication _name = HL 7_ARCHIVE_ CONTROL,
  860    *       P arameter_n ame = STAR T_STOP_PRO CESS) to e ither 0 (s top proces sing) or
  861    *      1  (start pro cessing.
  862    *
  863    ********* ********** ********** ********** ********** ********** ********** ********
  864    */
  865  
  866   FUNCTION H l7_Archive _Control
  867     (PN_stat us_code
  868       IN      NUMBER)
  869     RETURN V ARCHAR2
  870   IS
  871  
  872     CC_msg_a lready_sta rted              CON STANT VARC HAR2(255)  := 'Archiv e process  start has  already be en request ed';
  873     CC_msg_a lready_sto pped              CON STANT VARC HAR2(255)  := 'Archiv e process  stop has a lready bee n requeste d';
  874     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.';
  875     CC_msg_i nput_unkno wn_reqst          CON STANT VARC HAR2(255)  := 'ERROR  - Unknown  request.';
  876     CC_msg_s tart_succe ss                CON STANT VARC HAR2(255)  := 'Archiv e start re quest comp leted succ essfully';
  877     CC_msg_s top_succes s                 CON STANT VARC HAR2(255)  := 'Archiv e stop req uest compl eted succe ssfully';
  878     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.' ;
  879  
  880  
  881     VC_statu s_msg                        VAR CHAR2(255) ;
  882  
  883     VN_row_c ount                         NUM BER;
  884     VN_curr_ status_cod e                 NUM BER(1);
  885     VN_new_s tatus_code                   NUM BER(1);
  886  
  887   BEGIN
  888  
  889     IF PN_st atus_code  NOT IN (0, 1) THEN
  890  
  891       VC_sta tus_msg :=  CC_msg_in put_parm_i nvalid;
  892  
  893     ELSE
  894  
  895       VN_new _status_co de := PN_s tatus_code ;
  896  
  897       SELECT     COUNT( *)
  898       INTO       VN_row _count
  899       FROM       Adr_Pa rameter AP
  900       WHERE      Applic ation_name  = 'HL7_AR CHIVE_CONT ROL'
  901       AND        Parame ter_name =  'START_ST OP_PROCESS ';
  902  
  903       IF VN_ row_count  = 0 THEN
  904  
  905         VC_s tatus_msg  := CC_msg_ no_param_r ow;
  906  
  907       ELSE
  908  
  909         SELE CT    AP.V alue
  910         INTO       VN_c urr_status _code
  911         FROM       Adr_ Parameter  AP
  912         WHER E     Appl ication_na me = 'HL7_ ARCHIVE_CO NTROL'
  913         AND        Para meter_name  = 'START_ STOP_PROCE SS';
  914  
  915         IF V N_new_stat us_code =  0
  916          AND  VN_curr_s tatus_code  = 0 THEN  -- Stop re quested, a lready sto pped
  917  
  918           VC _status_ms g := CC_ms g_already_ stopped;
  919  
  920         ELSI F VN_new_s tatus_code  = 1
  921          AND  VN_curr_s tatus_code  = 1 THEN  -- Start r equested,  already st arted
  922  
  923           VC _status_ms g := CC_ms g_already_ started;
  924  
  925         ELSI F (VN_new_ status_cod e = 0
  926                AND VN_c urr_status _code = 1)  -- Stop r equested,  valid requ est
  927          OR  (VN_new_st atus_code  = 1
  928              AND VN_cur r_status_c ode = 0) T HEN -- Sta rt request ed, valid  request
  929  
  930           BE GIN
  931  
  932              UPDATE     Adr_Parame ter AP
  933              SET        AP.Value =  VN_new_st atus_code,
  934                         AP.Record_ modified_d ate = SYSD ATE,
  935                         AP.Record_ modified_b y = 'Start _Stop_Proc ess'
  936              WHERE      AP.Applica tion_name  = 'HL7_ARC HIVE_CONTR OL'
  937              AND        AP.Paramet er_name =  'START_STO P_PROCESS' ;
  938  
  939              COMMIT;
  940  
  941              IF VN_new_ status_cod e = 0 THEN
  942  
  943                VC_statu s_msg := C C_msg_stop _success;
  944  
  945              ELSE
  946  
  947               VC_status _msg := CC _msg_start _success;
  948  
  949              END IF;
  950  
  951           EX CEPTION
  952  
  953              WHEN OTHER S THEN
  954  
  955                VC_statu s_msg := S UBSTR('ERR OR - Unabl e to updat e status t o '
  956                                          || V N_new_stat us_code
  957                                          || '  in table  ADRMGT.Adr _Parameter  - ' || SQ LERRM,1,25 4);
  958  
  959           EN D;
  960  
  961         ELSE
  962  
  963           VC _status_ms g := CC_ms g_input_un known_reqs t
  964                              || '  Input para meter: ' | | VN_new_s tatus_code
  965                              || '  Table para meter: ' | | VN_curr_ status_cod e;
  966  
  967         END  IF;
  968  
  969       END IF ;
  970  
  971     END IF;
  972  
  973     RETURN(V C_status_m sg);
  974  
  975   EXCEPTION
  976  
  977     WHEN OTH ERS THEN
  978  
  979       VC_sta tus_msg :=  SUBSTR('E RROR - Arc hive start /stop requ est cannot  be comple ted - ' ||  SQLERRM,1 ,254);
  980  
  981   END Hl7_Ar chive_Cont rol;
  982  
  983   /********* ********** ********** ********** ********** ********** ********** ********
  984    *
  985    *    NAME : Hl7_Dele te_Control
  986    *    TYPE : Function
  987    *             RETURN  VALUE: VA RCHAR2
  988    *
  989    *    DESC RIPTION
  990    *      Us ed to requ est that t he HL7 arc hive delet e job in t he Oracle  job
  991    *      sc heduler ei ther start s or stops  processin g.
  992    *
  993    *      It  sets the  Value colu mn in the  ADR.Adr_Pa rameter ta ble
  994    *      (A pplication _name = HL 7_DELETE_C ONTROL,
  995    *       P arameter_n ame = STAR T_STOP_PRO CESS) to e ither 0 (s top proces sing) or
  996    *      1  (start pro cessing.
  997    *
  998    ********* ********** ********** ********** ********** ********** ********** ********
  999    */
  1000  
  1001   FUNCTION H l7_Delete_ Control
  1002     (PN_stat us_code
  1003       IN      NUMBER)
  1004     RETURN V ARCHAR2
  1005   IS
  1006  
  1007     CC_msg_a lready_sta rted              CON STANT VARC HAR2(255)  := 'Delete  process s tart has a lready bee n requeste d';
  1008     CC_msg_a lready_sto pped              CON STANT VARC HAR2(255)  := 'Delete  process s top has al ready been  requested ';
  1009     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.';
  1010     CC_msg_i nput_unkno wn_reqst          CON STANT VARC HAR2(255)  := 'ERROR  - Unknown  request.';
  1011     CC_msg_s tart_succe ss                CON STANT VARC HAR2(255)  := 'Delete  start req uest compl eted succe ssfully';
  1012     CC_msg_s top_succes s                 CON STANT VARC HAR2(255)  := 'Delete  stop requ est comple ted succes sfully';
  1013     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.';
  1014  
  1015  
  1016     VC_statu s_msg                        VAR CHAR2(255) ;
  1017  
  1018     VN_row_c ount                         NUM BER;
  1019     VN_curr_ status_cod e                 NUM BER(1);
  1020     VN_new_s tatus_code                   NUM BER(1);
  1021  
  1022   BEGIN
  1023  
  1024     IF PN_st atus_code  NOT IN (0, 1) THEN
  1025  
  1026       VC_sta tus_msg :=  CC_msg_in put_parm_i nvalid;
  1027  
  1028     ELSE
  1029  
  1030       VN_new _status_co de := PN_s tatus_code ;
  1031  
  1032       SELECT     COUNT( *)
  1033       INTO       VN_row _count
  1034       FROM       Adr_Pa rameter AP
  1035       WHERE      Applic ation_name  = 'HL7_DE LETE_CONTR OL'
  1036       AND        Parame ter_name =  'START_ST OP_PROCESS ';
  1037  
  1038       IF VN_ row_count  = 0 THEN
  1039  
  1040         VC_s tatus_msg  := CC_msg_ no_param_r ow;
  1041  
  1042       ELSE
  1043  
  1044         SELE CT    AP.V alue
  1045         INTO       VN_c urr_status _code
  1046         FROM       Adr_ Parameter  AP
  1047         WHER E     Appl ication_na me = 'HL7_ DELETE_CON TROL'
  1048         AND        Para meter_name  = 'START_ STOP_PROCE SS';
  1049  
  1050         IF V N_new_stat us_code =  0
  1051          AND  VN_curr_s tatus_code  = 0 THEN  -- Stop re quested, a lready sto pped
  1052  
  1053           VC _status_ms g := CC_ms g_already_ stopped;
  1054  
  1055         ELSI F VN_new_s tatus_code  = 1
  1056          AND  VN_curr_s tatus_code  = 1 THEN  -- Start r equested,  already st arted
  1057  
  1058           VC _status_ms g := CC_ms g_already_ started;
  1059  
  1060         ELSI F (VN_new_ status_cod e = 0
  1061                AND VN_c urr_status _code = 1)  -- Stop r equested,  valid requ est
  1062          OR  (VN_new_st atus_code  = 1
  1063              AND VN_cur r_status_c ode = 0) T HEN -- Sta rt request ed, valid  request
  1064  
  1065           BE GIN
  1066  
  1067              UPDATE     Adr_Parame ter AP
  1068              SET        AP.Value =  VN_new_st atus_code,
  1069                         AP.Record_ modified_d ate = SYSD ATE,
  1070                         AP.Record_ modified_b y = 'Start _Stop_Proc ess'
  1071              WHERE      AP.Applica tion_name  = 'HL7_DEL ETE_CONTRO L'
  1072              AND        AP.Paramet er_name =  'START_STO P_PROCESS' ;
  1073  
  1074              COMMIT;
  1075  
  1076              IF VN_new_ status_cod e = 0 THEN
  1077  
  1078                VC_statu s_msg := C C_msg_stop _success;
  1079  
  1080              ELSE
  1081  
  1082               VC_status _msg := CC _msg_start _success;
  1083  
  1084              END IF;
  1085  
  1086           EX CEPTION
  1087  
  1088              WHEN OTHER S THEN
  1089  
  1090                VC_statu s_msg := S UBSTR('ERR OR - Unabl e to updat e status t o '
  1091                                          || V N_new_stat us_code
  1092                                          || '  in table  ADRMGT.Adr _Parameter  - ' || SQ LERRM,1,25 4);
  1093  
  1094           EN D;
  1095  
  1096         ELSE
  1097  
  1098           VC _status_ms g := CC_ms g_input_un known_reqs t
  1099                              || '  Input para meter: ' | | VN_new_s tatus_code
  1100                              || '  Table para meter: ' | | VN_curr_ status_cod e;
  1101  
  1102         END  IF;
  1103  
  1104       END IF ;
  1105  
  1106     END IF;
  1107  
  1108     RETURN(V C_status_m sg);
  1109  
  1110   EXCEPTION
  1111  
  1112     WHEN OTH ERS THEN
  1113  
  1114       VC_sta tus_msg :=  SUBSTR('E RROR - Del ete start/ stop reque st cannot  be complet ed - ' ||  SQLERRM,1, 254);
  1115  
  1116   END Hl7_De lete_Contr ol;
  1117  
  1118   /********* ********** ********** ********** ********** ********** ********** ********
  1119    *
  1120    *    NAME : Hl7_Proc ess_Archiv es
  1121    *    TYPE : Procedur e
  1122    *
  1123    *    DESC RIPTION
  1124    *      Us ed to move  rows from  the Hl7_T ransaction _Log table  to the
  1125    *      Hl 7_Archive_ Transactio n_log tabl e based on  customer  defined ar chiving
  1126    *      cr iteria.
  1127    *
  1128    *    PARA METERS
  1129    *      PB _run_stand alone - Al lows this  procedure  to run out side of th e Oracle
  1130    *                            DB MS_JOB sch eduler.
  1131    *      PB _allow_rpt _inst - Al lows this  procedure  to run on  reporting
  1132    *                              databases  (ie. 
D NS    )
  1133    *
  1134    ********* ********** ********** ********** ********** ********** ********** ********
  1135    */
  1136  
  1137   PROCEDURE  Hl7_Proces s_Archives
  1138     (PB_run_ standalone
  1139        IN      BOOLEAN  DEFAULT FA LSE,
  1140      PB_allo w_rpt_inst
  1141        IN      BOOLEAN  DEFAULT FA LSE
  1142     )
  1143   IS
  1144  
  1145   -- CONSTAN TS
  1146  
  1147     CC_proce ss_name                        V ARCHAR2(60 ) := 'HL7  Archiver -  Archive H L7 Rows';
  1148  
  1149     CC_stat_ type_compl ete                 C ONSTANT NU MBER := 15 06921;
  1150     CC_stat_ type_uncom p_wait_tra n        C ONSTANT NU MBER := 15 06922;
  1151     CC_stat_ type_uncom p_wait_ack          C ONSTANT NU MBER := 15 06923;
  1152     CC_stat_ type_uncom p_pending           C ONSTANT NU MBER := 15 06924;
  1153     CC_stat_ type_uncom p_retrans           C ONSTANT NU MBER := 15 06925;
  1154     CC_stat_ type_uncom p_not_tran s        C ONSTANT NU MBER := 15 06926;
  1155     CC_stat_ type_uncom p_error             C ONSTANT NU MBER := 15 06927;
  1156     CC_stat_ type_uncom p_rtran_fa il       C ONSTANT NU MBER := 15 06928;
  1157  
  1158     CC_tran_ type_orfz1 0s                  C ONSTANT NU MBER := 15 10423;
  1159     CC_tran_ type_orfz1 1s                  C ONSTANT NU MBER := 15 10425;  --  CCR 1788
  1160     CC_tran_ type_oruz0 4s                  C ONSTANT NU MBER := 15 10420;
  1161     CC_tran_ type_oruz0 5e                  C ONSTANT NU MBER := 15 10407;  --  CCR 1788
  1162     CC_tran_ type_oruz0 5s                  C ONSTANT NU MBER := 15 10421;
  1163     CC_tran_ type_oruz1 0s                  C ONSTANT NU MBER := 15 10422;
  1164     CC_tran_ type_oruz1 1e                  C ONSTANT NU MBER := 15 10408;
  1165     CC_tran_ type_oruz1 1s                  C ONSTANT NU MBER := 15 10424;
  1166     CC_tran_ type_qryz1 0e                  C ONSTANT NU MBER := 15 10403;
  1167     CC_tran_ type_qryz1 1e                  C ONSTANT NU MBER := 15 10435;  --  CCR 1788
  1168  
  1169   -- VARIABL ES
  1170  
  1171     VB_allow _rpt_inst                      B OOLEAN :=  FALSE;
  1172     VB_error                                B OOLEAN :=  FALSE;
  1173     VB_run_s tandalone                      B OOLEAN :=  FALSE;
  1174  
  1175     VC_allow _rpt_inst                      V ARCHAR2(5)  := NULL;
  1176     VC_insta nce_name                       V ARCHAR2(16 ) := NULL;
  1177     VC_proce ss_duratio n                   V ARCHAR2(50 ) := NULL;
  1178     VC_proce ss_msg                         V ARCHAR2(50 0) := NULL ;
  1179     VC_run_s tandalone                      V ARCHAR2(5)  := NULL;
  1180  
  1181     VD_log_d ate                            D ATE;
  1182     VD_proce ss_end_dat e                   D ATE;
  1183     VD_proce ss_start_d ate                 D ATE;
  1184  
  1185     VI_rows_ to_keep_co unt                 B INARY_INTE GER;
  1186  
  1187     VN_archi ve_count                       N UMBER := 0 ;
  1188     VN_curre nt_person_ id                  N UMBER := 0 ;
  1189     VN_delet e_count                        N UMBER := 0 ;
  1190     VN_insti tution_id                      N UMBER := 0 ;
  1191     VN_inser t_count                        N UMBER := 0 ;
  1192     VN_job_c ount                           N UMBER := 0 ;
  1193     VN_log_a ge_to_keep                     N UMBER := 1 80;
  1194     VN_msg_s tatus_id                       N UMBER;
  1195     VN_msg_t ranstype_i d                   N UMBER;
  1196     VN_parm_ keep_uncom pleted_day s        N UMBER := 3 0;
  1197     VN_parm_ keep_orfz1 0s_count            N UMBER := 9 ;
  1198     VN_parm_ keep_orfz1 1s_count            N UMBER := 4 ;  -- CCR  1788
  1199     VN_parm_ keep_oruz0 4s_count            N UMBER := 4 ;
  1200     VN_parm_ keep_oruz0 5e_count            N UMBER := 2 ;  -- CCR  1788
  1201     VN_parm_ keep_oruz0 5s_count            N UMBER := 9 ;
  1202     VN_parm_ keep_oruz1 0s_count            N UMBER := 9 ;
  1203     VN_parm_ keep_oruz1 1e_count            N UMBER := 8 ;
  1204     VN_parm_ keep_oruz1 1s_count            N UMBER := 9 ;
  1205     VN_parm_ keep_qryz1 0e_count            N UMBER := 9 ;
  1206     VN_parm_ keep_qryz1 1e_count            N UMBER := 4 ;  -- CCR  1788
  1207     VN_perso n_count                        N UMBER := 0 ;
  1208     VN_previ ous_person _id                 N UMBER := 0 ;
  1209     VN_proce ss_control                     N UMBER := 0 ;
  1210     VN_proce ss_days                        N UMBER;
  1211     VN_proce ss_hours                       N UMBER;
  1212     VN_proce ss_minutes                     N UMBER;
  1213     VN_proce ss_seconds                     N UMBER;
  1214     VN_proce ss_time_in _secs               N UMBER;
  1215  
  1216   -- RECORD  DEFINITION S
  1217  
  1218     TYPE TR_ hl7_txn_re c IS RECOR D
  1219       (Hl7_t ransaction _log_id             A DR.Hl7_Tra nsaction_L og.Hl7_tra nsaction_l og_id%TYPE ,
  1220        Recor d_created_ date                A DR.Hl7_Tra nsaction_L og.Record_ created_da te%TYPE);
  1221  
  1222   -- TABLE D EFINITIONS
  1223  
  1224     TYPE TT_ number_tab le IS TABL E OF NUMBE R INDEX BY  PLS_INTEG ER;
  1225  
  1226     TYPE TT_ hl7_txn IS  TABLE OF  TR_hl7_txn _rec
  1227       INDEX  BY BINARY_ INTEGER;
  1228  
  1229   --TABLES
  1230  
  1231     T_instit ution_ids                      T T_number_t able;
  1232  
  1233     T_status _types                         T T_number_t able;
  1234  
  1235     T_trans_ types                          T T_number_t able;
  1236  
  1237     T_hl7_tx ns                             T T_hl7_txn;
  1238  
  1239   -- CURSORS
  1240  
  1241     CURSOR C _inst_id_r ec IS
  1242       SELECT     DISTIN CT Std_ins titution_i d
  1243       FROM       Hl7_Tr ansaction_ Log
  1244       WHERE      Person _id = VN_c urrent_per son_id
  1245       ORDER  BY  Std_in stitution_ id;
  1246  
  1247     CURSOR C _msg_statu s_rec IS
  1248       SELECT     DISTIN CT Hl7_mes sage_statu s_type_id
  1249       FROM       Hl7_Tr ansaction_ Log
  1250       WHERE      Person _id = VN_c urrent_per son_id
  1251       AND        Std_In stitution_ Id = VN_in stitution_ id
  1252       ORDER  BY  Hl7_me ssage_stat us_type_id ;
  1253  
  1254     CURSOR C _msg_trans type_rec I S
  1255       SELECT     DISTIN CT Message _transmiss ion_type_i d
  1256       FROM       Hl7_Tr ansaction_ Log
  1257       WHERE      Person _id = VN_c urrent_per son_id
  1258       AND        Std_In stitution_ Id = VN_in stitution_ id
  1259       AND        Hl7_me ssage_stat us_type_id  = VN_msg_ status_id
  1260       ORDER  BY  Messag e_transmis sion_type_ id;
  1261  
  1262     CURSOR C _hl7_txn_r ec IS
  1263       SELECT     Hl7_tr ansaction_ log_id,
  1264                  Record _Created_d ate
  1265       FROM       Hl7_Tr ansaction_ Log
  1266       WHERE      Person _id = VN_c urrent_per son_id
  1267       AND        Std_In stitution_ Id = VN_in stitution_ id
  1268       AND        Hl7_me ssage_stat us_type_id  = VN_msg_ status_id
  1269       AND        Messag e_transmis sion_type_ id = VN_ms g_transtyp e_id
  1270       ORDER  BY  Record _Created_d ate ASC,
  1271                  Hl7_tr ansaction_ log_id ASC ;
  1272  
  1273     CURSOR C _comp_oruz 11e_rec IS
  1274       SELECT     Hl7_tr ansaction_ log_id,
  1275                  Record _Created_d ate
  1276       FROM       Hl7_Tr ansaction_ Log
  1277       WHERE      Person _id = VN_c urrent_per son_id
  1278       AND        Hl7_me ssage_stat us_type_id  = CC_stat _type_comp lete
  1279       AND        Messag e_transmis sion_type_ id = CC_tr an_type_or uz11e
  1280       ORDER  BY  Record _Created_d ate ASC,
  1281                  Hl7_tr ansaction_ log_id ASC ;
  1282  
  1283     CURSOR C _comp_oruz 05e_rec IS   -- CCR17 88
  1284       SELECT     Hl7_tr ansaction_ log_id,
  1285                  Record _Created_d ate
  1286       FROM       Hl7_Tr ansaction_ Log
  1287       WHERE      Person _id = VN_c urrent_per son_id
  1288       AND        Hl7_me ssage_stat us_type_id  = CC_stat _type_comp lete
  1289       AND        Messag e_transmis sion_type_ id = CC_tr an_type_or uz05e
  1290       ORDER  BY  Record _Created_d ate ASC,
  1291                  Hl7_tr ansaction_ log_id ASC ;
  1292  
  1293   -- ******* ********** ********** ********** ********** ********** ********** ********
  1294   -- *
  1295   -- * Updat e Last Per son Proces sed Parame ter
  1296   -- *
  1297   -- ******* ********** ********** ********** ********** ********** ********** ********
  1298  
  1299   PROCEDURE  Update_Las t_Person_P arm
  1300     (PN_pers on_id
  1301        IN      NUMBER D EFAULT 0
  1302     )
  1303   IS
  1304  
  1305   BEGIN
  1306  
  1307     UPDATE     Adr_Para meter AP
  1308     SET        AP.Value  = PN_pers on_id
  1309     WHERE      Applicat ion_name =  'HL7_PROC ESS_ARCHIV ES'
  1310     AND        Paramete r_name = ' LAST PERSO N_ID PROCE SSED';
  1311  
  1312     COMMIT;
  1313  
  1314   EXCEPTION
  1315  
  1316     WHEN OTH ERS THEN
  1317  
  1318       VB_err or := TRUE ;
  1319  
  1320       VD_log _date := S YSDATE;
  1321  
  1322       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  1323                                    PD_job_log _date => V D_log_date ,
  1324                                    PC_job_sta tus => SUB STR('ERROR        - A rchive Pro cess Loop' ,1,60),
  1325                                    PC_job_log _message = > SUBSTR(' Failed to  update par ameter row  (person i d failure) .'
  1326                                                                   | | ' Applic ation: HL7 _PROCESS_A RCHIVES'
  1327                                                                   | | ' Parame ter: LAST  PERSON_ID  PROCESSED'
  1328                                                                   | | ' Reques ted new Pe rson_id: '
  1329                                                                   | | LTRIM(TO _CHAR(PN_p erson_id,' 9999999999 990'))
  1330                                                                   | | ' Curren t Person_i d: '
  1331                                                                   | | LTRIM(TO _CHAR(VN_c urrent_per son_id,'99 9999999999 0'))
  1332                                                                   | | ' Previo us Person_ id: '
  1333                                                                   | | LTRIM(TO _CHAR(VN_p revious_pe rson_id,'9 9999999999 90'))
  1334                                                                   | | ' - Erro r: '
  1335                                                                   | | SQLERRM, 1,2000),
  1336                                    PD_date1 = > VD_proce ss_start_d ate,
  1337                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  1338  
  1339       ADRMGT .Job_Proce ss_Err_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  1340                                    PD_job_err or_date  = > VD_log_d ate,
  1341                                    PC_job_err or_code =>  SUBSTR(SQ LCODE,1,60 ),
  1342                                    PC_job_err or_message  => SUBSTR ('Failed t o update p arameter r ow (person  id failur e).'
  1343                                                                   | | ' Applic ation: HL7 _PROCESS_A RCHIVES'
  1344                                                                   | | ' Parame ter: LAST  PERSON_ID  PROCESSED'
  1345                                                                   | | ' Reques ted new Pe rson_id: '
  1346                                                                   | | LTRIM(TO _CHAR(PN_p erson_id,' 9999999999 990'))
  1347                                                                   | | ' Curren t Person_i d: '
  1348                                                                   | | LTRIM(TO _CHAR(VN_c urrent_per son_id,'99 9999999999 0'))
  1349                                                                   | | ' Previo us Person_ id: '
  1350                                                                   | | LTRIM(TO _CHAR(VN_p revious_pe rson_id,'9 9999999999 90'))
  1351                                                                   | | ' - Erro r: '
  1352                                                                   | | SQLERRM, 1,2000),
  1353                                    PD_date1 = > VD_proce ss_start_d ate,
  1354                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  1355  
  1356   END Update _Last_Pers on_Parm;
  1357  
  1358   -- ******* ********** ********** ********** ********** ********** ********** ********
  1359   -- *
  1360   -- * Table  Row Inser t/Delete S ub-Procedu re
  1361   -- *
  1362   -- ******* ********** ********** ********** ********** ********** ********** ********
  1363  
  1364   PROCEDURE  Process_Ar chive_Rows
  1365     (PC_proc ess_msg
  1366        IN      VARCHAR2  DEFAULT N ULL
  1367     )
  1368   IS
  1369  
  1370   -- EXCEPTI ONS
  1371  
  1372      EE_DML_ ERROR                          E XCEPTION;
  1373      PRAGMA                                 E XCEPTION_I NIT(EE_DML _ERROR, -2 4381);
  1374  
  1375   BEGIN  --  insert/del ete of arc hive rows
  1376  
  1377   -- Archive  old compl eted HL7 r ows
  1378  
  1379     VN_inser t_count :=  0;
  1380  
  1381     DBMS_APP LICATION_I NFO.SET_AC TION(Actio n_name =>  'Inserting  Archive D ata');
  1382  
  1383   -- 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
  1384   --  by sub tracting t he number  to keep (V I_rows_to_ keep_count ) from the  maximum i nternal ro w number i n
  1385   --  the co llection t able. This  value is  set in the  main proc essing log ic.
  1386  
  1387     BEGIN  - - insert a rchive row s
  1388  
  1389       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
  1390         INSE RT
  1391         INTO       Hl7_ Archive_Tr ansaction_ Log
  1392                    (HL7 _TRANSACTI ON_LOG_ID,
  1393                     PER SON_ID,
  1394                     MES SAGE_TRANS MISSION_TY PE_ID,
  1395                     HL7 _MESSAGE_S TATUS_TYPE _ID,
  1396                     REF _HL7_TRANS ACTION_LOG _ID,
  1397                     STD _INSTITUTI ON_ID,
  1398                     ACK _TYPE_ID,
  1399                     MES SAGE_CONTR OL_NUMBER,
  1400                     BAT CH_CONTROL _NUMBER,
  1401                     ACK _DATE,
  1402                     TRA NSMISSION_ DATE,
  1403                     RET RANSMISSIO N_COUNT,
  1404                     RET RANSMISSIO N_INFO_TEX T,
  1405                     ERR OR_TEXT,
  1406                     SIT E_RECORD_E LGBTY_STAT US_CODE,
  1407                     REC ORD_CREATE D_BY,
  1408                     REC ORD_CREATE D_DATE,
  1409                     MES SAGE_BODY,
  1410                     INT ERNAL_ERRO R_TEXT)
  1411         SELE CT    HL7_ TRANSACTIO N_LOG_ID,
  1412                    PERS ON_ID,
  1413                    MESS AGE_TRANSM ISSION_TYP E_ID,
  1414                    HL7_ MESSAGE_ST ATUS_TYPE_ ID,
  1415                    REF_ HL7_TRANSA CTION_LOG_ ID,
  1416                    STD_ INSTITUTIO N_ID,
  1417                    ACK_ TYPE_ID,
  1418                    MESS AGE_CONTRO L_NUMBER,
  1419                    BATC H_CONTROL_ NUMBER,
  1420                    ACK_ DATE,
  1421                    TRAN SMISSION_D ATE,
  1422                    RETR ANSMISSION _COUNT,
  1423                    RETR ANSMISSION _INFO_TEXT ,
  1424                    ERRO R_TEXT,
  1425                    SITE _RECORD_EL GBTY_STATU S_CODE,
  1426                    RECO RD_CREATED _BY,
  1427                    RECO RD_CREATED _DATE,
  1428                    MESS AGE_BODY,
  1429                    INTE RNAL_ERROR _TEXT
  1430         FROM       Hl7_ Transactio n_Log
  1431         WHER E     Hl7_ transactio n_log_id =  T_hl7_txn s(I_hl7_tx ns_ins).Hl 7_transact ion_log_id ;
  1432  
  1433       VN_ins ert_count  := SQL%ROW COUNT;
  1434  
  1435       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
  1436  
  1437     -- Delet e old comp leted HL7  rows
  1438  
  1439         VN_d elete_coun t := 0;
  1440  
  1441         DBMS _APPLICATI ON_INFO.SE T_ACTION(A ction_name  => 'Delet ing Archiv ed HL7 Dat a');
  1442  
  1443     -- 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
  1444     --  by s ubtracting  the numbe r to keep  (VI_rows_t o_keep_cou nt) from t he maximum  internal  row number  in
  1445     --  the  collection  table. Th is value i s set in t he main pr ocessing l ogic.
  1446  
  1447         BEGI N  -- dele te HL7 row s
  1448  
  1449           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
  1450              DELETE
  1451              FROM       Hl7_Transa ction_Log
  1452              WHERE      Hl7_Transa ction_Log_ id = T_hl7 _txns(I_hl 7_txns_del ).Hl7_Tran saction_Lo g_id;
  1453  
  1454           VN _delete_co unt := SQL %ROWCOUNT;
  1455  
  1456           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
  1457  
  1458              IF VN_inse rt_count =  VN_delete _count THE N  -- inse rt and del ete counts  match
  1459  
  1460                COMMIT;
  1461  
  1462                VN_archi ve_count : = VN_archi ve_count +  VN_insert _count;
  1463                VN_perso n_count :=  VN_person _count + 1 ;
  1464  
  1465                DBMS_APP LICATION_I NFO.SET_CL IENT_INFO( TO_CHAR(SY SDATE,'DD- MON HH24:M I')
  1466                                                          || ' -Tota l Persons  '  -- Tota l people p rocessed
  1467                                                          || LTRIM(T O_CHAR(VN_ person_cou nt,'9,999, 999,990'))
  1468                                                          || ' -Tota l Rows '   -- Total r ows proces sed
  1469                                                          || LTRIM(T O_CHAR(VN_ archive_co unt,'999,9 99,999,990 '))
  1470                                                          || LTRIM(T O_CHAR(T_h l7_txns.CO UNT - VI_r ows_to_kee p_count,'9 99,990'))
  1471                                                          || '.');
  1472  
  1473              ELSE  -- i nsert and  delete cou nts do not  match
  1474  
  1475                VB_error  := TRUE;
  1476  
  1477                VD_log_d ate := SYS DATE;
  1478  
  1479                ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( CC_process _name,1,60 ),
  1480                                            PD _job_log_d ate => VD_ log_date,
  1481                                            PC _job_statu s => SUBST R('ERROR        - Arc hive Proce ss Loop',1 ,60),
  1482                                            PC _job_log_m essage =>  SUBSTR('IN SERT/DELET E counts d o not matc h. '
  1483                                                                            ||  LTRIM(RTRI M(PC_proce ss_msg))
  1484                                                                            ||  ' - Rows i n collecti on after c lean up: '
  1485                                                                            ||  LTRIM(TO_C HAR(T_hl7_ txns.COUNT  - VI_rows _to_keep_c ount,'999, 990'))
  1486                                                                            ||  ' - INSERT  COUNT: '
  1487                                                                            ||  LTRIM(TO_C HAR(VN_ins ert_count, '999,990') )
  1488                                                                            ||  ' - DELETE  COUNT: '
  1489                                                                            ||  LTRIM(TO_C HAR(VN_del ete_count, '999,990') ),1,2000),
  1490                                            PD _date1 =>  VD_process _start_dat e,
  1491                                            PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  1492  
  1493                ADRMGT.J ob_Process _Err_Sp(PC _job_name  => SUBSTR( CC_process _name,1,60 ),
  1494                                            PD _job_error _date  =>  VD_log_dat e,
  1495                                            PC _job_error _code => N ULL,
  1496                                            PC _job_error _message = > SUBSTR(' INSERT/DEL ETE counts  do not ma tch. '
  1497                                                                              | | LTRIM(RT RIM(PC_pro cess_msg))
  1498                                                                              | | ' - Rows  in collec tion after  clean up:  '
  1499                                                                              | | LTRIM(TO _CHAR(T_hl 7_txns.COU NT - VI_ro ws_to_keep _count,'99 9,990'))
  1500                                                                              | | ' - INSE RT COUNT:  '
  1501                                                                              | | LTRIM(TO _CHAR(VN_i nsert_coun t,'999,990 '))
  1502                                                                              | | ' - DELE TE COUNT:  '
  1503                                                                              | | LTRIM(TO _CHAR(VN_d elete_coun t,'999,990 ')),1,2000 ),
  1504                                            PD _date1 =>  VD_process _start_dat e,
  1505                                            PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  1506  
  1507                ROLLBACK ;
  1508  
  1509                Update_L ast_Person _Parm(VN_p revious_pe rson_id);
  1510  
  1511              END IF;--  insert and  delete co unts match
  1512  
  1513           EL SE  -- not  all rows  were delet ed
  1514  
  1515              VB_error : = TRUE;
  1516  
  1517              VD_log_dat e := SYSDA TE;
  1518  
  1519              ADRMGT.Job _Process_L og_Sp(PC_j ob_name =>  SUBSTR(CC _process_n ame,1,60),
  1520                                          PD_j ob_log_dat e => VD_lo g_date,
  1521                                          PC_j ob_status  => SUBSTR( 'ERROR        - Archi ve Process  Loop',1,6 0),
  1522                                          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 . '
  1523                                                                          || LT RIM(RTRIM( PC_process _msg))
  1524                                                                          || '  - Rows in  collection  after cle an up: '
  1525                                                                          || LT RIM(TO_CHA R(T_hl7_tx ns.COUNT -  VI_rows_t o_keep_cou nt,'999,99 0'))
  1526                                                                          || '  - DELETE C OUNT: '
  1527                                                                          || LT RIM(TO_CHA R(VN_delet e_count,'9 99,990')), 1,2000),
  1528                                          PD_d ate1 => VD _process_s tart_date,
  1529                                          PC_t ext1 => SU BSTR('Date 1 column c ontains th e daily pr ocess star t date',1, 255));
  1530  
  1531              ADRMGT.Job _Process_E rr_Sp(PC_j ob_name =>  SUBSTR(CC _process_n ame,1,60),
  1532                                          PD_j ob_error_d ate  => VD _log_date,
  1533                                          PC_j ob_error_c ode => NUL L,
  1534                                          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. '
  1535                                                                            ||  LTRIM(RTRI M(PC_proce ss_msg))
  1536                                                                            ||  ' - Rows i n collecti on after c lean up: '
  1537                                                                            ||  LTRIM(TO_C HAR(T_hl7_ txns.COUNT  - VI_rows _to_keep_c ount,'999, 990'))
  1538                                                                            ||  ' - DELETE  COUNT: '
  1539                                                                            ||  LTRIM(TO_C HAR(VN_del ete_count, '999,990') ),1,2000),
  1540                                          PD_d ate1 => VD _process_s tart_date,
  1541                                          PC_t ext1 => SU BSTR('Date 1 column c ontains th e daily pr ocess star t date',1, 255));
  1542  
  1543              ROLLBACK;
  1544  
  1545              Update_Las t_Person_P arm(VN_pre vious_pers on_id);
  1546  
  1547           EN D IF;  --  if all row s were del eted
  1548  
  1549         EXCE PTION   --  failed du ring delet e
  1550  
  1551           WH EN EE_DML_ ERROR THEN
  1552  
  1553              VB_error : = TRUE;
  1554              VN_delete_ count := S QL%ROWCOUN T;
  1555  
  1556              VD_log_dat e := SYSDA TE;
  1557  
  1558              ADRMGT.Job _Process_L og_Sp(PC_j ob_name =>  SUBSTR(CC _process_n ame,1,60),
  1559                                          PD_j ob_log_dat e => VD_lo g_date,
  1560                                          PC_j ob_status  => SUBSTR( 'ERROR        - Archi ve Process  Loop',1,6 0),
  1561                                          PC_j ob_log_mes sage => SU BSTR('All  rows not d eleted. '
  1562                                                                          || LT RIM(RTRIM( PC_process _msg))
  1563                                                                          || '  - Rows in  collection  after cle an up: '
  1564                                                                          || LT RIM(TO_CHA R(T_hl7_tx ns.COUNT -  VI_rows_t o_keep_cou nt,'999,99 0'))
  1565                                                                          || '.  Error cou nt: '
  1566                                                                          || LT RIM(TO_CHA R(SQL%BULK _EXCEPTION S.COUNT,'9 99,990'))
  1567                                                                          || '.  Rows atte mpted to d elete: '
  1568                                                                          || LT RIM(TO_CHA R(VN_delet e_count,'9 99,990')), 1,2000),
  1569                                          PD_d ate1 => VD _process_s tart_date,
  1570                                          PC_t ext1 => SU BSTR('Date 1 column c ontains th e daily pr ocess star t date',1, 255));
  1571  
  1572              ADRMGT.Job _Process_E rr_Sp(PC_j ob_name =>  SUBSTR(CC _process_n ame,1,60),
  1573                                          PD_j ob_error_d ate  => VD _log_date,
  1574                                          PC_j ob_error_c ode => NUL L,
  1575                                          PC_j ob_error_m essage =>  SUBSTR('Al l rows not  deleted.  '
  1576                                                                            ||  LTRIM(RTRI M(PC_proce ss_msg))
  1577                                                                            ||  ' - Rows i n collecti on after c lean up: '
  1578                                                                            ||  LTRIM(TO_C HAR(T_hl7_ txns.COUNT  - VI_rows _to_keep_c ount,'999, 990'))
  1579                                                                            ||  '. Error c ount: '
  1580                                                                            ||  LTRIM(TO_C HAR(SQL%BU LK_EXCEPTI ONS.COUNT, '999,990') )
  1581                                                                            ||  '. Rows at tempted to  delete: '
  1582                                                                            ||  LTRIM(TO_C HAR(VN_del ete_count, '999,990') ),1,2000),
  1583                                          PD_d ate1 => VD _process_s tart_date,
  1584                                          PC_t ext1 => SU BSTR('Date 1 column c ontains th e daily pr ocess star t date',1, 255));
  1585  
  1586              FOR I_del_ err IN 1.. SQL%BULK_E XCEPTIONS. COUNT LOOP
  1587  
  1588                VD_log_d ate := SYS DATE;
  1589  
  1590                ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( CC_process _name,1,60 ),
  1591                                            PD _job_log_d ate => VD_ log_date,
  1592                                            PC _job_statu s => SUBST R('ERROR        - Arc hive Proce ss Loop',1 ,60),
  1593                                            PC _job_log_m essage =>  SUBSTR('Fa iled DELET E row # '
  1594                                                                            ||  I_del_err
  1595                                                                            ||  ' occurred  during it eration #  '
  1596                                                                            ||  SQL%BULK_E XCEPTIONS( I_del_err) .ERROR_IND EX
  1597                                                                            ||  ' Error me ssage: '
  1598                                                                            ||  SQLERRM(-S QL%BULK_EX CEPTIONS(I _del_err). ERROR_CODE ),1,2000),
  1599                                            PD _date1 =>  VD_process _start_dat e,
  1600                                            PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  1601  
  1602                ADRMGT.J ob_Process _Err_Sp(PC _job_name  => SUBSTR( CC_process _name,1,60 ),
  1603                                            PD _job_error _date  =>  VD_log_dat e,
  1604                                            PC _job_error _code => S UBSTR(-SQL %BULK_EXCE PTIONS(I_d el_err).ER ROR_CODE,1 ,60),
  1605                                            PC _job_error _message = > SUBSTR(' Failed DEL ETE row #  '
  1606                                                                              | | I_del_er r
  1607                                                                              | | ' occurr ed during  iteration  # '
  1608                                                                              | | SQL%BULK _EXCEPTION S(I_del_er r).ERROR_I NDEX
  1609                                                                              | | ' Error  message: '
  1610                                                                              | | SQLERRM( -SQL%BULK_ EXCEPTIONS (I_del_err ).ERROR_CO DE),1,2000 ),
  1611                                            PD _date1 =>  VD_process _start_dat e,
  1612                                            PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  1613  
  1614              END LOOP;
  1615  
  1616              ROLLBACK;
  1617  
  1618              Update_Las t_Person_P arm(VN_pre vious_pers on_id);
  1619  
  1620           WH EN OTHERS  THEN
  1621  
  1622              VB_error : = TRUE;
  1623              VN_insert_ count := S QL%ROWCOUN T;
  1624  
  1625              VD_log_dat e := SYSDA TE;
  1626  
  1627              ADRMGT.Job _Process_L og_Sp(PC_j ob_name =>  SUBSTR(CC _process_n ame,1,60),
  1628                                          PD_j ob_log_dat e => VD_lo g_date,
  1629                                          PC_j ob_status  => SUBSTR( 'ERROR        - Archi ve Process  Loop',1,6 0),
  1630                                          PC_j ob_log_mes sage => SU BSTR('Unkn own error  while dele ting HL7 r ows. '
  1631                                                                          || LT RIM(RTRIM( PC_process _msg))
  1632                                                                          || '  - Rows in  collection  after cle an up: '
  1633                                                                          || LT RIM(TO_CHA R(T_hl7_tx ns.COUNT -  VI_rows_t o_keep_cou nt,'999,99 0'))
  1634                                                                          || '.  Error cou nt: '
  1635                                                                          || LT RIM(TO_CHA R(SQL%BULK _EXCEPTION S.COUNT,'9 99,990'))
  1636                                                                          || '.  Rows atte mpted to d elete: '
  1637                                                                          || LT RIM(TO_CHA R(VN_inser t_count,'9 99,990')), 1,2000),
  1638                                          PD_d ate1 => VD _process_s tart_date,
  1639                                          PC_t ext1 => SU BSTR('Date 1 column c ontains th e daily pr ocess star t date',1, 255));
  1640  
  1641              ADRMGT.Job _Process_E rr_Sp(PC_j ob_name =>  SUBSTR(CC _process_n ame,1,60),
  1642                                          PD_j ob_error_d ate  => VD _log_date,
  1643                                          PC_j ob_error_c ode => SUB STR(SQLCOD E,1,60),
  1644                                          PC_j ob_error_m essage =>  SUBSTR('Un known erro r while de leting HL7  rows. '
  1645                                                                            ||  LTRIM(RTRI M(PC_proce ss_msg))
  1646                                                                            ||  ' - Rows i n collecti on after c lean up: '
  1647                                                                            ||  LTRIM(TO_C HAR(T_hl7_ txns.COUNT  - VI_rows _to_keep_c ount,'999, 990'))
  1648                                                                            ||  '. Error c ount: '
  1649                                                                            ||  LTRIM(TO_C HAR(SQL%BU LK_EXCEPTI ONS.COUNT, '999,990') )
  1650                                                                            ||  '. Rows at tempted to  delete: '
  1651                                                                            ||  LTRIM(TO_C HAR(VN_ins ert_count, '999,990') ),1,2000),
  1652                                          PD_d ate1 => VD _process_s tart_date,
  1653                                          PC_t ext1 => SU BSTR('Date 1 column c ontains th e daily pr ocess star t date',1, 255));
  1654  
  1655              ROLLBACK;
  1656  
  1657              Update_Las t_Person_P arm(VN_pre vious_pers on_id);
  1658  
  1659         END;   -- end d elete HL7  rows
  1660  
  1661       ELSE   -- not all  the rows  were inser ted
  1662  
  1663         VB_e rror := TR UE;
  1664  
  1665         VD_l og_date :=  SYSDATE;
  1666  
  1667         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  1668                                      PD_job_l og_date =>  VD_log_da te,
  1669                                      PC_job_s tatus => S UBSTR('ERR OR       -  Archive P rocess Loo p',1,60),
  1670                                      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. '
  1671                                                                      || LTRIM( RTRIM(PC_p rocess_msg ))
  1672                                                                      || ' - Ro ws in coll ection aft er clean u p: '
  1673                                                                      || LTRIM( TO_CHAR(T_ hl7_txns.C OUNT - VI_ rows_to_ke ep_count,' 999,990'))
  1674                                                                      || ' - IN SERT COUNT : '
  1675                                                                      || LTRIM( TO_CHAR(VN _insert_co unt,'999,9 90')),1,20 00),
  1676                                      PD_date1  => VD_pro cess_start _date,
  1677                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  1678  
  1679         ADRM GT.Job_Pro cess_Err_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  1680                                      PD_job_e rror_date   => VD_log _date,
  1681                                      PC_job_e rror_code  => NULL,
  1682                                      PC_job_e rror_messa ge => SUBS TR('Number  of rows i nserted do  not match  number of  rows in t emp table.  '
  1683                                                                        || LTRI M(RTRIM(PC _process_m sg))
  1684                                                                        || ' -  Rows in co llection a fter clean  up: '
  1685                                                                        || LTRI M(TO_CHAR( T_hl7_txns .COUNT - V I_rows_to_ keep_count ,'999,990' ))
  1686                                                                        || ' -  INSERT COU NT: '
  1687                                                                        || LTRI M(TO_CHAR( VN_insert_ count,'999 ,990')),1, 2000),
  1688                                      PD_date1  => VD_pro cess_start _date,
  1689                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  1690  
  1691         ROLL BACK;
  1692  
  1693         Upda te_Last_Pe rson_Parm( VN_previou s_person_i d);
  1694  
  1695       END IF ;  -- end  if all the  rows were  inserted
  1696  
  1697     EXCEPTIO N   -- fai led during  insert
  1698  
  1699       WHEN E E_DML_ERRO R THEN
  1700  
  1701         VB_e rror := TR UE;
  1702         VN_i nsert_coun t := SQL%R OWCOUNT;
  1703  
  1704         VD_l og_date :=  SYSDATE;
  1705  
  1706         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  1707                                      PD_job_l og_date =>  VD_log_da te,
  1708                                      PC_job_s tatus => S UBSTR('ERR OR       -  Archive P rocess Loo p',1,60),
  1709                                      PC_job_l og_message  => SUBSTR ('All rows  not inser ted. '
  1710                                                                      || LTRIM( RTRIM(PC_p rocess_msg ))
  1711                                                                      || ' - Ro ws in coll ection aft er clean u p: '
  1712                                                                      || LTRIM( TO_CHAR(T_ hl7_txns.C OUNT - VI_ rows_to_ke ep_count,' 999,990'))
  1713                                                                      || '. Err or count:  '
  1714                                                                      || LTRIM( TO_CHAR(SQ L%BULK_EXC EPTIONS.CO UNT,'999,9 90'))
  1715                                                                      || '. Row s attempte d to inser t: '
  1716                                                                      || LTRIM( TO_CHAR(VN _insert_co unt,'999,9 90')),1,20 00),
  1717                                      PD_date1  => VD_pro cess_start _date,
  1718                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  1719  
  1720         ADRM GT.Job_Pro cess_Err_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  1721                                      PD_job_e rror_date   => VD_log _date,
  1722                                      PC_job_e rror_code  => NULL,
  1723                                      PC_job_e rror_messa ge => SUBS TR('All ro ws not ins erted. '
  1724                                                                        || LTRI M(RTRIM(PC _process_m sg))
  1725                                                                        || ' -  Rows in co llection a fter clean  up: '
  1726                                                                        || LTRI M(TO_CHAR( T_hl7_txns .COUNT - V I_rows_to_ keep_count ,'999,990' ))
  1727                                                                        || '. E rror count : '
  1728                                                                        || LTRI M(TO_CHAR( SQL%BULK_E XCEPTIONS. COUNT,'999 ,990'))
  1729                                                                        || '. R ows attemp ted to ins ert: '
  1730                                                                        || LTRI M(TO_CHAR( VN_insert_ count,'999 ,990')),1, 2000),
  1731                                      PD_date1  => VD_pro cess_start _date,
  1732                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  1733  
  1734         FOR  I_ins_err  IN 1..SQL% BULK_EXCEP TIONS.COUN T LOOP
  1735  
  1736           VD _log_date  := SYSDATE ;
  1737  
  1738           AD RMGT.Job_P rocess_Log _Sp(PC_job _name => S UBSTR(CC_p rocess_nam e,1,60),
  1739                                        PD_job _log_date  => VD_log_ date,
  1740                                        PC_job _status =>  SUBSTR('E RROR        - Archive  Process L oop',1,60) ,
  1741                                        PC_job _log_messa ge => SUBS TR('Failed  INSERT ro w # '
  1742                                                                        || I_in s_err
  1743                                                                        || ' oc curred dur ing iterat ion # '
  1744                                                                        || SQL% BULK_EXCEP TIONS(I_in s_err).ERR OR_INDEX
  1745                                                                        || ' Er ror messag e: '
  1746                                                                        || SQLE RRM(-SQL%B ULK_EXCEPT IONS(I_ins _err).ERRO R_CODE),1, 2000),
  1747                                        PD_dat e1 => VD_p rocess_sta rt_date,
  1748                                        PC_tex t1 => SUBS TR('Date1  column con tains the  daily proc ess start  date',1,25 5));
  1749  
  1750           AD RMGT.Job_P rocess_Err _Sp(PC_job _name => S UBSTR(CC_p rocess_nam e,1,60),
  1751                                        PD_job _error_dat e  => VD_l og_date,
  1752                                        PC_job _error_cod e => SUBST R(-SQL%BUL K_EXCEPTIO NS(I_ins_e rr).ERROR_ CODE,1,60) ,
  1753                                        PC_job _error_mes sage => SU BSTR('Fail ed INSERT  row # '
  1754                                                                        || I_in s_err
  1755                                                                        || ' oc curred dur ing iterat ion # '
  1756                                                                        || SQL% BULK_EXCEP TIONS(I_in s_err).ERR OR_INDEX
  1757                                                                        || ' Er ror messag e: '
  1758                                                                        || SQLE RRM(-SQL%B ULK_EXCEPT IONS(I_ins _err).ERRO R_CODE),1, 2000),
  1759                                        PD_dat e1 => VD_p rocess_sta rt_date,
  1760                                        PC_tex t1 => SUBS TR('Date1  column con tains the  daily proc ess start  date',1,25 5));
  1761  
  1762         END  LOOP;
  1763  
  1764         ROLL BACK;
  1765  
  1766         Upda te_Last_Pe rson_Parm( VN_previou s_person_i d);
  1767  
  1768       WHEN O THERS THEN
  1769  
  1770         VB_e rror := TR UE;
  1771         VN_i nsert_coun t := SQL%R OWCOUNT;
  1772  
  1773         VD_l og_date :=  SYSDATE;
  1774  
  1775         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  1776                                      PD_job_l og_date =>  VD_log_da te,
  1777                                      PC_job_s tatus => S UBSTR('ERR OR       -  Archive P rocess Loo p',1,60),
  1778                                      PC_job_l og_message  => SUBSTR ('Unknown  error whil e insertin g archive  rows. '
  1779                                                                      || LTRIM( RTRIM(PC_p rocess_msg ))
  1780                                                                      || ' - Ro ws in coll ection aft er clean u p: '
  1781                                                                      || LTRIM( TO_CHAR(T_ hl7_txns.C OUNT - VI_ rows_to_ke ep_count,' 999,990'))
  1782                                                                      || '. Err or count:  '
  1783                                                                      || LTRIM( TO_CHAR(SQ L%BULK_EXC EPTIONS.CO UNT,'999,9 90'))
  1784                                                                      || '. Row s attempte d to inser t: '
  1785                                                                      || LTRIM( TO_CHAR(VN _insert_co unt,'999,9 90')),1,20 00),
  1786                                      PD_date1  => VD_pro cess_start _date,
  1787                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  1788  
  1789         ADRM GT.Job_Pro cess_Err_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  1790                                      PD_job_e rror_date   => VD_log _date,
  1791                                      PC_job_e rror_code  => SUBSTR( SQLCODE,1, 60),
  1792                                      PC_job_e rror_messa ge => SUBS TR('Unknow n error wh ile insert ing archiv e rows. '
  1793                                                                        || LTRI M(RTRIM(PC _process_m sg))
  1794                                                                        || ' -  Rows in co llection a fter clean  up: '
  1795                                                                        || LTRI M(TO_CHAR( T_hl7_txns .COUNT - V I_rows_to_ keep_count ,'999,990' ))
  1796                                                                        || '. E rror count : '
  1797                                                                        || LTRI M(TO_CHAR( SQL%BULK_E XCEPTIONS. COUNT,'999 ,990'))
  1798                                                                        || '. R ows attemp ted to ins ert: '
  1799                                                                        || LTRI M(TO_CHAR( VN_insert_ count,'999 ,990')),1, 2000),
  1800                                      PD_date1  => VD_pro cess_start _date,
  1801                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  1802  
  1803         ROLL BACK;
  1804  
  1805         Upda te_Last_Pe rson_Parm( VN_previou s_person_i d);
  1806  
  1807     END;  --  end inser t archive  rows
  1808  
  1809   EXCEPTION
  1810  
  1811     WHEN OTH ERS THEN
  1812  
  1813       VB_err or := TRUE ;
  1814  
  1815       VD_log _date := S YSDATE;
  1816  
  1817       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  1818                                    PD_job_log _date => V D_log_date ,
  1819                                    PC_job_sta tus => SUB STR('ERROR        - A rchive Pro cess Loop' ,1,60),
  1820                                    PC_job_log _message = > SUBSTR(' Unknown er ror in pro cedure Pro cess_Archi ve_Rows. '
  1821                                                                   | | LTRIM(RT RIM(PC_pro cess_msg))
  1822                                                                   | | ' - Rows  in collec tion after  clean up:  '
  1823                                                                   | | LTRIM(TO _CHAR(T_hl 7_txns.COU NT - VI_ro ws_to_keep _count,'99 9,990'))
  1824                                                                   | | ' - Erro r: '
  1825                                                                   | | SQLERRM, 1,2000),
  1826                                    PD_date1 = > VD_proce ss_start_d ate,
  1827                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  1828  
  1829       ADRMGT .Job_Proce ss_Err_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  1830                                    PD_job_err or_date  = > VD_log_d ate,
  1831                                    PC_job_err or_code =>  SUBSTR(SQ LCODE,1,60 ),
  1832                                    PC_job_err or_message  => SUBSTR ('Unknown  error in p rocedure P rocess_Arc hive_Rows.  '
  1833                                                                   | | LTRIM(RT RIM(PC_pro cess_msg))
  1834                                                                   | | ' - Rows  in collec tion after  clean up:  '
  1835                                                                   | | LTRIM(TO _CHAR(T_hl 7_txns.COU NT - VI_ro ws_to_keep _count,'99 9,990'))
  1836                                                                   | | ' - Erro r: '
  1837                                                                   | | SQLERRM, 1,2000),
  1838                                    PD_date1 = > VD_proce ss_start_d ate,
  1839                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  1840  
  1841       ROLLBA CK;
  1842  
  1843       Update _Last_Pers on_Parm(VN _previous_ person_id) ;
  1844  
  1845   END Proces s_Archive_ Rows;
  1846  
  1847   -- ******* ********** ********** ********** ********** ********** ********** ********
  1848   -- *
  1849   -- * Main  Procedure
  1850   -- *
  1851   -- ******* ********** ********** ********** ********** ********** ********** ********
  1852  
  1853   BEGIN
  1854  
  1855     DBMS_APP LICATION_I NFO.SET_MO DULE(Modul e_name =>  'Hl7_Proce ss_Archive s',
  1856                                         Actio n_name =>  NULL);
  1857  
  1858     VD_proce ss_start_d ate := SYS DATE;
  1859  
  1860     VD_log_d ate := SYS DATE;
  1861  
  1862     ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( CC_process _name,1,60 ),
  1863                                 PD _job_log_d ate => VD_ log_date,
  1864                                 PC _job_statu s => SUBST R('INFORMA TION - Pro cess Initi ation',1,6 0),
  1865                                 PC _job_log_m essage =>  NULL,
  1866                                 PD _date1 =>  VD_process _start_dat e,
  1867                                 PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  1868  
  1869   -- ******* ********** ********** ********** ********** ********** ********** ********
  1870   -- *
  1871   -- * Valid ate input  parameters
  1872   -- *
  1873   -- ******* ********** ********** ********** ********** ********** ********** ********
  1874  
  1875     DBMS_APP LICATION_I NFO.SET_AC TION(Actio n_name =>  'Validatin g Input Pa rameters') ;
  1876  
  1877   -- * Check  run stand alone flag
  1878  
  1879     IF PB_ru n_standalo ne IS NULL
  1880      OR NOT  PB_run_sta ndalone TH EN
  1881  
  1882       VB_run _standalon e := FALSE ;
  1883       VC_run _standalon e := 'FALS E'; -- use d for log  message, b oolean can 't be disp layed
  1884  
  1885     ELSE
  1886  
  1887       VB_run _standalon e := TRUE;
  1888       VC_run _standalon e := 'TRUE '; -- used  for log m essage, bo olean can' t be displ ayed
  1889  
  1890     END IF;
  1891  
  1892   -- * Check  run on re port insta nce flag
  1893  
  1894     IF PB_al low_rpt_in st IS NULL
  1895      OR NOT  PB_allow_r pt_inst TH EN
  1896  
  1897       VB_all ow_rpt_ins t := FALSE ;
  1898       VC_all ow_rpt_ins t := 'FALS E'; -- use d for log  message, b oolean can 't be disp layed
  1899  
  1900     ELSE
  1901  
  1902       VB_all ow_rpt_ins t := TRUE;
  1903       VC_all ow_rpt_ins t := 'TRUE '; -- used  for log m essage, bo olean can' t be displ ayed
  1904  
  1905     END IF;
  1906  
  1907     VD_log_d ate := SYS DATE;
  1908  
  1909     ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( CC_process _name,1,60 ),
  1910                                 PD _job_log_d ate => VD_ log_date,
  1911                                 PC _job_statu s => SUBST R('INFORMA TION - Com mand Line  Parameters ',1,60),
  1912                                 PC _job_log_m essage =>  SUBSTR('Cu rrent job  command li ne paramet ers - '
  1913                                                              || ' R un standal one: ' ||  VC_run_sta ndalone
  1914                                                              || ' R un on repo rting data bases: ' | | VC_allow _rpt_inst, 1,2000),
  1915                                 PD _date1 =>  VD_process _start_dat e,
  1916                                 PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  1917  
  1918   -- ******* ********** ********** ********** ********** ********** ********** ********
  1919   -- *
  1920   -- * Check  to see if  process i s running  on a repor ting datab ase.
  1921   -- *  - If  VB_allow_ rpt_inst i s FALSE, t hen it's n ot allowed . End the  job.
  1922   -- *
  1923   -- ******* ********** ********** ********** ********** ********** ********** ********
  1924  
  1925     DBMS_APP LICATION_I NFO.SET_AC TION(Actio n_name =>  'Check if  running on  reporting  DB');
  1926  
  1927     BEGIN
  1928  
  1929       SELECT     Instan ce_name
  1930       INTO       VC_ins tance_name
  1931       FROM       V$inst ance;
  1932  
  1933       VD_log _date := S YSDATE;
  1934       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  1935                                    PD_job_log _date => V D_log_date ,
  1936                                    PC_job_sta tus => SUB STR('INFOR MATION - I nstance Na me' ,1,60) ,
  1937                                    PC_job_log _message = > SUBSTR(' Job is run ning on in stance ' | | UPPER(VC _instance_ name) || ' .',1,2000) ,
  1938                                    PD_date1 = > VD_proce ss_start_d ate,
  1939                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  1940  
  1941       IF NOT  VB_allow_ rpt_inst
  1942        AND U PPER(SUBST R(VC_insta nce_name,1 ,4)) = 'AD RR' THEN
  1943  
  1944         VD_l og_date :=  SYSDATE;
  1945  
  1946         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  1947                                      PD_job_l og_date =>  VD_log_da te,
  1948                                      PC_job_s tatus => S UBSTR('ERR OR       -  Reporting  Database  Check',1,6 0),
  1949                                      PC_job_l og_message  => SUBSTR ('Attempti ng to run  on a repor ting datab ase with e xecution p arameter'
  1950                                                                  ||  ' VB_allo w_rpt_inst  set to FA LSE. This  job has be en termina ted.'
  1951                                                                  ||  ' To run  on a repor ting insta nce, set p arameter V B_allow_rp t_inst'
  1952                                                                  ||  ' to TRUE  and resub mit the jo b.',1,2000 ),
  1953                                      PD_date1  => VD_pro cess_start _date,
  1954                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  1955  
  1956         RETU RN;
  1957  
  1958       END IF ;
  1959  
  1960     EXCEPTIO N
  1961  
  1962       WHEN O THERS THEN
  1963  
  1964         VD_l og_date :=  SYSDATE;
  1965  
  1966         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  1967                                      PD_job_l og_date =>  VD_log_da te,
  1968                                      PC_job_s tatus => S UBSTR('ERR OR       -  Reporting  Database  Check',1,6 0),
  1969                                      PC_job_l og_message  => SUBSTR ('Unable t o retrieve  instance  name. Term inating sc ript.',1,2 000),
  1970                                      PD_date1  => VD_pro cess_start _date,
  1971                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  1972  
  1973         ADRM GT.Job_Pro cess_Err_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  1974                                      PD_job_e rror_date   => VD_log _date,
  1975                                      PC_job_e rror_code  => SUBSTR( SQLCODE,1, 60),
  1976                                      PC_job_e rror_messa ge => SUBS TR('Unable  to retrie ve instanc e name. '
  1977                                                                        || SQLE RRM,1,2000 ),
  1978                                      PD_date1  => VD_pro cess_start _date,
  1979                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  1980  
  1981         RETU RN;
  1982  
  1983     END;
  1984  
  1985   -- ******* ********** ********** ********** ********** ********** ********** ********
  1986   -- *
  1987   -- * Check  to see if  any other  jobs of t his proced ure are ru nning.
  1988   -- *  - If  yes, then  end this  job.
  1989   -- *
  1990   -- ******* ********** ********** ********** ********** ********** ********** ********
  1991  
  1992     DBMS_APP LICATION_I NFO.SET_AC TION(Actio n_name =>  'Check for  duplicate  jobs runn ing');
  1993  
  1994     SELECT C OUNT(*)
  1995     INTO   V N_job_coun t
  1996     FROM   S YS.DBA_JOB S J
  1997     WHERE  U PPER(J.WHA T) LIKE '% HL7_PROCES S_ARCHIVES %';
  1998  
  1999     IF VN_jo b_count >  1 THEN
  2000  
  2001       VD_log _date := S YSDATE;
  2002  
  2003       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  2004                                    PD_job_log _date => V D_log_date ,
  2005                                    PC_job_sta tus => SUB STR('ERROR        - M ultiple Ex ecution Ch eck',1,60) ,
  2006                                    PC_job_log _message = > SUBSTR(' There is a nother ins tance of t his job al ready in t he job que ue.'
  2007                                                                || '  Exiting j ob without  running.' ,1,2000),
  2008                                    PD_date1 = > VD_proce ss_start_d ate,
  2009                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  2010  
  2011       RETURN ;
  2012  
  2013     ELSE
  2014  
  2015       IF VB_ run_standa lone THEN
  2016  
  2017         VD_l og_date :=  SYSDATE;
  2018  
  2019         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  2020                                      PD_job_l og_date =>  VD_log_da te,
  2021                                      PC_job_s tatus => S UBSTR('INF ORMATION -  Execution  Mode',1,6 0),
  2022                                      PC_job_l og_message  => SUBSTR ('Starting  in STANDA LONE mode. ',1,2000),
  2023                                      PD_date1  => VD_pro cess_start _date,
  2024                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  2025  
  2026       ELSE
  2027  
  2028         VD_l og_date :=  SYSDATE;
  2029  
  2030         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  2031                                      PD_job_l og_date =>  VD_log_da te,
  2032                                      PC_job_s tatus => S UBSTR('INF ORMATION -  Execution  Mode',1,6 0),
  2033                                      PC_job_l og_message  => SUBSTR ('Starting  in DBMS_J OB mode.', 1,2000),
  2034                                      PD_date1  => VD_pro cess_start _date,
  2035                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  2036  
  2037       END IF ;
  2038  
  2039     END IF;
  2040  
  2041   -- ******* ********** ********** ********** ********** ********** ********** ********
  2042   -- *
  2043   -- * Retri eve modifi able param eters
  2044   -- *
  2045   -- *  If t he process  control p arameter =  0 then th e job retu rns contro l to
  2046   -- *  to D BMS_JOB an d waits un til it is  called to  run again.
  2047   -- *
  2048   -- ******* ********** ********** ********** ********** ********** ********** ********
  2049  
  2050     DBMS_APP LICATION_I NFO.SET_AC TION(Actio n_name =>  'Fetching  user param eters');
  2051  
  2052   -- * START _STOP_PROC ESS parame ter
  2053  
  2054     BEGIN
  2055  
  2056       SELECT     AP.Val ue
  2057       INTO       VN_pro cess_contr ol
  2058       FROM       Adr_Pa rameter AP
  2059       WHERE      Applic ation_name  = 'HL7_AR CHIVE_CONT ROL'
  2060       AND        Parame ter_name =  'START_ST OP_PROCESS ';
  2061  
  2062       IF VN_ process_co ntrol = 0  THEN
  2063  
  2064         VD_l og_date :=  SYSDATE;
  2065  
  2066         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  2067                                      PD_job_l og_date =>  VD_log_da te,
  2068                                      PC_job_s tatus => S UBSTR('INF ORMATION -  Process C ontrol',1, 60),
  2069                                      PC_job_l og_message  => SUBSTR ('Start/St op control  flag set  to STOP (0 ). Going b ack to sle ep.',1,200 0),
  2070                                      PD_date1  => VD_pro cess_start _date,
  2071                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  2072  
  2073         RETU RN;
  2074  
  2075       ELSE
  2076  
  2077         VD_l og_date :=  SYSDATE;
  2078  
  2079         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  2080                                      PD_job_l og_date =>  VD_log_da te,
  2081                                      PC_job_s tatus => S UBSTR('INF ORMATION -  Process C ontrol',1, 60),
  2082                                      PC_job_l og_message  => SUBSTR ('Start/St op control  flag set  to START ( 1). Archiv ing proces s starting .',1,2000) ,
  2083                                      PD_date1  => VD_pro cess_start _date,
  2084                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  2085  
  2086       END IF ;
  2087  
  2088     EXCEPTIO N
  2089  
  2090       WHEN O THERS THEN
  2091  
  2092         VD_l og_date :=  SYSDATE;
  2093  
  2094         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  2095                                      PD_job_l og_date =>  VD_log_da te,
  2096                                      PC_job_s tatus => S UBSTR('ERR OR       -  Process C ontrol',1, 60),
  2097                                      PC_job_l og_message  => SUBSTR ('Unable t o retrieve  parameter  START_STO P_PROCESS. '
  2098                                                                      || ' Term inating ex ecution of  the job.  '|| SQLERR M,1,2000),
  2099                                      PD_date1  => VD_pro cess_start _date,
  2100                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  2101  
  2102         ADRM GT.Job_Pro cess_Err_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  2103                                      PD_job_e rror_date   => VD_log _date,
  2104                                      PC_job_e rror_code  => SUBSTR( SQLCODE,1, 60),
  2105                                      PC_job_e rror_messa ge => SUBS TR('Unable  to retrie ve paramet er START_S TOP_PROCES S. '
  2106                                                                        || SQLE RRM,1,2000 ),
  2107                                      PD_date1  => VD_pro cess_start _date,
  2108                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  2109  
  2110         RETU RN;
  2111  
  2112     END;
  2113  
  2114   -- * OLDES T LOG FILE  DAYS KEPT  parameter
  2115  
  2116     BEGIN
  2117  
  2118       SELECT     AP.Val ue
  2119       INTO       VN_log _age_to_ke ep
  2120       FROM       Adr_Pa rameter AP
  2121       WHERE      Applic ation_name  = 'HL7_PR OCESS_ARCH IVES'
  2122       AND        Parame ter_name =  'OLDEST L OG FILE DA YS KEPT';
  2123  
  2124       VD_log _date := S YSDATE;
  2125  
  2126       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  2127                                    PD_job_log _date => V D_log_date ,
  2128                                    PC_job_sta tus => SUB STR('INFOR MATION - U ser Define d Paramete rs',1,60),
  2129                                    PC_job_log _message = > SUBSTR(' Parameter:  OLDEST LO G FILE DAY S KEPT  -  Value: '||  VN_log_ag e_to_keep, 1,2000),
  2130                                    PD_date1 = > VD_proce ss_start_d ate,
  2131                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  2132  
  2133     EXCEPTIO N
  2134  
  2135       WHEN O THERS THEN
  2136  
  2137         VD_l og_date :=  SYSDATE;
  2138  
  2139         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  2140                                      PD_job_l og_date =>  VD_log_da te,
  2141                                      PC_job_s tatus => S UBSTR('ERR OR       -  User Defi ned Parame ters',1,60 ),
  2142                                      PC_job_l og_message  => SUBSTR ('Unable t o retrieve  parameter  OLDEST LO G FILE DAY S KEPT.'
  2143                                                                      || ' Term inating ex ecution of  the job.  '|| SQLERR M,1,2000),
  2144                                      PD_date1  => VD_pro cess_start _date,
  2145                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  2146  
  2147         ADRM GT.Job_Pro cess_Err_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  2148                                      PD_job_e rror_date   => VD_log _date,
  2149                                      PC_job_e rror_code  => SUBSTR( SQLCODE,1, 60),
  2150                                      PC_job_e rror_messa ge => SUBS TR('Unable  to retrie ve paramet er OLDEST  LOG FILE D AYS KEPT.  '
  2151                                                                        || SQLE RRM,1,2000 ),
  2152                                      PD_date1  => VD_pro cess_start _date,
  2153                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  2154  
  2155         RETU RN;
  2156  
  2157     END;
  2158  
  2159   -- * OLDES T UNCOMPLE TED HL7 DA YS NOT ARC HIVED para meter
  2160  
  2161     BEGIN
  2162  
  2163       SELECT     AP.Val ue
  2164       INTO       VN_par m_keep_unc ompleted_d ays
  2165       FROM       Adr_Pa rameter AP
  2166       WHERE      Applic ation_name  = 'HL7_PR OCESS_ARCH IVES'
  2167       AND        Parame ter_name =  'OLDEST U NCOMPLETED  HL7 DAYS  NOT ARCHIV ED';
  2168  
  2169       VD_log _date := S YSDATE;
  2170  
  2171       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  2172                                    PD_job_log _date => V D_log_date ,
  2173                                    PC_job_sta tus => SUB STR('INFOR MATION - U ser Define d Paramete rs',1,60),
  2174                                    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),
  2175                                    PD_date1 = > VD_proce ss_start_d ate,
  2176                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  2177  
  2178     EXCEPTIO N
  2179  
  2180       WHEN O THERS THEN
  2181  
  2182         VD_l og_date :=  SYSDATE;
  2183  
  2184         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  2185                                      PD_job_l og_date =>  VD_log_da te,
  2186                                      PC_job_s tatus => S UBSTR('ERR OR       -  User Defi ned Parame ters',1,60 ),
  2187                                      PC_job_l og_message  => SUBSTR ('Unable t o retrieve  parameter  OLDEST UN COMPLETED  HL7 DAYS N OT ARCHIVE D.'
  2188                                                                      || ' Term inating ex ecution of  the job.  '|| SQLERR M,1,2000),
  2189                                      PD_date1  => VD_pro cess_start _date,
  2190                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  2191  
  2192         ADRM GT.Job_Pro cess_Err_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  2193                                      PD_job_e rror_date   => VD_log _date,
  2194                                      PC_job_e rror_code  => SUBSTR( SQLCODE,1, 60),
  2195                                      PC_job_e rror_messa ge => SUBS TR('Unable  to retrie ve paramet er OLDEST  UNCOMPLETE D HL7 DAYS  NOT ARCHI VED. '
  2196                                                                        || SQLE RRM,1,2000 ),
  2197                                      PD_date1  => VD_pro cess_start _date,
  2198                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  2199  
  2200         RETU RN;
  2201  
  2202     END;
  2203  
  2204   -- * RECOR DS KEPT CO UNT - ORFZ 10-S param eter
  2205  
  2206     BEGIN
  2207  
  2208       SELECT     AP.Val ue
  2209       INTO       VN_par m_keep_orf z10s_count
  2210       FROM       Adr_Pa rameter AP
  2211       WHERE      Applic ation_name  = 'HL7_PR OCESS_ARCH IVES'
  2212       AND        Parame ter_name =  'RECORDS  KEPT COUNT  - ORFZ10- S';
  2213  
  2214       VD_log _date := S YSDATE;
  2215  
  2216       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  2217                                    PD_job_log _date => V D_log_date ,
  2218                                    PC_job_sta tus => SUB STR('INFOR MATION - U ser Define d Paramete rs',1,60),
  2219                                    PC_job_log _message = > SUBSTR(' Parameter:  RECORDS K EPT COUNT  - ORFZ10-S  - Value:  '|| VN_par m_keep_orf z10s_count ,1,2000),
  2220                                    PD_date1 = > VD_proce ss_start_d ate,
  2221                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  2222  
  2223     EXCEPTIO N
  2224  
  2225       WHEN O THERS THEN
  2226  
  2227         VD_l og_date :=  SYSDATE;
  2228  
  2229         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  2230                                      PD_job_l og_date =>  VD_log_da te,
  2231                                      PC_job_s tatus => S UBSTR('ERR OR       -  User Defi ned Parame ters',1,60 ),
  2232                                      PC_job_l og_message  => SUBSTR ('Unable t o retrieve  parameter  RECORDS K EPT COUNT  - ORFZ10-S .'
  2233                                                                      || ' Term inating ex ecution of  the job.  '|| SQLERR M,1,2000),
  2234                                      PD_date1  => VD_pro cess_start _date,
  2235                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  2236  
  2237         ADRM GT.Job_Pro cess_Err_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  2238                                      PD_job_e rror_date   => VD_log _date,
  2239                                      PC_job_e rror_code  => SUBSTR( SQLCODE,1, 60),
  2240                                      PC_job_e rror_messa ge => SUBS TR('Unable  to retrie ve paramet er RECORDS  KEPT COUN T - ORFZ10 -S. '
  2241                                                                        || SQLE RRM,1,2000 ),
  2242                                      PD_date1  => VD_pro cess_start _date,
  2243                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  2244  
  2245         RETU RN;
  2246  
  2247     END;
  2248  
  2249   -- * RECOR DS KEPT CO UNT - ORFZ 11-S param eter  -- C CR 1788 Be gin
  2250  
  2251     BEGIN
  2252  
  2253       SELECT     AP.Val ue
  2254       INTO       VN_par m_keep_orf z11s_count
  2255       FROM       Adr_Pa rameter AP
  2256       WHERE      Applic ation_name  = 'HL7_PR OCESS_ARCH IVES'
  2257       AND        Parame ter_name =  'RECORDS  KEPT COUNT  - ORFZ11- S';
  2258  
  2259       VD_log _date := S YSDATE;
  2260  
  2261       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  2262                                    PD_job_log _date => V D_log_date ,
  2263                                    PC_job_sta tus => SUB STR('INFOR MATION - U ser Define d Paramete rs',1,60),
  2264                                    PC_job_log _message = > SUBSTR(' Parameter:  RECORDS K EPT COUNT  - ORFZ11-S  - Value:  '|| VN_par m_keep_orf z11s_count ,1,2000),
  2265                                    PD_date1 = > VD_proce ss_start_d ate,
  2266                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  2267  
  2268     EXCEPTIO N
  2269  
  2270       WHEN O THERS THEN
  2271  
  2272         VD_l og_date :=  SYSDATE;
  2273  
  2274         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  2275                                      PD_job_l og_date =>  VD_log_da te,
  2276                                      PC_job_s tatus => S UBSTR('ERR OR       -  User Defi ned Parame ters',1,60 ),
  2277                                      PC_job_l og_message  => SUBSTR ('Unable t o retrieve  parameter  RECORDS K EPT COUNT  - ORFZ11-S .'
  2278                                                                      || ' Term inating ex ecution of  the job.  '|| SQLERR M,1,2000),
  2279                                      PD_date1  => VD_pro cess_start _date,
  2280                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  2281  
  2282         ADRM GT.Job_Pro cess_Err_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  2283                                      PD_job_e rror_date   => VD_log _date,
  2284                                      PC_job_e rror_code  => SUBSTR( SQLCODE,1, 60),
  2285                                      PC_job_e rror_messa ge => SUBS TR('Unable  to retrie ve paramet er RECORDS  KEPT COUN T - ORFZ11 -S. '
  2286                                                                        || SQLE RRM,1,2000 ),
  2287                                      PD_date1  => VD_pro cess_start _date,
  2288                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  2289  
  2290         RETU RN;
  2291  
  2292     END;  --  CCR 1788  End
  2293  
  2294   -- * RECOR DS KEPT CO UNT - ORUZ 04-S param eter
  2295  
  2296     BEGIN
  2297  
  2298       SELECT     AP.Val ue
  2299       INTO       VN_par m_keep_oru z04s_count
  2300       FROM       Adr_Pa rameter AP
  2301       WHERE      Applic ation_name  = 'HL7_PR OCESS_ARCH IVES'
  2302       AND        Parame ter_name =  'RECORDS  KEPT COUNT  - ORUZ04- S';
  2303  
  2304       VD_log _date := S YSDATE;
  2305  
  2306       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  2307                                    PD_job_log _date => V D_log_date ,
  2308                                    PC_job_sta tus => SUB STR('INFOR MATION - U ser Define d Paramete rs',1,60),
  2309                                    PC_job_log _message = > SUBSTR(' Parameter:  RECORDS K EPT COUNT  - ORUZ04-S  - Value:  '|| VN_par m_keep_oru z04s_count ,1,2000),
  2310                                    PD_date1 = > VD_proce ss_start_d ate,
  2311                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  2312  
  2313     EXCEPTIO N
  2314  
  2315       WHEN O THERS THEN
  2316  
  2317         VD_l og_date :=  SYSDATE;
  2318  
  2319         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  2320                                      PD_job_l og_date =>  VD_log_da te,
  2321                                      PC_job_s tatus => S UBSTR('ERR OR       -  User Defi ned Parame ters',1,60 ),
  2322                                      PC_job_l og_message  => SUBSTR ('Unable t o retrieve  parameter  RECORDS K EPT COUNT  - ORUZ04-S .'
  2323                                                                      || ' Term inating ex ecution of  the job.  '|| SQLERR M,1,2000),
  2324                                      PD_date1  => VD_pro cess_start _date,
  2325                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  2326  
  2327         ADRM GT.Job_Pro cess_Err_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  2328                                      PD_job_e rror_date   => VD_log _date,
  2329                                      PC_job_e rror_code  => SUBSTR( SQLCODE,1, 60),
  2330                                      PC_job_e rror_messa ge => SUBS TR('Unable  to retrie ve paramet er RECORDS  KEPT COUN T - ORUZ04 -S. '
  2331                                                                        || SQLE RRM,1,2000 ),
  2332                                      PD_date1  => VD_pro cess_start _date,
  2333                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  2334  
  2335         RETU RN;
  2336  
  2337     END;
  2338  
  2339   -- * RECOR DS KEPT CO UNT - ORUZ 05-E param eter  -- C CR 1788 Be gin
  2340  
  2341     BEGIN
  2342  
  2343       SELECT     AP.Val ue
  2344       INTO       VN_par m_keep_oru z05e_count
  2345       FROM       Adr_Pa rameter AP
  2346       WHERE      Applic ation_name  = 'HL7_PR OCESS_ARCH IVES'
  2347       AND        Parame ter_name =  'RECORDS  KEPT COUNT  - ORUZ05- E';
  2348  
  2349       VD_log _date := S YSDATE;
  2350  
  2351       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  2352                                    PD_job_log _date => V D_log_date ,
  2353                                    PC_job_sta tus => SUB STR('INFOR MATION - U ser Define d Paramete rs',1,60),
  2354                                    PC_job_log _message = > SUBSTR(' Parameter:  RECORDS K EPT COUNT  - ORUZ05-E  - Value:  '|| VN_par m_keep_oru z05e_count ,1,2000),
  2355                                    PD_date1 = > VD_proce ss_start_d ate,
  2356                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  2357  
  2358     EXCEPTIO N
  2359  
  2360       WHEN O THERS THEN
  2361  
  2362         VD_l og_date :=  SYSDATE;
  2363  
  2364         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  2365                                      PD_job_l og_date =>  VD_log_da te,
  2366                                      PC_job_s tatus => S UBSTR('ERR OR       -  User Defi ned Parame ters',1,60 ),
  2367                                      PC_job_l og_message  => SUBSTR ('Unable t o retrieve  parameter  RECORDS K EPT COUNT  - ORUZ05-E .'
  2368                                                                      || ' Term inating ex ecution of  the job.  '|| SQLERR M,1,2000),
  2369                                      PD_date1  => VD_pro cess_start _date,
  2370                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  2371  
  2372         ADRM GT.Job_Pro cess_Err_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  2373                                      PD_job_e rror_date   => VD_log _date,
  2374                                      PC_job_e rror_code  => SUBSTR( SQLCODE,1, 60),
  2375                                      PC_job_e rror_messa ge => SUBS TR('Unable  to retrie ve paramet er RECORDS  KEPT COUN T - ORUZ05 -E. '
  2376                                                                        || SQLE RRM,1,2000 ),
  2377                                      PD_date1  => VD_pro cess_start _date,
  2378                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  2379  
  2380         RETU RN;
  2381  
  2382     END;  --  CCR 1788  End
  2383  
  2384   -- * RECOR DS KEPT CO UNT - ORUZ 05-S param eter
  2385  
  2386     BEGIN
  2387  
  2388       SELECT     AP.Val ue
  2389       INTO       VN_par m_keep_oru z05s_count
  2390       FROM       Adr_Pa rameter AP
  2391       WHERE      Applic ation_name  = 'HL7_PR OCESS_ARCH IVES'
  2392       AND        Parame ter_name =  'RECORDS  KEPT COUNT  - ORUZ05- S';
  2393  
  2394       VD_log _date := S YSDATE;
  2395  
  2396       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  2397                                    PD_job_log _date => V D_log_date ,
  2398                                    PC_job_sta tus => SUB STR('INFOR MATION - U ser Define d Paramete rs',1,60),
  2399                                    PC_job_log _message = > SUBSTR(' Parameter:  RECORDS K EPT COUNT  - ORUZ05-S  - Value:  '|| VN_par m_keep_oru z05s_count ,1,2000),
  2400                                    PD_date1 = > VD_proce ss_start_d ate,
  2401                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  2402  
  2403     EXCEPTIO N
  2404  
  2405       WHEN O THERS THEN
  2406  
  2407         VD_l og_date :=  SYSDATE;
  2408  
  2409         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  2410                                      PD_job_l og_date =>  VD_log_da te,
  2411                                      PC_job_s tatus => S UBSTR('ERR OR       -  User Defi ned Parame ters',1,60 ),
  2412                                      PC_job_l og_message  => SUBSTR ('Unable t o retrieve  parameter  RECORDS K EPT COUNT  - ORUZ05-S .'
  2413                                                                      || ' Term inating ex ecution of  the job.  '|| SQLERR M,1,2000),
  2414                                      PD_date1  => VD_pro cess_start _date,
  2415                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  2416  
  2417         ADRM GT.Job_Pro cess_Err_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  2418                                      PD_job_e rror_date   => VD_log _date,
  2419                                      PC_job_e rror_code  => SUBSTR( SQLCODE,1, 60),
  2420                                      PC_job_e rror_messa ge => SUBS TR('Unable  to retrie ve paramet er RECORDS  KEPT COUN T - ORUZ05 -S. '
  2421                                                                        || SQLE RRM,1,2000 ),
  2422                                      PD_date1  => VD_pro cess_start _date,
  2423                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  2424  
  2425         RETU RN;
  2426  
  2427     END;
  2428  
  2429   -- * RECOR DS KEPT CO UNT - ORUZ 10-S param eter
  2430  
  2431     BEGIN
  2432  
  2433       SELECT     AP.Val ue
  2434       INTO       VN_par m_keep_oru z10s_count
  2435       FROM       Adr_Pa rameter AP
  2436       WHERE      Applic ation_name  = 'HL7_PR OCESS_ARCH IVES'
  2437       AND        Parame ter_name =  'RECORDS  KEPT COUNT  - ORUZ10- S';
  2438  
  2439       VD_log _date := S YSDATE;
  2440  
  2441       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  2442                                    PD_job_log _date => V D_log_date ,
  2443                                    PC_job_sta tus => SUB STR('INFOR MATION - U ser Define d Paramete rs',1,60),
  2444                                    PC_job_log _message = > SUBSTR(' Parameter:  RECORDS K EPT COUNT  - ORUZ10-S  - Value:  '|| VN_par m_keep_oru z10s_count ,1,2000),
  2445                                    PD_date1 = > VD_proce ss_start_d ate,
  2446                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  2447  
  2448     EXCEPTIO N
  2449  
  2450       WHEN O THERS THEN
  2451  
  2452         VD_l og_date :=  SYSDATE;
  2453  
  2454         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  2455                                      PD_job_l og_date =>  VD_log_da te,
  2456                                      PC_job_s tatus => S UBSTR('ERR OR       -  User Defi ned Parame ters',1,60 ),
  2457                                      PC_job_l og_message  => SUBSTR ('Unable t o retrieve  parameter  RECORDS K EPT COUNT  - ORUZ10-S .'
  2458                                                                      || ' Term inating ex ecution of  the job.  '|| SQLERR M,1,2000),
  2459                                      PD_date1  => VD_pro cess_start _date,
  2460                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  2461  
  2462         ADRM GT.Job_Pro cess_Err_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  2463                                      PD_job_e rror_date   => VD_log _date,
  2464                                      PC_job_e rror_code  => SUBSTR( SQLCODE,1, 60),
  2465                                      PC_job_e rror_messa ge => SUBS TR('Unable  to retrie ve paramet er RECORDS  KEPT COUN T - ORUZ10 -S. '
  2466                                                                        || SQLE RRM,1,2000 ),
  2467                                      PD_date1  => VD_pro cess_start _date,
  2468                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  2469  
  2470         RETU RN;
  2471  
  2472     END;
  2473  
  2474   -- * RECOR DS KEPT CO UNT - ORUZ 11-E param eter
  2475  
  2476     BEGIN
  2477  
  2478       SELECT     AP.Val ue
  2479       INTO       VN_par m_keep_oru z11e_count
  2480       FROM       Adr_Pa rameter AP
  2481       WHERE      Applic ation_name  = 'HL7_PR OCESS_ARCH IVES'
  2482       AND        Parame ter_name =  'RECORDS  KEPT COUNT  - ORUZ11- E';
  2483  
  2484       VD_log _date := S YSDATE;
  2485  
  2486       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  2487                                    PD_job_log _date => V D_log_date ,
  2488                                    PC_job_sta tus => SUB STR('INFOR MATION - U ser Define d Paramete rs',1,60),
  2489                                    PC_job_log _message = > SUBSTR(' Parameter:  RECORDS K EPT COUNT  - ORUZ11-E  - Value:  '|| VN_par m_keep_oru z11e_count ,1,2000),
  2490                                    PD_date1 = > VD_proce ss_start_d ate,
  2491                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  2492  
  2493     EXCEPTIO N
  2494  
  2495       WHEN O THERS THEN
  2496  
  2497         VD_l og_date :=  SYSDATE;
  2498  
  2499         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  2500                                      PD_job_l og_date =>  VD_log_da te,
  2501                                      PC_job_s tatus => S UBSTR('ERR OR       -  User Defi ned Parame ters',1,60 ),
  2502                                      PC_job_l og_message  => SUBSTR ('Unable t o retrieve  parameter  RECORDS K EPT COUNT  - ORUZ11-E .'
  2503                                                                      || ' Term inating ex ecution of  the job.  '|| SQLERR M,1,2000),
  2504                                      PD_date1  => VD_pro cess_start _date,
  2505                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  2506  
  2507         ADRM GT.Job_Pro cess_Err_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  2508                                      PD_job_e rror_date   => VD_log _date,
  2509                                      PC_job_e rror_code  => SUBSTR( SQLCODE,1, 60),
  2510                                      PC_job_e rror_messa ge => SUBS TR('Unable  to retrie ve paramet er RECORDS  KEPT COUN T - ORUZ11 -E. '
  2511                                                                        || SQLE RRM,1,2000 ),
  2512                                      PD_date1  => VD_pro cess_start _date,
  2513                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  2514  
  2515         RETU RN;
  2516  
  2517     END;
  2518  
  2519   -- * RECOR DS KEPT CO UNT - ORUZ 11-S param eter
  2520  
  2521     BEGIN
  2522  
  2523       SELECT     AP.Val ue
  2524       INTO       VN_par m_keep_oru z11s_count
  2525       FROM       Adr_Pa rameter AP
  2526       WHERE      Applic ation_name  = 'HL7_PR OCESS_ARCH IVES'
  2527       AND        Parame ter_name =  'RECORDS  KEPT COUNT  - ORUZ11- S';
  2528  
  2529       VD_log _date := S YSDATE;
  2530  
  2531       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  2532                                    PD_job_log _date => V D_log_date ,
  2533                                    PC_job_sta tus => SUB STR('INFOR MATION - U ser Define d Paramete rs',1,60),
  2534                                    PC_job_log _message = > SUBSTR(' Parameter:  RECORDS K EPT COUNT  - ORUZ11-S  - Value:  '|| VN_par m_keep_oru z11s_count ,1,2000),
  2535                                    PD_date1 = > VD_proce ss_start_d ate,
  2536                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  2537  
  2538     EXCEPTIO N
  2539  
  2540       WHEN O THERS THEN
  2541  
  2542         VD_l og_date :=  SYSDATE;
  2543  
  2544         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  2545                                      PD_job_l og_date =>  VD_log_da te,
  2546                                      PC_job_s tatus => S UBSTR('ERR OR       -  User Defi ned Parame ters',1,60 ),
  2547                                      PC_job_l og_message  => SUBSTR ('Unable t o retrieve  parameter  RECORDS K EPT COUNT  - ORUZ11-S .'
  2548                                                                      || ' Term inating ex ecution of  the job.  '|| SQLERR M,1,2000),
  2549                                      PD_date1  => VD_pro cess_start _date,
  2550                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  2551  
  2552         ADRM GT.Job_Pro cess_Err_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  2553                                      PD_job_e rror_date   => VD_log _date,
  2554                                      PC_job_e rror_code  => SUBSTR( SQLCODE,1, 60),
  2555                                      PC_job_e rror_messa ge => SUBS TR('Unable  to retrie ve paramet er RECORDS  KEPT COUN T - ORUZ11 -S. '
  2556                                                                        || SQLE RRM,1,2000 ),
  2557                                      PD_date1  => VD_pro cess_start _date,
  2558                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  2559  
  2560         RETU RN;
  2561  
  2562     END;
  2563  
  2564   -- * RECOR DS KEPT CO UNT - QRYZ 10-E param eter
  2565  
  2566     BEGIN
  2567  
  2568       SELECT     AP.Val ue
  2569       INTO       VN_par m_keep_qry z10e_count
  2570       FROM       Adr_Pa rameter AP
  2571       WHERE      Applic ation_name  = 'HL7_PR OCESS_ARCH IVES'
  2572       AND        Parame ter_name =  'RECORDS  KEPT COUNT  - QRYZ10- E';
  2573  
  2574       VD_log _date := S YSDATE;
  2575  
  2576       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  2577                                    PD_job_log _date => V D_log_date ,
  2578                                    PC_job_sta tus => SUB STR('INFOR MATION - U ser Define d Paramete rs',1,60),
  2579                                    PC_job_log _message = > SUBSTR(' Parameter:  RECORDS K EPT COUNT  - QRYZ10-E  - Value:  '|| VN_par m_keep_qry z10e_count ,1,2000),
  2580                                    PD_date1 = > VD_proce ss_start_d ate,
  2581                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  2582  
  2583     EXCEPTIO N
  2584  
  2585       WHEN O THERS THEN
  2586  
  2587         VD_l og_date :=  SYSDATE;
  2588  
  2589         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  2590                                      PD_job_l og_date =>  VD_log_da te,
  2591                                      PC_job_s tatus => S UBSTR('ERR OR       -  User Defi ned Parame ters',1,60 ),
  2592                                      PC_job_l og_message  => SUBSTR ('Unable t o retrieve  parameter  RECORDS K EPT COUNT  - QRYZ10-E .'
  2593                                                                      || ' Term inating ex ecution of  the job.  '|| SQLERR M,1,2000),
  2594                                      PD_date1  => VD_pro cess_start _date,
  2595                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  2596  
  2597         ADRM GT.Job_Pro cess_Err_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  2598                                      PD_job_e rror_date   => VD_log _date,
  2599                                      PC_job_e rror_code  => SUBSTR( SQLCODE,1, 60),
  2600                                      PC_job_e rror_messa ge => SUBS TR('Unable  to retrie ve paramet er RECORDS  KEPT COUN T - QRYZ10 -E. '
  2601                                                                        || SQLE RRM,1,2000 ),
  2602                                      PD_date1  => VD_pro cess_start _date,
  2603                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  2604  
  2605         RETU RN;
  2606  
  2607     END;
  2608  
  2609   -- * RECOR DS KEPT CO UNT - QRYZ 11-E param eter  -- C CR 1788 Be gin
  2610  
  2611     BEGIN
  2612  
  2613       SELECT     AP.Val ue
  2614       INTO       VN_par m_keep_qry z11e_count
  2615       FROM       Adr_Pa rameter AP
  2616       WHERE      Applic ation_name  = 'HL7_PR OCESS_ARCH IVES'
  2617       AND        Parame ter_name =  'RECORDS  KEPT COUNT  - QRYZ11- E';
  2618  
  2619       VD_log _date := S YSDATE;
  2620  
  2621       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  2622                                    PD_job_log _date => V D_log_date ,
  2623                                    PC_job_sta tus => SUB STR('INFOR MATION - U ser Define d Paramete rs',1,60),
  2624                                    PC_job_log _message = > SUBSTR(' Parameter:  RECORDS K EPT COUNT  - QRYZ11-E  - Value:  '|| VN_par m_keep_qry z11e_count ,1,2000),
  2625                                    PD_date1 = > VD_proce ss_start_d ate,
  2626                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  2627  
  2628     EXCEPTIO N
  2629  
  2630       WHEN O THERS THEN
  2631  
  2632         VD_l og_date :=  SYSDATE;
  2633  
  2634         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  2635                                      PD_job_l og_date =>  VD_log_da te,
  2636                                      PC_job_s tatus => S UBSTR('ERR OR       -  User Defi ned Parame ters',1,60 ),
  2637                                      PC_job_l og_message  => SUBSTR ('Unable t o retrieve  parameter  RECORDS K EPT COUNT  - QRYZ11-E .'
  2638                                                                      || ' Term inating ex ecution of  the job.  '|| SQLERR M,1,2000),
  2639                                      PD_date1  => VD_pro cess_start _date,
  2640                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  2641  
  2642         ADRM GT.Job_Pro cess_Err_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  2643                                      PD_job_e rror_date   => VD_log _date,
  2644                                      PC_job_e rror_code  => SUBSTR( SQLCODE,1, 60),
  2645                                      PC_job_e rror_messa ge => SUBS TR('Unable  to retrie ve paramet er RECORDS  KEPT COUN T - QRYZ11 -E. '
  2646                                                                        || SQLE RRM,1,2000 ),
  2647                                      PD_date1  => VD_pro cess_start _date,
  2648                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  2649  
  2650         RETU RN;
  2651  
  2652     END;  --  CCR 1788  End
  2653  
  2654   -- * LAST  PERSON_ID  PROCESSED  parameter
  2655  
  2656     BEGIN
  2657  
  2658       SELECT     AP.Val ue
  2659       INTO       VN_pre vious_pers on_id
  2660       FROM       Adr_Pa rameter AP
  2661       WHERE      Applic ation_name  = 'HL7_PR OCESS_ARCH IVES'
  2662       AND        Parame ter_name =  'LAST PER SON_ID PRO CESSED';
  2663  
  2664       VD_log _date := S YSDATE;
  2665  
  2666       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  2667                                    PD_job_log _date => V D_log_date ,
  2668                                    PC_job_sta tus => SUB STR('INFOR MATION - U ser Define d Paramete rs',1,60),
  2669                                    PC_job_log _message = > SUBSTR(' Parameter:  LAST PERS ON_ID PROC ESSED - Va lue: '|| V N_previous _person_id ,1,2000),
  2670                                    PD_date1 = > VD_proce ss_start_d ate,
  2671                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  2672  
  2673     EXCEPTIO N
  2674  
  2675       WHEN O THERS THEN
  2676  
  2677         VD_l og_date :=  SYSDATE;
  2678  
  2679         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  2680                                      PD_job_l og_date =>  VD_log_da te,
  2681                                      PC_job_s tatus => S UBSTR('ERR OR       -  User Defi ned Parame ters',1,60 ),
  2682                                      PC_job_l og_message  => SUBSTR ('Unable t o retrieve  parameter  LAST PERS ON_ID PROC ESSED.'
  2683                                                                      || ' Term inating ex ecution of  the job.  '|| SQLERR M,1,2000),
  2684                                      PD_date1  => VD_pro cess_start _date,
  2685                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  2686  
  2687         ADRM GT.Job_Pro cess_Err_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  2688                                      PD_job_e rror_date   => VD_log _date,
  2689                                      PC_job_e rror_code  => SUBSTR( SQLCODE,1, 60),
  2690                                      PC_job_e rror_messa ge => SUBS TR('Unable  to retrie ve paramet er LAST PE RSON_ID PR OCESSED. '
  2691                                                                        || SQLE RRM,1,2000 ),
  2692                                      PD_date1  => VD_pro cess_start _date,
  2693                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  2694  
  2695         RETU RN;
  2696  
  2697     END;
  2698  
  2699   -- ******* ********** ********** ********** ********** ********** ********** ********
  2700   -- *
  2701   -- * Remov e outdated  log and e rror file  rows
  2702   -- *
  2703   -- ******* ********** ********** ********** ********** ********** ********** ********
  2704  
  2705     DBMS_APP LICATION_I NFO.SET_AC TION(Actio n_name =>  'Removing  old logs a nd error r ows');
  2706  
  2707     BEGIN
  2708  
  2709       VD_log _date := S YSDATE;
  2710  
  2711       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  2712                                    PD_job_log _date => V D_log_date ,
  2713                                    PC_job_sta tus => SUB STR('INFOR MATION - L og File Cl eanup',1,6 0),
  2714                                    PC_job_log _message = > SUBSTR(' Removing E rror Logs  more than  '|| VN_log _age_to_ke ep || ' da ys old.',1 ,2000),
  2715                                    PD_date1 = > VD_proce ss_start_d ate,
  2716                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  2717  
  2718       DELETE
  2719       FROM       Job_Pr ocess_Errs
  2720       WHERE      Job_na me = CC_pr ocess_name
  2721       AND        Date1  < VD_proce ss_start_d ate - VN_l og_age_to_ keep;
  2722  
  2723       COMMIT ;
  2724  
  2725     EXCEPTIO N
  2726  
  2727       WHEN O THERS THEN
  2728  
  2729         VD_l og_date :=  SYSDATE;
  2730  
  2731         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  2732                                      PD_job_l og_date =>  VD_log_da te,
  2733                                      PC_job_s tatus => S UBSTR('ERR OR       -  Log file  cleanup',1 ,60),
  2734                                      PC_job_l og_message  => SUBSTR ('Unable t o remove r ows from e rror log t able.'
  2735                                                                      || ' Term inating ex ecution of  the job.  '|| SQLERR M,1,2000),
  2736                                      PD_date1  => VD_pro cess_start _date,
  2737                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  2738  
  2739         ADRM GT.Job_Pro cess_Err_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  2740                                      PD_job_e rror_date   => VD_log _date,
  2741                                      PC_job_e rror_code  => SUBSTR( SQLCODE,1, 60),
  2742                                      PC_job_e rror_messa ge => SUBS TR('Unable  to remove  rows from  error log  table. '
  2743                                                                        || SQLE RRM,1,2000 ),
  2744                                      PD_date1  => VD_pro cess_start _date,
  2745                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  2746  
  2747         RETU RN;
  2748  
  2749     END;
  2750  
  2751     BEGIN
  2752  
  2753       VD_log _date := S YSDATE;
  2754  
  2755       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  2756                                    PD_job_log _date => V D_log_date ,
  2757                                    PC_job_sta tus => SUB STR('INFOR MATION - L og File Cl eanup',1,6 0),
  2758                                    PC_job_log _message = > SUBSTR(' Removing P rocess Log s more tha n '|| VN_l og_age_to_ keep || '  days old.' ,1,2000),
  2759                                    PD_date1 = > VD_proce ss_start_d ate,
  2760                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  2761  
  2762       DELETE
  2763       FROM       Job_Pr ocess_Logs
  2764       WHERE      Job_na me = CC_pr ocess_name
  2765       AND        Date1  < VD_proce ss_start_d ate - VN_l og_age_to_ keep;
  2766  
  2767       COMMIT ;
  2768  
  2769     EXCEPTIO N
  2770  
  2771       WHEN O THERS THEN
  2772  
  2773         VD_l og_date :=  SYSDATE;
  2774  
  2775         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  2776                                      PD_job_l og_date =>  VD_log_da te,
  2777                                      PC_job_s tatus => S UBSTR('ERR OR       -  Log file  cleanup',1 ,60),
  2778                                      PC_job_l og_message  => SUBSTR ('Unable t o remove r ows from p rocess log  table.'
  2779                                                                      || ' Term inating ex ecution of  the job.  '|| SQLERR M,1,2000),
  2780                                      PD_date1  => VD_pro cess_start _date,
  2781                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  2782  
  2783         ADRM GT.Job_Pro cess_Err_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  2784                                      PD_job_e rror_date   => VD_log _date,
  2785                                      PC_job_e rror_code  => SUBSTR( SQLCODE,1, 60),
  2786                                      PC_job_e rror_messa ge => SUBS TR('Unable  to remove  rows from  process l og table.  '
  2787                                                                        || SQLE RRM,1,2000 ),
  2788                                      PD_date1  => VD_pro cess_start _date,
  2789                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  2790  
  2791         RETU RN;
  2792  
  2793     END;
  2794  
  2795   -- ******* ********** ********** ********** ********** ********** ********** ********
  2796   -- *
  2797   -- * Archi ve Process ing loop
  2798   -- *
  2799   -- ******* ********** ********** ********** ********** ********** ********** ********
  2800  
  2801     BEGIN  - - main pro cessing bl ock
  2802  
  2803       VD_log _date := S YSDATE;
  2804  
  2805       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  2806                                    PD_job_log _date => V D_log_date ,
  2807                                    PC_job_sta tus => SUB STR('INFOR MATION - A rchive Pro cess Loop' ,1,60),
  2808                                    PC_job_log _message = > SUBSTR(' Starting a rchival of  HL7 rows' ,1,2000),
  2809                                    PD_date1 = > VD_proce ss_start_d ate,
  2810                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  2811  
  2812       LOOP   -- main ar chive proc essing loo p
  2813  
  2814         DBMS _APPLICATI ON_INFO.SE T_ACTION(A ction_name  => 'Setti ng Up Arch ive Data') ;
  2815  
  2816         BEGI N  -- Get  next perso n_id to pr ocess
  2817  
  2818           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
  2819           IN TO      VN _current_p erson_id    -- so fla g EOF by p utting -1  in VN_curr ent_person _id
  2820           FR OM      Hl 7_Transact ion_Log
  2821           WH ERE     Pe rson_id >  VN_previou s_person_i d;
  2822  
  2823           IF  VN_curren t_person_i d = -1 THE N  -- if p ast the la st Person_ id (EOF)
  2824  
  2825              RAISE NO_D ATA_FOUND;   -- force  a NO_DATA _FOUND exc eption to  tell the p rocess to  complete
  2826  
  2827           EN D IF;  --  end if pas t the last  Person_id  (EOF)
  2828  
  2829           DB MS_APPLICA TION_INFO. SET_CLIENT _INFO(TO_C HAR(SYSDAT E,'DD-MON  HH24:MI:SS ')
  2830                                                     || '  - Person  '
  2831                                                     || L TRIM(TO_CH AR(VN_curr ent_person _id,'99999 99999990') )
  2832                                                     || ' .');
  2833  
  2834   -- CCR 178 8 Begin
  2835   -- ******* ********** ********** ********** ********** ********** ********** ********
  2836   -- * Proce ss Status  = COMPLETE D (1506921 )
  2837   -- *          Transmi ssion Type  = ORUZ05- E txns (15 10407)
  2838   -- ******* ********** ********** ********** ********** ********** ********** ********
  2839  
  2840           BE GIN  -- pr ocess ORUZ 05-E txns  (1510407)
  2841  
  2842              DBMS_APPLI CATION_INF O.SET_CLIE NT_INFO(TO _CHAR(SYSD ATE,'DD-MO N HH24:MI' )
  2843                                                       ||  ' -P '  - - Person I D
  2844                                                       ||  LTRIM(TO_ CHAR(VN_cu rrent_pers on_id,'999 9999999990 '))
  2845                                                       ||  ' -T '  - - Msg Tran smission I D
  2846                                                       ||  LTRIM(TO_ CHAR(CC_tr an_type_or uz05e,'999 99990'))
  2847                                                       ||  '.');
  2848  
  2849              VI_rows_to _keep_coun t := 0; --  reset var iable that  determine s how many  rows to r emove from  archiving  request t able
  2850  
  2851              OPEN C_com p_oruz05e_ rec;
  2852  
  2853              FETCH C_co mp_oruz05e _rec
  2854              BULK COLLE CT INTO T_ hl7_txns;
  2855  
  2856              CLOSE C_co mp_oruz05e _rec;
  2857  
  2858              DBMS_APPLI CATION_INF O.SET_CLIE NT_INFO(TO _CHAR(SYSD ATE,'DD-MO N HH24:MI' )
  2859                                                       ||  ' -P '  - - Person I D
  2860                                                       ||  LTRIM(TO_ CHAR(VN_cu rrent_pers on_id,'999 9999999990 '))
  2861                                                       ||  ' -T '  - - Msg Tran smission I D
  2862                                                       ||  LTRIM(TO_ CHAR(CC_tr an_type_or uz05e,'999 99990'))
  2863                                                       ||  ' -C '  - - First co unt of row s in colle ction
  2864                                                       ||  LTRIM(TO_ CHAR(T_hl7 _txns.COUN T,'999,990 '))
  2865                                                       ||  '.');
  2866  
  2867              IF T_hl7_t xns.COUNT  > 0 THEN   -- complet ed ORUZ05- E txns exi st
  2868  
  2869                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
  2870  
  2871                  VI_row s_to_keep_ count := V N_parm_kee p_oruz05e_ count;  --  save how  many need  to be kept
  2872  
  2873                END IF;   -- end th ere are mo re in the  table than  need to b e kept
  2874  
  2875              END IF;  - - end comp leted ORUZ 05-E txns  exist
  2876  
  2877              IF VI_rows _to_keep_c ount > 0 T HEN -- rem ove rows f rom archiv ing reques t table
  2878  
  2879                DBMS_APP LICATION_I NFO.SET_CL IENT_INFO( TO_CHAR(SY SDATE,'DD- MON HH24:M I')
  2880                                                          || ' -P '   -- Person  ID
  2881                                                          || LTRIM(T O_CHAR(VN_ current_pe rson_id,'9 9999999999 90'))
  2882                                                          || ' -T '   -- Msg Tr ansmission  ID
  2883                                                          || LTRIM(T O_CHAR(CC_ tran_type_ oruz05e,'9 9999990'))
  2884                                                          || ' -F '   -- Final  count of r ows in col lection
  2885                                                          || LTRIM(T O_CHAR(T_h l7_txns.CO UNT - VI_r ows_to_kee p_count,'9 99,990'))
  2886                                                          || '.');
  2887  
  2888                VC_proce ss_msg :=  'COMPLETED  ORUZ05-E  txn. Perso n ID: '
  2889                                    || LTRIM(T O_CHAR(VN_ current_pe rson_id,'9 9999999999 90'))
  2890                                    || ' - Sta tus Type I D: '
  2891                                    || CC_stat _type_comp lete
  2892                                    || ' - Msg  Transmiss ion Type I D: '
  2893                                    || CC_tran _type_oruz 05e;
  2894  
  2895                Process_ Archive_Ro ws(VC_proc ess_msg);  -- call IN SERT/DELET E procedur e
  2896  
  2897                IF VB_er ror THEN   -- error f lag is set  in sub-pr ocedure if  there wer e problems
  2898  
  2899                  RETURN ;
  2900  
  2901                END IF;
  2902  
  2903              END IF; --  end remov e rows fro m archivin g request  table
  2904  
  2905           EX CEPTION
  2906  
  2907              WHEN OTHER S THEN
  2908  
  2909                VD_log_d ate := SYS DATE;
  2910  
  2911                ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( CC_process _name,1,60 ),
  2912                                            PD _job_log_d ate => VD_ log_date,
  2913                                            PC _job_statu s => SUBST R('ERROR        - Arc hive Proce ss Loop',1 ,60),
  2914                                            PC _job_log_m essage =>  SUBSTR('Fa iled in tr ansmission  ID ORUZ05 -E process ing step.  Person_id:  '
  2915                                                                            ||  LTRIM(TO_C HAR(VN_cur rent_perso n_id,'9999 999999990' ))
  2916                                                                            ||  ' - Transm ission typ e ID: '
  2917                                                                            ||  LTRIM(TO_C HAR(CC_tra n_type_oru z05e,'9999 9990'))
  2918                                                                            ||  ' - Rows i n collecti on after c lean up: '
  2919                                                                            ||  LTRIM(TO_C HAR(T_hl7_ txns.COUNT  - VI_rows _to_keep_c ount,'999, 990'))
  2920                                                                            ||  ' - Error:  '
  2921                                                                            ||  SQLERRM,1, 2000),
  2922                                            PD _date1 =>  VD_process _start_dat e,
  2923                                            PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  2924  
  2925                ADRMGT.J ob_Process _Err_Sp(PC _job_name  => SUBSTR( CC_process _name,1,60 ),
  2926                                            PD _job_error _date  =>  VD_log_dat e,
  2927                                            PC _job_error _code => S UBSTR(SQLC ODE,1,60),
  2928                                            PC _job_error _message = > SUBSTR(' Failed in  transmissi on ID ORUZ 05-E proce ssing step . Person_i d: '
  2929                                                                              | | LTRIM(TO _CHAR(VN_c urrent_per son_id,'99 9999999999 0'))
  2930                                                                              | | ' - Tran smission t ype ID: '
  2931                                                                              | | LTRIM(TO _CHAR(CC_t ran_type_o ruz05e,'99 999990'))
  2932                                                                              | | ' - Rows  in collec tion after  clean up:  '
  2933                                                                              | | LTRIM(TO _CHAR(T_hl 7_txns.COU NT - VI_ro ws_to_keep _count,'99 9,990'))
  2934                                                                              | | ' - Erro r: '
  2935                                                                              | | SQLERRM, 1,2000),
  2936                                            PD _date1 =>  VD_process _start_dat e,
  2937                                            PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  2938  
  2939                Update_L ast_Person _Parm(VN_p revious_pe rson_id);
  2940  
  2941                RETURN;
  2942  
  2943           EN D;  -- end  process O RUZ05-E tx ns
  2944   -- CCR 178 8 End
  2945  
  2946   -- ******* ********** ********** ********** ********** ********** ********** ********
  2947   -- * Proce ss Status  = COMPLETE D (1506921 )
  2948   -- *          Transmi ssion Type  = ORUZ11- E txns (15 10408)
  2949   -- ******* ********** ********** ********** ********** ********** ********** ********
  2950  
  2951           BE GIN  -- pr ocess ORUZ 11-E txns  (1510408)
  2952  
  2953              DBMS_APPLI CATION_INF O.SET_CLIE NT_INFO(TO _CHAR(SYSD ATE,'DD-MO N HH24:MI' )
  2954                                                       ||  ' -P '  - - Person I D
  2955                                                       ||  LTRIM(TO_ CHAR(VN_cu rrent_pers on_id,'999 9999999990 '))
  2956                                                       ||  ' -T '  - - Msg Tran smission I D
  2957                                                       ||  LTRIM(TO_ CHAR(CC_tr an_type_or uz11e,'999 99990'))
  2958                                                       ||  '.');
  2959  
  2960              VI_rows_to _keep_coun t := 0; --  reset var iable that  determine s how many  rows to r emove from  archiving  request t able
  2961  
  2962              OPEN C_com p_oruz11e_ rec;
  2963  
  2964              FETCH C_co mp_oruz11e _rec
  2965              BULK COLLE CT INTO T_ hl7_txns;
  2966  
  2967              CLOSE C_co mp_oruz11e _rec;
  2968  
  2969              DBMS_APPLI CATION_INF O.SET_CLIE NT_INFO(TO _CHAR(SYSD ATE,'DD-MO N HH24:MI' )
  2970                                                       ||  ' -P '  - - Person I D
  2971                                                       ||  LTRIM(TO_ CHAR(VN_cu rrent_pers on_id,'999 9999999990 '))
  2972                                                       ||  ' -T '  - - Msg Tran smission I D
  2973                                                       ||  LTRIM(TO_ CHAR(CC_tr an_type_or uz11e,'999 99990'))
  2974                                                       ||  ' -C '  - - First co unt of row s in colle ction
  2975                                                       ||  LTRIM(TO_ CHAR(T_hl7 _txns.COUN T,'999,990 '))
  2976                                                       ||  '.');
  2977  
  2978              IF T_hl7_t xns.COUNT  > 0 THEN   -- complet ed ORUZ11- E txns exi st
  2979  
  2980                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
  2981  
  2982                  VI_row s_to_keep_ count := V N_parm_kee p_oruz11e_ count;  --  save how  many need  to be kept
  2983  
  2984                END IF;   -- end th ere are mo re in the  table than  need to b e kept
  2985  
  2986              END IF;  - - end comp leted ORUZ 11-E txns  exist
  2987  
  2988              IF VI_rows _to_keep_c ount > 0 T HEN -- rem ove rows f rom archiv ing reques t table
  2989  
  2990                DBMS_APP LICATION_I NFO.SET_CL IENT_INFO( TO_CHAR(SY SDATE,'DD- MON HH24:M I')
  2991                                                          || ' -P '   -- Person  ID
  2992                                                          || LTRIM(T O_CHAR(VN_ current_pe rson_id,'9 9999999999 90'))
  2993                                                          || ' -T '   -- Msg Tr ansmission  ID
  2994                                                          || LTRIM(T O_CHAR(CC_ tran_type_ oruz11e,'9 9999990'))
  2995                                                          || ' -F '   -- Final  count of r ows in col lection
  2996                                                          || LTRIM(T O_CHAR(T_h l7_txns.CO UNT - VI_r ows_to_kee p_count,'9 99,990'))
  2997                                                          || '.');
  2998  
  2999                VC_proce ss_msg :=  'COMPLETED  ORUZ11-E  txn. Perso n ID: '
  3000                                    || LTRIM(T O_CHAR(VN_ current_pe rson_id,'9 9999999999 90'))
  3001                                    || ' - Sta tus Type I D: '
  3002                                    || CC_stat _type_comp lete
  3003                                    || ' - Msg  Transmiss ion Type I D: '
  3004                                    || CC_tran _type_oruz 11e;
  3005  
  3006                Process_ Archive_Ro ws(VC_proc ess_msg);  -- call IN SERT/DELET E procedur e
  3007  
  3008                IF VB_er ror THEN   -- error f lag is set  in sub-pr ocedure if  there wer e problems
  3009  
  3010                  RETURN ;
  3011  
  3012                END IF;
  3013  
  3014              END IF; --  end remov e rows fro m archivin g request  table
  3015  
  3016           EX CEPTION
  3017  
  3018              WHEN OTHER S THEN
  3019  
  3020                VD_log_d ate := SYS DATE;
  3021  
  3022                ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( CC_process _name,1,60 ),
  3023                                            PD _job_log_d ate => VD_ log_date,
  3024                                            PC _job_statu s => SUBST R('ERROR        - Arc hive Proce ss Loop',1 ,60),
  3025                                            PC _job_log_m essage =>  SUBSTR('Fa iled in tr ansmission  ID ORUZ11 -E process ing step.  Person_id:  '
  3026                                                                            ||  LTRIM(TO_C HAR(VN_cur rent_perso n_id,'9999 999999990' ))
  3027                                                                            ||  ' - Transm ission typ e ID: '
  3028                                                                            ||  LTRIM(TO_C HAR(CC_tra n_type_oru z11e,'9999 9990'))
  3029                                                                            ||  ' - Rows i n collecti on after c lean up: '
  3030                                                                            ||  LTRIM(TO_C HAR(T_hl7_ txns.COUNT  - VI_rows _to_keep_c ount,'999, 990'))
  3031                                                                            ||  ' - Error:  '
  3032                                                                            ||  SQLERRM,1, 2000),
  3033                                            PD _date1 =>  VD_process _start_dat e,
  3034                                            PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  3035  
  3036                ADRMGT.J ob_Process _Err_Sp(PC _job_name  => SUBSTR( CC_process _name,1,60 ),
  3037                                            PD _job_error _date  =>  VD_log_dat e,
  3038                                            PC _job_error _code => S UBSTR(SQLC ODE,1,60),
  3039                                            PC _job_error _message = > SUBSTR(' Failed in  transmissi on ID ORUZ 11-E proce ssing step . Person_i d: '
  3040                                                                              | | LTRIM(TO _CHAR(VN_c urrent_per son_id,'99 9999999999 0'))
  3041                                                                              | | ' - Tran smission t ype ID: '
  3042                                                                              | | LTRIM(TO _CHAR(CC_t ran_type_o ruz11e,'99 999990'))
  3043                                                                              | | ' - Rows  in collec tion after  clean up:  '
  3044                                                                              | | LTRIM(TO _CHAR(T_hl 7_txns.COU NT - VI_ro ws_to_keep _count,'99 9,990'))
  3045                                                                              | | ' - Erro r: '
  3046                                                                              | | SQLERRM, 1,2000),
  3047                                            PD _date1 =>  VD_process _start_dat e,
  3048                                            PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  3049  
  3050                Update_L ast_Person _Parm(VN_p revious_pe rson_id);
  3051  
  3052                RETURN;
  3053  
  3054           EN D;  -- end  process O RUZ11-E tx ns
  3055  
  3056           BE GIN  -- Pr ocess Inst itution ID s for sele cted perso n
  3057  
  3058              OPEN C_ins t_id_rec;
  3059  
  3060              FETCH C_in st_id_rec
  3061              BULK COLLE CT INTO T_ institutio n_ids;
  3062  
  3063              CLOSE C_in st_id_rec;
  3064  
  3065              IF T_insti tution_ids .COUNT = 0  THEN  --  check if a ny institu tion ID ro ws exist
  3066  
  3067                VD_log_d ate := SYS DATE;
  3068  
  3069                ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( CC_process _name,1,60 ),
  3070                                            PD _job_log_d ate => VD_ log_date,
  3071                                            PC _job_statu s => SUBST R('WARNING      - Fet ch Institu tion ID Ro ws',1,60),
  3072                                            PC _job_log_m essage =>  SUBSTR('No  instituti on IDs fou nd for Per son_id '
  3073                                                                            ||  VN_current _person_id
  3074                                                                            ||  '.',1,2000 ),
  3075                                            PD _date1 =>  VD_process _start_dat e,
  3076                                            PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  3077  
  3078              ELSE
  3079  
  3080                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
  3081  
  3082                  VN_ins titution_i d := T_ins titution_i ds(I_inst_ id);
  3083  
  3084                  DBMS_A PPLICATION _INFO.SET_ CLIENT_INF O(TO_CHAR( SYSDATE,'D D-MON HH24 :MI:SS')
  3085                                                            || ' - P erson '
  3086                                                            || LTRIM (TO_CHAR(V N_current_ person_id, '999999999 9990'))
  3087                                                            || ' - I nst '
  3088                                                            || LTRIM (TO_CHAR(V N_institut ion_id,'99 999990'))
  3089                                                            || '.');
  3090  
  3091                  BEGIN  -- Process  message s tatuses fo r selected  person/in stitution
  3092  
  3093                    OPEN  C_msg_sta tus_rec;
  3094  
  3095                    FETC H C_msg_st atus_rec
  3096                    BULK  COLLECT I NTO T_stat us_types;
  3097  
  3098                    CLOS E C_msg_st atus_rec;
  3099  
  3100                    IF T _status_ty pes.COUNT  = 0 THEN   -- check i f any msg  status row s exist
  3101  
  3102                      VD _log_date  := SYSDATE ;
  3103  
  3104                      AD RMGT.Job_P rocess_Log _Sp(PC_job _name => S UBSTR(CC_p rocess_nam e,1,60),
  3105                                                   PD_job _log_date  => VD_log_ date,
  3106                                                   PC_job _status =>  SUBSTR('W ARNING      - Fetch M essage Sta tus Rows', 1,60),
  3107                                                   PC_job _log_messa ge => SUBS TR('No mes sage statu ses found  for Person  ID '
  3108                                                                                   || VN_c urrent_per son_id
  3109                                                                                   || ' an d Institut ion ID '
  3110                                                                                   || VN_i nstitution _id
  3111                                                                                   || '.', 1,2000),
  3112                                                   PD_dat e1 => VD_p rocess_sta rt_date,
  3113                                                   PC_tex t1 => SUBS TR('Date1  column con tains the  daily proc ess start  date',1,25 5));
  3114  
  3115                    ELSE
  3116  
  3117                      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
  3118  
  3119                         VN_msg_sta tus_id :=  T_status_t ypes(I_sta tus_id);
  3120  
  3121                         DBMS_APPLI CATION_INF O.SET_CLIE NT_INFO(TO _CHAR(SYSD ATE,'DD-MO N HH24:MI' )
  3122                                                                  ||  ' -P '  - - Person I D
  3123                                                                  ||  LTRIM(TO_ CHAR(VN_cu rrent_pers on_id,'999 9999999990 '))
  3124                                                                  ||  ' -I '  - - Institut ion ID
  3125                                                                  ||  LTRIM(TO_ CHAR(VN_in stitution_ id,'999999 90'))
  3126                                                                  ||  ' -S '  - - Status c ode ID
  3127                                                                  ||  LTRIM(TO_ CHAR(VN_ms g_status_i d,'9999999 0'))
  3128                                                                  ||  '.');
  3129  
  3130                         BEGIN -- P rocess mes sage trans mission ty pe for sel ected pers on/institu tion/statu s
  3131  
  3132                           OPEN C_m sg_transty pe_rec;
  3133  
  3134                           FETCH C_ msg_transt ype_rec
  3135                           BULK COL LECT INTO  T_trans_ty pes;
  3136  
  3137                           CLOSE C_ msg_transt ype_rec;
  3138  
  3139                           IF T_tra ns_types.C OUNT = 0 T HEN  -- ch eck if any  msg trans mission ty pe rows ex ist
  3140  
  3141                             VD_log _date := S YSDATE;
  3142  
  3143                             ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  3144                                                          PD_job_log _date => V D_log_date ,
  3145                                                          PC_job_sta tus => SUB STR('WARNI NG     - F etch Messa ge Transmi ssion Type  Rows',1,6 0),
  3146                                                          PC_job_log _message = > SUBSTR(' No message  transmiss ion types  found for  Person ID  '
  3147                                                                                         | | VN_curre nt_person_ id
  3148                                                                                         | | ' and In stitution  ID '
  3149                                                                                         | | VN_insti tution_id
  3150                                                                                         | | ' and St atus Type  ID '
  3151                                                                                         | | VN_msg_s tatus_id
  3152                                                                                         | | '.',1,20 00),
  3153                                                          PD_date1 = > VD_proce ss_start_d ate,
  3154                                                          PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  3155  
  3156                           ELSE
  3157  
  3158                             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
  3159  
  3160                               VN_m sg_transty pe_id := T _trans_typ es(I_trans type_id);
  3161  
  3162                               DBMS _APPLICATI ON_INFO.SE T_CLIENT_I NFO(TO_CHA R(SYSDATE, 'DD-MON HH 24:MI')
  3163                                                                         || ' - P'  -- Per son ID
  3164                                                                         || LTR IM(TO_CHAR (VN_curren t_person_i d,'9999999 999990'))
  3165                                                                         || ' - I'  -- Ins titution I D
  3166                                                                         || LTR IM(TO_CHAR (VN_instit ution_id,' 99999990') )
  3167                                                                         || ' - S'  -- Sta tus code I D
  3168                                                                         || LTR IM(TO_CHAR (VN_msg_st atus_id,'9 9999990'))
  3169                                                                         || ' - T'  -- Tra nsmission  type ID
  3170                                                                         || LTR IM(TO_CHAR (VN_msg_tr anstype_id ,'99999990 '))
  3171                                                                         || '.' );
  3172  
  3173                               BEGI N  -- Load  HL7 txn t able (Data  for disti nct Person  ID, Inst  ID, Status  Type, and  Transmiss ion Type)
  3174  
  3175                                 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
  3176  
  3177                                 OP EN C_hl7_t xn_rec;
  3178  
  3179                                 FE TCH C_hl7_ txn_rec
  3180                                 BU LK COLLECT  INTO T_hl 7_txns;
  3181  
  3182                                 CL OSE C_hl7_ txn_rec;
  3183  
  3184                                 DB MS_APPLICA TION_INFO. SET_CLIENT _INFO(TO_C HAR(SYSDAT E,'DD-MON  HH24:MI')
  3185                                                                           || '  -P '  --  Person ID
  3186                                                                           || L TRIM(TO_CH AR(VN_curr ent_person _id,'99999 99999990') )
  3187                                                                           || '  -I '  --  Institutio n ID
  3188                                                                           || L TRIM(TO_CH AR(VN_inst itution_id ,'99999990 '))
  3189                                                                           || '  -T '  --  Msg Transm ission ID
  3190                                                                           || L TRIM(TO_CH AR(VN_msg_ transtype_ id,'999999 90'))
  3191                                                                           || '  -C '  --  First coun t of rows  in collect ion
  3192                                                                           || L TRIM(TO_CH AR(T_hl7_t xns.COUNT, '999,990') )
  3193                                                                           || ' .');
  3194  
  3195                               EXCE PTION
  3196  
  3197                                 WH EN OTHERS  THEN
  3198  
  3199                                    VD_log_dat e := SYSDA TE;
  3200  
  3201                                    ADRMGT.Job _Process_L og_Sp(PC_j ob_name =>  SUBSTR(CC _process_n ame,1,60),
  3202                                                                PD_j ob_log_dat e => VD_lo g_date,
  3203                                                                PC_j ob_status  => SUBSTR( 'ERROR        - Archi ve Process  Loop',1,6 0),
  3204                                                                PC_j ob_log_mes sage => SU BSTR('Fail ed in comp leted tran saction ta ble load s tep. Perso n_id: '
  3205                                                                                                || LT RIM(TO_CHA R(VN_curre nt_person_ id,'999999 9999990'))
  3206                                                                                                || '  - Institut ion ID: '
  3207                                                                                                || LT RIM(TO_CHA R(VN_insti tution_id, '99999990' ))
  3208                                                                                                || '  - Status c ode ID: '
  3209                                                                                                || LT RIM(TO_CHA R(VN_msg_s tatus_id,' 99999990') )
  3210                                                                                                || '  - Transmis sion type  ID: '
  3211                                                                                                || LT RIM(TO_CHA R(VN_msg_t ranstype_i d,'9999999 0'))
  3212                                                                                                || '  - Rows in  collection  after cle an up: '
  3213                                                                                                || LT RIM(TO_CHA R(T_hl7_tx ns.COUNT -  VI_rows_t o_keep_cou nt,'999,99 0'))
  3214                                                                                                || '  - Error: '
  3215                                                                                                || SQ LERRM,1,20 00),
  3216                                                                PD_d ate1 => VD _process_s tart_date,
  3217                                                                PC_t ext1 => SU BSTR('Date 1 column c ontains th e daily pr ocess star t date',1, 255));
  3218  
  3219                                    ADRMGT.Job _Process_E rr_Sp(PC_j ob_name =>  SUBSTR(CC _process_n ame,1,60),
  3220                                                                PD_j ob_error_d ate  => VD _log_date,
  3221                                                                PC_j ob_error_c ode => SUB STR(SQLCOD E,1,60),
  3222                                                                PC_j ob_error_m essage =>  SUBSTR('Fa iled in co mpleted tr ansaction  table load  step. Per son_id: '
  3223                                                                                                  ||  LTRIM(TO_C HAR(VN_cur rent_perso n_id,'9999 999999990' ))
  3224                                                                                                  ||  ' - Instit ution ID:  '
  3225                                                                                                  ||  LTRIM(TO_C HAR(VN_ins titution_i d,'9999999 0'))
  3226                                                                                                  ||  ' - Status  code ID:  '
  3227                                                                                                  ||  LTRIM(TO_C HAR(VN_msg _status_id ,'99999990 '))
  3228                                                                                                  ||  ' - Transm ission typ e ID: '
  3229                                                                                                  ||  LTRIM(TO_C HAR(VN_msg _transtype _id,'99999 990'))
  3230                                                                                                  ||  ' - Rows i n collecti on after c lean up: '
  3231                                                                                                  ||  LTRIM(TO_C HAR(T_hl7_ txns.COUNT  - VI_rows _to_keep_c ount,'999, 990'))
  3232                                                                                                  ||  ' - Error:  '
  3233                                                                                                  ||  SQLERRM,1, 2000),
  3234                                                                PD_d ate1 => VD _process_s tart_date,
  3235                                                                PC_t ext1 => SU BSTR('Date 1 column c ontains th e daily pr ocess star t date',1, 255));
  3236  
  3237                                    Update_Las t_Person_P arm(VN_pre vious_pers on_id);
  3238  
  3239                                    RETURN;
  3240  
  3241                               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)
  3242  
  3243   -- ******* ********** ********** ********** ********** ********** ********** ********
  3244   -- * Proce ss Status  = COMPLETE D (1506921 )
  3245   -- *          Transmi ssion Type  = QRYZ10E  (1510403)
  3246   -- *                                ORUZ11E  (1510408)
  3247   -- *                                ORUZ04S  (1510420)
  3248   -- *                                ORUZ05S  (1510421)
  3249   -- *                                ORUZ10S  (1510422)
  3250   -- *                                ORFZ10S  (1510423)
  3251   -- *                                ORUZ11S  (1510424)
  3252   -- ******* ********** ********** ********** ********** ********** ********** ********
  3253  
  3254                               IF V N_msg_stat us_id = CC _stat_type _complete  -- Process  HL7 txn t able (Comp lete/Uncom plete)
  3255                                AND  VN_msg_tr anstype_id  IN (CC_tr an_type_or fz10s,
  3256                                                               CC_tr an_type_or fz11s,  --  CCR 1788
  3257                                                               CC_tr an_type_or uz04s,
  3258                                                               CC_tr an_type_or uz05s,
  3259                                                               CC_tr an_type_or uz10s,
  3260                                                               CC_tr an_type_or uz11s,
  3261                                                               CC_tr an_type_qr yz10e,
  3262                                                               CC_tr an_type_qr yz11e) THE N  -- CCR  1788
  3263                               -- p rocess com pleted txn s (status  1506921) w / currentl y defined  transmissi on types
  3264  
  3265                                 IF  T_hl7_txn s.COUNT =  0 THEN  --  completed  txn table  count sel ection
  3266                                 --  No rows f or this pe rson/insti tution/sta tus type/t ransmissio n type (th is shouldn 't happen)
  3267                                    VD_log_dat e := SYSDA TE;
  3268  
  3269                                    ADRMGT.Job _Process_L og_Sp(PC_j ob_name =>  SUBSTR(CC _process_n ame,1,60),
  3270                                                                PD_j ob_log_dat e => VD_lo g_date,
  3271                                                                PC_j ob_status  => SUBSTR( 'WARNING      - Fetch  HL7 Txn R ows',1,60) ,
  3272                                                                PC_j ob_log_mes sage => SU BSTR('No H L7 Txns fo und for Pe rson ID '
  3273                                                                                                || VN _current_p erson_id
  3274                                                                                                || '  and Instit ution ID '
  3275                                                                                                || VN _instituti on_id
  3276                                                                                                || '  and Status  Type '
  3277                                                                                                || VN _msg_statu s_id
  3278                                                                                                || '  and Transm ission ID  '
  3279                                                                                                || VN _msg_trans type_id
  3280                                                                                                || '. ',1,2000),
  3281                                                                PD_d ate1 => VD _process_s tart_date,
  3282                                                                PC_t ext1 => SU BSTR('Date 1 column c ontains th e daily pr ocess star t date',1, 255));
  3283  
  3284                                 EL SIF VN_msg _transtype _id = CC_t ran_type_o rfz10s THE N
  3285  
  3286                                    IF T_hl7_t xns.COUNT  > VN_parm_ keep_orfz1 0s_count T HEN
  3287  
  3288                                        VI_row s_to_keep_ count := V N_parm_kee p_orfz10s_ count;
  3289  
  3290                                    END IF;
  3291  
  3292                                 EL SIF VN_msg _transtype _id = CC_t ran_type_o rfz11s THE N  -- CCR  1788 Begin
  3293  
  3294                                    IF T_hl7_t xns.COUNT  > VN_parm_ keep_orfz1 1s_count T HEN
  3295  
  3296                                        VI_row s_to_keep_ count := V N_parm_kee p_orfz11s_ count;
  3297  
  3298                                    END IF;  - -CCR 1788  End
  3299  
  3300                                 EL SIF VN_msg _transtype _id = CC_t ran_type_o ruz04s THE N
  3301  
  3302                                    IF T_hl7_t xns.COUNT  > VN_parm_ keep_oruz0 4s_count T HEN
  3303  
  3304                                        VI_row s_to_keep_ count := V N_parm_kee p_oruz04s_ count;
  3305  
  3306                                    END IF;
  3307  
  3308                                 EL SIF VN_msg _transtype _id = CC_t ran_type_o ruz05s THE N
  3309  
  3310                                    IF T_hl7_t xns.COUNT  > VN_parm_ keep_oruz0 5s_count T HEN
  3311  
  3312                                        VI_row s_to_keep_ count := V N_parm_kee p_oruz05s_ count;
  3313  
  3314                                    END IF;
  3315  
  3316                                 EL SIF VN_msg _transtype _id = CC_t ran_type_o ruz10s THE N
  3317  
  3318                                    IF T_hl7_t xns.COUNT  > VN_parm_ keep_oruz1 0s_count T HEN
  3319  
  3320                                        VI_row s_to_keep_ count := V N_parm_kee p_oruz10s_ count;
  3321  
  3322                                    END IF;
  3323  
  3324                                 EL SIF VN_msg _transtype _id = CC_t ran_type_o ruz11s THE N
  3325  
  3326                                    IF T_hl7_t xns.COUNT  > VN_parm_ keep_oruz1 1s_count T HEN
  3327  
  3328                                        VI_row s_to_keep_ count := V N_parm_kee p_oruz11s_ count;
  3329  
  3330                                    END IF;
  3331  
  3332                                 EL SIF VN_msg _transtype _id = CC_t ran_type_q ryz10e THE N
  3333  
  3334                                    IF T_hl7_t xns.COUNT  > VN_parm_ keep_qryz1 0e_count T HEN
  3335  
  3336                                      VI_rows_ to_keep_co unt := VN_ parm_keep_ qryz10e_co unt;
  3337  
  3338                                    END IF;
  3339  
  3340                                 EL SIF VN_msg _transtype _id = CC_t ran_type_q ryz11e THE N  -- CCR  1788 Begin
  3341  
  3342                                    IF T_hl7_t xns.COUNT  > VN_parm_ keep_qryz1 1e_count T HEN
  3343  
  3344                                      VI_rows_ to_keep_co unt := VN_ parm_keep_ qryz11e_co unt;
  3345  
  3346                                    END IF;  - - CCR 1788  End
  3347  
  3348                                 EN D IF;  --  end comple ted txn ta ble count  selection
  3349  
  3350                                 IF  VI_rows_t o_keep_cou nt > 0 THE N -- remov e complete d rows fro m archivin g request  table
  3351  
  3352                                    DBMS_APPLI CATION_INF O.SET_CLIE NT_INFO(TO _CHAR(SYSD ATE,'DD-MO N HH24:MI' )
  3353                                                                             ||  ' -P '  - - Person I D
  3354                                                                             ||  LTRIM(TO_ CHAR(VN_cu rrent_pers on_id,'999 9999999990 '))
  3355                                                                             ||  ' -I '  - - Institut ion ID
  3356                                                                             ||  LTRIM(TO_ CHAR(VN_in stitution_ id,'999999 90'))
  3357                                                                             ||  ' -T '  - - Msg Tran smission I D
  3358                                                                             ||  LTRIM(TO_ CHAR(VN_ms g_transtyp e_id,'9999 9990'))
  3359                                                                             ||  ' -F '  - - Final co unt of row s in colle ction
  3360                                                                             ||  LTRIM(TO_ CHAR(T_hl7 _txns.COUN T - VI_row s_to_keep_ count,'999 ,990'))
  3361                                                                             ||  '.');
  3362  
  3363                                    VC_process _msg := 'C OMPLETED n on-ORUZ11- E txns. Pe rson ID: '
  3364                                                       ||  LTRIM(TO_ CHAR(VN_cu rrent_pers on_id,'999 9999999990 '))
  3365                                                       ||  ' - Insti tution ID:  '
  3366                                                       ||  LTRIM(TO_ CHAR(VN_in stitution_ id,'999999 90'))
  3367                                                       ||  ' - Statu s code ID:  '
  3368                                                       ||  LTRIM(TO_ CHAR(VN_ms g_status_i d,'9999999 0'))
  3369                                                       ||  ' - Trans mission ty pe ID: '
  3370                                                       ||  LTRIM(TO_ CHAR(VN_ms g_transtyp e_id,'9999 9990'));
  3371  
  3372                                    Process_Ar chive_Rows (VC_proces s_msg); --  call INSE RT/DELETE  procedure
  3373  
  3374                                    IF VB_erro r THEN  --  error fla g is set i n sub-proc edure if t here were  problems
  3375  
  3376                                      RETURN;
  3377  
  3378                                    END IF;
  3379  
  3380                                 EN D IF; -- e nd remove  completed  rows from  archiving  request ta ble
  3381  
  3382   -- ******* ********** ********** ********** ********** ********** ********** ********
  3383   -- * Proce ss Status  = ERROR       (150692 7)
  3384   -- *                    NOT_TRAN S  (150692 6)
  3385   -- *                    PENDING     (150692 4)
  3386   -- *                    RETRANS     (150692 5)
  3387   -- *                    RTRAN_FA IL (150692 8)
  3388   -- *                    WAIT_ACK    (150692 3)
  3389   -- *                    WAIT_TRA N  (150692 2)
  3390   -- *          Transmi ssion Type  = ALL
  3391   -- ******* ********** ********** ********** ********** ********** ********** ********
  3392  
  3393                               ELSI F VN_msg_s tatus_id I N (CC_stat _type_unco mp_error,              -- 150692 7
  3394                                                             CC_stat _type_unco mp_not_tra ns,         -- 150692 6
  3395                                                             CC_stat _type_unco mp_pending ,           -- 150692 4
  3396                                                             CC_stat _type_unco mp_retrans ,           -- 150692 5
  3397                                                             CC_stat _type_unco mp_rtran_f ail,        -- 150692 8
  3398                                                             CC_stat _type_unco mp_wait_ac k,          -- 150692 3
  3399                                                             CC_stat _type_unco mp_wait_tr an) THEN    -- 150692 2
  3400                               -- p rocess all  uncomplet ed status  txns (unco mpleted st atus types  all proce ss the sam e)
  3401  
  3402                                 IF  T_hl7_txn s.COUNT =  0 THEN  --  uncomplet ed txn tab le count s election
  3403                                 --  No rows f or this pe rson/insti tution/sta tus type/t ransmissio n type (th is shouldn 't happen)
  3404                                    VD_log_dat e := SYSDA TE;
  3405  
  3406                                    ADRMGT.Job _Process_L og_Sp(PC_j ob_name =>  SUBSTR(CC _process_n ame,1,60),
  3407                                                                PD_j ob_log_dat e => VD_lo g_date,
  3408                                                                PC_j ob_status  => SUBSTR( 'WARNING      - Fetch  HL7 Txn R ows',1,60) ,
  3409                                                                PC_j ob_log_mes sage => SU BSTR('No H L7 Txns fo und for Pe rson ID '
  3410                                                                                                || VN _current_p erson_id
  3411                                                                                                || '  and Instit ution ID '
  3412                                                                                                || VN _instituti on_id
  3413                                                                                                || '  and Status  Type '
  3414                                                                                                || VN _msg_statu s_id
  3415                                                                                                || '  and Transm ission ID  '
  3416                                                                                                || VN _msg_trans type_id
  3417                                                                                                || '. ',1,2000),
  3418                                                                PD_d ate1 => VD _process_s tart_date,
  3419                                                                PC_t ext1 => SU BSTR('Date 1 column c ontains th e daily pr ocess star t date',1, 255));
  3420  
  3421                                 EL SE
  3422  
  3423                                    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
  3424       -- 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.
  3425                                      VI_rows_ to_keep_co unt := 1;  -- remove  the last e ntry in th e collecti on table
  3426  
  3427                                    ELSE
  3428       -- Rem ove all ro ws that ar e newer th an the arc hive cutof f date fro m the arch iving list .
  3429       -- (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])
  3430                                      FOR I_un comp_hl7_t xns IN REV ERSE T_hl7 _txns.FIRS T..T_hl7_t xns.LAST L OOP
  3431  
  3432                                        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
  3433  
  3434                                          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.
  3435  
  3436                                        ELSE
  3437  
  3438                                          EXIT ;
  3439  
  3440                                        END IF ;
  3441  
  3442                                      END LOOP ;
  3443  
  3444                                    END IF;  - - end chec k for rows  to keep
  3445  
  3446                                    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.
  3447  
  3448                                      DBMS_APP LICATION_I NFO.SET_CL IENT_INFO( TO_CHAR(SY SDATE,'DD- MON HH24:M I')
  3449                                                                                || ' -P '   -- Person  ID
  3450                                                                                || LTRIM(T O_CHAR(VN_ current_pe rson_id,'9 9999999999 90'))
  3451                                                                                || ' -I '   -- Instit ution ID
  3452                                                                                || LTRIM(T O_CHAR(VN_ institutio n_id,'9999 9990'))
  3453                                                                                || ' -S '   -- Status  code ID
  3454                                                                                || LTRIM(T O_CHAR(VN_ msg_status _id,'99999 990'))
  3455                                                                                || ' -F '   -- Final  count of r ows in col lection af ter clean  up
  3456                                                                                || LTRIM(T O_CHAR(T_h l7_txns.CO UNT - VI_r ows_to_kee p_count,'9 99,990'))
  3457                                                                                || '.');
  3458  
  3459                                      VC_proce ss_msg :=  'UNCOMPLET ED txns. P erson ID:  '
  3460                                                          || LTRIM(T O_CHAR(VN_ current_pe rson_id,'9 9999999999 90'))
  3461                                                          || ' - Ins titution I D: '
  3462                                                          || LTRIM(T O_CHAR(VN_ institutio n_id,'9999 9990'))
  3463                                                          || ' - Sta tus code I D: '
  3464                                                          || LTRIM(T O_CHAR(VN_ msg_status _id,'99999 990'))
  3465                                                          || ' - Tra nsmission  type ID: '
  3466                                                          || LTRIM(T O_CHAR(VN_ msg_transt ype_id,'99 999990'));
  3467  
  3468                                      Process_ Archive_Ro ws(VC_proc ess_msg);  -- call IN SERT/DELET E procedur e
  3469  
  3470                                      IF VB_er ror THEN   -- error f lag is set  in sub-pr ocedure if  there wer e problems
  3471  
  3472                                        RETURN ;
  3473  
  3474                                      END IF;
  3475  
  3476                                    END IF;  - - end rows  exist tha t are olde r than the  archive c utoff date .
  3477  
  3478                                 EN D IF; -- e nd uncompl eted txn t able count  selection
  3479  
  3480                               END  IF;  -- en d Process  HL7 txn ta ble (Compl ete/Uncomp lete) (ign ore any un known stat us/tranmis sion types )
  3481  
  3482                             END LO OP;  -- en d loop thr ough messa ge transmi ssion type s
  3483  
  3484                           END IF;    -- end c heck if an y msg tran smission t ype rows e xist
  3485  
  3486                         EXCEPTION
  3487  
  3488                           WHEN OTH ERS THEN
  3489  
  3490                             VD_log _date := S YSDATE;
  3491  
  3492                             ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  3493                                                          PD_job_log _date => V D_log_date ,
  3494                                                          PC_job_sta tus => SUB STR('ERROR        - A rchive Pro cess Loop' ,1,60),
  3495                                                          PC_job_log _message = > SUBSTR(' Failed to  retrieve m essage tra nsmission  types. Per son_id: '
  3496                                                                                         | | LTRIM(TO _CHAR(VN_c urrent_per son_id,'99 9999999999 0'))
  3497                                                                                         | | ' - Inst itution ID : '
  3498                                                                                         | | LTRIM(TO _CHAR(VN_i nstitution _id,'99999 990'))
  3499                                                                                         | | ' - Stat us code ID : '
  3500                                                                                         | | LTRIM(TO _CHAR(VN_m sg_status_ id,'999999 90'))
  3501                                                                                         | | ' - Erro r: '
  3502                                                                                         | | SQLERRM, 1,2000),
  3503                                                          PD_date1 = > VD_proce ss_start_d ate,
  3504                                                          PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  3505  
  3506                             ADRMGT .Job_Proce ss_Err_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  3507                                                          PD_job_err or_date  = > VD_log_d ate,
  3508                                                          PC_job_err or_code =>  SUBSTR(SQ LCODE,1,60 ),
  3509                                                          PC_job_err or_message  => SUBSTR ('Failed t o retrieve  message t ransmissio n types. P erson_id:  '
  3510                                                                                            || LTRIM( TO_CHAR(VN _current_p erson_id,' 9999999999 990'))
  3511                                                                                            || ' - In stitution  ID: '
  3512                                                                                            || LTRIM( TO_CHAR(VN _instituti on_id,'999 99990'))
  3513                                                                                            || ' - St atus code  ID: '
  3514                                                                                            || LTRIM( TO_CHAR(VN _msg_statu s_id,'9999 9990'))
  3515                                                                                            || ' - Er ror: '
  3516                                                                                            || SQLERR M,1,2000),
  3517                                                          PD_date1 = > VD_proce ss_start_d ate,
  3518                                                          PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  3519  
  3520                             Update _Last_Pers on_Parm(VN _previous_ person_id) ;
  3521  
  3522                             RETURN ;
  3523  
  3524                         END;  -- E nd Process  message t ransmissio n type for  selected  person/ins titution/s tatus
  3525  
  3526                      EN D LOOP;  - - end loop  through m essage sta tuses
  3527  
  3528                    END  IF;  -- en d check if  any msg s tatus rows  exist
  3529  
  3530                  EXCEPT ION
  3531  
  3532                    WHEN  OTHERS TH EN
  3533  
  3534                      VD _log_date  := SYSDATE ;
  3535  
  3536                      AD RMGT.Job_P rocess_Log _Sp(PC_job _name => S UBSTR(CC_p rocess_nam e,1,60),
  3537                                                   PD_job _log_date  => VD_log_ date,
  3538                                                   PC_job _status =>  SUBSTR('E RROR        - Archive  Process L oop',1,60) ,
  3539                                                   PC_job _log_messa ge => SUBS TR('Failed  to retrie ve message  status ID s. Person_ id: '
  3540                                                                                   || LTRI M(TO_CHAR( VN_current _person_id ,'99999999 99990'))
  3541                                                                                   || ' -  Institutio n ID: '
  3542                                                                                   || LTRI M(TO_CHAR( VN_institu tion_id,'9 9999990'))
  3543                                                                                   || ' -  Error: '
  3544                                                                                   || SQLE RRM,1,2000 ),
  3545                                                   PD_dat e1 => VD_p rocess_sta rt_date,
  3546                                                   PC_tex t1 => SUBS TR('Date1  column con tains the  daily proc ess start  date',1,25 5));
  3547  
  3548                      AD RMGT.Job_P rocess_Err _Sp(PC_job _name => S UBSTR(CC_p rocess_nam e,1,60),
  3549                                                   PD_job _error_dat e  => VD_l og_date,
  3550                                                   PC_job _error_cod e => SUBST R(SQLCODE, 1,60),
  3551                                                   PC_job _error_mes sage => SU BSTR('Fail ed to retr ieve messa ge status  IDs. Perso n_id: '
  3552                                                                                     || LT RIM(TO_CHA R(VN_curre nt_person_ id,'999999 9999990'))
  3553                                                                                     || '  - Institut ion ID: '
  3554                                                                                     || LT RIM(TO_CHA R(VN_insti tution_id, '99999990' ))
  3555                                                                                     || '  - Error: '
  3556                                                                                     || SQ LERRM,1,20 00),
  3557                                                   PD_dat e1 => VD_p rocess_sta rt_date,
  3558                                                   PC_tex t1 => SUBS TR('Date1  column con tains the  daily proc ess start  date',1,25 5));
  3559  
  3560                      Up date_Last_ Person_Par m(VN_previ ous_person _id);
  3561  
  3562                      RE TURN;
  3563  
  3564                  END;   -- end pro cess messa ge statuse s for sele cted perso n/institut ion
  3565  
  3566                END LOOP ;  -- end  loop throu gh institu tion IDs
  3567  
  3568              END IF;  - - end chec k if any i nstitution  ID rows e xist
  3569  
  3570           EX CEPTION
  3571  
  3572              WHEN OTHER S THEN
  3573  
  3574                VD_log_d ate := SYS DATE;
  3575  
  3576                ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( CC_process _name,1,60 ),
  3577                                            PD _job_log_d ate => VD_ log_date,
  3578                                            PC _job_statu s => SUBST R('ERROR        - Arc hive Proce ss Loop',1 ,60),
  3579                                            PC _job_log_m essage =>  SUBSTR('Fa iled to re trieve ins titution I Ds. Person _id: '
  3580                                                                            ||  LTRIM(TO_C HAR(VN_cur rent_perso n_id,'9999 999999990' ))
  3581                                                                            ||  ' - Error:  '
  3582                                                                            ||  SQLERRM,1, 2000),
  3583                                            PD _date1 =>  VD_process _start_dat e,
  3584                                            PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  3585  
  3586                ADRMGT.J ob_Process _Err_Sp(PC _job_name  => SUBSTR( CC_process _name,1,60 ),
  3587                                            PD _job_error _date  =>  VD_log_dat e,
  3588                                            PC _job_error _code => S UBSTR(SQLC ODE,1,60),
  3589                                            PC _job_error _message = > SUBSTR(' Failed to  retrieve i nstitution  IDs. Pers on_id: '
  3590                                                                              | | LTRIM(TO _CHAR(VN_c urrent_per son_id,'99 9999999999 0'))
  3591                                                                              | | ' - Erro r: '
  3592                                                                              | | SQLERRM, 1,2000),
  3593                                            PD _date1 =>  VD_process _start_dat e,
  3594                                            PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  3595  
  3596                Update_L ast_Person _Parm(VN_p revious_pe rson_id);
  3597  
  3598                RETURN;
  3599  
  3600           EN D;  -- end  process i nstitution  IDs for s elected pe rson
  3601  
  3602           BE GIN  -- ch eck if sto p was requ ested
  3603  
  3604              SELECT     AP.Value
  3605              INTO       VN_process _control
  3606              FROM       Adr_Parame ter AP
  3607              WHERE      Applicatio n_name = ' HL7_ARCHIV E_CONTROL'
  3608              AND        Parameter_ name = 'ST ART_STOP_P ROCESS';
  3609  
  3610              IF VN_proc ess_contro l = 0 THEN
  3611  
  3612                VD_log_d ate := SYS DATE;
  3613  
  3614                ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( CC_process _name,1,60 ),
  3615                                            PD _job_log_d ate => VD_ log_date,
  3616                                            PC _job_statu s => SUBST R('INFORMA TION - Arc hive Proce ss Loop',1 ,60),
  3617                                            PC _job_log_m essage =>  SUBSTR('Ap plication  has cancel led the ar chiving pr ocess.',1, 2000),
  3618                                            PD _date1 =>  VD_process _start_dat e,
  3619                                            PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  3620  
  3621                VD_log_d ate := SYS DATE;
  3622  
  3623                ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( CC_process _name,1,60 ),
  3624                                            PD _job_log_d ate => VD_ log_date,
  3625                                            PC _job_statu s => SUBST R('INFORMA TION - Arc hive Proce ss Loop',1 ,60),
  3626                                            PC _job_log_m essage =>  SUBSTR('Nu mber of Pe rson_ids p rocessed:  '
  3627                                                                            ||  TO_CHAR(VN _person_co unt,'99,99 9,999,990' ),1,2000),
  3628                                            PD _date1 =>  VD_process _start_dat e,
  3629                                            PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  3630  
  3631                VD_log_d ate := SYS DATE;
  3632  
  3633   -- archive  row count  is accumu lated in t he Process _Archive_R ows proced ure
  3634                ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( CC_process _name,1,60 ),
  3635                                            PD _job_log_d ate => VD_ log_date,
  3636                                            PC _job_statu s => SUBST R('INFORMA TION - Arc hive Proce ss Loop',1 ,60),
  3637                                            PC _job_log_m essage =>  SUBSTR('Nu mber of ro ws archive d: '
  3638                                                                            ||  TO_CHAR(VN _archive_c ount,'99,9 99,999,990 '),1,2000) ,
  3639                                            PD _date1 =>  VD_process _start_dat e,
  3640                                            PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  3641  
  3642                Update_L ast_Person _Parm(VN_p revious_pe rson_id);
  3643  
  3644                DBMS_APP LICATION_I NFO.SET_AC TION(Actio n_name =>  'Archiving  Processin g Cancelle d');
  3645  
  3646                EXIT;
  3647  
  3648              END IF;
  3649  
  3650           EX CEPTION
  3651  
  3652              WHEN OTHER S THEN
  3653  
  3654                VD_log_d ate := SYS DATE;
  3655  
  3656                ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( CC_process _name,1,60 ),
  3657                                            PD _job_log_d ate => VD_ log_date,
  3658                                            PC _job_statu s => SUBST R('ERROR        - Arc hive Proce ss Loop',1 ,60),
  3659                                            PC _job_log_m essage =>  SUBSTR('Un able to re trieve par ameter STA RT_STOP_PR OCESS.'
  3660                                                                            ||  ' Terminat ing execut ion of the  job.'|| S QLERRM,1,2 000),
  3661                                            PD _date1 =>  VD_process _start_dat e,
  3662                                            PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  3663  
  3664                ADRMGT.J ob_Process _Err_Sp(PC _job_name  => SUBSTR( CC_process _name,1,60 ),
  3665                                            PD _job_error _date  =>  VD_log_dat e,
  3666                                            PC _job_error _code => S UBSTR(SQLC ODE,1,60),
  3667                                            PC _job_error _message = > SUBSTR(' Failure in  archive p rocessing  loop - Una ble to ret rieve para meter STAR T_STOP_PRO CESS. '
  3668                                                                              | | SQLERRM, 1,2000),
  3669                                            PD _date1 =>  VD_process _start_dat e,
  3670                                            PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  3671  
  3672                Update_L ast_Person _Parm(VN_p revious_pe rson_id);
  3673  
  3674                RETURN;
  3675  
  3676           EN D;  -- end  check if  stop was r equested
  3677  
  3678         EXCE PTION
  3679  
  3680           WH EN NO_DATA _FOUND THE N -- all r ows have b een proces sed
  3681  
  3682              VD_log_dat e := SYSDA TE;
  3683  
  3684              ADRMGT.Job _Process_L og_Sp(PC_j ob_name =>  SUBSTR(CC _process_n ame,1,60),
  3685                                          PD_j ob_log_dat e => VD_lo g_date,
  3686                                          PC_j ob_status  => SUBSTR( 'INFORMATI ON - Archi ve Process  Loop - CO MPLETED',1 ,60),
  3687                                          PC_j ob_log_mes sage => SU BSTR('All  Person_ids  have been  processed .',1,2000) ,
  3688                                          PD_d ate1 => VD _process_s tart_date,
  3689                                          PC_t ext1 => SU BSTR('Date 1 column c ontains th e daily pr ocess star t date',1, 255));
  3690  
  3691              VD_log_dat e := SYSDA TE;
  3692  
  3693              ADRMGT.Job _Process_L og_Sp(PC_j ob_name =>  SUBSTR(CC _process_n ame,1,60),
  3694                                          PD_j ob_log_dat e => VD_lo g_date,
  3695                                          PC_j ob_status  => SUBSTR( 'INFORMATI ON - Archi ve Process  Loop - CO MPLETED',1 ,60),
  3696                                          PC_j ob_log_mes sage => SU BSTR('Numb er of Pers on_ids pro cessed: '
  3697                                                                          || TO _CHAR(VN_p erson_coun t,'99,999, 999,990'), 1,2000),
  3698                                          PD_d ate1 => VD _process_s tart_date,
  3699                                          PC_t ext1 => SU BSTR('Date 1 column c ontains th e daily pr ocess star t date',1, 255));
  3700              VD_log_dat e := SYSDA TE;
  3701  
  3702              ADRMGT.Job _Process_L og_Sp(PC_j ob_name =>  SUBSTR(CC _process_n ame,1,60),
  3703                                          PD_j ob_log_dat e => VD_lo g_date,
  3704                                          PC_j ob_status  => SUBSTR( 'INFORMATI ON - Archi ve Process  Loop - CO MPLETED',1 ,60),
  3705                                          PC_j ob_log_mes sage => SU BSTR('Numb er of rows  archived:  '
  3706                                                                          || TO _CHAR(VN_a rchive_cou nt,'99,999 ,999,990') ,1,2000),
  3707                                          PD_d ate1 => VD _process_s tart_date,
  3708                                          PC_t ext1 => SU BSTR('Date 1 column c ontains th e daily pr ocess star t date',1, 255));
  3709  
  3710              DBMS_APPLI CATION_INF O.SET_ACTI ON(Action_ name => 'A rchive Pro cessing Co mpleted');
  3711  
  3712              BEGIN
  3713  
  3714                UPDATE     Adr_Para meter AP
  3715                SET        AP.Value  = 0
  3716                WHERE      Applicat ion_name =  'HL7_ARCH IVE_CONTRO L'
  3717                AND        Paramete r_name = ' START_STOP _PROCESS';
  3718  
  3719                COMMIT;
  3720  
  3721              EXCEPTION
  3722  
  3723                WHEN OTH ERS THEN
  3724  
  3725                  ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  3726                                               PD_job_log _date => V D_log_date ,
  3727                                               PC_job_sta tus => SUB STR('ERROR        - A rchive Pro cess Loop' ,1,60),
  3728                                               PC_job_log _message = > SUBSTR(' Unable to  update par ameter STA RT_STOP_PR OCESS.'
  3729                                                                              | | ' Termin ating exec ution of t he job.'||  SQLERRM,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                  ADRMGT .Job_Proce ss_Err_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  3734                                               PD_job_err or_date  = > VD_log_d ate,
  3735                                               PC_job_err or_code =>  SUBSTR(SQ LCODE,1,60 ),
  3736                                               PC_job_err or_message  => SUBSTR ('Failure  in archive  processin g loop - U nable to u pdate para meter STAR T_STOP_PRO CESS. '
  3737                                                                                 || SQLERR M,1,2000),
  3738                                               PD_date1 = > VD_proce ss_start_d ate,
  3739                                               PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  3740  
  3741              END;
  3742  
  3743              Update_Las t_Person_P arm(0);
  3744  
  3745              EXIT;
  3746  
  3747           WH EN OTHERS  THEN
  3748  
  3749              VD_log_dat e := SYSDA TE;
  3750  
  3751              ADRMGT.Job _Process_L og_Sp(PC_j ob_name =>  SUBSTR(CC _process_n ame,1,60),
  3752                                          PD_j ob_log_dat e => VD_lo g_date,
  3753                                          PC_j ob_status  => SUBSTR( 'ERROR        - Archi ve Process  Loop',1,6 0),
  3754                                          PC_j ob_log_mes sage => SU BSTR('Fail ed to retr ieve next  Person ID.  Previous  Person_id:  '
  3755                                                                          || LT RIM(TO_CHA R(VN_previ ous_person _id,'99999 99999990') )
  3756                                                                          || '  Current Pe rson_id'
  3757                                                                          || LT RIM(TO_CHA R(VN_curre nt_person_ id,'999999 9999990'))
  3758                                                                          || '  - Error: '
  3759                                                                          || SQ LERRM,1,20 00),
  3760                                          PD_d ate1 => VD _process_s tart_date,
  3761                                          PC_t ext1 => SU BSTR('Date 1 column c ontains th e daily pr ocess star t date',1, 255));
  3762  
  3763              ADRMGT.Job _Process_E rr_Sp(PC_j ob_name =>  SUBSTR(CC _process_n ame,1,60),
  3764                                          PD_j ob_error_d ate  => VD _log_date,
  3765                                          PC_j ob_error_c ode => SUB STR(SQLCOD E,1,60),
  3766                                          PC_j ob_error_m essage =>  SUBSTR('Fa iled to re trieve nex t Person I D. Previou s Person_i d: '
  3767                                                                          || LT RIM(TO_CHA R(VN_previ ous_person _id,'99999 99999990') )
  3768                                                                          || '  Current Pe rson_id'
  3769                                                                          || LT RIM(TO_CHA R(VN_curre nt_person_ id,'999999 9999990'))
  3770                                                                          || '  - Error: '
  3771                                                                          || SQ LERRM,1,20 00),
  3772                                          PD_d ate1 => VD _process_s tart_date,
  3773                                          PC_t ext1 => SU BSTR('Date 1 column c ontains th e daily pr ocess star t date',1, 255));
  3774  
  3775              Update_Las t_Person_P arm(VN_pre vious_pers on_id);
  3776  
  3777              RETURN;
  3778  
  3779         END;   -- end g et next pe rson_id to  process
  3780  
  3781         VN_p revious_pe rson_id :=  VN_curren t_person_i d;
  3782  
  3783       END LO OP;  -- en d main arc hive proce ssing loop
  3784  
  3785     EXCEPTIO N
  3786  
  3787       WHEN O THERS THEN
  3788  
  3789         VD_l og_date :=  SYSDATE;
  3790  
  3791         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  3792                                      PD_job_l og_date =>  VD_log_da te,
  3793                                      PC_job_s tatus => S UBSTR('ERR OR       -  Archive P rocess Loo p',1,60),
  3794                                      PC_job_l og_message  => SUBSTR ('Failure  in archive  processin g loop.'
  3795                                                                      || ' Term inating ex ecution of  the job.' || SQLERRM ,1,2000),
  3796                                      PD_date1  => VD_pro cess_start _date,
  3797                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  3798  
  3799         ADRM GT.Job_Pro cess_Err_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  3800                                      PD_job_e rror_date   => VD_log _date,
  3801                                      PC_job_e rror_code  => SUBSTR( SQLCODE,1, 60),
  3802                                      PC_job_e rror_messa ge => SUBS TR('Failur e in archi ve process ing loop.  '
  3803                                                                        || SQLE RRM,1,2000 ),
  3804                                      PD_date1  => VD_pro cess_start _date,
  3805                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  3806  
  3807         Upda te_Last_Pe rson_Parm( VN_previou s_person_i d);
  3808  
  3809         RETU RN;
  3810  
  3811     END;  --  end main  processing  block
  3812  
  3813     VD_proce ss_end_dat e := SYSDA TE;
  3814  
  3815     VN_proce ss_time_in _secs := ( VD_process _end_date  - VD_proce ss_start_d ate)*24*60 *60;
  3816  
  3817     VN_proce ss_days :=  TRUNC(VN_ process_ti me_in_secs /24/60/60) ;
  3818  
  3819     VN_proce ss_hours : = TRUNC((V N_process_ time_in_se cs -
  3820                                  ( VN_process _days*24*6 0*60))/60/ 60);
  3821  
  3822     VN_proce ss_minutes  := TRUNC( (VN_proces s_time_in_ secs -
  3823                                     (VN_proce ss_days*24 *60*60) -
  3824                                       (VN_pro cess_hours *60*60))/6 0);
  3825  
  3826     VN_proce ss_seconds  := TRUNC( VN_process _time_in_s ecs -
  3827                                     (VN_proce ss_days*24 *60*60) -
  3828                                       (VN_pro cess_hours *60*60) -
  3829                                         (VN_p rocess_min utes*60));
  3830  
  3831     VC_proce ss_duratio n := LTRIM (TO_CHAR(V N_process_ days,'9990 ')) || ' D ays '
  3832                              || LT RIM(TO_CHA R(VN_proce ss_hours,' 90')) || '  Hrs '
  3833                              || LT RIM(TO_CHA R(VN_proce ss_minutes ,'90')) ||  ' Mins '
  3834                              || LT RIM(TO_CHA R(VN_proce ss_seconds ,'90')) ||  ' Secs';
  3835  
  3836     VD_log_d ate := SYS DATE;
  3837  
  3838     ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( CC_process _name,1,60 ),
  3839                                 PD _job_log_d ate => VD_ log_date,
  3840                                 PC _job_statu s => SUBST R('INFORMA TION - Pro cess Compl etion',1,6 0),
  3841                                 PC _job_log_m essage =>  'Elapsed p rocessing  time: ' ||  VC_proces s_duration ,
  3842                                 PD _date1 =>  VD_process _start_dat e,
  3843                                 PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  3844  
  3845   EXCEPTION
  3846  
  3847     WHEN OTH ERS THEN
  3848  
  3849       VD_log _date := S YSDATE;
  3850  
  3851       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  3852                                    PD_job_log _date => V D_log_date ,
  3853                                    PC_job_sta tus => SUB STR('ERROR        - U nknown Err or',1,60),
  3854                                    PC_job_log _message = > SUBSTR(' Unknown er ror archiv ing HL7 ro ws.'
  3855                                                                   | | ' Termin ating exec ution of t he job.'||  SQLERRM,1 ,2000),
  3856                                    PD_date1 = > VD_proce ss_start_d ate,
  3857                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  3858  
  3859       ADRMGT .Job_Proce ss_Err_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  3860                                    PD_job_err or_date  = > VD_log_d ate,
  3861                                    PC_job_err or_code =>  SUBSTR(SQ LCODE,1,60 ),
  3862                                    PC_job_err or_message  => SUBSTR ('Unknown  error arch iving HL7  rows. '
  3863                                                                      || SQLERR M,1,2000),
  3864                                    PD_date1 = > VD_proce ss_start_d ate,
  3865                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  3866  
  3867       RETURN ;
  3868  
  3869   END Hl7_Pr ocess_Arch ives;
  3870  
  3871   /********* ********** ********** ********** ********** ********** ********** ********
  3872    *
  3873    *    NAME : Hl7_Proc ess_Delete s
  3874    *    TYPE : Procedur e
  3875    *
  3876    *    DESC RIPTION
  3877    *      Us ed to dele te rows fr om the Hl7 _Archive_T ransaction _log table  based
  3878    *      pm  the aging  of the Cr eation_dat e column.
  3879    *
  3880    *  PB_run _standalon e   Ignore  DBMS_JOB  logic for  checking r unning job s.
  3881    *                         Defau lt: FALSE
  3882    *
  3883    *  PB_all ow_rpt_ins t   Allow  stored pro cedure to  be submitt ed in the
  3884    *                        DBMS_J OB queue o n the ADR  reporting  databases
  3885    *                         Defau lt: FALSE
  3886    *
  3887    ********* ********** ********** ********** ********** ********** ********** ********
  3888    */
  3889  
  3890   PROCEDURE  Hl7_Proces s_Deletes
  3891     (PB_run_ standalone
  3892        IN      BOOLEAN  DEFAULT FA LSE,
  3893      PB_allo w_rpt_inst
  3894        IN      BOOLEAN  DEFAULT FA LSE
  3895     )
  3896   IS
  3897  
  3898   -- CONSTAN TS
  3899  
  3900     CC_proce ss_name                        V ARCHAR2(60 ) := 'HL7  Archiver -  Delete Ar chived Row s';
  3901  
  3902   -- VARIABL ES
  3903  
  3904     VB_allow _rpt_inst                      B OOLEAN :=  FALSE;
  3905     VB_run_s tandalone                      B OOLEAN :=  FALSE;
  3906  
  3907     VC_allow _rpt_inst                      V ARCHAR2(5)  := NULL;
  3908     VC_insta nce_name                       V ARCHAR2(16 );
  3909     VC_proce ss_duratio n                   V ARCHAR2(50 );
  3910     VC_run_s tandalone                      V ARCHAR2(5)  := NULL;
  3911  
  3912     VD_log_d ate                            D ATE;
  3913     VD_proce ss_end_dat e                   D ATE;
  3914     VD_proce ss_start_d ate                 D ATE;
  3915     VD_del_c utoff_date                     D ATE;
  3916  
  3917     VN_arch_ rows_age_t o_keep              N UMBER := 3 65;
  3918     VN_delet e_count                        N UMBER := 0 ;
  3919     VN_job_c ount                           N UMBER := 0 ;
  3920     VN_log_a ge_to_keep                     N UMBER := 1 80;
  3921     VN_num_r ows_to_pro cess                N UMBER := 2 0000;
  3922     VN_proce ss_control                     N UMBER := 0 ;
  3923     VN_proce ss_days                        N UMBER;
  3924     VN_proce ss_hours                       N UMBER;
  3925     VN_proce ss_minutes                     N UMBER;
  3926     VN_proce ss_seconds                     N UMBER;
  3927     VN_proce ss_time_in _secs               N UMBER;
  3928     VN_total _deletes_c ount                N UMBER :=0;
  3929  
  3930     TYPE TT_ pk_id IS T ABLE OF NU MBER INDEX  BY PLS_IN TEGER;
  3931  
  3932     T_pk_id                                 T T_pk_id;
  3933  
  3934     CURSOR C _hl7_arch_ rec IS
  3935       SELECT     Hl7_tr ansaction_ log_id
  3936       FROM       Hl7_Ar chive_Tran saction_Lo g
  3937       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
  3938       AND        Record _created_d ate <= VD_ del_cutoff _date;
  3939  
  3940   -- EXCEPTI ONS
  3941  
  3942      EE_DML_ ERROR                          E XCEPTION;
  3943      PRAGMA                                 E XCEPTION_I NIT(EE_DML _ERROR, -2 4381);
  3944  
  3945   BEGIN
  3946  
  3947     DBMS_APP LICATION_I NFO.SET_MO DULE(Modul e_name =>  'Hl7_Proce ss_Deletes ',
  3948                                         Actio n_name =>  NULL);
  3949  
  3950     VD_proce ss_start_d ate := SYS DATE;
  3951  
  3952     VD_log_d ate := SYS DATE;
  3953  
  3954     ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( CC_process _name,1,60 ),
  3955                                 PD _job_log_d ate => VD_ log_date,
  3956                                 PC _job_statu s => SUBST R('INFORMA TION - Pro cess Initi ation',1,6 0),
  3957                                 PC _job_log_m essage =>  NULL,
  3958                                 PD _date1 =>  VD_process _start_dat e,
  3959                                 PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  3960  
  3961   -- ******* ********** ********** ********** ********** ********** ********** ********
  3962   -- *
  3963   -- * Valid ate input  parameters
  3964   -- *
  3965   -- ******* ********** ********** ********** ********** ********** ********** ********
  3966  
  3967     DBMS_APP LICATION_I NFO.SET_AC TION(Actio n_name =>  'Validatin g Input Pa rameters') ;
  3968  
  3969   -- * Check  run stand alone flag
  3970  
  3971     IF PB_ru n_standalo ne IS NULL
  3972      OR NOT  PB_run_sta ndalone TH EN
  3973  
  3974       VB_run _standalon e := FALSE ;
  3975       VC_run _standalon e := 'FALS E'; -- use d for log  message, b oolean can 't be disp layed
  3976  
  3977     ELSE
  3978  
  3979       VB_run _standalon e := TRUE;
  3980       VC_run _standalon e := 'TRUE '; -- used  for log m essage, bo olean can' t be displ ayed
  3981  
  3982     END IF;
  3983  
  3984   -- * Check  run on re port insta nce flag
  3985  
  3986     IF PB_al low_rpt_in st IS NULL
  3987      OR NOT  PB_allow_r pt_inst TH EN
  3988  
  3989       VB_all ow_rpt_ins t := FALSE ;
  3990       VC_all ow_rpt_ins t := 'FALS E'; -- use d for log  message, b oolean can 't be disp layed
  3991  
  3992     ELSE
  3993  
  3994       VB_all ow_rpt_ins t := TRUE;
  3995       VC_all ow_rpt_ins t := 'TRUE '; -- used  for log m essage, bo olean can' t be displ ayed
  3996  
  3997     END IF;
  3998  
  3999     VD_log_d ate := SYS DATE;
  4000  
  4001     ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( CC_process _name,1,60 ),
  4002                                 PD _job_log_d ate => VD_ log_date,
  4003                                 PC _job_statu s => SUBST R('INFORMA TION - Com mand Line  Parameters ',1,60),
  4004                                 PC _job_log_m essage =>  SUBSTR('Cu rrent job  command li ne paramet ers - '
  4005                                                              || ' R un standal one: ' ||  VC_run_sta ndalone
  4006                                                              || ' R un on repo rting data bases: ' | | VC_allow _rpt_inst, 1,2000),
  4007                                 PD _date1 =>  VD_process _start_dat e,
  4008                                 PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  4009  
  4010   -- ******* ********** ********** ********** ********** ********** ********** ********
  4011   -- *
  4012   -- * Check  to see if  process i s running  on a repor ting datab ase.
  4013   -- *  - If  VB_allow_ rpt_inst i s FALSE, t hen it's n ot allowed . End the  job.
  4014   -- *
  4015   -- ******* ********** ********** ********** ********** ********** ********** ********
  4016  
  4017     DBMS_APP LICATION_I NFO.SET_AC TION(Actio n_name =>  'Check if  running on  reporting  DB');
  4018  
  4019     BEGIN
  4020  
  4021       SELECT     Instan ce_name
  4022       INTO       VC_ins tance_name
  4023       FROM       V$inst ance;
  4024  
  4025       VD_log _date := S YSDATE;
  4026       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  4027                                    PD_job_log _date => V D_log_date ,
  4028                                    PC_job_sta tus => SUB STR('INFOR MATION - I nstance Na me' ,1,60) ,
  4029                                    PC_job_log _message = > SUBSTR(' Job is run ning on in stance ' | | UPPER(VC _instance_ name) || ' .',1,2000) ,
  4030                                    PD_date1 = > VD_proce ss_start_d ate,
  4031                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  4032  
  4033       IF NOT  VB_allow_ rpt_inst
  4034        AND U PPER(SUBST R(VC_insta nce_name,1 ,4)) = 'AD RR' THEN
  4035  
  4036         VD_l og_date :=  SYSDATE;
  4037  
  4038         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  4039                                      PD_job_l og_date =>  VD_log_da te,
  4040                                      PC_job_s tatus => S UBSTR('ERR OR       -  Reporting  Database  Check',1,6 0),
  4041                                      PC_job_l og_message  => SUBSTR ('Attempti ng to run  on a repor ting datab ase with e xecution p arameter'
  4042                                                                  ||  ' VB_allo w_rpt_inst  set to FA LSE. This  job has be en termina ted.'
  4043                                                                  ||  ' To run  on a repor ting insta nce, set p arameter V B_allow_rp t_inst'
  4044                                                                  ||  ' to TRUE  and resub mit the jo b.',1,2000 ),
  4045                                      PD_date1  => VD_pro cess_start _date,
  4046                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  4047  
  4048         RETU RN;
  4049  
  4050       END IF ;
  4051  
  4052     EXCEPTIO N
  4053  
  4054       WHEN O THERS THEN
  4055  
  4056         VD_l og_date :=  SYSDATE;
  4057  
  4058         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  4059                                      PD_job_l og_date =>  VD_log_da te,
  4060                                      PC_job_s tatus => S UBSTR('ERR OR       -  Reporting  Database  Check',1,6 0),
  4061                                      PC_job_l og_message  => SUBSTR ('Unable t o retrieve  instance  name. Term inating sc ript.',1,2 000),
  4062                                      PD_date1  => VD_pro cess_start _date,
  4063                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  4064  
  4065         ADRM GT.Job_Pro cess_Err_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  4066                                      PD_job_e rror_date   => VD_log _date,
  4067                                      PC_job_e rror_code  => SUBSTR( SQLCODE,1, 60),
  4068                                      PC_job_e rror_messa ge => SUBS TR('Unable  to retrie ve instanc e name. '
  4069                                                                        || SQLE RRM,1,2000 ),
  4070                                      PD_date1  => VD_pro cess_start _date,
  4071                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  4072  
  4073         RETU RN;
  4074  
  4075     END;
  4076  
  4077   -- ******* ********** ********** ********** ********** ********** ********** ********
  4078   -- *
  4079   -- * Check  to see if  any other  jobs of t his proced ure are ru nning.
  4080   -- *  - If  yes, then  end this  job.
  4081   -- *
  4082   -- ******* ********** ********** ********** ********** ********** ********** ********
  4083  
  4084     DBMS_APP LICATION_I NFO.SET_AC TION(Actio n_name =>  'Check for  duplicate  jobs runn ing');
  4085  
  4086     SELECT C OUNT(*)
  4087     INTO   V N_job_coun t
  4088     FROM   S YS.DBA_JOB S J
  4089     WHERE  U PPER(J.WHA T) LIKE '% HL7_PROCES S_DELETES% ';
  4090  
  4091     IF VN_jo b_count >  1 THEN
  4092  
  4093       VD_log _date := S YSDATE;
  4094  
  4095       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  4096                                    PD_job_log _date => V D_log_date ,
  4097                                    PC_job_sta tus => SUB STR('ERROR        - M ultiple Ex ecution Ch eck',1,60) ,
  4098                                    PC_job_log _message = > SUBSTR(' There is a nother ins tance of t his job al ready in t he job que ue.'
  4099                                                                || '  Exiting j ob without  running.' ,1,2000),
  4100                                    PD_date1 = > VD_proce ss_start_d ate,
  4101                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  4102  
  4103       RETURN ;
  4104  
  4105     ELSE
  4106  
  4107       IF VB_ run_standa lone THEN
  4108  
  4109         VD_l og_date :=  SYSDATE;
  4110  
  4111         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  4112                                      PD_job_l og_date =>  VD_log_da te,
  4113                                      PC_job_s tatus => S UBSTR('INF ORMATION -  Execution  Mode',1,6 0),
  4114                                      PC_job_l og_message  => SUBSTR ('Starting  in STANDA LONE mode. ',1,2000),
  4115                                      PD_date1  => VD_pro cess_start _date,
  4116                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  4117  
  4118       ELSE
  4119  
  4120         VD_l og_date :=  SYSDATE;
  4121  
  4122         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  4123                                      PD_job_l og_date =>  VD_log_da te,
  4124                                      PC_job_s tatus => S UBSTR('INF ORMATION -  Execution  Mode',1,6 0),
  4125                                      PC_job_l og_message  => SUBSTR ('Starting  in DBMS_J OB mode.', 1,2000),
  4126                                      PD_date1  => VD_pro cess_start _date,
  4127                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  4128  
  4129       END IF ;
  4130  
  4131     END IF;
  4132  
  4133   -- ******* ********** ********** ********** ********** ********** ********** ********
  4134   -- *
  4135   -- * Retri eve modifi able param eters
  4136   -- *
  4137   -- *  If t he process  control p arameter =  0 then th e job retu rns contro l to
  4138   -- *  to D BMS_JOB an d waits un til it is  called to  run again.
  4139   -- *
  4140   -- ******* ********** ********** ********** ********** ********** ********** ********
  4141  
  4142     DBMS_APP LICATION_I NFO.SET_AC TION(Actio n_name =>  'Fetching  user param eters');
  4143  
  4144     BEGIN
  4145  
  4146       SELECT     AP.Val ue
  4147       INTO       VN_pro cess_contr ol
  4148       FROM       Adr_Pa rameter AP
  4149       WHERE      Applic ation_name  = 'HL7_DE LETE_CONTR OL'
  4150       AND        Parame ter_name =  'START_ST OP_PROCESS ';
  4151  
  4152       IF VN_ process_co ntrol = 0  THEN
  4153  
  4154         VD_l og_date :=  SYSDATE;
  4155  
  4156         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  4157                                      PD_job_l og_date =>  VD_log_da te,
  4158                                      PC_job_s tatus => S UBSTR('INF ORMATION -  Process C ontrol',1, 60),
  4159                                      PC_job_l og_message  => SUBSTR ('Start/St op control  flag set  to STOP (0 ). Going b ack to sle ep.',1,200 0),
  4160                                      PD_date1  => VD_pro cess_start _date,
  4161                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  4162  
  4163         RETU RN;
  4164  
  4165       ELSE
  4166  
  4167         VD_l og_date :=  SYSDATE;
  4168  
  4169         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  4170                                      PD_job_l og_date =>  VD_log_da te,
  4171                                      PC_job_s tatus => S UBSTR('INF ORMATION -  Process C ontrol',1, 60),
  4172                                      PC_job_l og_message  => SUBSTR ('Start/St op control  flag set  to START ( 1). Delete  process s tarting.', 1,2000),
  4173                                      PD_date1  => VD_pro cess_start _date,
  4174                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  4175  
  4176       END IF ;
  4177  
  4178     EXCEPTIO N
  4179  
  4180       WHEN O THERS THEN
  4181  
  4182         VD_l og_date :=  SYSDATE;
  4183  
  4184         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  4185                                      PD_job_l og_date =>  VD_log_da te,
  4186                                      PC_job_s tatus => S UBSTR('ERR OR       -  Process C ontrol',1, 60),
  4187                                      PC_job_l og_message  => SUBSTR ('Unable t o retrieve  parameter  START_STO P_PROCESS. '
  4188                                                                      || ' Term inating ex ecution of  the job.' || SQLERRM ,1,2000),
  4189                                      PD_date1  => VD_pro cess_start _date,
  4190                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  4191  
  4192         ADRM GT.Job_Pro cess_Err_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  4193                                      PD_job_e rror_date   => VD_log _date,
  4194                                      PC_job_e rror_code  => SUBSTR( SQLCODE,1, 60),
  4195                                      PC_job_e rror_messa ge => SUBS TR('Unable  to retrie ve paramet er START_S TOP_PROCES S. '
  4196                                                                        || SQLE RRM,1,2000 ),
  4197                                      PD_date1  => VD_pro cess_start _date,
  4198                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  4199  
  4200         RETU RN;
  4201  
  4202     END;
  4203  
  4204     BEGIN
  4205  
  4206       SELECT     AP.Val ue
  4207       INTO       VN_log _age_to_ke ep
  4208       FROM       Adr_Pa rameter AP
  4209       WHERE      Applic ation_name  = 'HL7_PR OCESS_DELE TES'
  4210       AND        Parame ter_name =  'OLDEST L OG FILE DA YS KEPT';
  4211  
  4212       VD_log _date := S YSDATE;
  4213  
  4214       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  4215                                    PD_job_log _date => V D_log_date ,
  4216                                    PC_job_sta tus => SUB STR('INFOR MATION - U ser Define d Paramete rs',1,60),
  4217                                    PC_job_log _message = > SUBSTR(' Parameter:  OLDEST LO G FILE DAY S KEPT  -  Value: '||  VN_log_ag e_to_keep, 1,2000),
  4218                                    PD_date1 = > VD_proce ss_start_d ate,
  4219                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  4220  
  4221     EXCEPTIO N
  4222  
  4223       WHEN O THERS THEN
  4224  
  4225         VD_l og_date :=  SYSDATE;
  4226  
  4227         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  4228                                      PD_job_l og_date =>  VD_log_da te,
  4229                                      PC_job_s tatus => S UBSTR('ERR OR       -  User Defi ned Parame ters',1,60 ),
  4230                                      PC_job_l og_message  => SUBSTR ('Unable t o retrieve  parameter  OLDEST LO G FILE DAY S KEPT.'
  4231                                                                      || ' Term inating ex ecution of  the job.' || SQLERRM ,1,2000),
  4232                                      PD_date1  => VD_pro cess_start _date,
  4233                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  4234  
  4235         ADRM GT.Job_Pro cess_Err_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  4236                                      PD_job_e rror_date   => VD_log _date,
  4237                                      PC_job_e rror_code  => SUBSTR( SQLCODE,1, 60),
  4238                                      PC_job_e rror_messa ge => SUBS TR('Unable  to retrie ve paramet er OLDEST  LOG FILE D AYS KEPT.  '
  4239                                                                        || SQLE RRM,1,2000 ),
  4240                                      PD_date1  => VD_pro cess_start _date,
  4241                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  4242  
  4243         RETU RN;
  4244  
  4245     END;
  4246  
  4247     BEGIN
  4248  
  4249       SELECT     AP.Val ue
  4250       INTO       VN_num _rows_to_p rocess
  4251       FROM       Adr_Pa rameter AP
  4252       WHERE      Applic ation_name  = 'HL7_PR OCESS_DELE TES'
  4253       AND        Parame ter_name =  'ROWS TO  PROCESS';
  4254  
  4255       VD_log _date := S YSDATE;
  4256  
  4257       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  4258                                    PD_job_log _date => V D_log_date ,
  4259                                    PC_job_sta tus => SUB STR('INFOR MATION - U ser Define d Paramete rs',1,60),
  4260                                    PC_job_log _message = > SUBSTR(' Parameter:  ROWS TO P ROCESS  -  Value: '||  VN_num_ro ws_to_proc ess,1,2000 ),
  4261                                    PD_date1 = > VD_proce ss_start_d ate,
  4262                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  4263  
  4264     EXCEPTIO N
  4265  
  4266       WHEN O THERS THEN
  4267  
  4268         VD_l og_date :=  SYSDATE;
  4269  
  4270         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  4271                                      PD_job_l og_date =>  VD_log_da te,
  4272                                      PC_job_s tatus => S UBSTR('ERR OR       -  User Defi ned Parame ters',1,60 ),
  4273                                      PC_job_l og_message  => SUBSTR ('Unable t o retrieve  parameter  ROWS TO P ROCESS.'
  4274                                                                     || ' Termi nating exe cution of  the job.'| | SQLERRM, 1,2000),
  4275                                      PD_date1  => VD_pro cess_start _date,
  4276                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  4277  
  4278         ADRM GT.Job_Pro cess_Err_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  4279                                      PD_job_e rror_date   => VD_log _date,
  4280                                      PC_job_e rror_code  => SUBSTR( SQLCODE,1, 60),
  4281                                      PC_job_e rror_messa ge => SUBS TR('Unable  to retrie ve paramet er ROWS TO  PROCESS.  '
  4282                                                                        || SQLE RRM,1,2000 ),
  4283                                      PD_date1  => VD_pro cess_start _date,
  4284                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  4285  
  4286         RETU RN;
  4287  
  4288     END;
  4289  
  4290     BEGIN
  4291  
  4292       SELECT     AP.Val ue
  4293       INTO       VN_arc h_rows_age _to_keep
  4294       FROM       Adr_Pa rameter AP
  4295       WHERE      Applic ation_name  = 'HL7_PR OCESS_DELE TES'
  4296       AND        Parame ter_name =  'OLDEST A RCHIVED HL 7 DAYS NOT  DELETED';
  4297  
  4298       VD_log _date := S YSDATE;
  4299  
  4300       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  4301                                    PD_job_log _date => V D_log_date ,
  4302                                    PC_job_sta tus => SUB STR('INFOR MATION - U ser Define d Paramete rs',1,60),
  4303                                    PC_job_log _message = > SUBSTR(' Parameter:  OLDEST AR CHIVED HL7  DAYS NOT  DELETED  -  Value: '| | VN_arch_ rows_age_t o_keep,1,2 000),
  4304                                    PD_date1 = > VD_proce ss_start_d ate,
  4305                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  4306  
  4307       VD_del _cutoff_da te := TRUN C(VD_proce ss_start_d ate) - VN_ arch_rows_ age_to_kee p;
  4308  
  4309     EXCEPTIO N
  4310  
  4311       WHEN O THERS THEN
  4312  
  4313         VD_l og_date :=  SYSDATE;
  4314  
  4315         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  4316                                      PD_job_l og_date =>  VD_log_da te,
  4317                                      PC_job_s tatus => S UBSTR('ERR OR       -  User Defi ned Parame ters',1,60 ),
  4318                                      PC_job_l og_message  => SUBSTR ('Unable t o retrieve  parameter  OLDEST AR CHIVED HL7  DAYS NOT  DELETED.'
  4319                                                                      || ' Term inating ex ecution of  the job.' || SQLERRM ,1,2000),
  4320                                      PD_date1  => VD_pro cess_start _date,
  4321                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  4322  
  4323         ADRM GT.Job_Pro cess_Err_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  4324                                      PD_job_e rror_date   => VD_log _date,
  4325                                      PC_job_e rror_code  => SUBSTR( SQLCODE,1, 60),
  4326                                      PC_job_e rror_messa ge => SUBS TR('Unable  to retrie ve paramet er OLDEST  ARCHIVED H L7 DAYS NO T DELETED.  '
  4327                                                                        || SQLE RRM,1,2000 ),
  4328                                      PD_date1  => VD_pro cess_start _date,
  4329                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  4330  
  4331     END;
  4332  
  4333   -- ******* ********** ********** ********** ********** ********** ********** ********
  4334   -- *
  4335   -- * Remov e outdated  log and e rror file  rows
  4336   -- *
  4337   -- ******* ********** ********** ********** ********** ********** ********** ********
  4338  
  4339     DBMS_APP LICATION_I NFO.SET_AC TION(Actio n_name =>  'Removing  old logs a nd error r ows');
  4340  
  4341     BEGIN
  4342  
  4343       VD_log _date := S YSDATE;
  4344  
  4345       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  4346                                    PD_job_log _date => V D_log_date ,
  4347                                    PC_job_sta tus => SUB STR('INFOR MATION - L og File Cl eanup',1,6 0),
  4348                                    PC_job_log _message = > SUBSTR(' Removing E rror Logs  more than  '|| VN_arc h_rows_age _to_keep | | 'days ol d.',1,2000 ),
  4349                                    PD_date1 = > VD_proce ss_start_d ate,
  4350                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  4351  
  4352       DELETE
  4353       FROM       Job_Pr ocess_Errs
  4354       WHERE      Job_na me = CC_pr ocess_name
  4355       AND        Date1  < VD_proce ss_start_d ate - VN_l og_age_to_ keep;
  4356  
  4357       COMMIT ;
  4358  
  4359     EXCEPTIO N
  4360  
  4361       WHEN O THERS THEN
  4362  
  4363         VD_l og_date :=  SYSDATE;
  4364  
  4365         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  4366                                      PD_job_l og_date =>  VD_log_da te,
  4367                                      PC_job_s tatus => S UBSTR('ERR OR       -  Log file  cleanup',1 ,60),
  4368                                      PC_job_l og_message  => SUBSTR ('Unable t o remove r ows from e rror log t able.'
  4369                                                                      || ' Term inating ex ecution of  the job.' || SQLERRM ,1,2000),
  4370                                      PD_date1  => VD_pro cess_start _date,
  4371                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  4372  
  4373         ADRM GT.Job_Pro cess_Err_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  4374                                      PD_job_e rror_date   => VD_log _date,
  4375                                      PC_job_e rror_code  => SUBSTR( SQLCODE,1, 60),
  4376                                      PC_job_e rror_messa ge => SUBS TR('Unable  to remove  rows from  error log  table. '
  4377                                                                        || SQLE RRM,1,2000 ),
  4378                                      PD_date1  => VD_pro cess_start _date,
  4379                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  4380  
  4381         RETU RN;
  4382  
  4383     END;
  4384  
  4385     BEGIN
  4386  
  4387       VD_log _date := S YSDATE;
  4388  
  4389       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  4390                                    PD_job_log _date => V D_log_date ,
  4391                                    PC_job_sta tus => SUB STR('INFOR MATION - L og File Cl eanup',1,6 0),
  4392                                    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),
  4393                                    PD_date1 = > VD_proce ss_start_d ate,
  4394                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  4395  
  4396       DELETE
  4397       FROM       Job_Pr ocess_Logs
  4398       WHERE      Job_na me = CC_pr ocess_name
  4399       AND        Date1  < VD_proce ss_start_d ate - VN_l og_age_to_ keep;
  4400  
  4401       COMMIT ;
  4402  
  4403     EXCEPTIO N
  4404  
  4405       WHEN O THERS THEN
  4406  
  4407         VD_l og_date :=  SYSDATE;
  4408  
  4409         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  4410                                      PD_job_l og_date =>  VD_log_da te,
  4411                                      PC_job_s tatus => S UBSTR('ERR OR       -  Log file  cleanup',1 ,60),
  4412                                      PC_job_l og_message  => SUBSTR ('Unable t o remove r ows from p rocess log  table.'
  4413                                                                      || ' Term inating ex ecution of  the job.' || SQLERRM ,1,2000),
  4414                                      PD_date1  => VD_pro cess_start _date,
  4415                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  4416  
  4417         ADRM GT.Job_Pro cess_Err_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  4418                                      PD_job_e rror_date   => VD_log _date,
  4419                                      PC_job_e rror_code  => SUBSTR( SQLCODE,1, 60),
  4420                                      PC_job_e rror_messa ge => SUBS TR('Unable  to remove  rows from  process l og table.  '
  4421                                                                        || SQLE RRM,1,2000 ),
  4422                                      PD_date1  => VD_pro cess_start _date,
  4423                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  4424  
  4425         RETU RN;
  4426  
  4427     END;
  4428  
  4429   -- ******* ********** ********** ********** ********** ********** ********** ********
  4430   -- *
  4431   -- * Main  processing  loop
  4432   -- *
  4433   -- ******* ********** ********** ********** ********** ********** ********** ********
  4434  
  4435     BEGIN  - - main pro cessing lo op block
  4436  
  4437       DBMS_A PPLICATION _INFO.SET_ ACTION(Act ion_name = > 'Process ing Delete s');
  4438  
  4439       VD_log _date := S YSDATE;
  4440  
  4441       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  4442                                    PD_job_log _date => V D_log_date ,
  4443                                    PC_job_sta tus => SUB STR('INFOR MATION - D elete Proc ess Loop', 1,60),
  4444                                    PC_job_log _message = > SUBSTR(' Starting d eletion of  archived  HL7 rows m ore than '
  4445                                                                   | | VN_arch_ rows_age_t o_keep
  4446                                                                   | | ' days o ld.',1,200 0),
  4447                                    PD_date1 = > VD_proce ss_start_d ate,
  4448                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  4449  
  4450       VN_tot al_deletes _count :=0 ;
  4451  
  4452       LOOP   -- main pr ocessing l oop
  4453  
  4454         OPEN  C_hl7_arc h_rec;
  4455  
  4456         FETC H C_hl7_ar ch_rec
  4457         BULK  COLLECT I NTO T_pk_i d
  4458         LIMI T VN_num_r ows_to_pro cess;
  4459  
  4460         CLOS E C_hl7_ar ch_rec;
  4461  
  4462         IF T _pk_id.COU NT = 0 THE N  -- if c ollection  table is e mpty, all  rows proce ssed
  4463  
  4464           VD _log_date  := SYSDATE ;
  4465  
  4466           AD RMGT.Job_P rocess_Log _Sp(PC_job _name => S UBSTR(CC_p rocess_nam e,1,60),
  4467                                        PD_job _log_date  => VD_log_ date,
  4468                                        PC_job _status =>  SUBSTR('I NFORMATION  - Delete  Process Lo op - COMPL ETED',1,60 ),
  4469                                        PC_job _log_messa ge => SUBS TR('All ar chived HL7  rows more  than '
  4470                                                                        || VN_a rch_rows_a ge_to_keep
  4471                                                                        || ' da ys old hav e been del eted.',1,2 000),
  4472                                        PD_dat e1 => VD_p rocess_sta rt_date,
  4473                                        PC_tex t1 => SUBS TR('Date1  column con tains the  daily proc ess start  date',1,25 5));
  4474  
  4475           VD _log_date  := SYSDATE ;
  4476  
  4477           AD RMGT.Job_P rocess_Log _Sp(PC_job _name => S UBSTR(CC_p rocess_nam e,1,60),
  4478                                        PD_job _log_date  => VD_log_ date,
  4479                                        PC_job _status =>  SUBSTR('I NFORMATION  - Delete  Process Lo op - COMPL ETED',1,60 ),
  4480                                        PC_job _log_messa ge => SUBS TR('Total  number of  rows delet ed: '
  4481                                                                        || TO_C HAR(VN_tot al_deletes _count,'99 9,999,999, 990'),1,20 00),
  4482                                        PD_dat e1 => VD_p rocess_sta rt_date,
  4483                                        PC_tex t1 => SUBS TR('Date1  column con tains the  daily proc ess start  date',1,25 5));
  4484  
  4485           DB MS_APPLICA TION_INFO. SET_ACTION (Action_na me => 'Del ete Proces sing Compl eted');
  4486  
  4487           BE GIN
  4488  
  4489              UPDATE     Adr_Parame ter AP
  4490              SET        AP.Value =  0
  4491              WHERE      Applicatio n_name = ' HL7_DELETE _CONTROL'
  4492              AND        Parameter_ name = 'ST ART_STOP_P ROCESS';
  4493  
  4494              COMMIT;
  4495  
  4496           EX CEPTION
  4497  
  4498              WHEN OTHER S THEN
  4499  
  4500                ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( CC_process _name,1,60 ),
  4501                                            PD _job_log_d ate => VD_ log_date,
  4502                                            PC _job_statu s => SUBST R('ERROR        - Del ete Proces s Loop',1, 60),
  4503                                            PC _job_log_m essage =>  SUBSTR('Un able to up date param eter START _STOP_PROC ESS(1).'
  4504                                                                            ||  ' Terminat ing execut ion of the  job.'|| S QLERRM,1,2 000),
  4505                                            PD _date1 =>  VD_process _start_dat e,
  4506                                            PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  4507  
  4508                ADRMGT.J ob_Process _Err_Sp(PC _job_name  => SUBSTR( CC_process _name,1,60 ),
  4509                                            PD _job_error _date  =>  VD_log_dat e,
  4510                                            PC _job_error _code => S UBSTR(SQLC ODE,1,60),
  4511                                            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). '
  4512                                                                              | | SQLERRM, 1,2000),
  4513                                            PD _date1 =>  VD_process _start_dat e,
  4514                                            PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  4515  
  4516           EN D;
  4517  
  4518           EX IT;
  4519  
  4520         ELSE   -- still  rows to p rocess
  4521  
  4522           BE GIN
  4523  
  4524              FORALL I_p k_id IN T_ pk_id.FIRS T..T_pk_id .LAST SAVE  EXCEPTION S
  4525                DELETE
  4526                FROM       Hl7_Arch ive_Transa ction_Log
  4527                WHERE      Hl7_Tran saction_Lo g_id = T_p k_id(I_pk_ id);
  4528  
  4529                VN_delet e_count :=  SQL%ROWCO UNT;
  4530  
  4531           EX CEPTION
  4532  
  4533              WHEN EE_DM L_ERROR TH EN
  4534  
  4535                VN_delet e_count :=  SQL%ROWCO UNT;
  4536  
  4537                VD_log_d ate := SYS DATE;
  4538  
  4539                ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( CC_process _name,1,60 ),
  4540                                            PD _job_log_d ate => VD_ log_date,
  4541                                            PC _job_statu s => SUBST R('ERROR        - Del ete Proces s Loop',1, 60),
  4542                                            PC _job_log_m essage =>  SUBSTR('Al l rows not  deleted.'
  4543                                                                            ||  ' - Rows i n collecti on: '
  4544                                                                            ||  LTRIM(TO_C HAR(T_pk_i d.COUNT,'9 99,990'))
  4545                                                                            ||  '. Error c ount: '
  4546                                                                            ||  LTRIM(TO_C HAR(SQL%BU LK_EXCEPTI ONS.COUNT, '999,990') )
  4547                                                                            ||  '. Rows at tempted to  delete: '
  4548                                                                            ||  LTRIM(TO_C HAR(VN_del ete_count, '999,990') ),1,2000),
  4549                                            PD _date1 =>  VD_process _start_dat e,
  4550                                            PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  4551  
  4552                ADRMGT.J ob_Process _Err_Sp(PC _job_name  => SUBSTR( CC_process _name,1,60 ),
  4553                                            PD _job_error _date  =>  VD_log_dat e,
  4554                                            PC _job_error _code => N ULL,
  4555                                            PC _job_error _message = > SUBSTR(' All rows n ot deleted . '
  4556                                                                              | | ' - Rows  in collec tion: '
  4557                                                                              | | LTRIM(TO _CHAR(T_pk _id.COUNT, '999,990') )
  4558                                                                              | | '. Error  count: '
  4559                                                                              | | LTRIM(TO _CHAR(SQL% BULK_EXCEP TIONS.COUN T,'999,990 '))
  4560                                                                              | | '. Rows  attempted  to delete:  '
  4561                                                                              | | LTRIM(TO _CHAR(VN_d elete_coun t,'999,990 ')),1,2000 ),
  4562                                            PD _date1 =>  VD_process _start_dat e,
  4563                                            PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  4564  
  4565                FOR I_de l_err IN 1 ..SQL%BULK _EXCEPTION S.COUNT LO OP
  4566  
  4567                  VD_log _date := S YSDATE;
  4568  
  4569                  ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  4570                                               PD_job_log _date => V D_log_date ,
  4571                                               PC_job_sta tus => SUB STR('ERROR        - D elete Proc ess Loop', 1,60),
  4572                                               PC_job_log _message = > SUBSTR(' Failed DEL ETE row #  '
  4573                                                                              | | I_del_er r
  4574                                                                              | | ' occurr ed during  iteration  # '
  4575                                                                              | | SQL%BULK _EXCEPTION S(I_del_er r).ERROR_I NDEX
  4576                                                                              | | ' Error  message: '
  4577                                                                              | | SQLERRM( -SQL%BULK_ EXCEPTIONS (I_del_err ).ERROR_CO DE),1,2000 ),
  4578                                               PD_date1 = > VD_proce ss_start_d ate,
  4579                                               PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  4580  
  4581                  ADRMGT .Job_Proce ss_Err_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  4582                                               PD_job_err or_date  = > VD_log_d ate,
  4583                                               PC_job_err or_code =>  SUBSTR(-S QL%BULK_EX CEPTIONS(I _del_err). ERROR_CODE ,1,60),
  4584                                               PC_job_err or_message  => SUBSTR ('Failed D ELETE row  # '
  4585                                                                                 || I_del_ err
  4586                                                                                 || ' occu rred durin g iteratio n # '
  4587                                                                                 || SQL%BU LK_EXCEPTI ONS(I_del_ err).ERROR _INDEX
  4588                                                                                 || ' Erro r message:  '
  4589                                                                                 || SQLERR M(-SQL%BUL K_EXCEPTIO NS(I_del_e rr).ERROR_ CODE),1,20 00),
  4590                                               PD_date1 = > VD_proce ss_start_d ate,
  4591                                               PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  4592  
  4593                END LOOP ;
  4594  
  4595                ROLLBACK ;
  4596  
  4597                BEGIN
  4598  
  4599                  UPDATE     Adr_Pa rameter AP
  4600                  SET        AP.Val ue = 0
  4601                  WHERE      Applic ation_name  = 'HL7_DE LETE_CONTR OL'
  4602                  AND        Parame ter_name =  'START_ST OP_PROCESS ';
  4603  
  4604                  COMMIT ;
  4605  
  4606                EXCEPTIO N
  4607  
  4608                  WHEN O THERS THEN
  4609  
  4610                    ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  4611                                                 PD_job_l og_date =>  VD_log_da te,
  4612                                                 PC_job_s tatus => S UBSTR('ERR OR       -  Delete Pr ocess Loop ',1,60),
  4613                                                 PC_job_l og_message  => SUBSTR ('Unable t o update p arameter S TART_STOP_ PROCESS(2) .'
  4614                                                                                 || ' Term inating ex ecution of  the job.' || SQLERRM ,1,2000),
  4615                                                 PD_date1  => VD_pro cess_start _date,
  4616                                                 PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  4617  
  4618                    ADRM GT.Job_Pro cess_Err_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  4619                                                 PD_job_e rror_date   => VD_log _date,
  4620                                                 PC_job_e rror_code  => SUBSTR( SQLCODE,1, 60),
  4621                                                 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).  '
  4622                                                                                   || SQLE RRM,1,2000 ),
  4623                                                 PD_date1  => VD_pro cess_start _date,
  4624                                                 PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  4625  
  4626                END;
  4627  
  4628                RETURN;
  4629  
  4630              WHEN OTHER S THEN
  4631  
  4632                VD_log_d ate := SYS DATE;
  4633  
  4634                ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( CC_process _name,1,60 ),
  4635                                            PD _job_log_d ate => VD_ log_date,
  4636                                            PC _job_statu s => SUBST R('ERROR        - Del ete Proces s Loop',1, 60),
  4637                                            PC _job_log_m essage =>  SUBSTR('Un known erro r while de leting.'
  4638                                                                            ||  ' Terminat ing execut ion of the  job.'|| S QLERRM,1,2 000),
  4639                                            PD _date1 =>  VD_process _start_dat e,
  4640                                            PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  4641  
  4642                ADRMGT.J ob_Process _Err_Sp(PC _job_name  => SUBSTR( CC_process _name,1,60 ),
  4643                                            PD _job_error _date  =>  VD_log_dat e,
  4644                                            PC _job_error _code => S UBSTR(SQLC ODE,1,60),
  4645                                            PC _job_error _message = > SUBSTR(' Failure in  delete pr ocessing l oop - Unkn own error  while dele ting.'
  4646                                                                              | | SQLERRM, 1,2000),
  4647                                            PD _date1 =>  VD_process _start_dat e,
  4648                                            PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  4649  
  4650                ROLLBACK ;
  4651  
  4652                BEGIN
  4653  
  4654                  UPDATE     Adr_Pa rameter AP
  4655                  SET        AP.Val ue = 0
  4656                  WHERE      Applic ation_name  = 'HL7_DE LETE_CONTR OL'
  4657                  AND        Parame ter_name =  'START_ST OP_PROCESS ';
  4658  
  4659                  COMMIT ;
  4660  
  4661                EXCEPTIO N
  4662  
  4663                  WHEN O THERS THEN
  4664  
  4665                    ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  4666                                                 PD_job_l og_date =>  VD_log_da te,
  4667                                                 PC_job_s tatus => S UBSTR('ERR OR       -  Delete Pr ocess Loop ',1,60),
  4668                                                 PC_job_l og_message  => SUBSTR ('Unable t o update p arameter S TART_STOP_ PROCESS(3) .'
  4669                                                                                 || ' Term inating ex ecution of  the job.' || SQLERRM ,1,2000),
  4670                                                 PD_date1  => VD_pro cess_start _date,
  4671                                                 PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  4672  
  4673                    ADRM GT.Job_Pro cess_Err_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  4674                                                 PD_job_e rror_date   => VD_log _date,
  4675                                                 PC_job_e rror_code  => SUBSTR( SQLCODE,1, 60),
  4676                                                 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).  '
  4677                                                                                   || SQLE RRM,1,2000 ),
  4678                                                 PD_date1  => VD_pro cess_start _date,
  4679                                                 PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  4680  
  4681                END;
  4682  
  4683                RETURN;
  4684  
  4685           EN D;
  4686  
  4687           IF  T_pk_id.C OUNT = VN_ delete_cou nt THEN  - - all coll ection row s were del eted
  4688  
  4689              COMMIT;
  4690  
  4691              VN_total_d eletes_cou nt := VN_t otal_delet es_count +  VN_delete _count;
  4692  
  4693              DBMS_APPLI CATION_INF O.SET_CLIE NT_INFO(TO _CHAR(SYSD ATE,'DD-MO N HH24:MI: SS')
  4694                                                       ||  ' - Curre nt delete  count: '
  4695                                                       ||  TO_CHAR(V N_total_de letes_coun t,'99,999, 999,990')) ;
  4696  
  4697              BEGIN  --  get proces s control  parameter
  4698  
  4699                SELECT     AP.Value
  4700                INTO       VN_proce ss_control
  4701                FROM       Adr_Para meter AP
  4702                WHERE      Applicat ion_name =  'HL7_DELE TE_CONTROL '
  4703                AND        Paramete r_name = ' START_STOP _PROCESS';
  4704  
  4705                IF VN_pr ocess_cont rol = 0 TH EN
  4706  
  4707                  VD_log _date := S YSDATE;
  4708  
  4709                  ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  4710                                               PD_job_log _date => V D_log_date ,
  4711                                               PC_job_sta tus => SUB STR('INFOR MATION - D elete Proc ess Loop -  CANCELLED ',1,60),
  4712                                               PC_job_log _message = > SUBSTR(' Applicatio n has canc elled the  delete pro cess.',1,2 000),
  4713                                               PD_date1 = > VD_proce ss_start_d ate,
  4714                                               PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  4715  
  4716                  VD_log _date := S YSDATE;
  4717  
  4718                  ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  4719                                               PD_job_log _date => V D_log_date ,
  4720                                               PC_job_sta tus => SUB STR('INFOR MATION - D elete Proc ess Loop -  CANCELLED ',1,60),
  4721                                               PC_job_log _message = > SUBSTR(' Total numb er of rows  deleted:  '
  4722                                                                              | | TO_CHAR( VN_total_d eletes_cou nt,'99,999 ,999,990') ,1,2000),
  4723                                               PD_date1 = > VD_proce ss_start_d ate,
  4724                                               PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  4725  
  4726                  DBMS_A PPLICATION _INFO.SET_ ACTION(Act ion_name = > 'Delete  Processing  Cancelled ');
  4727  
  4728                  EXIT;
  4729  
  4730                END IF;
  4731  
  4732              EXCEPTION
  4733  
  4734                WHEN OTH ERS THEN
  4735  
  4736                  VD_log _date := S YSDATE;
  4737  
  4738                  ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  4739                                               PD_job_log _date => V D_log_date ,
  4740                                               PC_job_sta tus => SUB STR('ERROR        - D elete Proc ess Loop', 1,60),
  4741                                               PC_job_log _message = > SUBSTR(' Unable to  retrieve p arameter S TART_STOP_ PROCESS.'
  4742                                                                              | | ' Termin ating exec ution of t he job.'||  SQLERRM,1 ,2000),
  4743                                               PD_date1 = > VD_proce ss_start_d ate,
  4744                                               PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  4745  
  4746                  ADRMGT .Job_Proce ss_Err_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  4747                                               PD_job_err or_date  = > VD_log_d ate,
  4748                                               PC_job_err or_code =>  SUBSTR(SQ LCODE,1,60 ),
  4749                                               PC_job_err or_message  => SUBSTR ('Failure  in delete  processing  loop - Un able to re trieve par ameter STA RT_STOP_PR OCESS. '
  4750                                                                                 || SQLERR M,1,2000),
  4751                                               PD_date1 = > VD_proce ss_start_d ate,
  4752                                               PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  4753  
  4754                  RETURN ;
  4755  
  4756              END;  -- e nd get pro cess contr ol paramet er
  4757  
  4758           EL SE  -- all  collectio n rows wer e not dele ted
  4759  
  4760              VD_log_dat e := SYSDA TE;
  4761  
  4762              ADRMGT.Job _Process_L og_Sp(PC_j ob_name =>  SUBSTR(CC _process_n ame,1,60),
  4763                                          PD_j ob_log_dat e => VD_lo g_date,
  4764                                          PC_j ob_status  => SUBSTR( 'ERROR        - Delet e Process  Loop',1,60 ),
  4765                                          PC_j ob_log_mes sage => SU BSTR('Dele te count d oes not ma tch collet ion table  count.'
  4766                                                                          || '  - Delete c ount: '
  4767                                                                          || VN _delete_co unt
  4768                                                                          || '  - Collecti on count:  '
  4769                                                                          || T_ pk_id.COUN T
  4770                                                                          || '  - Terminat ing execut ion of the  job.',1,2 000),
  4771                                          PD_d ate1 => VD _process_s tart_date,
  4772                                          PC_t ext1 => SU BSTR('Date 1 column c ontains th e daily pr ocess star t date',1, 255));
  4773  
  4774              ADRMGT.Job _Process_E rr_Sp(PC_j ob_name =>  SUBSTR(CC _process_n ame,1,60),
  4775                                          PD_j ob_error_d ate  => VD _log_date,
  4776                                          PC_j ob_error_c ode => NUL L,
  4777                                          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.'
  4778                                                                          || '  - Delete c ount: '
  4779                                                                          || VN _delete_co unt
  4780                                                                          || '  - Collecti on count:  '
  4781                                                                          || T_ pk_id.COUN T
  4782                                                                          || '  - Terminat ing execut ion of the  job.',1,2 000),
  4783                                          PD_d ate1 => VD _process_s tart_date,
  4784                                          PC_t ext1 => SU BSTR('Date 1 column c ontains th e daily pr ocess star t date',1, 255));
  4785  
  4786              ROLLBACK;
  4787  
  4788              BEGIN
  4789  
  4790                UPDATE     Adr_Para meter AP
  4791                SET        AP.Value  = 0
  4792                WHERE      Applicat ion_name =  'HL7_DELE TE_CONTROL '
  4793                AND        Paramete r_name = ' START_STOP _PROCESS';
  4794  
  4795                COMMIT;
  4796  
  4797              EXCEPTION
  4798  
  4799                WHEN OTH ERS THEN
  4800  
  4801                  ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  4802                                               PD_job_log _date => V D_log_date ,
  4803                                               PC_job_sta tus => SUB STR('ERROR        - D elete Proc ess Loop', 1,60),
  4804                                               PC_job_log _message = > SUBSTR(' Unable to  update par ameter STA RT_STOP_PR OCESS(4).'
  4805                                                                              | | ' Termin ating exec ution of t he job.'||  SQLERRM,1 ,2000),
  4806                                               PD_date1 = > VD_proce ss_start_d ate,
  4807                                               PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  4808  
  4809                  ADRMGT .Job_Proce ss_Err_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  4810                                               PD_job_err or_date  = > VD_log_d ate,
  4811                                               PC_job_err or_code =>  SUBSTR(SQ LCODE,1,60 ),
  4812                                               PC_job_err or_message  => SUBSTR ('Failure  in delete  processing  loop - Un able to up date param eter START _STOP_PROC ESS(4). '
  4813                                                                                 || SQLERR M,1,2000),
  4814                                               PD_date1 = > VD_proce ss_start_d ate,
  4815                                               PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  4816  
  4817              END;
  4818  
  4819              RETURN;
  4820  
  4821           EN D IF;  --  end all co llection r ows were d eleted
  4822  
  4823         END  IF;  -- en d if colle ction tabl e is empty , all rows  processed
  4824  
  4825       END LO OP;  -- em d main pro cessing lo op
  4826  
  4827       VD_pro cess_end_d ate := SYS DATE;
  4828  
  4829       VN_pro cess_time_ in_secs :=  (VD_proce ss_end_dat e - VD_pro cess_start _date)*24* 60*60;
  4830  
  4831       VN_pro cess_days  := TRUNC(V N_process_ time_in_se cs/24/60/6 0);
  4832  
  4833       VN_pro cess_hours  := TRUNC( (VN_proces s_time_in_ secs -
  4834                                     (VN_proce ss_days*24 *60*60))/6 0/60);
  4835  
  4836       VN_pro cess_minut es := TRUN C((VN_proc ess_time_i n_secs -
  4837                                       (VN_pro cess_days* 24*60*60)  -
  4838                                         (VN_p rocess_hou rs*60*60)) /60);
  4839  
  4840       VN_pro cess_secon ds := TRUN C(VN_proce ss_time_in _secs -
  4841                                       (VN_pro cess_days* 24*60*60)  -
  4842                                         (VN_p rocess_hou rs*60*60)  -
  4843                                           (VN _process_m inutes*60) );
  4844  
  4845       VC_pro cess_durat ion := LTR IM(TO_CHAR (VN_proces s_days,'99 90')) || '  Days '
  4846                                ||  LTRIM(TO_C HAR(VN_pro cess_hours ,'90')) ||  ' Hrs '
  4847                                ||  LTRIM(TO_C HAR(VN_pro cess_minut es,'90'))  || ' Mins  '
  4848                                ||  LTRIM(TO_C HAR(VN_pro cess_secon ds,'90'))  || ' Secs' ;
  4849  
  4850       VD_log _date := S YSDATE;
  4851  
  4852       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  4853                                    PD_job_log _date => V D_log_date ,
  4854                                    PC_job_sta tus => SUB STR('INFOR MATION - P rocess Com pletion',1 ,60),
  4855                                    PC_job_log _message = > 'Elapsed  processin g time: '  || VC_proc ess_durati on,
  4856                                    PD_date1 = > VD_proce ss_start_d ate,
  4857                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  4858  
  4859     EXCEPTIO N
  4860  
  4861       WHEN O THERS THEN
  4862  
  4863         VD_l og_date :=  SYSDATE;
  4864  
  4865         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  4866                                      PD_job_l og_date =>  VD_log_da te,
  4867                                      PC_job_s tatus => S UBSTR('ERR OR       -  Delete Pr ocess Loop ',1,60),
  4868                                      PC_job_l og_message  => SUBSTR ('Failure  in delete  processing  loop.'
  4869                                                                      || ' Term inating ex ecution of  the job.' || SQLERRM ,1,2000),
  4870                                      PD_date1  => VD_pro cess_start _date,
  4871                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  4872  
  4873         ADRM GT.Job_Pro cess_Err_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  4874                                      PD_job_e rror_date   => VD_log _date,
  4875                                      PC_job_e rror_code  => SUBSTR( SQLCODE,1, 60),
  4876                                      PC_job_e rror_messa ge => SUBS TR('Failur e in delet e processi ng loop. '
  4877                                                                        || SQLE RRM,1,2000 ),
  4878                                      PD_date1  => VD_pro cess_start _date,
  4879                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  4880  
  4881         RETU RN;
  4882  
  4883     END;  --  end main  processing  loop bloc k
  4884  
  4885   EXCEPTION
  4886  
  4887     WHEN OTH ERS THEN
  4888  
  4889       VD_log _date := S YSDATE;
  4890  
  4891       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  4892                                    PD_job_log _date => V D_log_date ,
  4893                                    PC_job_sta tus => SUB STR('ERROR        - U nknown Err or',1,60),
  4894                                    PC_job_log _message = > SUBSTR(' Unknown er ror proces sing HL7 d eletions.'
  4895                                                                   | | ' Termin ating exec ution of t he job.'||  SQLERRM,1 ,2000),
  4896                                    PD_date1 = > VD_proce ss_start_d ate,
  4897                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  4898  
  4899       ADRMGT .Job_Proce ss_Err_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  4900                                    PD_job_err or_date  = > VD_log_d ate,
  4901                                    PC_job_err or_code =>  SUBSTR(SQ LCODE,1,60 ),
  4902                                    PC_job_err or_message  => SUBSTR ('Unknown  error proc essing HL7  deletions . '
  4903                                                                      || SQLERR M,1,2000),
  4904                                    PD_date1 = > VD_proce ss_start_d ate,
  4905                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  4906  
  4907       RETURN ;
  4908  
  4909   END Hl7_Pr ocess_Dele tes;
  4910  
  4911   END Hl7_Ar chive_Pkg;
  4912   /
  4913  
  4914  
  4915   GRANT EXEC UTE ON ADR .HL7_ARCHI VE_PKG TO  EEUSR;
  4916   DROP PACKA GE BODY AD R.ADR_UTIL ;
  4917  
  4918   CREATE OR  REPLACE PA CKAGE BODY  ADR.adr_u til
  4919   AS
  4920     CURSOR a dr_seq IS  select own er, object _name
  4921                           from dba _objects
  4922                          where own er in ('AD R', 'PSD',  'PSIM')
  4923                            and obj ect_type =  'SEQUENCE '
  4924                      or der by own er, object _name;
  4925  
  4926     CURSOR a dr_trig IS  select ow ner, objec t_name
  4927                            from db a_objects
  4928                           where ow ner in ('A DR', 'PSD' , 'PSIM')
  4929                             and ob ject_type  = 'TRIGGER '
  4930                       o rder by ow ner, objec t_name;
  4931  
  4932  
  4933     obj       varchar2( 50);
  4934  
  4935  
  4936   /********* ********** ********** ********** ********** ********** ********** ******
  4937    *
  4938    *    NAME
  4939    *      AD R_PIN_SEQ
  4940    *
  4941    *    DESC RIPTION
  4942    *      AD R_PIN_SEQ  marks all  ADR, PSIM  and PSD se quences as  objects t o be
  4943    *      ke pt in the  shared poo l memory.
  4944    *
  4945    */
  4946  
  4947     PROCEDUR E ADR_PIN_ SEQ IS
  4948     BEGIN
  4949       FOR fn d_seq IN a dr_seq LOO P
  4950         obj  := fnd_seq .owner ||' .'|| fnd_s eq.object_ name;
  4951         DBMS _SHARED_PO OL.KEEP(ob j,'Q');
  4952       END LO OP;
  4953  
  4954     END ADR_ PIN_SEQ;
  4955  
  4956   /********* ********** ********** ********** ********** ********** ********** ******
  4957    *
  4958    *    NAME
  4959    *      AD R_UNPIN_SE Q
  4960    *
  4961    *    DESC RIPTION
  4962    *      AD R_UNPIN_SE Q marks al l ADR, PSI M and PSD  sequences  as objects  to be
  4963    *      no t kept in  the shared  pool memo ry.
  4964    *
  4965    */
  4966  
  4967     PROCEDUR E ADR_UNPI N_SEQ IS
  4968     BEGIN
  4969       FOR fn d_seq IN a dr_seq LOO P
  4970         obj  := fnd_seq .owner ||' .'|| fnd_s eq.object_ name;
  4971         DBMS _SHARED_PO OL.UNKEEP( obj,'Q');
  4972       END LO OP;
  4973  
  4974     END ADR_ UNPIN_SEQ;
  4975  
  4976   /********* ********** ********** ********** ********** ********** ********** ******
  4977    *
  4978    *    NAME
  4979    *      AD R_PIN_TRIG GERS
  4980    *
  4981    *    DESC RIPTION
  4982    *      AD R_PIN_TRIG GERS marks  all ADR,  PSIM and P SD trigger s as objec ts
  4983    *      to  be kept i n the shar ed pool me mory.
  4984    *
  4985    */
  4986  
  4987     PROCEDUR E ADR_PIN_ TRIGGERS I S
  4988     BEGIN
  4989       FOR fn d_trig IN  adr_trig L OOP
  4990         obj  := fnd_tri g.owner || '.'|| fnd_ trig.objec t_name;
  4991         DBMS _SHARED_PO OL.KEEP(ob j,'R');
  4992       END LO OP;
  4993  
  4994     END ADR_ PIN_TRIGGE RS;
  4995  
  4996   /********* ********** ********** ********** ********** ********** ********** ******
  4997    *
  4998    *    NAME
  4999    *      AD R_UNPIN_TR IGGERS
  5000    *
  5001    *    DESC RIPTION
  5002    *      AD R_UNPIN_TR IGGERS mar ks all ADR , PSIM and  PSD trigg ers as obj ects
  5003    *      to  be not ke pt in the  shared poo l memory.
  5004    *
  5005    */
  5006  
  5007     PROCEDUR E ADR_UNPI N_TRIGGERS  IS
  5008     BEGIN
  5009       FOR fn d_trig IN  adr_trig L OOP
  5010         obj  := fnd_tri g.owner || '.'|| fnd_ trig.objec t_name;
  5011         DBMS _SHARED_PO OL.UNKEEP( obj,'R');
  5012       END LO OP;
  5013  
  5014     END ADR_ UNPIN_TRIG GERS;
  5015  
  5016   END adr_ut il;
  5017   /
  5018  
  5019  
  5020   CREATE OR  REPLACE PU BLIC SYNON YM ADR_UTI L FOR ADR. ADR_UTIL;
  5021  
  5022  
  5023   GRANT EXEC UTE ON ADR .ADR_UTIL  TO AACDBA;