1 | IBCNSGE ;ALB/ESG - Insurance Company EDI Parameter Report ;07-JAN-2005
|
---|
2 | ;;2.0;INTEGRATED BILLING;**296**;21-MAR-94
|
---|
3 | ;
|
---|
4 | ; eClaims Plus
|
---|
5 | ; Identify insurance companies and display EDI parameter information.
|
---|
6 | ;
|
---|
7 | ;
|
---|
8 | EN ; Entry Point
|
---|
9 | NEW IBRINS,IBRBID,IBRINS1,IBRINS2,IBRSORT,STOP
|
---|
10 | D SELECT I STOP G EXIT
|
---|
11 | D SORT I STOP G EXIT
|
---|
12 | D DEVICE
|
---|
13 | EXIT ;
|
---|
14 | Q
|
---|
15 | ;
|
---|
16 | SELECT ; Select insurance companies to include on the report
|
---|
17 | NEW DIR,DIC,X,Y,DTOUT,DUOUT,DIRUT,DIROUT,IBQ
|
---|
18 | SEL1 ;
|
---|
19 | S STOP=0,IBQ=0
|
---|
20 | W @IOF
|
---|
21 | W !!?21,"Insurance Company EDI Parameter Report"
|
---|
22 | W !!?5,"This report will display the EDI parameter information for selected"
|
---|
23 | W !?5,"insurance companies. You can specify one company, multiple companies,"
|
---|
24 | W !?5,"a range of company names, or all companies on file."
|
---|
25 | ;
|
---|
26 | S DIR(0)="SO^A:Include All Insurance Companies;S:Select Specific Insurance Companies;R:Specify a Range of Insurance Company Names"
|
---|
27 | S DIR("A")=" Method for selecting insurance companies"
|
---|
28 | S DIR("B")="A"
|
---|
29 | S DIR("?",1)="Enter a code from the list. This defines how you want to select insurance"
|
---|
30 | S DIR("?",2)="companies for this report."
|
---|
31 | S DIR("?",3)=""
|
---|
32 | S DIR("?",4)="If you choose 'A', then all active companies will be included."
|
---|
33 | S DIR("?",5)="If you choose 'S', then one or more specific companies can be selected."
|
---|
34 | S DIR("?")="If you choose 'R', then you can enter a range of company names."
|
---|
35 | D ^DIR K DIR
|
---|
36 | I $D(DIRUT) S STOP=1 G SELX
|
---|
37 | S IBRINS=Y
|
---|
38 | I '$F(".A.S.R.","."_IBRINS_".") S STOP=1 G SELX
|
---|
39 | I IBRINS="S" D MULT I IBQ G SEL1 ; choose one or many
|
---|
40 | I IBRINS="R" D RANGE I IBQ G SEL1 ; choose a range
|
---|
41 | ;
|
---|
42 | W !
|
---|
43 | S DIR(0)="YO"
|
---|
44 | S DIR("A",1)="Only include Insurance Companies with Electronic"
|
---|
45 | S DIR("A")=" Bill ID's that are blank or contain ""PRNT"""
|
---|
46 | S DIR("B")="NO"
|
---|
47 | S DIR("?",1)="Enter either 'Y' or 'N'. If you choose 'Y', then this will limit the selection"
|
---|
48 | S DIR("?",2)="of insurance companies. Only those companies in which the Inst ID or the Prof"
|
---|
49 | S DIR("?",3)="ID is either blank or contains ""PRNT"" (uppercase or lowercase)"
|
---|
50 | S DIR("?")="will be included."
|
---|
51 | D ^DIR K DIR
|
---|
52 | I $D(DIRUT) S STOP=1 G SELX
|
---|
53 | S IBRBID=Y
|
---|
54 | SELX ;
|
---|
55 | Q
|
---|
56 | ;
|
---|
57 | MULT ; select one or many insurance companies
|
---|
58 | NEW DIC,X,Y
|
---|
59 | K IBRINS S IBRINS="S"
|
---|
60 | F D Q:Y'>0
|
---|
61 | . W ! S DIC("A")="Insurance Company: "
|
---|
62 | . S DIC("S")="I $$ACTIVE^IBCNEUT4(Y)" ; screen out Inactives
|
---|
63 | . S DIC=36,DIC(0)="AEQM" D ^DIC
|
---|
64 | . Q:Y'>0
|
---|
65 | . S IBRINS(+Y)=$P($G(^DIC(36,+Y,0)),U,1)
|
---|
66 | . Q
|
---|
67 | I $O(IBRINS(""))="" S IBQ=1 G MULTX ; none selected
|
---|
68 | MULTX ;
|
---|
69 | Q
|
---|
70 | ;
|
---|
71 | RANGE ; select a range of insurance company names
|
---|
72 | K IBRINS1,IBRINS2
|
---|
73 | W !
|
---|
74 | S DIR(0)="FO",DIR("A")="Start with Insurance Company"
|
---|
75 | S DIR("?",1)="This response can be free text."
|
---|
76 | S DIR("?",2)="Responses are case sensitive."
|
---|
77 | S DIR("?")="Example: To find CIGNA, type CIGNA not cigna or Cigna."
|
---|
78 | S DIR("B")="First" D ^DIR K DIR
|
---|
79 | I $D(DIRUT) S IBQ=1 G RANGEX
|
---|
80 | S IBRINS1=Y
|
---|
81 | I IBRINS1="First" S IBRINS1=" "
|
---|
82 | ;
|
---|
83 | W !
|
---|
84 | S DIR(0)="FO",DIR("A")="Go to Insurance Company"
|
---|
85 | S DIR("?",1)="This response can be free text."
|
---|
86 | S DIR("?",2)="Responses are case sensitive."
|
---|
87 | S DIR("?")="Example: To find CIGNA, type CIGNA not cigna or Cigna."
|
---|
88 | S DIR("B")="Last" D ^DIR K DIR
|
---|
89 | I $D(DIRUT) S IBQ=1 G RANGEX
|
---|
90 | S IBRINS2=Y
|
---|
91 | I IBRINS2="Last" S IBRINS2="~~~~~"
|
---|
92 | ;
|
---|
93 | I IBRINS1=" ",IBRINS2="~~~~~" D G RANGEX
|
---|
94 | . K IBRINS,IBRINS1,IBRINS2
|
---|
95 | . S IBRINS="A"
|
---|
96 | . Q
|
---|
97 | ;
|
---|
98 | I IBRINS1]IBRINS2 D G RANGE
|
---|
99 | . W !!?5,"Sorry ..... Ending name must come after Starting name"
|
---|
100 | . W !!?5,"Please try again",*7
|
---|
101 | . Q
|
---|
102 | ;
|
---|
103 | RANGEX ;
|
---|
104 | Q
|
---|
105 | ;
|
---|
106 | SORT ; Choose the sorting method
|
---|
107 | NEW DIR,X,Y,DTOUT,DUOUT,DIRUT,DIROUT
|
---|
108 | W !!?5,"*** Sort Criteria ***"
|
---|
109 | S DIR(0)="SO^1:Insurance Company Name;2:Prof Electronic Bill ID;3:Inst Electronic Bill ID;4:Electronic Type;5:Type Of Coverage"
|
---|
110 | S DIR("A")="Sort By",DIR("B")=1
|
---|
111 | D ^DIR K DIR
|
---|
112 | I $D(DIRUT) S STOP=1 G SORTX
|
---|
113 | S IBRSORT=Y
|
---|
114 | SORTX ;
|
---|
115 | Q
|
---|
116 | ;
|
---|
117 | COMPILE ; Entry point for task; compile scratch global, print, clean-up
|
---|
118 | ;
|
---|
119 | NEW RTN,INSIEN,INSNM,DATA,ADDR,EDI,PROFID,INSTID,NAME,STREET,CITY
|
---|
120 | NEW STATE,TYPCOV,TRANS,INSTYP,SORT,TMP
|
---|
121 | ;
|
---|
122 | S RTN="IBCNSGE"
|
---|
123 | KILL ^TMP($J,RTN) ; init
|
---|
124 | ;
|
---|
125 | ; all insurances
|
---|
126 | I IBRINS="A" D
|
---|
127 | . S INSIEN=0
|
---|
128 | . F S INSIEN=$O(^DIC(36,INSIEN)) Q:'INSIEN D CALC(INSIEN)
|
---|
129 | . Q
|
---|
130 | ;
|
---|
131 | ; specific insurances
|
---|
132 | I IBRINS="S" D
|
---|
133 | . S INSIEN=0
|
---|
134 | . F S INSIEN=$O(IBRINS(INSIEN)) Q:'INSIEN D CALC(INSIEN)
|
---|
135 | . Q
|
---|
136 | ;
|
---|
137 | ; a range of insurances
|
---|
138 | I IBRINS="R" D
|
---|
139 | . S INSNM=$O(^DIC(36,"B",IBRINS1),-1)
|
---|
140 | . F S INSNM=$O(^DIC(36,"B",INSNM)) Q:INSNM="" Q:INSNM]IBRINS2 D
|
---|
141 | .. S INSIEN=0
|
---|
142 | .. F S INSIEN=$O(^DIC(36,"B",INSNM,INSIEN)) Q:'INSIEN D CALC(INSIEN)
|
---|
143 | .. Q
|
---|
144 | . Q
|
---|
145 | ;
|
---|
146 | D PRINT ; print the report
|
---|
147 | D ^%ZISC ; close the device
|
---|
148 | KILL ^TMP($J,RTN) ; kill scratch global
|
---|
149 | I $D(ZTQUEUED) S ZTREQ="@" ; purge the task record
|
---|
150 | COMPX ;
|
---|
151 | Q
|
---|
152 | ;
|
---|
153 | CALC(INS) ; extract insurance data for company ien=INS
|
---|
154 | ;
|
---|
155 | I '$$ACTIVE^IBCNEUT4(INS) G CALCX ; not active
|
---|
156 | S DATA=$G(^DIC(36,INS,0))
|
---|
157 | S ADDR=$G(^DIC(36,INS,.11))
|
---|
158 | S EDI=$G(^DIC(36,INS,3))
|
---|
159 | S PROFID=$P(EDI,U,2)
|
---|
160 | S INSTID=$P(EDI,U,4)
|
---|
161 | ;
|
---|
162 | I IBRBID,PROFID'="",INSTID'="",$$UP^XLFSTR(PROFID)'["PRNT",$$UP^XLFSTR(INSTID)'["PRNT" G CALCX
|
---|
163 | ;
|
---|
164 | S NAME=$P(DATA,U,1) S:NAME="" NAME="~UNK"
|
---|
165 | S STREET=$P(ADDR,U,1)
|
---|
166 | S CITY=$P(ADDR,U,4)
|
---|
167 | S STATE=+$P(ADDR,U,5)
|
---|
168 | S STATE=$S(STATE:$P($G(^DIC(5,STATE,0)),U,2),1:"")
|
---|
169 | S TYPCOV=$$EXTERNAL^DILFD(36,.13,,$P(DATA,U,13))
|
---|
170 | S TRANS=$$EXTERNAL^DILFD(36,3.01,,$P(EDI,U,1))
|
---|
171 | S INSTYP=$$EXTERNAL^DILFD(36,3.09,,$P(EDI,U,9))
|
---|
172 | ;
|
---|
173 | S SORT=" "
|
---|
174 | I IBRSORT=1,NAME'="" S SORT=" "_NAME
|
---|
175 | I IBRSORT=2,PROFID'="" S SORT=" "_PROFID
|
---|
176 | I IBRSORT=3,INSTID'="" S SORT=" "_INSTID
|
---|
177 | I IBRSORT=4,INSTYP'="" S SORT=" "_INSTYP
|
---|
178 | I IBRSORT=5,TYPCOV'="" S SORT=" "_TYPCOV
|
---|
179 | ;
|
---|
180 | S TMP=NAME_U_STREET_U_CITY_U_STATE_U_INSTYP_U_TYPCOV_U_TRANS_U_INSTID_U_PROFID
|
---|
181 | S ^TMP($J,RTN,SORT,NAME,INS)=TMP
|
---|
182 | CALCX ;
|
---|
183 | Q
|
---|
184 | ;
|
---|
185 | PRINT ; print the report to the specified device
|
---|
186 | NEW MAXCNT,CRT,PAGECNT,STOP,SORT,NAME,INS,DATA,DIR,X,Y,DIRUT,DUOUT,DTOUT,DIROUT
|
---|
187 | I IOST["C-" S MAXCNT=IOSL-3,CRT=1
|
---|
188 | E S MAXCNT=IOSL-6,CRT=0
|
---|
189 | S PAGECNT=0,STOP=0
|
---|
190 | ;
|
---|
191 | I '$D(^TMP($J,RTN)) D HEADER W !!!?5,"No Data Found"
|
---|
192 | ;
|
---|
193 | S SORT=""
|
---|
194 | F S SORT=$O(^TMP($J,RTN,SORT)) Q:SORT="" D Q:STOP
|
---|
195 | . S NAME=""
|
---|
196 | . F S NAME=$O(^TMP($J,RTN,SORT,NAME)) Q:NAME="" D Q:STOP
|
---|
197 | .. S INS=0
|
---|
198 | .. F S INS=$O(^TMP($J,RTN,SORT,NAME,INS)) Q:'INS D Q:STOP
|
---|
199 | ... S DATA=$G(^TMP($J,RTN,SORT,NAME,INS))
|
---|
200 | ... I $Y+1>MAXCNT!'PAGECNT D HEADER Q:STOP
|
---|
201 | ... W !,$E($P(DATA,U,1),1,27) ; name
|
---|
202 | ... W ?29,$E($P(DATA,U,2),1,19) ; address1
|
---|
203 | ... W ?50,$E($P(DATA,U,3),1,13) ; city, st
|
---|
204 | ... I $P(DATA,U,3)'="",$P(DATA,U,4)'="" W ", "
|
---|
205 | ... W $E($P(DATA,U,4),1,2)
|
---|
206 | ... W ?69,$E($P(DATA,U,7),1,8) ; transmit elec
|
---|
207 | ... W ?79,$E($P(DATA,U,8),1,8) ; inst payer id
|
---|
208 | ... W ?89,$E($P(DATA,U,9),1,8) ; prof payer id
|
---|
209 | ... W ?99,$E($P(DATA,U,5),1,12) ; ins type
|
---|
210 | ... W ?113,$E($P(DATA,U,6),1,19) ; type of cov
|
---|
211 | ... Q
|
---|
212 | .. Q
|
---|
213 | . Q
|
---|
214 | ;
|
---|
215 | I STOP G PRINTX
|
---|
216 | W !!?5,"*** End of Report ***"
|
---|
217 | I CRT,'$D(ZTQUEUED) S DIR(0)="E" D ^DIR K DIR
|
---|
218 | PRINTX ;
|
---|
219 | Q
|
---|
220 | ;
|
---|
221 | HEADER ; page break and report header information
|
---|
222 | NEW LIN,HDR,TAB,C1,C2
|
---|
223 | S STOP=0
|
---|
224 | I CRT,PAGECNT>0,'$D(ZTQUEUED) D I STOP G HEADX
|
---|
225 | . I MAXCNT<51 F LIN=1:1:(MAXCNT-$Y) W !
|
---|
226 | . S DIR(0)="E" D ^DIR K DIR
|
---|
227 | . I 'Y S STOP=1 Q
|
---|
228 | . Q
|
---|
229 | ;
|
---|
230 | S PAGECNT=PAGECNT+1
|
---|
231 | W @IOF,!
|
---|
232 | ;
|
---|
233 | I IBRINS="A" W "All Companies"
|
---|
234 | I IBRINS="S" W "Selected Companies"
|
---|
235 | I IBRINS="R" D ; range description
|
---|
236 | . S C1=IBRINS1 I C1=" " S C1="First"
|
---|
237 | . S C2=IBRINS2 I C2="~~~~~" S C2="Last"
|
---|
238 | . W "Companies [",C1,"] through [",C2,"]"
|
---|
239 | . Q
|
---|
240 | ;
|
---|
241 | W ?45," Insurance Company EDI Parameter Report"
|
---|
242 | S HDR="Page: "_PAGECNT,TAB=132-$L(HDR)-1
|
---|
243 | W ?TAB,HDR
|
---|
244 | ;
|
---|
245 | W !,"Sorted By "
|
---|
246 | I IBRSORT=1 W "Ins Company Name"
|
---|
247 | I IBRSORT=2 W "Prof ID"
|
---|
248 | I IBRSORT=3 W "Inst ID"
|
---|
249 | I IBRSORT=4 W "Electronic Type"
|
---|
250 | I IBRSORT=5 W "Type of Coverage"
|
---|
251 | S HDR=$$FMTE^XLFDT($$NOW^XLFDT,"1Z"),TAB=132-$L(HDR)-1
|
---|
252 | W ?TAB,HDR
|
---|
253 | ;
|
---|
254 | W !,"Only Blank or 'PRNT' Bill ID's = ",$S(IBRBID:"YES",1:"NO")
|
---|
255 | ;
|
---|
256 | W !?69,"Electron",?79,"Inst",?89,"Prof",?99,"Electronic"
|
---|
257 | W !,"Insurance Company Name",?29,"Street Address",?50,"City"
|
---|
258 | W ?69,"Transmit",?80,"ID",?90,"ID",?102,"Type",?113,"Type of Coverage"
|
---|
259 | W !,$$RJ^XLFSTR("",132,"=")
|
---|
260 | ;
|
---|
261 | ; check for a stop request
|
---|
262 | I $D(ZTQUEUED),$$S^%ZTLOAD() D G HEADX
|
---|
263 | . S (ZTSTOP,STOP)=1
|
---|
264 | . W !!!?5,"*** Report Halted by TaskManager Request ***"
|
---|
265 | . Q
|
---|
266 | HEADX ;
|
---|
267 | Q
|
---|
268 | ;
|
---|
269 | DEVICE ; Device selection before compile
|
---|
270 | NEW ZTRTN,ZTDESC,ZTSAVE,POP
|
---|
271 | W !!!,"This report is 132 columns wide. Please choose an appropriate device.",!
|
---|
272 | S ZTRTN="COMPILE^IBCNSGE"
|
---|
273 | S ZTDESC="Insurance Company EDI Parameter Report"
|
---|
274 | S ZTSAVE("IBRINS")=""
|
---|
275 | S ZTSAVE("IBRBID")=""
|
---|
276 | S ZTSAVE("IBRINS1")=""
|
---|
277 | S ZTSAVE("IBRINS2")=""
|
---|
278 | S ZTSAVE("IBRSORT")=""
|
---|
279 | D EN^XUTMDEVQ(ZTRTN,ZTDESC,.ZTSAVE,"QM")
|
---|
280 | DEVX ;
|
---|
281 | Q
|
---|
282 | ;
|
---|