| [613] | 1 | IBCNEDE ;DAOU/DAC - IIV DATA EXTRACTS ;04-JUN-2002 | 
|---|
|  | 2 | ;;2.0;INTEGRATED BILLING;**184,271,300**;21-MAR-94 | 
|---|
|  | 3 | ;;Per VHA Directive 10-93-142, this routine should not be modified. | 
|---|
|  | 4 | ; | 
|---|
|  | 5 | ;**Program Description** | 
|---|
|  | 6 | ;  This program is the main driver for all data extracts associated | 
|---|
|  | 7 | ;  with the Insurance Identification and Verification interface. | 
|---|
|  | 8 | ;  This program will run each extract in the specified order, which | 
|---|
|  | 9 | ;  populates the IIV Transmission File (sometimes it creates/updates | 
|---|
|  | 10 | ;  an entry in the insurance buffer as well).  It then begins to | 
|---|
|  | 11 | ;  process the inquiries in the IIV Transmission File. | 
|---|
|  | 12 | ;  08-08-2002 | 
|---|
|  | 13 | ;  As this program will run in the background the variable ZTSTOP | 
|---|
|  | 14 | ;  can be returned from any of the extracts should a TaskMan stop | 
|---|
|  | 15 | ;  request occur.  Also, clear out the task record before exiting. | 
|---|
|  | 16 | ; 08-09-2002 | 
|---|
|  | 17 | ;  Added check for "~NO PAYER", if it does not exist, build it | 
|---|
|  | 18 | ; | 
|---|
|  | 19 | Q | 
|---|
|  | 20 | ; | 
|---|
|  | 21 | EN ; Entry Point | 
|---|
|  | 22 | ; Prevent simultaneous runs | 
|---|
|  | 23 | ; Set error trap to ensure that lock is released | 
|---|
|  | 24 | N $ES,$ET | 
|---|
|  | 25 | S $ET="D ER^IBCNEDE" | 
|---|
|  | 26 | ; Check lock | 
|---|
|  | 27 | L +^TMP("IBCNEDE"):1 I '$T D  G ENX | 
|---|
|  | 28 | . I '$D(ZTSK) W !!,"The IIV Nightly Task is already running, please retry later." D PAUSE^VALM1 | 
|---|
|  | 29 | ; Reset reg ack flag | 
|---|
|  | 30 | S $P(^IBE(350.9,1,51),U,22)="" | 
|---|
|  | 31 | ; If "~NO PAYER" is not a valid Payer File entry, rebuild it from | 
|---|
|  | 32 | ;  the existing utility | 
|---|
|  | 33 | I '$$FIND1^DIC(365.12,,"X","~NO PAYER") D PAYR^IBCNEUT2 | 
|---|
|  | 34 | ; | 
|---|
|  | 35 | ; Confirm that all necessary tables have been loaded | 
|---|
|  | 36 | ; before the extract is run | 
|---|
|  | 37 | I '$$TBLCHK() G EN1 | 
|---|
|  | 38 | ; | 
|---|
|  | 39 | D AMCHECK^IBCNEUT6     ; ensure Auto Match entries are valid | 
|---|
|  | 40 | ; | 
|---|
|  | 41 | ; Run All 4 extracts and launch IBCNEDEP(Inquiries) | 
|---|
|  | 42 | D EN^IBCNEDE1 ; Insurance Buffer Extract | 
|---|
|  | 43 | ; Check to see if background process has been stopped, if so quit. | 
|---|
|  | 44 | I $G(ZTSTOP) G ENX | 
|---|
|  | 45 | D EN^IBCNEDE2 ; Pre Reg Extract | 
|---|
|  | 46 | ; Check to see if background process has been stopped, if so quit. | 
|---|
|  | 47 | I $G(ZTSTOP) G ENX | 
|---|
|  | 48 | D EN^IBCNEDE3 ; Non Verified Extract | 
|---|
|  | 49 | ; Check to see if background process has been stopped, if so quit. | 
|---|
|  | 50 | I $G(ZTSTOP) G ENX | 
|---|
|  | 51 | D EN^IBCNEDE4 ; No Insurance Extract | 
|---|
|  | 52 | ; Check to see if background process has been stopped, if so quit. | 
|---|
|  | 53 | EN1 I $G(ZTSTOP) G ENX | 
|---|
|  | 54 | ; Send enrollment message | 
|---|
|  | 55 | D ^IBCNEHLM | 
|---|
|  | 56 | I $G(ZTSTOP) G ENX | 
|---|
|  | 57 | I '$G(QFL) D | 
|---|
|  | 58 | . ; Wait for 'AA' acknowledgement | 
|---|
|  | 59 | . D WAIT  Q:'+QFL | 
|---|
|  | 60 | . KILL QFL | 
|---|
|  | 61 | . ; | 
|---|
|  | 62 | . D ^IBCNEDEP  ; Inquiries Processing | 
|---|
|  | 63 | ; | 
|---|
|  | 64 | ; Check to see if background process has been stopped, if so quit. | 
|---|
|  | 65 | I $G(ZTSTOP) G ENX | 
|---|
|  | 66 | D MMQ         ; Queue the Daily MailMan message | 
|---|
|  | 67 | ; Send MailMan message if first of month to report on records | 
|---|
|  | 68 | ;  eligible to be purged | 
|---|
|  | 69 | I +$E($P($$NOW^XLFDT(),"."),6,7)=1 D MMPURGE^IBCNEKI2 | 
|---|
|  | 70 | ; | 
|---|
|  | 71 | ENX ; Purge task record - if queued | 
|---|
|  | 72 | I $D(ZTQUEUED) S ZTREQ="@" | 
|---|
|  | 73 | L -^TMP("IBCNEDE") | 
|---|
|  | 74 | Q | 
|---|
|  | 75 | ; | 
|---|
|  | 76 | TBLCHK() ; | 
|---|
|  | 77 | ; Confirm that at least one IIV payer and that all X12 tables | 
|---|
|  | 78 | ; have been loaded | 
|---|
|  | 79 | N PAY,PAYIEN,PAYOK,TBLOK,II | 
|---|
|  | 80 | S (PAY,PAYIEN,PAYOK)="",TBLOK=1 | 
|---|
|  | 81 | F  S PAY=$O(^IBE(365.12,"B",PAY)) Q:PAY=""!PAYOK  I PAY'="~NO PAYER" D | 
|---|
|  | 82 | .  F  S PAYIEN=$O(^IBE(365.12,"B",PAY,PAYIEN)) Q:PAYIEN=""!PAYOK  D | 
|---|
|  | 83 | ..    I $$PYRAPP^IBCNEUT5("IIV",PAYIEN) S PAYOK=1 Q | 
|---|
|  | 84 | I PAYOK D | 
|---|
|  | 85 | . F II=11:1:18,21 I $O(^IBE(II*.001+365,"B",""))="" S TBLOK="" Q | 
|---|
|  | 86 | Q PAYOK&TBLOK | 
|---|
|  | 87 | ; | 
|---|
|  | 88 | WAIT ;  Wait for acknowledgement comes back from EC | 
|---|
|  | 89 | ;  Hang for 60 seconds and check status again | 
|---|
|  | 90 | ;  Try 360 times for a total of 21600 seconds (6 hours) | 
|---|
|  | 91 | S QFL=0,CT=0 | 
|---|
|  | 92 | F  D  Q:QFL'=""!(CT>360) | 
|---|
|  | 93 | . S QFL=$$GET1^DIQ(350.9,"1,",51.22,"I") | 
|---|
|  | 94 | . Q:QFL'="" | 
|---|
|  | 95 | . HANG 60 S CT=CT+1 | 
|---|
|  | 96 | KILL CT | 
|---|
|  | 97 | Q | 
|---|
|  | 98 | ; | 
|---|
|  | 99 | FRESHDT(EXT,STALEDYS) ;  Calculate Freshness | 
|---|
|  | 100 | ;  Ext - ien of extract for future purposes | 
|---|
|  | 101 | ;  Staledys - # of days in the past in which an insurance verification | 
|---|
|  | 102 | ;  is considered still valid/current | 
|---|
|  | 103 | N STALEDT | 
|---|
|  | 104 | S STALEDT=$$FMADD^XLFDT(DT,-STALEDYS) | 
|---|
|  | 105 | Q STALEDT | 
|---|
|  | 106 | ; | 
|---|
|  | 107 | ; --------------------------------------------------- | 
|---|
|  | 108 | MMQ ; This procedure is responsible for scheduling the creation and | 
|---|
|  | 109 | ; sending of the daily MailMan statistical message if the site has | 
|---|
|  | 110 | ; defined this appropriately in the IIV site parameters. | 
|---|
|  | 111 | ; | 
|---|
|  | 112 | NEW IIV,CURRTIME,MTIME,MSG,Y,MGRP | 
|---|
|  | 113 | NEW ZTRTN,ZTDESC,ZTDTH,ZTIO,ZTUCI,ZTCPU,ZTPRI,ZTSAVE,ZTKIL,ZTSYNC,ZTSK | 
|---|
|  | 114 | ; | 
|---|
|  | 115 | S IIV=$G(^IBE(350.9,1,51)) | 
|---|
|  | 116 | I '$P(IIV,U,2) G MMQX          ; site does not want daily messages | 
|---|
|  | 117 | I '$P(IIV,U,3) G MMQX          ; MM message time is not defined | 
|---|
|  | 118 | I '$P(IIV,U,4) G MMQX          ; Mail Group is not defined | 
|---|
|  | 119 | ; | 
|---|
|  | 120 | S CURRTIME=$P($H,",",2)        ; current $H time | 
|---|
|  | 121 | S MTIME=DT_"."_$P(IIV,U,3)     ; build a FileMan date/time | 
|---|
|  | 122 | S MTIME=$$FMTH^XLFDT(MTIME)    ; convert to $H format | 
|---|
|  | 123 | S MTIME=$P(MTIME,",",2)        ; $H time of MM message | 
|---|
|  | 124 | ; | 
|---|
|  | 125 | ; If the current time is after the MailMan message time, then | 
|---|
|  | 126 | ; schedule the MM message for tomorrow at that time. | 
|---|
|  | 127 | I CURRTIME>MTIME S ZTDTH=($H+1)_","_MTIME | 
|---|
|  | 128 | ; | 
|---|
|  | 129 | ; Otherwise, schedule it for later today | 
|---|
|  | 130 | E  S ZTDTH=+$H_","_MTIME | 
|---|
|  | 131 | ; | 
|---|
|  | 132 | ; Set up the other TaskManager variables | 
|---|
|  | 133 | S ZTRTN="MAILMSG^IBCNERP7" | 
|---|
|  | 134 | S ZTDESC="IIV Daily Statistics E-Mail" | 
|---|
|  | 135 | S ZTIO="" | 
|---|
|  | 136 | D ^%ZTLOAD            ; Call TaskManager | 
|---|
|  | 137 | I $G(ZTSK) G MMQX     ; Task# is OK so get out | 
|---|
|  | 138 | ; | 
|---|
|  | 139 | ; Send a MailMan message if this Task could not get scheduled | 
|---|
|  | 140 | S MSG(1)="TaskManager could not schedule the daily IIV MailMan message" | 
|---|
|  | 141 | S MSG(2)="at the specified time of "_$E($P(IIV,U,3),1,2)_":"_$E($P(IIV,U,3),3,4)_"." | 
|---|
|  | 142 | S MSG(3)="This is defined in the IIV Site Parameters option." | 
|---|
|  | 143 | ; Set to IB site parameter MAILGROUP | 
|---|
|  | 144 | S MGRP=$$MGRP^IBCNEUT5() | 
|---|
|  | 145 | D MSG^IBCNEUT5(MGRP,"IIV Statistical Message Not Sent","MSG(") | 
|---|
|  | 146 | ; | 
|---|
|  | 147 | MMQX ; | 
|---|
|  | 148 | Q | 
|---|
|  | 149 | ; | 
|---|
|  | 150 | ER ; Unlock the IIV Nightly Task and return to log error | 
|---|
|  | 151 | L -^TMP("IBCNEDE") | 
|---|
|  | 152 | D ^%ZTER | 
|---|
|  | 153 | D UNWIND^%ZTER | 
|---|
|  | 154 | Q | 
|---|
|  | 155 | ; | 
|---|