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