[613] | 1 | IBECUS1 ;RLM/DVAMC - TRICARE PHARMACY BILLING ENGINES ; 14-AUG-96
|
---|
| 2 | ;;2.0;INTEGRATED BILLING;**52,88,240,274**;21-MAR-94
|
---|
| 3 | ;
|
---|
| 4 | BILLS ; Tasked entry point: Secondary Billing engine.
|
---|
| 5 | ;
|
---|
| 6 | I $D(^%ZOSF("TRAP")) S X="ERRS^IBECUS1",@^("TRAP")
|
---|
| 7 | ;
|
---|
| 8 | ; - main idling loop
|
---|
| 9 | F H 100 Q:'$P($G(^IBE(350.9,1,9)),"^",4)
|
---|
| 10 | ;
|
---|
| 11 | I $P($G(^IBE(350.9,1,9)),"^",10) S $P(^IBE(350.9,1,9),"^",5)="" G BILLQ
|
---|
| 12 | ;
|
---|
| 13 | ; - drop into Primary Billing task...
|
---|
| 14 | ;
|
---|
| 15 | ;
|
---|
| 16 | BILLP ; Tasked entry point: Primary Billing engine.
|
---|
| 17 | ;
|
---|
| 18 | I $D(^%ZOSF("TRAP")) S X="ERRP^IBECUS1",@^("TRAP")
|
---|
| 19 | ;
|
---|
| 20 | ; - open the port
|
---|
| 21 | D CALL^%ZISTCP(IBCHAN,IBBPORT) I POP G BILLC
|
---|
| 22 | ;
|
---|
| 23 | ; - start secondary job
|
---|
| 24 | D SECB
|
---|
| 25 | ;
|
---|
| 26 | ; - send alert notifying that the billing engine has started
|
---|
| 27 | D NOW^%DTC S $P(^IBE(350.9,1,9),"^",8)=%,Y=% X ^DD("DD")
|
---|
| 28 | S XQA("G.IB CHAMP RX START")="",XQAMSG="IPS Billing Process Started "_Y
|
---|
| 29 | D SETUP^XQALERT
|
---|
| 30 | ;
|
---|
| 31 | ; - main processing loop
|
---|
| 32 | F R IBX:50 D SND,UPD I $P($G(^IBE(350.9,1,9)),"^",10) Q
|
---|
| 33 | ;
|
---|
| 34 | BILLC D CLOSE^%ZISTCP
|
---|
| 35 | ;
|
---|
| 36 | ; - delete the primary task
|
---|
| 37 | S $P(^IBE(350.9,1,9),"^",4)=""
|
---|
| 38 | ;
|
---|
| 39 | BILLQ Q
|
---|
| 40 | ;
|
---|
| 41 | ;
|
---|
| 42 | SND ; Process all prescriptions queued for billing.
|
---|
| 43 | F R *IBI:0 Q:IBI=-1 ; bleed queue
|
---|
| 44 | S IBKEY="" F S IBKEY=$O(^IBA(351.5,"APOST",IBKEY)) Q:'IBKEY S IBKEYD=$G(^(IBKEY)),IBROU="^IBECUS"_$S(IBKEYD["REVERSE":3,1:2) D @IBROU
|
---|
| 45 | Q
|
---|
| 46 | ;
|
---|
| 47 | ;
|
---|
| 48 | UPD ; Update the last run date/time.
|
---|
| 49 | D NOW^%DTC
|
---|
| 50 | S $P(^IBE(350.9,1,9),"^",9)=%
|
---|
| 51 | Q
|
---|
| 52 | ;
|
---|
| 53 | ;
|
---|
| 54 | ERRP ; Primary billing task error trap
|
---|
| 55 | D CLOSE^%ZISTCP
|
---|
| 56 | S $P(^IBE(350.9,1,9),"^",4)=""
|
---|
| 57 | G ^%ZTER
|
---|
| 58 | ;
|
---|
| 59 | ERRS ; Secondary billing task error trap
|
---|
| 60 | D SECB
|
---|
| 61 | G ^%ZTER
|
---|
| 62 | ;
|
---|
| 63 | SECB ; Start the secondary billing task.
|
---|
| 64 | S ZTRTN="BILLS^IBECUS1",ZTDTH=$H,ZTIO=""
|
---|
| 65 | S ZTDESC="IB - TRICARE Secondary Billing Task"
|
---|
| 66 | I IBVOL]"" S ZTCPU=IBVOL
|
---|
| 67 | F I="IBBPORT","IBCHAN","IBCHSET","IBPRESCR","IBVOL" S ZTSAVE(I)=""
|
---|
| 68 | D ^%ZTLOAD
|
---|
| 69 | ;
|
---|
| 70 | S $P(^IBE(350.9,1,9),"^",5)=$G(ZTSK)
|
---|
| 71 | ;
|
---|
| 72 | K ZTRTN,ZTDTH,ZTIO,ZTSK,ZTCPU,ZTSAVE
|
---|
| 73 | Q
|
---|
| 74 | ;
|
---|
| 75 | ;
|
---|
| 76 | ;
|
---|
| 77 | AWPS ; Tasked entry point: Secondary AWP Update engine.
|
---|
| 78 | ;
|
---|
| 79 | I $D(^%ZOSF("TRAP")) S X="ERRAS^IBECUS1",@^("TRAP")
|
---|
| 80 | ;
|
---|
| 81 | ; - main idling loop
|
---|
| 82 | F H 100 Q:'$P($G(^IBE(350.9,1,9)),"^",6)
|
---|
| 83 | ;
|
---|
| 84 | I $P($G(^IBE(350.9,1,9)),"^",10) S $P(^IBE(350.9,1,9),"^",7)="" G AWPPQ
|
---|
| 85 | ;
|
---|
| 86 | ; - drop into Primary AWP Update task...
|
---|
| 87 | ;
|
---|
| 88 | ;
|
---|
| 89 | AWPP ; Tasked Entry Point: Primary AWP Update Engine
|
---|
| 90 | ;
|
---|
| 91 | I $D(^%ZOSF("TRAP")) S X="ERRAP^IBECUS1",@^("TRAP")
|
---|
| 92 | ;
|
---|
| 93 | ; - open the port
|
---|
| 94 | D CALL^%ZISTCP(IBCHAN,IBAPORT) I POP G AWPPC
|
---|
| 95 | ;
|
---|
| 96 | ; - start secondary job
|
---|
| 97 | D SECA
|
---|
| 98 | ;
|
---|
| 99 | ; - main processing loop
|
---|
| 100 | S IBUPD=0 F R IBX:30 D I $P($G(^IBE(350.9,1,9)),"^",10) Q
|
---|
| 101 | .;
|
---|
| 102 | .; - if no response, sent alert if necessary
|
---|
| 103 | .I IBX="" D:IBUPD Q
|
---|
| 104 | ..D NOW^%DTC S Y=% X ^DD("DD")
|
---|
| 105 | ..S XQA("G.IB CHAMP RX START")=""
|
---|
| 106 | ..S XQAMSG="AWP update completed on "_Y_". "_IBUPD_" new rates were added."
|
---|
| 107 | ..D SETUP^XQALERT
|
---|
| 108 | ..S IBUPD=0
|
---|
| 109 | .;
|
---|
| 110 | .; - respond if record is not in the anticipated format
|
---|
| 111 | .I IBX'?36N W "N" Q
|
---|
| 112 | .I IBX?36"9" Q
|
---|
| 113 | .;
|
---|
| 114 | .; - pull data from the transmitted record
|
---|
| 115 | .S IBNDCO=$E(IBX,1,11),IBNDCN=$E(IBX,12,22),IBAWP=$E(IBX,23,29)
|
---|
| 116 | .S IBAWP=$E(IBAWP,1,3)_"."_$E(IBAWP,4,7)
|
---|
| 117 | .S IBNDC=$S(IBNDCN:IBNDCN,1:IBNDCO)
|
---|
| 118 | .S IBNDC=$E(IBNDC,1,5)_"-"_$E(IBNDC,6,9)_"-"_$E(IBNDC,10,11)
|
---|
| 119 | .;
|
---|
| 120 | .; - find/build billable item and file the new charge item
|
---|
| 121 | .N DIQUIET S DIQUIET=1,IBG=0 D DT^DICRW
|
---|
| 122 | .S IBITEM=+$$ADDBI^IBCREF("NDC",IBNDC)
|
---|
| 123 | .I IBITEM,$$ADDCI^IBCREF(IBCHSET,IBITEM,DT,IBAWP) S IBG=1
|
---|
| 124 | .;
|
---|
| 125 | .; - respond and update the counter
|
---|
| 126 | .W "Y",!
|
---|
| 127 | .S:IBG IBUPD=IBUPD+1
|
---|
| 128 | ;
|
---|
| 129 | AWPPC D CLOSE^%ZISTCP
|
---|
| 130 | ;
|
---|
| 131 | ; - delete the primary task
|
---|
| 132 | S $P(^IBE(350.9,1,9),"^",6)=""
|
---|
| 133 | ;
|
---|
| 134 | AWPPQ Q
|
---|
| 135 | ;
|
---|
| 136 | ;
|
---|
| 137 | SECA ; Start the secondary AWP Update task.
|
---|
| 138 | S ZTRTN="AWPS^IBECUS1",ZTDTH=$H,ZTIO=""
|
---|
| 139 | S ZTDESC="IB - TRICARE Secondary AWP Update Task"
|
---|
| 140 | I IBVOL]"" S ZTCPU=IBVOL
|
---|
| 141 | F I="IBAPORT","IBCHAN","IBCHSET","IBVOL" S ZTSAVE(I)=""
|
---|
| 142 | D ^%ZTLOAD
|
---|
| 143 | ;
|
---|
| 144 | S $P(^IBE(350.9,1,9),"^",7)=$G(ZTSK)
|
---|
| 145 | ;
|
---|
| 146 | K ZTRTN,ZTDTH,ZTIO,ZTSK,ZTCPU,ZTSAVE
|
---|
| 147 | Q
|
---|
| 148 | ;
|
---|
| 149 | ERRAP ; Primary billing task error trap
|
---|
| 150 | D CLOSE^%ZISTCP
|
---|
| 151 | S $P(^IBE(350.9,1,9),"^",6)=""
|
---|
| 152 | G ^%ZTER
|
---|
| 153 | ;
|
---|
| 154 | ERRAS ; Secondary billing task error trap
|
---|
| 155 | D SECA
|
---|
| 156 | G ^%ZTER
|
---|