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