| [613] | 1 | IBCNRU1 ;BHAM ISC/CMW - IB Utilities ;15-OCT-04
 | 
|---|
 | 2 |  ;;2.0;INTEGRATED BILLING;**251,276**;21-MAR-94
 | 
|---|
 | 3 |  ;;Per VHA Directive 10-93-142, this routine should not be modified.
 | 
|---|
 | 4 |  ;
 | 
|---|
 | 5 |  Q
 | 
|---|
 | 6 |  ;
 | 
|---|
 | 7 |  ;return array definition
 | 
|---|
 | 8 |  ;(1) - "A"ctive or "I"nactive flag.
 | 
|---|
 | 9 |  ;(2) - BIN #.
 | 
|---|
 | 10 |  ;(3) - PCN #.
 | 
|---|
 | 11 |  ;(4) - Vender Cert ID.
 | 
|---|
 | 12 |  ;(5) - Payer Sheets. (B1,B2,B3) (comma separated string).
 | 
|---|
 | 13 |  ;(6) - Status codes (comma separated string).
 | 
|---|
 | 14 |  ;
 | 
|---|
 | 15 | STCHK(PIEN,IBARAY) ;Review status flags for all files related to this pharmacy plan
 | 
|---|
 | 16 |  ;
 | 
|---|
 | 17 |  NEW I,IBBIN,IBPCN,IB1,IB2,IB3,IBPBM,IBPRO,IBSTA,IBPAY,IBPST
 | 
|---|
 | 18 |  NEW IBAPP,IBCODE,IBCERT
 | 
|---|
 | 19 |  NEW PLN0,PLN10,AIEN,APDAT,APIEN
 | 
|---|
 | 20 |  NEW NA1,NA2,NA3,NA4,LA1,LA2,LA3,LA4,DA1,DA2,DA3,DA4,FLN
 | 
|---|
 | 21 |  ;
 | 
|---|
 | 22 |  K IBARAY
 | 
|---|
 | 23 |  ;
 | 
|---|
 | 24 |  I '$G(PIEN) D  G EXT
 | 
|---|
 | 25 |  . S IBSTA="" D IBC(299)
 | 
|---|
 | 26 |  I '$D(^IBCNR(366.03,PIEN)) D  G EXT
 | 
|---|
 | 27 |  . S IBSTA="" D IBC(299)
 | 
|---|
 | 28 |  ;
 | 
|---|
 | 29 |  S IBAPP="E-PHARM",IBSTA=1,IBCODE=""
 | 
|---|
 | 30 |  S PLN0=$G(^IBCNR(366.03,PIEN,0)) D
 | 
|---|
 | 31 |  . ;
 | 
|---|
 | 32 | PAY . ;get PAYER
 | 
|---|
 | 33 |  . S IBPAY=$P(PLN0,U,3) D
 | 
|---|
 | 34 |  .. I 'IBPAY Q
 | 
|---|
 | 35 |  .. ;check payer active
 | 
|---|
 | 36 |  .. S AIEN=$O(^IBE(365.13,"B",IBAPP,"")) I AIEN="" Q
 | 
|---|
 | 37 |  .. S APIEN=$O(^IBE(365.12,IBPAY,1,"B",AIEN,"")) I APIEN="" Q
 | 
|---|
 | 38 |  .. S APDAT=$G(^IBE(365.12,IBPAY,1,APIEN,0))
 | 
|---|
 | 39 |  .. S NA1=$P(APDAT,U,2) I NA1=0 S IBSTA="" D IBC(101)
 | 
|---|
 | 40 |  .. S LA1=$P(APDAT,U,3) I LA1=0 S IBSTA="" D IBC(102)
 | 
|---|
 | 41 |  .. S DA1=$P(APDAT,U,11) I DA1=1 S IBSTA="" D IBC(103)
 | 
|---|
 | 42 |  .. ;
 | 
|---|
 | 43 | PLN . ;check Plan active
 | 
|---|
 | 44 |  . S AIEN=$O(^IBCNR(366.13,"B",IBAPP,"")) I AIEN="" Q
 | 
|---|
 | 45 |  . S APIEN=$O(^IBCNR(366.03,PIEN,3,"B",AIEN,"")) I APIEN="" Q
 | 
|---|
 | 46 |  . S APDAT=$G(^IBCNR(366.03,PIEN,3,APIEN,0))
 | 
|---|
 | 47 |  . S NA2=$P(APDAT,U,2) I NA2=0 S IBSTA="" D IBC(201)
 | 
|---|
 | 48 |  . S LA2=$P(APDAT,U,3) I LA2=0 S IBSTA="" D IBC(202)
 | 
|---|
 | 49 |  . S DA2=$P(APDAT,U,11) I DA2=1 S IBSTA="" D IBC(203)
 | 
