| 1 | IBCNERP9 ;DAOU/BHS - IIV STATISTICAL REPORT PRINT ;12-JUN-2002
 | 
|---|
| 2 |  ;;2.0;INTEGRATED BILLING;**184,271**;21-MAR-94
 | 
|---|
| 3 |  ;;Per VHA Directive 10-93-142, this routine should not be modified.
 | 
|---|
| 4 |  ;
 | 
|---|
| 5 |  ; IIV - Insurance Identification and Verification Interface
 | 
|---|
| 6 |  ;
 | 
|---|
| 7 |  ; Input variables from IBCNERP7:
 | 
|---|
| 8 |  ;  IBCNERTN = "IBCNERP7"
 | 
|---|
| 9 |  ; **IBCNESPC array ONLY passed by reference
 | 
|---|
| 10 |  ;  IBCNESPC("BEGDTM") = Start Date/Time for date/time report range
 | 
|---|
| 11 |  ;  IBCNESPC("ENDDTM") = End Date/Time for date/time report range
 | 
|---|
| 12 |  ;  IBCNESPC("SECTS") = 1 - All, includes all sections OR
 | 
|---|
| 13 |  ;   list of one or more of the following:
 | 
|---|
| 14 |  ;   2 - Outgoing Data, Inquiry Transmission data,
 | 
|---|
| 15 |  ;   3 - Incoming Data, Inquiry Response data,
 | 
|---|
| 16 |  ;   4 - General Data, Insurance Buffer data,
 | 
|---|
| 17 |  ;   Communication Failures, Outstanding Inquiries
 | 
|---|
| 18 |  ;   IBCNESPC("MM") = "", do not generate MailMan message OR
 | 
|---|
| 19 |  ;                    MAILGROUP, mailgroup to send MailMan message to
 | 
|---|
| 20 |  ;                               based on IB site parameter
 | 
|---|
| 21 |  ;   Assumes report data exists in ^TMP($J,IBCNERTN,...)
 | 
|---|
| 22 |  ;   Based on IBCNESPC("SECTS") parameter the following scratch globals
 | 
|---|
| 23 |  ;   will be built
 | 
|---|
| 24 |  ;   1 OR contains 2 --> 
 | 
|---|
| 25 |  ;    ^TMP($J,RTN,"OUT")=TotInq^InsBufExtSubtotal^PreRegExtSubtotal^...
 | 
|---|
| 26 |  ;                       NonVerifInsExtSubtotal^NoActInsExtSubtotal
 | 
|---|
| 27 |  ;   1 OR contains 3 --> 
 | 
|---|
| 28 |  ;    ^TMP($J,RTN,"IN")=TotResp^InsBufExtSubtotal^PreRegExtSubtotal^...
 | 
|---|
| 29 |  ;                       NonVerifInsExtSubtotal^NoActInsExtSubtotal
 | 
|---|
| 30 |  ;   1 OR contains 4 --> 
 | 
|---|
| 31 |  ;    ^TMP($J,RTN,"CUR")=TotOutstandingInq^TotInqRetries^...
 | 
|---|
| 32 |  ;                       TotInqCommFailure^TotInsBufVerified^...
 | 
|---|
| 33 |  ;                       ManVerifedSubtotal^IIVProcessedSubtotal...
 | 
|---|
| 34 |  ;                       TotInsBufUnverified^! InsBufSubtotal^...
 | 
|---|
| 35 |  ;                       ? InsBufSubtotal^- InsBufSubtotal^...
 | 
|---|
| 36 |  ;                       Other InsBufSubtotal^TQReadyToTransmit^...
 | 
|---|
| 37 |  ;                       TQHold^TQRetry
 | 
