| 1 | IBRXUTL ;ALB/MAF - PHARMACY API CALLS ; MAY 25, 2005 | 
|---|
| 2 | ;;2.0;INTEGRATED BILLING;**309,347**;21-MAR-94;Build 24 | 
|---|
| 3 | ; | 
|---|
| 4 | ZERO(IBDRV) ; | 
|---|
| 5 | N X | 
|---|
| 6 | K ^TMP($J,"IBDRUG") | 
|---|
| 7 | S X="IBDRUG" D ZERO^PSS50(IBDRV,,,,,X) | 
|---|
| 8 | Q | 
|---|
| 9 | DATA(IBDRV) ; | 
|---|
| 10 | N X | 
|---|
| 11 | K ^TMP($J,"IBDRUG") | 
|---|
| 12 | S X="IBDRUG" D DATA^PSS50(IBDRV,,,,,X) | 
|---|
| 13 | Q | 
|---|
| 14 | FILE(DA,DR,INTEXT) ;Returns single field from file 52 | 
|---|
| 15 | N RETURN,PSOFILE | 
|---|
| 16 | I '$G(DA) S RETURN="" Q RETURN | 
|---|
| 17 | I '$G(DR) S RETURN="" Q RETURN | 
|---|
| 18 | S PSOFILE=52 | 
|---|
| 19 | S DA=+DA | 
|---|
| 20 | I $G(INTEXT)="" S INTEXT="I" | 
|---|
| 21 | S RETURN=$$GET1^PSODI(PSOFILE,DA,DR,INTEXT) | 
|---|
| 22 | I $P($G(RETURN),"^",1)=0 S RETURN="" Q RETURN | 
|---|
| 23 | Q $P(RETURN,"^",2) | 
|---|
| 24 | SUBFILE(DA,DASUB,DR,DRSUB,INTEXT) ;Returns single field from subfile 52.1 | 
|---|
| 25 | ;The DR variable isn't being used because Pharmacy API changed after IB*2.0*347 went | 
|---|
| 26 | ;to test site. Rather than changing all the routines that call this API this | 
|---|
| 27 | ;input variable is now not used. | 
|---|
| 28 | N RETSUB,PSOFILE,IENS | 
|---|
| 29 | I '$G(DA) S RETSUB="" Q RETSUB | 
|---|
| 30 | I '$G(DASUB) S RETSUB="" Q RETSUB | 
|---|
| 31 | I '$G(DRSUB) S RETSUB="" Q RETSUB | 
|---|
| 32 | S PSOFILE=52.1 | 
|---|
| 33 | S IENS=+DASUB_","_+DA | 
|---|
| 34 | I $G(INTEXT)="" S INTEXT="I" | 
|---|
| 35 | S RETSUB=$$GET1^PSODI(PSOFILE,IENS,DRSUB,INTEXT) | 
|---|
| 36 | I $P($G(RETSUB),"^",1)=0 S RETSUB="" Q RETSUB | 
|---|
| 37 | Q $P(RETSUB,"^",2) | 
|---|
| 38 | RXZERO(PDFN,RXIEN) ;Returns zero node of file 52 | 
|---|
| 39 | N ZEROOUT,LIST,IBTMPARR,NODE | 
|---|
| 40 | I '$G(PDFN) S ZEROOUT="" Q ZEROOUT | 
|---|
| 41 | I '$G(RXIEN) S ZEROOUT="" Q ZEROOUT | 
|---|
| 42 | S NODE=0 | 
|---|
| 43 | S LIST="IBZEROARR" | 
|---|
| 44 | S IBTMPARR="IBTMPZERO" | 
|---|
| 45 | D RX^PSO52API(PDFN,LIST,RXIEN,,NODE,,) | 
|---|
| 46 | I $P(^TMP($J,LIST,PDFN,0),"^",1)>0  D | 
|---|
| 47 | .S $P(^TMP($J,IBTMPARR),"^",1)=$G(^TMP($J,LIST,PDFN,RXIEN,.01)) | 
|---|
| 48 | .S $P(^TMP($J,IBTMPARR),"^",2)=$P($G(^TMP($J,LIST,PDFN,RXIEN,2)),"^",1) | 
|---|
| 49 | .S $P(^TMP($J,IBTMPARR),"^",3)=$P($G(^TMP($J,LIST,PDFN,RXIEN,3)),"^",1) | 
|---|
| 50 | .S $P(^TMP($J,IBTMPARR),"^",4)=$P($G(^TMP($J,LIST,PDFN,RXIEN,4)),"^",1) | 
|---|
| 51 | .S $P(^TMP($J,IBTMPARR),"^",5)=$P($G(^TMP($J,LIST,PDFN,RXIEN,5)),"^",1) | 
|---|
| 52 | .S $P(^TMP($J,IBTMPARR),"^",6)=$P($G(^TMP($J,LIST,PDFN,RXIEN,6)),"^",1) | 
|---|
| 53 | .S $P(^TMP($J,IBTMPARR),"^",7)=$G(^TMP($J,LIST,PDFN,RXIEN,7)) | 
|---|
| 54 | .S $P(^TMP($J,IBTMPARR),"^",8)=$G(^TMP($J,LIST,PDFN,RXIEN,8)) | 
|---|
| 55 | .S $P(^TMP($J,IBTMPARR),"^",9)=$G(^TMP($J,LIST,PDFN,RXIEN,9)) | 
|---|
| 56 | .S $P(^TMP($J,IBTMPARR),"^",10)="" | 
|---|
| 57 | .S $P(^TMP($J,IBTMPARR),"^",11)=$P($G(^TMP($J,LIST,PDFN,RXIEN,11)),"^",1) | 
|---|
| 58 | .S $P(^TMP($J,IBTMPARR),"^",12)="" | 
|---|
| 59 | .S $P(^TMP($J,IBTMPARR),"^",13)=$P($G(^TMP($J,LIST,PDFN,RXIEN,1)),"^",1) | 
|---|
| 60 | .S $P(^TMP($J,IBTMPARR),"^",14)="" | 
|---|
| 61 | .S $P(^TMP($J,IBTMPARR),"^",15)="" | 
|---|
| 62 | .S $P(^TMP($J,IBTMPARR),"^",16)=$P($G(^TMP($J,LIST,PDFN,RXIEN,16)),"^",1) | 
|---|
| 63 | .S $P(^TMP($J,IBTMPARR),"^",17)=$G(^TMP($J,LIST,PDFN,RXIEN,17)) | 
|---|
| 64 | .S $P(^TMP($J,IBTMPARR),"^",18)=$G(^TMP($J,LIST,PDFN,RXIEN,10.6)) | 
|---|
| 65 | .S $P(^TMP($J,IBTMPARR),"^",19)=$P($G(^TMP($J,LIST,PDFN,RXIEN,10.3)),"^",1) | 
|---|
| 66 | .S ZEROOUT=^TMP($J,IBTMPARR) | 
|---|
| 67 | .K ^TMP($J,IBTMPARR) | 
|---|
| 68 | E  S ZEROOUT="" | 
|---|
| 69 | K ^TMP($J,LIST) | 
|---|
| 70 | Q ZEROOUT | 
|---|
| 71 | RXSEC(PDFN,RXIEN) ;Returns second node of file 52 | 
|---|
| 72 | N SECOUT,LIST,IBTMPARR,NODE | 
|---|
| 73 | I '$G(PDFN) S SECOUT="" Q SECOUT | 
|---|
| 74 | I '$G(RXIEN) S SECOUT="" Q SECOUT | 
|---|
| 75 | S NODE=2 | 
|---|
| 76 | S LIST="IBSECARR" | 
|---|
| 77 | S IBTMPARR="IBTMPSEC" | 
|---|
| 78 | D RX^PSO52API(PDFN,LIST,RXIEN,,NODE,,) | 
|---|
| 79 | I $P(^TMP($J,LIST,PDFN,0),"^",1)>0  D | 
|---|
| 80 | .S $P(^TMP($J,IBTMPARR),"^",1)=$P($G(^TMP($J,LIST,PDFN,RXIEN,21)),"^",1) | 
|---|
| 81 | .S $P(^TMP($J,IBTMPARR),"^",2)=$P($G(^TMP($J,LIST,PDFN,RXIEN,22)),"^",1) | 
|---|
| 82 | .S $P(^TMP($J,IBTMPARR),"^",3)=$P($G(^TMP($J,LIST,PDFN,RXIEN,23)),"^",1) | 
|---|
| 83 | .S $P(^TMP($J,IBTMPARR),"^",4)=$G(^TMP($J,LIST,PDFN,RXIEN,24)) | 
|---|
| 84 | .S $P(^TMP($J,IBTMPARR),"^",5)=$P($G(^TMP($J,LIST,PDFN,RXIEN,25)),"^",1) | 
|---|
| 85 | .S $P(^TMP($J,IBTMPARR),"^",6)=$P($G(^TMP($J,LIST,PDFN,RXIEN,26)),"^",1) | 
|---|
| 86 | .S $P(^TMP($J,IBTMPARR),"^",7)=$G(^TMP($J,LIST,PDFN,RXIEN,27)) | 
|---|
| 87 | .S $P(^TMP($J,IBTMPARR),"^",8)=$G(^TMP($J,LIST,PDFN,RXIEN,28)) | 
|---|
| 88 | .S $P(^TMP($J,IBTMPARR),"^",9)=$P($G(^TMP($J,LIST,PDFN,RXIEN,20)),"^",1) | 
|---|
| 89 | .S $P(^TMP($J,IBTMPARR),"^",10)=$P($G(^TMP($J,LIST,PDFN,RXIEN,104)),"^",1) | 
|---|
| 90 | .S $P(^TMP($J,IBTMPARR),"^",11)=$P($G(^TMP($J,LIST,PDFN,RXIEN,29)),"^",1) | 
|---|
| 91 | .S $P(^TMP($J,IBTMPARR),"^",12)=$G(^TMP($J,LIST,PDFN,RXIEN,30)) | 
|---|
| 92 | .S $P(^TMP($J,IBTMPARR),"^",13)=$P($G(^TMP($J,LIST,PDFN,RXIEN,31)),"^",1) | 
|---|
| 93 | .S $P(^TMP($J,IBTMPARR),"^",14)=$P($G(^TMP($J,LIST,PDFN,RXIEN,32.2)),"^",1) | 
|---|
| 94 | .S $P(^TMP($J,IBTMPARR),"^",15)=$P($G(^TMP($J,LIST,PDFN,RXIEN,32.1)),"^",1) | 
|---|
| 95 | .S $P(^TMP($J,IBTMPARR),"^",16)=$G(^TMP($J,LIST,PDFN,RXIEN,32.3)) | 
|---|
| 96 | .S SECOUT=^TMP($J,IBTMPARR) | 
|---|
| 97 | .K ^TMP($J,IBTMPARR) | 
|---|
| 98 | E  S SECOUT="" | 
|---|
| 99 | K ^TMP($J,LIST) | 
|---|
| 100 | Q SECOUT | 
|---|
| 101 | RX3(PDFN,RXIEN) ;Returns third node of file 52 | 
|---|
| 102 | N THRDOUT,LIST,IBTMPARR,NODE | 
|---|
| 103 | I '$G(PDFN) S THRDOUT="" Q THRDOUT | 
|---|
| 104 | I '$G(RXIEN) S THRDOUT="" Q THRDOUT | 
|---|
| 105 | S NODE=3 | 
|---|
| 106 | S LIST="IBARRTHRD" | 
|---|
| 107 | S IBTMPARR="IBTMP3" | 
|---|
| 108 | D RX^PSO52API(PDFN,LIST,RXIEN,,NODE,,) | 
|---|
| 109 | I $P(^TMP($J,LIST,PDFN,0),"^",1)>0  D | 
|---|
| 110 | .S $P(^TMP($J,IBTMPARR),"^",1)=$P($G(^TMP($J,LIST,PDFN,RXIEN,101)),"^",1) | 
|---|
| 111 | .S $P(^TMP($J,IBTMPARR),"^",2)=$P($G(^TMP($J,LIST,PDFN,RXIEN,102)),"^",1) | 
|---|
| 112 | .S $P(^TMP($J,IBTMPARR),"^",3)=$P($G(^TMP($J,LIST,PDFN,RXIEN,109)),"^",1) | 
|---|
| 113 | .S $P(^TMP($J,IBTMPARR),"^",4)=$P($G(^TMP($J,LIST,PDFN,RXIEN,102.1)),"^",1) | 
|---|
| 114 | .S $P(^TMP($J,IBTMPARR),"^",5)=$P($G(^TMP($J,LIST,PDFN,RXIEN,26.1)),"^",1) | 
|---|
| 115 | .S $P(^TMP($J,IBTMPARR),"^",6)=$P($G(^TMP($J,LIST,PDFN,RXIEN,34.1)),"^",1) | 
|---|
| 116 | .S $P(^TMP($J,IBTMPARR),"^",7)=$G(^TMP($J,LIST,PDFN,RXIEN,12)) | 
|---|
| 117 | .S $P(^TMP($J,IBTMPARR),"^",8)=$G(^TMP($J,LIST,PDFN,RXIEN,102.2)) | 
|---|
| 118 | .S $P(^TMP($J,IBTMPARR),"^",9)=$G(^TMP($J,LIST,PDFN,RXIEN,112)) | 
|---|
| 119 | .S THRDOUT=^TMP($J,IBTMPARR) | 
|---|
| 120 | .K ^TMP($J,IBTMPARR) | 
|---|
| 121 | E  S THRDOUT="" | 
|---|
| 122 | K ^TMP($J,LIST) | 
|---|
| 123 | Q THRDOUT | 
|---|
| 124 | ZEROSUB(PDFN,RXIEN,RXSUB) ;Returns zero node of subfile 52.1 | 
|---|
| 125 | N ZSUBOUT,LIST,IBTMPARR,NODE | 
|---|
| 126 | I '$G(PDFN) S ZSUBOUT="" Q ZSUBOUT | 
|---|
| 127 | I '$G(RXIEN) S ZSUBOUT="" Q ZSUBOUT | 
|---|
| 128 | I '$G(RXSUB) S ZSUBOUT="" Q ZSUBOUT | 
|---|
| 129 | S NODE="R^^"_RXSUB | 
|---|
| 130 | S LIST="IBSUBARR" | 
|---|
| 131 | S IBTMPARR="IBTMPSUB" | 
|---|
| 132 | D RX^PSO52API(PDFN,LIST,RXIEN,,NODE,,) | 
|---|
| 133 | I $P(^TMP($J,LIST,PDFN,RXIEN,"RF",0),"^",1)>0  D | 
|---|
| 134 | .S $P(^TMP($J,IBTMPARR),"^",1)=$P($G(^TMP($J,LIST,PDFN,RXIEN,"RF",RXSUB,.01)),"^",1) | 
|---|
| 135 | .S $P(^TMP($J,IBTMPARR),"^",2)=$P($G(^TMP($J,LIST,PDFN,RXIEN,"RF",RXSUB,2)),"^",1) | 
|---|
| 136 | .S $P(^TMP($J,IBTMPARR),"^",3)=$G(^TMP($J,LIST,PDFN,RXIEN,"RF",RXSUB,3)) | 
|---|
| 137 | .S $P(^TMP($J,IBTMPARR),"^",4)=$G(^TMP($J,LIST,PDFN,RXIEN,"RF",RXSUB,1)) | 
|---|
| 138 | .S $P(^TMP($J,IBTMPARR),"^",5)=$P($G(^TMP($J,LIST,PDFN,RXIEN,"RF",RXSUB,4)),"^",1) | 
|---|
| 139 | .S $P(^TMP($J,IBTMPARR),"^",6)=$G(^TMP($J,LIST,PDFN,RXIEN,"RF",RXSUB,5)) | 
|---|
| 140 | .S $P(^TMP($J,IBTMPARR),"^",7)=$P($G(^TMP($J,LIST,PDFN,RXIEN,"RF",RXSUB,6)),"^",1) | 
|---|
| 141 | .S $P(^TMP($J,IBTMPARR),"^",8)=$P($G(^TMP($J,LIST,PDFN,RXIEN,"RF",RXSUB,7)),"^",1) | 
|---|
| 142 | .S $P(^TMP($J,IBTMPARR),"^",9)=$P($G(^TMP($J,LIST,PDFN,RXIEN,"RF",RXSUB,8)),"^",1) | 
|---|
| 143 | .S $P(^TMP($J,IBTMPARR),"^",10)=$G(^TMP($J,LIST,PDFN,RXIEN,"RF",RXSUB,1.1)) | 
|---|
| 144 | .S $P(^TMP($J,IBTMPARR),"^",11)=$G(^TMP($J,LIST,PDFN,RXIEN,"RF",RXSUB,1.2)) | 
|---|
| 145 | .S $P(^TMP($J,IBTMPARR),"^",12)="" | 
|---|
| 146 | .S $P(^TMP($J,IBTMPARR),"^",13)="" | 
|---|
| 147 | .S $P(^TMP($J,IBTMPARR),"^",14)=$G(^TMP($J,LIST,PDFN,RXIEN,"RF",RXSUB,12)) | 
|---|
| 148 | .S $P(^TMP($J,IBTMPARR),"^",15)=$P($G(^TMP($J,LIST,PDFN,RXIEN,"RF",RXSUB,13)),"^",1) | 
|---|
| 149 | .S $P(^TMP($J,IBTMPARR),"^",16)=$P($G(^TMP($J,LIST,PDFN,RXIEN,"RF",RXSUB,14)),"^",1) | 
|---|
| 150 | .S $P(^TMP($J,IBTMPARR),"^",17)=$P($G(^TMP($J,LIST,PDFN,RXIEN,"RF",RXSUB,15)),"^",1) | 
|---|
| 151 | .S $P(^TMP($J,IBTMPARR),"^",18)=$P($G(^TMP($J,LIST,PDFN,RXIEN,"RF",RXSUB,17)),"^",1) | 
|---|
| 152 | .S $P(^TMP($J,IBTMPARR),"^",19)=$P($G(^TMP($J,LIST,PDFN,RXIEN,"RF",RXSUB,10.1)),"^",1) | 
|---|
| 153 | .S ZSUBOUT=^TMP($J,IBTMPARR) | 
|---|
| 154 | .K ^TMP($J,IBTMPARR) | 
|---|
| 155 | E  S ZSUBOUT="" | 
|---|
| 156 | K ^TMP($J,LIST) | 
|---|
| 157 | Q ZSUBOUT | 
|---|
| 158 | RFNUM(RXIEN) ; | 
|---|
| 159 | N PDFN,RXSUB,LIST,IBTMPARR,NODE | 
|---|
| 160 | I '$G(RXIEN) S RXSUB="" Q RXSUB | 
|---|
| 161 | S PDFN=$$FILE^IBRXUTL(RXIEN,2) | 
|---|
| 162 | S LIST="IBRFNARR" | 
|---|
| 163 | S IBTMPARR="IBTMPRFN" | 
|---|
| 164 | S NODE="R" | 
|---|
| 165 | D RX^PSO52API(PDFN,LIST,RXIEN,,NODE,,) | 
|---|
| 166 | I $P(^TMP($J,LIST,PDFN,RXIEN,"RF",0),"^",1)>0  D | 
|---|
| 167 | .S RXSUB=^TMP($J,LIST,PDFN,RXIEN,"RF",0) | 
|---|
| 168 | E  S RXSUB="" | 
|---|
| 169 | K ^TMP($J,LIST) | 
|---|
| 170 | Q RXSUB | 
|---|
| 171 | IBND(DFN,RXIEN) ;Returns IB node | 
|---|
| 172 | N IBNDOUT,LIST,NODE,IBTMPARR | 
|---|
| 173 | I '$G(DFN) S IBNDOUT="" Q IBNDOUT | 
|---|
| 174 | I '$G(RXIEN) S IBNDOUT="" Q IBNDOUT | 
|---|
| 175 | S LIST="IBIBNDARR" | 
|---|
| 176 | S NODE="I^O" | 
|---|
| 177 | S IBTMPARR="IBTMPIBND" | 
|---|
| 178 | D RX^PSO52API(DFN,LIST,RXIEN,,NODE,,) | 
|---|
| 179 | I $P(^TMP($J,LIST,DFN,0),"^",1)>0  D | 
|---|
| 180 | .S $P(^TMP($J,IBTMPARR),"^",1)=$P($G(^TMP($J,LIST,DFN,RXIEN,105)),"^",1) | 
|---|
| 181 | .S $P(^TMP($J,IBTMPARR),"^",2)=$P($G(^TMP($J,LIST,DFN,RXIEN,106)),"^",1) | 
|---|
| 182 | .S $P(^TMP($J,IBTMPARR),"^",3)=$G(^TMP($J,LIST,DFN,RXIEN,106.5)) | 
|---|
| 183 | .S $P(^TMP($J,IBTMPARR),"^",4)=$G(^TMP($J,LIST,DFN,RXIEN,106.6)) | 
|---|
| 184 | .S IBNDOUT=^TMP($J,IBTMPARR) | 
|---|
| 185 | .S:IBNDOUT="^^^" IBNDOUT="" | 
|---|
| 186 | .K ^TMP($J,IBTMPARR) | 
|---|
| 187 | E  S IBNDOUT="" | 
|---|
| 188 | K ^TMP($J,LIST) | 
|---|
| 189 | Q IBNDOUT | 
|---|
| 190 | IBNDFL(DFN,RXIEN,RXRFL) ; | 
|---|
| 191 | N IBNDFL,LIST,NODE,IBTMPARR | 
|---|
| 192 | I '$G(DFN) S IBNDFL="" Q IBNDFL | 
|---|
| 193 | I '$G(RXIEN) S IBNDFL="" Q IBNDFL | 
|---|
| 194 | I '$G(RXRFL) S IBNDFL="" Q IBNDFL | 
|---|
| 195 | S LIST="IBIBNDFLARR" | 
|---|
| 196 | S NODE="I^R^"_RXRFL | 
|---|
| 197 | S IBTMPARR="IBTMPIBNDFL" | 
|---|
| 198 | D RX^PSO52API(DFN,LIST,RXIEN,,NODE,,) | 
|---|
| 199 | I ^TMP($J,LIST,DFN,RXIEN,"IB",0)>0  D | 
|---|
| 200 | .S $P(^TMP($J,IBTMPARR),"^",1)=$G(^TMP($J,LIST,DFN,RXIEN,"IB",RXRFL,9)) | 
|---|
| 201 | .S $P(^TMP($J,IBTMPARR),"^",2)=$G(^TMP($J,LIST,DFN,RXIEN,"IB",RXRFL,9.1)) | 
|---|
| 202 | .S IBNDFL=^TMP($J,IBTMPARR) | 
|---|
| 203 | .K ^TMP($J,IBTMPARR) | 
|---|
| 204 | E  S IBNDFL="" | 
|---|
| 205 | K ^TMP($J,LIST) | 
|---|
| 206 | Q IBNDFL | 
|---|
| 207 | RFLNUM(IBRXN,FLDT,IBFLG) ; | 
|---|
| 208 | N NUMOUT,NUM,DFN,LIST,NODE | 
|---|
| 209 | I '$G(IBRXN) S NUMOUT="" Q NUMOUT | 
|---|
| 210 | I '$G(FLDT) S NUMOUT="" Q NUMOUT | 
|---|
| 211 | K ^TMP($J),NUM | 
|---|
| 212 | S NUM=0 | 
|---|
| 213 | S DFN=$$FILE^IBRXUTL(IBRXN,2) | 
|---|
| 214 | S LIST="IBRTMP" | 
|---|
| 215 | S NODE="R^^" | 
|---|
| 216 | D RX^PSO52API(DFN,LIST,IBRXN,,NODE,,) | 
|---|
| 217 | F  S NUM=$O(^TMP($J,LIST,DFN,IBRXN,"RF",NUM)) Q:'NUM  D | 
|---|
| 218 | .I $P(^TMP($J,LIST,DFN,IBRXN,"RF",NUM,.01),"^",1)=FLDT S NUMOUT=NUM | 
|---|
| 219 | K ^TMP($J,LIST) | 
|---|
| 220 | S:'$G(NUMOUT) NUMOUT="" | 
|---|
| 221 | Q NUMOUT | 
|---|