| [613] | 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 |  ;
 | 
|---|