|---|
 | 50 |  . ;
 | 
|---|
 | 51 | PHM . ;check pharmacy data
 | 
|---|
 | 52 |  . I '$D(^IBCNR(366.03,PIEN,10)) D
 | 
|---|
 | 53 |  .. S IBSTA="" D IBC(599) Q
 | 
|---|
 | 54 |  .. ;
 | 
|---|
 | 55 |  . S PLN10=$G(^IBCNR(366.03,PIEN,10)) D
 | 
|---|
 | 56 |  .. ;
 | 
|---|
 | 57 | BIN .. ;get BIN
 | 
|---|
 | 58 |  .. S IBBIN=$P(PLN10,U,2)
 | 
|---|
 | 59 |  .. S IBARAY(2)=IBBIN
 | 
|---|
 | 60 |  .. ;
 | 
|---|
 | 61 | PCN .. ;get PCN
 | 
|---|
 | 62 |  .. S IBPCN=$P(PLN10,U,3)
 | 
|---|
 | 63 |  .. S IBARAY(3)=IBPCN
 | 
|---|
 | 64 |  .. ;
 | 
|---|
 | 65 | PBM .. ;get PBM
 | 
|---|
 | 66 |  .. S IBPBM=$P(PLN10,U,1) D
 | 
|---|
 | 67 |  ... I 'IBPBM Q
 | 
|---|
 | 68 |  ... ;check PBM active
 | 
|---|
 | 69 |  ... S AIEN=$O(^IBCNR(366.12,"B",IBAPP,"")) I AIEN="" Q
 | 
|---|
 | 70 |  ... S APIEN=$O(^IBCNR(366.02,IBPBM,3,"B",AIEN,"")) I APIEN="" Q
 | 
|---|
 | 71 |  ... S APDAT=$G(^IBCNR(366.02,IBPBM,3,APIEN,0))
 | 
|---|
 | 72 |  ... S NA3=$P(APDAT,U,2) I NA3=0 D IBC(301) S IBSTA=""
 | 
|---|
 | 73 |  ... S LA3=$P(APDAT,U,3) I LA3=0 D IBC(302) S IBSTA=""
 | 
|---|
 | 74 |  ... S DA3=$P(APDAT,U,11) I DA3=1 D IBC(303) S IBSTA=""
 | 
|---|
 | 75 |  ... ;
 | 
|---|
 | 76 | PRO .. ;get Processor
 | 
|---|
 | 77 |  .. S IBPRO=$P(PLN10,U,4) D
 | 
|---|
 | 78 |  ... I 'IBPRO Q
 | 
|---|
 | 79 |  ... ;check Processor active flags here
 | 
|---|
 | 80 |  ... S AIEN=$O(^IBCNR(366.11,"B",IBAPP,"")) I AIEN="" Q
 | 
|---|
 | 81 |  ... S APIEN=$O(^IBCNR(366.01,IBPRO,3,"B",AIEN,"")) I APIEN="" Q
 | 
|---|
 | 82 |  ... S APDAT=$G(^IBCNR(366.01,IBPRO,3,APIEN,0))
 | 
|---|
 | 83 |  ... S NA4=$P(APDAT,U,2) I NA4=0 D IBC(401) S IBSTA=""
 | 
|---|
 | 84 |  ... S LA4=$P(APDAT,U,3) I LA4=0 D IBC(402) S IBSTA=""
 | 
|---|
 | 85 |  ... S DA4=$P(APDAT,U,11) I DA4=1 D IBC(403) S IBSTA=""
 | 
|---|
 | 86 |  ... ;
 | 
|---|
 | 87 | VND .. ;get Vender Cert
 | 
|---|
 | 88 |  .. S IBCERT=$P(PLN10,U,6)
 | 
|---|
 | 89 |  .. S IBARAY(4)=IBCERT
 | 
|---|
 | 90 |  .. ;
 | 
|---|
 | 91 | PST .. ; Check payer sheets
 | 
|---|
 | 92 |  .. N BPS,PST,PSP
 | 
|---|
 | 93 |  .. N B1,B2,B3
 | 
|---|
 | 94 |  .. S PST=""
 | 
|---|
 | 95 |  .. ;check for test/production sheets
 | 
|---|
 | 96 |  .. S (B1,B2,B3)=""
 | 
|---|
 | 97 |  .. S B1=$P(PLN10,U,11),B2=$P(PLN10,U,12),B3=$P(PLN10,U,13)
 | 
|---|
 | 98 |  .. I $G(B1)="" S B1=$P(PLN10,U,7)
 | 
|---|
 | 99 |  .. I $G(B2)="" S B2=$P(PLN10,U,8)
 | 
|---|
 | 100 |  .. I $G(B3)="" S B3=$P(PLN10,U,9)
 | 
