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 | ;
|
---|