|---|
| 38 |  ;    and ^TMP($J,RTN","PYR",PAYER NAME,IEN of file 365.12)=""
 | 
|---|
| 39 |  ;
 | 
|---|
| 40 |  ; Must call at EN
 | 
|---|
| 41 |  Q
 | 
|---|
| 42 |  ;
 | 
|---|
| 43 | EN(IBCNERTN,IBCNESPC) ; Entry pt
 | 
|---|
| 44 |  ;
 | 
|---|
| 45 |  ; Init vars
 | 
|---|
| 46 |  N CRT,MAXCNT,IBPXT,IBPGC,IBBDT,IBEDT,IBSCT,IBMM,RETRY,OUTINQ,ATTEMPT
 | 
|---|
| 47 |  N X,Y,DIR,DTOUT,DUOUT,LIN
 | 
|---|
| 48 |  ;
 | 
|---|
| 49 |  S IBBDT=$G(IBCNESPC("BEGDTM")),IBEDT=$G(IBCNESPC("ENDDTM"))
 | 
|---|
| 50 |  S IBSCT=$G(IBCNESPC("SECTS")),IBMM=$G(IBCNESPC("MM"))
 | 
|---|
| 51 |  ;
 | 
|---|
| 52 |  S (IBPXT,IBPGC,CRT,MAXCNT)=0
 | 
|---|
| 53 |  ;
 | 
|---|
| 54 |  ; Determine IO parameters if output device is NOT MailMan message
 | 
|---|
| 55 |  I IBMM="" D
 | 
|---|
| 56 |  . I IOST["C-" S MAXCNT=IOSL-3,CRT=1 Q
 | 
|---|
| 57 |  . S MAXCNT=IOSL-6,CRT=0
 | 
|---|
| 58 |  ;
 | 
|---|
| 59 |  D PRINT(IBCNERTN,IBBDT,IBEDT,IBSCT,IBMM,.IBPGC,.IBPXT,MAXCNT,CRT)
 | 
|---|
| 60 |  I $G(ZTSTOP)!IBPXT G EXIT
 | 
|---|
| 61 |  I CRT,IBPGC>0,'$D(ZTQUEUED) D  G EXIT
 | 
|---|
| 62 |  . I MAXCNT<51 F LIN=1:1:(MAXCNT-$Y) W !
 | 
|---|
| 63 |  . S DIR(0)="E" D ^DIR K DIR
 | 
|---|
| 64 |  ;
 | 
|---|
| 65 | EXIT ; Exit pt
 | 
|---|
| 66 |  Q
 | 
|---|
| 67 |  ;
 | 
|---|
| 68 |  ;
 | 
|---|
| 69 | PRINT(RTN,BDT,EDT,SCT,MM,PGC,PXT,MAX,CRT) ; Print data
 | 
|---|
| 70 |  ; Init vars
 | 
|---|
| 71 |  N EORMSG,NONEMSG,LINECT,DISPDATA,HDRDATA,OFFSET,TMP,DTMRNG,SITE
 | 
|---|
| 72 |  ;
 | 
|---|
| 73 |  S LINECT=0
 | 
|---|
| 74 |  ;
 | 
|---|
| 75 |  ; Build End-Of-Report Message for display
 | 
|---|
| 76 |  S EORMSG="*** END OF REPORT ***"
 | 
|---|
| 77 |  S OFFSET=80-$L(EORMSG)\2
 | 
|---|
| 78 |  S EORMSG=$$FO^IBCNEUT1(EORMSG,OFFSET+$L(EORMSG),"R")
 | 
|---|
| 79 |  ; Build No-Data-Found Message for display
 | 
|---|
| 80 |  S NONEMSG="* * * N O  D A T A  F O U N D * * *"
 | 
|---|
| 81 |  S OFFSET=80-$L(NONEMSG)\2
 | 
|---|
| 82 |  S NONEMSG=$$FO^IBCNEUT1(NONEMSG,OFFSET+$L(NONEMSG),"R")
 | 
|---|
| 83 |  ; Build Site for display
 | 
|---|
| 84 |  S SITE=$P($$SITE^VASITE,U,2)
 | 
|---|
| 85 |  ; Build Date/Time Range for display
 | 
|---|
| 86 |  ;  Build Date/Time display for Starting date/time
 | 
|---|
| 87 |  S TMP=$$FMTE^XLFDT(BDT,"5Z")
 | 
|---|
| 88 |  S DTMRNG=$P(TMP,"@")_" "_$P(TMP,"@",2)
 | 
|---|
| 89 |  ;  Calculate Date/Time display for Ending date/time
 | 
|---|
| 90 |  S TMP=$$FMTE^XLFDT(EDT,"5Z")
 | 
|---|
| 91 |  S DTMRNG=DTMRNG_" - "_$P(TMP,"@")_" "_$P(TMP,"@",2)
 | 
|---|
| 92 |  ;
 | 
|---|
| 93 |  ; Print header to DISPDATA for MailMan message ONLY
 | 
|---|
| 94 |  D HEADER^IBCNERP0(.HDRDATA,.PGC,.PXT,MAX,CRT,SITE,DTMRNG,MM)
 | 
|---|
| 95 |  I MM'="" M DISPDATA=HDRDATA S LINECT=+$O(DISPDATA(""),-1)
 | 
|---|
| 96 |  I MM="" KILL HDRDATA
 | 
|---|
| 97 |  ;
 | 
|---|
| 98 |  ; If global does not exist - display No Data message
 | 
|---|
| 99 |  I '$D(^TMP($J,RTN)) S LINECT=LINECT+1,DISPDATA(LINECT)=NONEMSG G PRINT2
 | 
|---|
| 100 |  ;
 | 
|---|
| 101 |  ; Display Outgoing Data - if selected
 | 
|---|
| 102 |  I SCT=1!(SCT[2) D  I PXT!$G(ZTSTOP) G PRINTX
 | 
|---|
| 103 |  . ; Build lines of data to display
 | 
|---|
| 104 |  . D DATA(.DISPDATA,.LINECT,RTN,"OUT",MM)
 | 
|---|
| 105 |  ;
 | 
|---|
| 106 |  ; Display Incoming Data - if selected
 | 
|---|
| 107 |  I SCT=1!(SCT[3) D  I PXT!$G(ZTSTOP) G PRINTX
 | 
|---|
| 108 |  . ; Build lines of data to display
 | 
|---|
| 109 |  . D DATA(.DISPDATA,.LINECT,RTN,"IN",MM)
 | 
|---|
| 110 |  ;
 | 
|---|
| 111 |  ; Display General Data - if selected
 | 
|---|
| 112 |  I SCT=1!(SCT[4) D  I PXT!$G(ZTSTOP) G PRINTX
 | 
|---|
| 113 |  . ; Build lines of data to display
 | 
|---|
| 114 |  . D DATA(.DISPDATA,.LINECT,RTN,"CUR",MM)
 | 
|---|
| 115 |  . D DATA(.DISPDATA,.LINECT,RTN,"PYR",MM)
 | 
|---|
| 116 |  ;
 | 
|---|
| 117 | PRINT2 S LINECT=LINECT+1
 | 
|---|
| 118 |  S DISPDATA(LINECT)=EORMSG
 | 
|---|
| 119 |  ;
 | 
|---|
| 120 |  I MM="" D LINE(.DISPDATA,.PGC,.PXT,MAX,CRT,SITE,DTMRNG,MM)
 | 
|---|
| 121 |  ; Generate MailMan message, if flag is set
 | 
|---|
| 122 |  I MM'="" D MSG^IBCNEUT5(MM,"** IIV Statistical Rpt **","DISPDATA(")
 | 
|---|
| 123 |  ;
 | 
|---|
| 124 | PRINTX ; PRINT exit pt
 | 
|---|
| 125 |  Q
 | 
|---|
| 126 |  ;
 | 
|---|
| 127 | LINE(DISPDATA,PGC,PXT,MAX,CRT,SITE,DTMRNG,MM) ; Print line of data
 | 
|---|
| 128 |  ; Init vars
 | 
|---|
| 129 |  N CT,II,ARRAY,NWPG
 | 
|---|
| 130 |  ;
 | 
|---|
| 131 |  S NWPG=0
 | 
|---|
| 132 |  S CT=+$O(DISPDATA(""),-1)
 | 
|---|
| 133 |  I $Y+1+CT>MAX,PGC>1 D HEADER^IBCNERP0(.ARRAY,.PGC,.PXT,MAX,CRT,SITE,DTMRNG,MM) S NWPG=1 I PXT!$G(ZTSTOP) G LINEX
 | 
|---|
| 134 |  F II=1:1:CT D  Q:PXT!$G(ZTSTOP)
 | 
|---|
| 135 |  . I $Y+1>MAX!('PGC) D HEADER^IBCNERP0(.ARRAY,.PGC,.PXT,MAX,CRT,SITE,DTMRNG,MM) S NWPG=1 I PXT!$G(ZTSTOP) Q
 | 
|---|
| 136 |  . I 'NWPG!(NWPG&(DISPDATA(II)'="")) W !,?1,DISPDATA(II)
 | 
|---|
| 137 |  . I NWPG S NWPG=0
 | 
|---|
| 138 |  ;
 | 
|---|
| 139 | LINEX ; LINE exit pt
 | 
|---|
| 140 |  Q
 | 
|---|
| 141 |  ;
 | 
|---|
| 142 | DATA(DISPDATA,LINECT,RTN,TYPE,MM) ; Format lines of data to be printed
 | 
|---|
| 143 |  ; Init vars
 | 
|---|
| 144 |  N DASHES,DASHES2,PEND,RPTDATA,CT,DEFINQ,INSCOS,PAYERS,QUEINQ,TXT
 | 
|---|
| 145 |  ;
 | 
|---|
| 146 |  S $P(DASHES,"=",15)=""
 | 
|---|
| 147 |  I LINECT>0,MM="" S LINECT=LINECT+1,DISPDATA(LINECT)=""
 | 
|---|
| 148 |  S LINECT=LINECT+1
 | 
|---|
| 149 |  S DISPDATA(LINECT)=$S(TYPE="OUT":"Outgoing Data",TYPE="IN":"Incoming Data",1:"Current Status")
 | 
|---|
| 150 |  S LINECT=LINECT+1
 | 
|---|
| 151 |  S DISPDATA(LINECT)=DASHES
 | 
|---|
| 152 |  ; Copy report data to local variable
 | 
|---|
| 153 |  S RPTDATA=$G(^TMP($J,RTN,TYPE))      ; does not work for "PYR"
 | 
|---|
| 154 |  ; Outgoing and Incoming Totals
 | 
|---|
| 155 |  I TYPE="OUT"!(TYPE="IN") D  G DATAX
 | 
|---|
| 156 |  . S LINECT=LINECT+1
 | 
|---|
| 157 |  . S DISPDATA(LINECT)=$$FO^IBCNEUT1($S(TYPE="OUT":"Inquiries Sent:",1:"Responses Received:"),36)_$$FO^IBCNEUT1(+$P(RPTDATA,U,1),9,"R")
 | 
|---|
| 158 |  . F CT=1:1:4 D
 | 
|---|
| 159 |  . . S TYPE="  "_$S(CT=1:"Insurance Buffer",CT=2:"Appointment",CT=3:"Non-verified Insurance",1:"No Active Insurance")
 | 
|---|
| 160 |  . . S LINECT=LINECT+1
 | 
|---|
| 161 |  . . S DISPDATA(LINECT)=$$FO^IBCNEUT1(TYPE,46)_$$FO^IBCNEUT1(+$P(RPTDATA,U,CT+1),9,"R")
 | 
|---|
| 162 |  ;
 | 
|---|
| 163 |  ; General Data
 | 
|---|
| 164 |  I TYPE="CUR" D  G DATAX
 | 
|---|
| 165 |  . ; Responses Pending
 | 
|---|
| 166 |  . S PEND=+$P(RPTDATA,U,1)
 | 
|---|
| 167 |  . S LINECT=LINECT+1
 | 
|---|
| 168 |  . S DISPDATA(LINECT)=$$FO^IBCNEUT1("Responses Pending:",36)_$$FO^IBCNEUT1(PEND,9,"R")
 | 
|---|
| 169 |  . ; Queued Inqs
 | 
|---|
| 170 |  . S QUEINQ=+$P(RPTDATA,U,2)
 | 
|---|
| 171 |  . S LINECT=LINECT+1
 | 
|---|
| 172 |  . S DISPDATA(LINECT)=$$FO^IBCNEUT1("Queued Inquiries:",36)_$$FO^IBCNEUT1(QUEINQ,9,"R")
 | 
|---|
| 173 |  . ; Deferred Inqs
 | 
|---|
| 174 |  . S DEFINQ=+$P(RPTDATA,U,3)
 | 
|---|
| 175 |  . S LINECT=LINECT+1
 | 
|---|
| 176 |  . S DISPDATA(LINECT)=$$FO^IBCNEUT1("Deferred Inquiries:",36)_$$FO^IBCNEUT1(DEFINQ,9,"R")
 | 
|---|
| 177 |  . ; Ins Cos w/o Nat ID
 | 
|---|
| 178 |  . S INSCOS=+$P(RPTDATA,U,4)
 | 
|---|
| 179 |  . S LINECT=LINECT+1
 | 
|---|
| 180 |  . S DISPDATA(LINECT)=$$FO^IBCNEUT1("Insurance Companies w/o National ID:",36)_$$FO^IBCNEUT1(INSCOS,9,"R")
 | 
|---|
| 181 |  . ; Payers disabled locally
 | 
|---|
| 182 |  . S PAYERS=+$P(RPTDATA,U,5)
 | 
|---|
| 183 |  . S LINECT=LINECT+1
 | 
|---|
| 184 |  . S DISPDATA(LINECT)=$$FO^IBCNEUT1("eIIV Payers Disabled Locally:",36)_$$FO^IBCNEUT1(PAYERS,9,"R")
 | 
|---|
| 185 |  . S LINECT=LINECT+1
 | 
|---|
| 186 |  . S DISPDATA(LINECT)=""
 | 
|---|
| 187 |  . ; Insurance Buffer statistics
 | 
|---|
| 188 |  . S LINECT=LINECT+1
 | 
|---|
| 189 |  . S DISPDATA(LINECT)=$$FO^IBCNEUT1("Insurance Buffer Entries: ",36)_$$FO^IBCNEUT1(($P(RPTDATA,U,6)+$P(RPTDATA,U,9)),9,"R")
 | 
|---|
| 190 |  . ; *,+,#,! or -  symbol entries - User action required
 | 
|---|
| 191 |  . S LINECT=LINECT+1
 | 
|---|
| 192 |  . S DISPDATA(LINECT)=$$FO^IBCNEUT1("  User Action Required: ",46)_$$FO^IBCNEUT1(+$P(RPTDATA,U,6),9,"R")
 | 
|---|
| 193 |  . F CT=7,8,13,10,11 D
 | 
|---|
| 194 |  . . S LINECT=LINECT+1
 | 
|---|
| 195 |  . . ; Added # to report
 | 
|---|
| 196 |  . . S TYPE="    # of "
 | 
|---|
| 197 |  . . I CT=7 S TXT="* entries (User Verified policy)"
 | 
|---|
| 198 |  . . I CT=8 S TXT="+ entries (Payer indicated Active policy)"
 | 
|---|
| 199 |  . . I CT=10 S TXT="# entries (Policy status undetermined)"
 | 
|---|
| 200 |  . . I CT=11 S TXT="! entries (IIV needs user assistance for entry)"
 | 
|---|
| 201 |  . . I CT=13 S TXT="- entries (Payer indicated Inactive policy)"
 | 
|---|
| 202 |  . . S TYPE=TYPE_TXT
 | 
|---|
| 203 |  . . S DISPDATA(LINECT)=$$FO^IBCNEUT1(TYPE,56)_$$FO^IBCNEUT1(+$P(RPTDATA,U,CT),9,"R")
 | 
|---|
| 204 |  . ;
 | 
|---|
| 205 |  . S LINECT=LINECT+1
 | 
|---|
| 206 |  . S DISPDATA(LINECT)=$$FO^IBCNEUT1("  Entries Awaiting Processing: ",46)_$$FO^IBCNEUT1(+$P(RPTDATA,U,9),9,"R")
 | 
|---|
| 207 |  . ; Subtotal of ? entries (IIV is waiting for a response)
 | 
|---|
| 208 |  . S LINECT=LINECT+1
 | 
|---|
| 209 |  . S DISPDATA(LINECT)=$$FO^IBCNEUT1("    # of ? entries (IIV is waiting for a response)",56)_$$FO^IBCNEUT1(+$P(RPTDATA,U,12),9,"R")
 | 
|---|
| 210 |  . ; Subtotal of blank entries (yet to be processed or accepted)
 | 
|---|
| 211 |  . S LINECT=LINECT+1
 | 
|---|
| 212 |  . S DISPDATA(LINECT)=$$FO^IBCNEUT1("    # of blank entries (yet to be processed or accepted)",56)_$$FO^IBCNEUT1(+$P(RPTDATA,U,14),9,"R")
 | 
|---|
| 213 |  ;
 | 
|---|
| 214 |  ; New Payers added to File 365.12
 | 
|---|
| 215 |  I TYPE="PYR" D  G DATAX
 | 
|---|
| 216 |  . ; Payers added to file 365.12
 | 
|---|
| 217 |  . D DATAX
 | 
|---|
| 218 |  . S LINECT=LINECT+1
 | 
|---|
| 219 |  . S DISPDATA(LINECT)="New eIIV Payers received during report date range:"
 | 
|---|
| 220 |  . S LINECT=LINECT+1
 | 
|---|
| 221 |  . I '$D(^TMP($J,RTN,TYPE)) S DISPDATA(LINECT)="    No new Payers added" Q
 | 
|---|
| 222 |  . S DISPDATA(LINECT)="  Please link the associated active insurance companies to these payers at your"
 | 
|---|
| 223 |  . S LINECT=LINECT+1,DISPDATA(LINECT)="  earliest convenience.  Locally activate the payers after you link insurance"
 | 
|---|
| 224 |  . S LINECT=LINECT+1,DISPDATA(LINECT)="  companies to them.  For further details regarding this process, please refer"
 | 
|---|
| 225 |  . S LINECT=LINECT+1,DISPDATA(LINECT)="  to the Integrated Billing IIV Interface User Guide."
 | 
|---|
| 226 |  . N PYR,PIEN
 | 
|---|
| 227 |  . S PYR="",PIEN="" F  S PYR=$O(^TMP($J,RTN,TYPE,PYR)) Q:PYR=""  D
 | 
|---|
| 228 |  . . F  S PIEN=$O(^TMP($J,RTN,TYPE,PYR,PIEN)) Q:'PIEN  S LINECT=LINECT+1,DISPDATA(LINECT)="    "_PYR
 | 
|---|
| 229 |  ;
 | 
|---|
| 230 | DATAX ; DATA exit pt
 | 
|---|
| 231 |  S LINECT=LINECT+1
 | 
|---|
| 232 |  S DISPDATA(LINECT)=""
 | 
|---|
| 233 |  Q
 | 
|---|
| 234 |  ;
 | 
|---|
| 235 |  ;
 | 
|---|