[613] | 1 | IBCNRZRX ;DAOU/DMK - Receive HL7 e-Pharmacy ZRX Segment ;23-OCT-2003
|
---|
| 2 | ;;2.0;INTEGRATED BILLING;**251**;21-MAR-94
|
---|
| 3 | ;;Per VHA Directive 10-93-142, this routine should not be modified.
|
---|
| 4 | ;
|
---|
| 5 | ; Description
|
---|
| 6 | ;
|
---|
| 7 | ; Receive HL7 e-Pharmacy ZRX Segment
|
---|
| 8 | ; 366.03 PLAN File Update (Pharmacy)
|
---|
| 9 | ;
|
---|
| 10 | ; Called by IBCNRHLT
|
---|
| 11 | ;
|
---|
| 12 | ; Entry point
|
---|
| 13 | ;
|
---|
| 14 | 1000 ; Control ZRX Segment processing
|
---|
| 15 | D INIT
|
---|
| 16 | I $D(ERROR) Q
|
---|
| 17 | D INITBPS
|
---|
| 18 | Q
|
---|
| 19 | ;
|
---|
| 20 | INIT ; Initialize ZRX Segment variables
|
---|
| 21 | ; 366.03 PLAN File
|
---|
| 22 | ;
|
---|
| 23 | N NAME
|
---|
| 24 | ;
|
---|
| 25 | ; Error?
|
---|
| 26 | ; V505 = Plan ID Missing
|
---|
| 27 | I $TR($G(IBSEG(3))," ","") S ERROR="V505" Q
|
---|
| 28 | ;
|
---|
| 29 | ; 10.01 = PHARMACY BENEFITS MANAGER NAME (pointer - 366.02)
|
---|
| 30 | S DATA(10.01)=$G(IBSEG(4))
|
---|
| 31 | I DATA(10.01)]"" S DATA(10.01)=$$LOOKUP1^IBCNRFM1(366.02,DATA(10.01))
|
---|
| 32 | ;
|
---|
| 33 | ; Error?
|
---|
| 34 | ; V510 = Pharmacy Benefits Manager (PBM) Undefined
|
---|
| 35 | I DATA(10.01)=-1 S ERROR="V510" Q
|
---|
| 36 | ;
|
---|
| 37 | ; 10.02 = BANKING IDENTIFICATION NUMBER
|
---|
| 38 | S DATA(10.02)=$G(IBSEG(5))
|
---|
| 39 | ;
|
---|
| 40 | ; Error?
|
---|
| 41 | ; V515 = Plan BIN Missing
|
---|
| 42 | I $TR(DATA(10.02)," ","")="" S ERROR="V515" Q
|
---|
| 43 | ;
|
---|
| 44 | ; 10.03 = PROCESSOR CONTROL NUMBER (PCN)
|
---|
| 45 | S DATA(10.03)=$G(IBSEG(6))
|
---|
| 46 | ;
|
---|
| 47 | ; 10.04 = NCPDP PROCESSOR NAME (pointer - 366.01)
|
---|
| 48 | S DATA(10.04)=$G(IBSEG(7))
|
---|
| 49 | I DATA(10.04)]"" S DATA(10.04)=$$LOOKUP1^IBCNRFM1(366.01,DATA(10.04))
|
---|
| 50 | ;
|
---|
| 51 | ; Error?
|
---|
| 52 | ; V520 = NCPDP Processor Name Undefined
|
---|
| 53 | I DATA(10.04)=-1 S ERROR="V520" Q
|
---|
| 54 | ;
|
---|
| 55 | ; 10.05 = ENABLED?
|
---|
| 56 | S DATA(10.05)=$S($G(IBSEG(8))="Y":1,1:0)
|
---|
| 57 | ;
|
---|
| 58 | ; Error?
|
---|
| 59 | ; V525 = Plan Enabled? Missing
|
---|
| 60 | I $TR(DATA(10.05)," ","")="" S ERROR="V525" Q
|
---|
| 61 | ;
|
---|
| 62 | ; 10.06 = SOFTWARE VENDOR ID
|
---|
| 63 | S DATA(10.06)=$G(IBSEG(9))
|
---|
| 64 | ;
|
---|
| 65 | ; 10.07 = BILLING PAYER SHEET NAME (pointer - 9002313.92)
|
---|
| 66 | S DATA(10.07)=$G(IBSEG(10))
|
---|
| 67 | I DATA(10.07)]"" S DATA(10.07)=$$LOOKUP1^IBCNRFM1(9002313.92,DATA(10.07))
|
---|
| 68 | ;
|
---|
| 69 | ; Error?
|
---|
| 70 | ; V530 = Billing Payer Sheet Name Undefined
|
---|
| 71 | I DATA(10.07)=-1 S ERROR="V530" Q
|
---|
| 72 | ;
|
---|
| 73 | ; 10.08 = REVERSAL PAYER SHEET NAME (pointer - 9002313.92)
|
---|
| 74 | S DATA(10.08)=$G(IBSEG(11))
|
---|
| 75 | I DATA(10.08)]"" S DATA(10.08)=$$LOOKUP1^IBCNRFM1(9002313.92,DATA(10.08))
|
---|
| 76 | ;
|
---|
| 77 | ; Error?
|
---|
| 78 | ; V535 = Reversal Payer Sheet Name Undefined
|
---|
| 79 | I DATA(10.08)=-1 S ERROR="V535" Q
|
---|
| 80 | ;
|
---|
| 81 | ; 10.09 = REBILL PAYER SHEET NAME (pointer - 9002313.92)
|
---|
| 82 | S DATA(10.09)=$G(IBSEG(12))
|
---|
| 83 | I DATA(10.09)]"" S DATA(10.09)=$$LOOKUP1^IBCNRFM1(9002313.92,DATA(10.09))
|
---|
| 84 | ;
|
---|
| 85 | ; Error?
|
---|
| 86 | ; V540 = Rebill Payer Sheet Name Undefined
|
---|
| 87 | I DATA(10.09)=-1 S ERROR="V540" Q
|
---|
| 88 | ;
|
---|
| 89 | ; 10.1 = MAXIMUM NCPDP TRANSACTIONS
|
---|
| 90 | S DATA(10.1)=$G(IBSEG(13))
|
---|
| 91 | ;
|
---|
| 92 | ; Initialize RX primary contact name variables
|
---|
| 93 | S NAME=$G(IBSEG(14))
|
---|
| 94 | D NAME
|
---|
| 95 | ;
|
---|
| 96 | ; 11.01 = RX PRIMARY CONTACT NAME
|
---|
| 97 | S DATA(11.01)=NAME("NAME")
|
---|
| 98 | ;
|
---|
| 99 | ; 11.02 = RX PRIMARY CONTACT PREFIX
|
---|
| 100 | S DATA(11.02)=NAME("PREFIX")
|
---|
| 101 | ;
|
---|
| 102 | ; 11.03 = RX PRIMARY CONTACT DEGREE
|
---|
| 103 | S DATA(11.03)=NAME("DEGREE")
|
---|
| 104 | ;
|
---|
| 105 | ; Initialize RX alternate contact name variables
|
---|
| 106 | S NAME=$G(IBSEG(15))
|
---|
| 107 | D NAME
|
---|
| 108 | ;
|
---|
| 109 | ; 11.04 = RX ALTERNATE CONTACT NAME
|
---|
| 110 | S DATA(11.04)=NAME("NAME")
|
---|
| 111 | ;
|
---|
| 112 | ; 11.05 = RX ALETRNATE CONTACT PREFIX
|
---|
| 113 | S DATA(11.05)=NAME("PREFIX")
|
---|
| 114 | ;
|
---|
| 115 | ; 11.06 = RX ALTERNATE CONTACT DEGREE
|
---|
| 116 | S DATA(11.06)=NAME("DEGREE")
|
---|
| 117 | Q
|
---|
| 118 | ;
|
---|
| 119 | INITBPS ; Initialize variables from ZRX Segment variables
|
---|
| 120 | ; 90002313.92 BPS NCPDP FORMATS File
|
---|
| 121 | ;
|
---|
| 122 | ; 1.03 = Maximum RX's Per Claim
|
---|
| 123 | S DATABPS(1.03)=DATA(10.1)
|
---|
| 124 | I DATABPS(1.03)'?1.N S DATABPS(1.03)=1
|
---|
| 125 | ;
|
---|
| 126 | ; 1.07 = Is A Reversal Format
|
---|
| 127 | S DATABPS(1.07)=0
|
---|
| 128 | ;
|
---|
| 129 | ; 1.13 = SOFTWARE VENDOR/CERT ID
|
---|
| 130 | S DATABPS(1.13)=DATA(10.06)
|
---|
| 131 | ;
|
---|
| 132 | ; 1001 = Reversal Format
|
---|
| 133 | S DATABPS(1001)=DATA(10.08)
|
---|
| 134 | Q
|
---|
| 135 | ;
|
---|
| 136 | NAME ; Initialize name variables from NAME string
|
---|
| 137 | S NAME("SURNAME")=$P($P(NAME,$E(HLECH,1),1),$E(HLECH,4),1)
|
---|
| 138 | S NAME("SURNAME PREFIX")=$P($P(NAME,$E(HLECH,1),1),$E(HLECH,4),2)
|
---|
| 139 | S NAME("FAMILY")=$S(NAME("SURNAME PREFIX")]"":NAME("SURNAME PREFIX")_" ",1:"")_NAME("SURNAME")
|
---|
| 140 | S NAME("GIVEN")=$P(NAME,$E(HLECH,1),2)
|
---|
| 141 | S NAME("MIDDLE")=$P(NAME,$E(HLECH,1),3)
|
---|
| 142 | S NAME("SUFFIX")=$P(NAME,$E(HLECH,1),4)
|
---|
| 143 | S NAME("NAME")=""
|
---|
| 144 | I NAME("FAMILY")]"" S NAME("NAME")=NAME("FAMILY")_","_NAME("GIVEN")_$S(NAME("MIDDLE")]"":" "_$E(NAME("MIDDLE"),1),1:"")_$S(NAME("SUFFIX")]"":" "_NAME("SUFFIX"),1:"")
|
---|
| 145 | S NAME("PREFIX")=$P(NAME,$E(HLECH,1),5)
|
---|
| 146 | S NAME("DEGREE")=$P(NAME,$E(HLECH,1),6)
|
---|
| 147 | Q
|
---|