|---|
 | 101 |  .. S PST=B1_","_B2_","_B3
 | 
|---|
 | 102 |  .. ;
 | 
|---|
 | 103 |  .. I $G(B1)="",$G(B2)="" S IBSTA="" D IBC(699) G PSX
 | 
|---|
 | 104 |  .. I $G(B1) D PSD(B1) I PSP=0 S IBSTA="" D IBC(601)
 | 
|---|
 | 105 |  .. I $G(B2) D PSD(B2) I PSP=0 S IBSTA="" D IBC(602)
 | 
|---|
 | 106 |  .. I $G(B1)="" S IBSTA="" D IBC(603)
 | 
|---|
 | 107 |  .. I $G(B2)="" S IBSTA="" D IBC(604)
 | 
|---|
 | 108 |  .. ;
 | 
|---|
 | 109 | PSX .. S IBARAY(5)=PST
 | 
|---|
 | 110 |  . ;
 | 
|---|
 | 111 |  . ;check HIPAA NCPDP flag
 | 
|---|
 | 112 |  . I '$P($G(^IBE(350.9,1,11)),U) D
 | 
|---|
 | 113 |  .. S IBSTA="" D IBC(999)
 | 
|---|
 | 114 |  ;
 | 
|---|
 | 115 | EXT ;
 | 
|---|
 | 116 |  S IBARAY(1)=$S(IBSTA="":"I",1:"A")
 | 
|---|
 | 117 |  I IBCODE="" S IBCODE=200
 | 
|---|
 | 118 |  S IBARAY(6)=IBCODE
 | 
|---|
 | 119 |  Q
 | 
|---|
 | 120 |  ;
 | 
|---|
 | 121 | PSD(PS) ; check for disabled payersheet
 | 
|---|
 | 122 |  S PSP=1
 | 
|---|
 | 123 |  S BPS=$G(^BPSF(9002313.92,PS,1)) I $P(BPS,U,6)=0 S PSP=0
 | 
|---|
 | 124 |  Q
 | 
|---|
 | 125 |  ;
 | 
|---|
 | 126 | IBC(CD) ;set IBCODE
 | 
|---|
 | 127 |  I '$G(IBCODE) S IBCODE=CD Q
 | 
|---|
 | 128 |  S IBCODE=IBCODE_","_CD
 | 
|---|
 | 129 |  Q
 | 
|---|
 | 130 |  ;
 | 
|---|
 | 131 | STATAR(AR) ;
 | 
|---|
 | 132 |  ; setup status code definition array
 | 
|---|
 | 133 |  K AR
 | 
|---|
 | 134 |  ; payer
 | 
|---|
 | 135 |  S AR(101)="Payer not active, national."
 | 
|---|
 | 136 |  S AR(102)="Payer not active, local."
 | 
|---|
 | 137 |  S AR(103)="Payer Deactivated."
 | 
|---|
 | 138 |  ; plan
 | 
|---|
 | 139 |  S AR(200)="Plan Active"
 | 
|---|
 | 140 |  S AR(201)="Plan not active, national."
 | 
|---|
 | 141 |  S AR(202)="Plan not active, local."
 | 
|---|
 | 142 |  S AR(203)="Plan Deactivated."
 | 
|---|
 | 143 |  S AR(299)="Plan not found."
 | 
|---|
 | 144 |  ; pbm
 | 
|---|
 | 145 |  S AR(301)="PBM not active, national."
 | 
|---|
 | 146 |  S AR(302)="PBM not active, local."
 | 
|---|
 | 147 |  S AR(303)="PBM Deactivated."
 | 
|---|
 | 148 |  ; processor
 | 
|---|
 | 149 |  S AR(401)="Processor not active, national."
 | 
|---|
 | 150 |  S AR(402)="Processor not active, local."
 | 
|---|
 | 151 |  S AR(403)="Processor Deactivated."
 | 
|---|
 | 152 |  ; pharmacy plan
 | 
|---|
 | 153 |  S AR(599)="Pharmacy Plan not found."
 | 
|---|
 | 154 |  ; payer sheets
 | 
|---|
 | 155 |  S AR(601)="Billing PayerSheet Disabled."
 | 
|---|
 | 156 |  S AR(602)="Reversal PayerSheet Disabled."
 | 
|---|
 | 157 |  S AR(603)="Billing PayerSheet Not Found."
 | 
|---|
 | 158 |  S AR(604)="Reversal PayerSheet Not Found."
 | 
|---|
 | 159 |  S AR(699)="No Payer Sheets found."
 | 
|---|
 | 160 |  ;
 | 
|---|
 | 161 |  S AR(999)="HIPAA NCPDP Inactive."
 | 
|---|
 | 162 |  ;
 | 
|---|
 | 163 |  Q
 | 
|---|