| 1 | RMPRPIX6 ;HINCIO/ODJ - PIP TRANSACTION FILE 661.6 API ;3/8/01 | 
|---|
| 2 | ;;3.0;PROSTHETICS;**61**;Feb 09, 1996 | 
|---|
| 3 | Q | 
|---|
| 4 | ; | 
|---|
| 5 | ;***** CRE - create new 661.6 PIP Transaction record | 
|---|
| 6 | ; | 
|---|
| 7 | ; Inputs: | 
|---|
| 8 | ;    RMPR616  - Transaction array (661.6) | 
|---|
| 9 | ;               (elements mandatory unless noted) | 
|---|
| 10 | ;    RMPR616("DATE&TIME")       - (optional) usually should not be set | 
|---|
| 11 | ;                                 but if it is RMPR616("SEQUENCE") | 
|---|
| 12 | ;                                 must also be set | 
|---|
| 13 | ;    RMPR616("SEQUENCE")        - (optional) but see above | 
|---|
| 14 | ;                                 should normally be one | 
|---|
| 15 | ;    RMPR616("VENDOR")          - Vendor ien | 
|---|
| 16 | ;    RMPR616("LOCATION")        - Location ien (ptr 661.5) | 
|---|
| 17 | ;    RMPR616("TRAN TYPE")       - Transaction Type code (see 661.6 spec) | 
|---|
| 18 | ;    RMPR616("QUANTITY")        - Quantity | 
|---|
| 19 | ;    RMPR616("VALUE")           - $ Value of transaction | 
|---|
| 20 | ;    RMPR616("COMMENT")         - Coment | 
|---|
| 21 | ;    RMPR616("USER")            - User ien (ptr VA(200,) | 
|---|
| 22 | ; | 
|---|
| 23 | ;    RMPR6111 - HCPCS Item array (661.11) (all elements mandatory) | 
|---|
| 24 | ;    RMPR6111("STATION") - Station ien (ptr ^DIC(4,) | 
|---|
| 25 | ;    RMPR6111("HCPCS")   - HCPCS code | 
|---|
| 26 | ;    RMPR6111("ITEM")    - HCPCS Item number | 
|---|
| 27 | ; | 
|---|
| 28 | ; Outputs: | 
|---|
| 29 | ;    RMPR616("IEN") - ien of created Transaction | 
|---|
| 30 | ;    RMPRERR        - error code returned by function | 
|---|
| 31 | ;                      0 - no problems | 
|---|
| 32 | ;                      1 - FM problems creating 661.6 rec. | 
|---|
| 33 | ; | 
|---|
| 34 | CRE(RMPR616,RMPR6111) ; | 
|---|
| 35 | N RMPRRET,RMPRIENA,RMPRFDA,RMPRFME,X,Y,DA | 
|---|
| 36 | S RMPRRET=0 | 
|---|
| 37 | ; | 
|---|
| 38 | ; Get DATE&TIME for transaction and lock the file | 
|---|
| 39 | I $G(RMPR616("DATE&TIME"))="" G CRE0 | 
|---|
| 40 | L +^RMPR(661.6,"XHDS",RMPR6111("HCPCS"),RMPR616("DATE&TIME")) | 
|---|
| 41 | I $D(^RMPR(661.6,"XHDS",RMPR6111("HCPCS"),RMPR616("DATE&TIME"),RMPR616("SEQUENCE"))) L -^RMPR(661.6,"XHDS",RMPR6111("HCPCS"),RMPR616("DATE&TIME")) G CRE0 | 
|---|
| 42 | G CRE1 | 
|---|
| 43 | CRE0 S RMPR616("DATE&TIME")="" | 
|---|
| 44 | F  D  Q:RMPR616("DATE&TIME")'="" | 
|---|
| 45 | . D NOW^%DTC | 
|---|
| 46 | . I $D(^RMPR(661.6,"XHDS",RMPR6111("HCPCS"),%,1)) H (1+$R(3)) Q | 
|---|
| 47 | . L +^RMPR(661.6,"XHDS",RMPR6111("HCPCS"),%):0 E  H (1+$R(3)) Q | 
|---|
| 48 | . S RMPR616("DATE&TIME")=% | 
|---|
| 49 | . S RMPR616("SEQUENCE")=1 | 
|---|
| 50 | . Q | 
|---|
| 51 | ; | 
|---|
| 52 | ; Create the transaction | 
|---|
| 53 | CRE1 S RMPRFDA(661.6,"+1,",.01)=RMPR6111("HCPCS") | 
|---|
| 54 | S RMPRFDA(661.6,"+1,",2)=RMPR616("DATE&TIME") | 
|---|
| 55 | S RMPRFDA(661.6,"+1,",3)=RMPR616("SEQUENCE") | 
|---|
| 56 | S RMPRFDA(661.6,"+1,",4)=RMPR616("TRAN TYPE") | 
|---|
| 57 | S RMPRFDA(661.6,"+1,",5)=RMPR616("QUANTITY") | 
|---|
| 58 | S RMPRFDA(661.6,"+1,",6)=RMPR616("VALUE") | 
|---|
| 59 | S RMPRFDA(661.6,"+1,",8)=RMPR616("COMMENT") | 
|---|
| 60 | S RMPRFDA(661.6,"+1,",9)=RMPR616("USER") | 
|---|
| 61 | S RMPRFDA(661.6,"+1,",11)=RMPR6111("ITEM") | 
|---|
| 62 | S RMPRFDA(661.6,"+1,",12)=RMPR616("VENDOR") | 
|---|
| 63 | S RMPRFDA(661.6,"+1,",13)=RMPR6111("STATION") | 
|---|
| 64 | S RMPRFDA(661.6,"+1,",14)=RMPR616("LOCATION") | 
|---|
| 65 | D UPDATE^DIE("","RMPRFDA","RMPRIENA","RMPRFME") | 
|---|
| 66 | L -^RMPR(661.6,"XHDS",RMPR6111("HCPCS"),RMPR616("DATE&TIME")) | 
|---|
| 67 | I $D(RMPRFME) S RMPRRET=1 G CREX | 
|---|
| 68 | S RMPR616("IEN")=RMPRIENA(1) | 
|---|
| 69 | CREX Q RMPRRET | 
|---|
| 70 | ; | 
|---|
| 71 | ;***** UPD - update existing Transaction (661.6) record | 
|---|
| 72 | ; | 
|---|
| 73 | ; Inputs: | 
|---|
| 74 | ;    RMPR616  - Transaction array (see above for CRE) | 
|---|
| 75 | ;    RMPR616("IEN") - ien of rec to update (mandatory) | 
|---|
| 76 | ;               all other elements optional but DATE&TIME | 
|---|
| 77 | ;               and SEQUENCE cannot be changed | 
|---|
| 78 | ;    RMPR6111 - HCPCS array (see above for CRE) | 
|---|
| 79 | ;               all elements optional | 
|---|
| 80 | ; | 
|---|
| 81 | ; Outputs: | 
|---|
| 82 | ;    RMPRRET - error code returned by function | 
|---|
| 83 | ;               0 - no problems | 
|---|
| 84 | ;               1 - invalid RMPR616("IEN") | 
|---|
| 85 | ;               2 - FM problem with update | 
|---|
| 86 | ; | 
|---|
| 87 | UPD(RMPR616,RMPR6111) ; | 
|---|
| 88 | N RMPRRET,RMPRI,RMPRFDA,RMPRFME,X,Y,DA | 
|---|
| 89 | S RMPRRET=0 | 
|---|
| 90 | I $G(RMPR616("IEN"))="" S RMPRRET=1 G UPDX | 
|---|
| 91 | S RMPRI=RMPR616("IEN")_"," | 
|---|
| 92 | S:$D(RMPR6111("HCPCS")) RMPRFDA(661.6,RMPRI,.01)=RMPR6111("HCPCS") | 
|---|
| 93 | S:$D(RMPR616("QUANTITY")) RMPRFDA(661.6,RMPRI,5)=RMPR616("QUANTITY") | 
|---|
| 94 | S:$D(RMPR616("VALUE")) RMPRFDA(661.6,RMPRI,6)=RMPR616("VALUE") | 
|---|
| 95 | S:$D(RMPR616("COMMENT")) RMPRFDA(661.6,RMPRI,8)=RMPR616("COMMENT") | 
|---|
| 96 | S:$D(RMPR616("USER")) RMPRFDA(661.6,RMPRI,9)=RMPR616("USER") | 
|---|
| 97 | S:$D(RMPR6111("ITEM")) RMPRFDA(661.6,RMPRI,11)=RMPR6111("ITEM") | 
|---|
| 98 | S:$D(RMPR616("VENDOR")) RMPRFDA(661.6,RMPRI,12)=RMPR616("VENDOR") | 
|---|
| 99 | S:$D(RMPR616("LOCATION")) RMPRFDA(661.6,RMPRI,14)=RMPR616("LOCATION") | 
|---|
| 100 | D:$D(RMPRFDA) FILE^DIE("","RMPRFDA","RMPRFME") | 
|---|
| 101 | I $D(RMPRFME) S RMPRRET=2 G UPDX | 
|---|
| 102 | UPDX Q RMPRRET | 
|---|
| 103 | ; | 
|---|
| 104 | ;***** GET - read in 661.6 record | 
|---|
| 105 | GET(RMPR) ; | 
|---|
| 106 | N RMPRRET,RMPRFME,RMPRIEN,RMPRKEY,RMPRERR,RMPROUP,X,Y,DA,RMPREOF | 
|---|
| 107 | S RMPRRET=0 | 
|---|
| 108 | I $G(RMPR("IEN"))="" D | 
|---|
| 109 | . I $G(RMPR("HCPCS"))="" S RMPRRET=1 Q | 
|---|
| 110 | . I $G(RMPR("DATE&TIME"))="" S RMPRRET=2 Q | 
|---|
| 111 | . S RMPRKEY("HCPCS")=RMPR("HCPCS") | 
|---|
| 112 | . S RMPRKEY("DATE&TIME")=RMPR("DATE&TIME") | 
|---|
| 113 | . S RMPRERR=$$NEXT^RMPRPIXA(.RMPRKEY,"XHDS","",-1,,.RMPREOF) | 
|---|
| 114 | . I RMPRERR S RMPRRET=3 Q | 
|---|
| 115 | . I '$D(RMPRKEY("SEQUENCE")) S RMPRRET=1 Q | 
|---|
| 116 | . I RMPRKEY("SEQUENCE")'=1 S RMPRRET=4 Q | 
|---|
| 117 | . S RMPR("IEN")=RMPRKEY("IEN") | 
|---|
| 118 | . Q | 
|---|
| 119 | I RMPRRET G GETX | 
|---|
| 120 | S RMPRIEN=RMPR("IEN")_"," | 
|---|
| 121 | D GETS^DIQ(661.6,RMPRIEN,"*","","RMPROUP","RMPRFME") | 
|---|
| 122 | I $D(RMPRFME) S RMPRRET=5 G GETX | 
|---|
| 123 | S RMPR("HCPCS")=RMPROUP(661.6,RMPRIEN,.01) | 
|---|
| 124 | S RMPR("DATE&TIME")=RMPROUP(661.6,RMPRIEN,2) | 
|---|
| 125 | S RMPR("DATE")=$P(RMPR("DATE&TIME"),"@",1) | 
|---|
| 126 | S RMPR("TIME")=$P(RMPR("DATE&TIME"),"@",2) | 
|---|
| 127 | S RMPR("SEQUENCE")=RMPROUP(661.6,RMPRIEN,3) | 
|---|
| 128 | S RMPR("TRAN TYPE")=RMPROUP(661.6,RMPRIEN,4) | 
|---|
| 129 | S RMPR("QUANTITY")=RMPROUP(661.6,RMPRIEN,5) | 
|---|
| 130 | S RMPR("VALUE")=RMPROUP(661.6,RMPRIEN,6) | 
|---|
| 131 | S RMPR("COMMENT")=RMPROUP(661.6,RMPRIEN,8) | 
|---|
| 132 | S RMPR("USER")=RMPROUP(661.6,RMPRIEN,9) | 
|---|
| 133 | S RMPR("ITEM")=RMPROUP(661.6,RMPRIEN,11) | 
|---|
| 134 | S RMPR("VENDOR")=RMPROUP(661.6,RMPRIEN,12) | 
|---|
| 135 | S RMPR("STATION")=RMPROUP(661.6,RMPRIEN,13) | 
|---|
| 136 | S RMPR("LOCATION")=RMPROUP(661.6,RMPRIEN,14) | 
|---|
| 137 | GETX Q RMPRRET | 
|---|
| 138 | ; | 
|---|
| 139 | ;***** ETOI - convert external to internal form | 
|---|
| 140 | ETOI(RMPRE,RMPRI) ; | 
|---|
| 141 | N RMPRFDA,RMPRIEN,RMPRFDI,RMPRFME,RMPRERR | 
|---|
| 142 | S RMPRERR=0 | 
|---|
| 143 | S RMPRIEN=RMPRE("IEN")_"," | 
|---|
| 144 | D GETS^DIQ(661.6,RMPRIEN,"*","I","RMPRFDI","RMPRFME") | 
|---|
| 145 | I $D(RMPRFME) S RMPRERR=1 G ETOIX | 
|---|
| 146 | S RMPRI("IEN")=RMPRE("IEN") | 
|---|
| 147 | S RMPRI("HCPCS")=RMPRFDI(661.6,RMPRIEN,.01,"I") | 
|---|
| 148 | S RMPRI("DATE&TIME")=RMPRFDI(661.6,RMPRIEN,2,"I") | 
|---|
| 149 | S RMPRI("DATE")=$P(RMPRI("DATE&TIME"),".",1) | 
|---|
| 150 | S RMPRI("TIME")=$P(RMPRI("DATE&TIME"),".",2) | 
|---|
| 151 | S RMPRI("SEQUENCE")=RMPRFDI(661.6,RMPRIEN,3,"I") | 
|---|
| 152 | S RMPRI("TRAN TYPE")=RMPRFDI(661.6,RMPRIEN,4,"I") | 
|---|
| 153 | S RMPRI("QUANTITY")=RMPRFDI(661.6,RMPRIEN,5,"I") | 
|---|
| 154 | S RMPRI("VALUE")=RMPRFDI(661.6,RMPRIEN,6,"I") | 
|---|
| 155 | S RMPRI("COMMENT")=RMPRFDI(661.6,RMPRIEN,8,"I") | 
|---|
| 156 | S RMPRI("USER")=RMPRFDI(661.6,RMPRIEN,9,"I") | 
|---|
| 157 | S RMPRI("ITEM")=RMPRFDI(661.6,RMPRIEN,11,"I") | 
|---|
| 158 | S RMPRI("VENDOR")=RMPRFDI(661.6,RMPRIEN,12,"I") | 
|---|
| 159 | S RMPRI("STATION")=RMPRFDI(661.6,RMPRIEN,13,"I") | 
|---|
| 160 | S RMPRI("LOCATION")=RMPRFDI(661.6,RMPRIEN,14,"I") | 
|---|
| 161 | ETOIX Q RMPRERR | 
|---|
| 162 | ; | 
|---|
| 163 | ; TFLOW - sets RMPR("TRAN FLOW") | 
|---|
| 164 | TFLOW(RMPR) ; | 
|---|
| 165 | N RMPRFDA,RMPRIEN,RMPRFDI,RMPRFME,RMPRERR,RMPRTYP | 
|---|
| 166 | S RMPRERR=0 | 
|---|
| 167 | S RMPRIEN=RMPR("IEN")_"," | 
|---|
| 168 | S RMPRFDA(661.6,RMPRIEN,4)=RMPR("TRAN TYPE") | 
|---|
| 169 | D VALS^DIE("","RMPRFDA","RMPRFDI","RMPRFME") | 
|---|
| 170 | I $D(RMPRFME) S RMPRERR=1 G TFLOWX | 
|---|
| 171 | S RMPRTYP=","_RMPRFDI(661.6,RMPRIEN,4)_"," | 
|---|
| 172 | S RMPR("TRAN FLOW")="" | 
|---|
| 173 | I ",1,8,"[RMPRTYP S RMPR("TRAN FLOW")="+" | 
|---|
| 174 | I ",2,7,"[RMPRTYP S RMPR("TRAN FLOW")="" | 
|---|
| 175 | I ",3,4,5,6,"[RMPRTYP S RMPR("TRAN FLOW")="-" | 
|---|
| 176 | I ",9,"[RMPRTYP S RMPR("TRAN FLOW")="=" | 
|---|
| 177 | TFLOWX Q RMPRERR | 
|---|
| 178 | ; | 
|---|
| 179 | ; DTIEN - sets internal form of DATE/TIME | 
|---|
| 180 | DTIEN(RMPR) ; | 
|---|
| 181 | N RMPRFDA,RMPRIEN,RMPRFDI,RMPRFME,RMPRERR | 
|---|
| 182 | S RMPRERR=0 | 
|---|
| 183 | S RMPRIEN=RMPR("IEN")_"," | 
|---|
| 184 | D GETS^DIQ(661.6,RMPRIEN,"*","I","RMPRFDI","RMPRFME") | 
|---|
| 185 | S RMPR("DATE&TIME")=RMPRFDI(661.6,RMPRIEN,2,"I") | 
|---|
| 186 | Q RMPRERR | 
|---|
| 187 | ; | 
|---|
| 188 | ; STNIEN - sets RMPR("STATION IEN") | 
|---|
| 189 | STNIEN(RMPR) ; | 
|---|
| 190 | N RMPRFDA,RMPRIEN,RMPRFDI,RMPRFME,RMPRERR | 
|---|
| 191 | S RMPRERR=0 | 
|---|
| 192 | S RMPRIEN=RMPR("IEN")_"," | 
|---|
| 193 | D GETS^DIQ(661.6,RMPRIEN,"*","I","RMPRFDI","RMPRFME") | 
|---|
| 194 | I $D(RMPRFME) S RMPRERR=1 G STNIENX | 
|---|
| 195 | S RMPR("STATION IEN")=RMPRFDI(661.6,RMPRIEN,13,"I") | 
|---|
| 196 | STNIENX Q RMPRERR | 
|---|
| 197 | ; | 
|---|
| 198 | ; VNDIEN - sets RMPR("VENDOR IEN") | 
|---|
| 199 | VNDIEN(RMPR) ; | 
|---|
| 200 | N RMPRFDA,RMPRIEN,RMPRFDI,RMPRFME,RMPRERR | 
|---|
| 201 | S RMPRERR=0 | 
|---|
| 202 | I '$D(RMPR("IEN")) W !!,"*** MISSING POINTER TO VENDOR FILE, PLEASE CHECK FILE #661.11 !!!",! S RMPRERR=1 G VNDIENX | 
|---|
| 203 | S RMPRIEN=RMPR("IEN")_"," | 
|---|
| 204 | D GETS^DIQ(661.6,RMPRIEN,"12","I","RMPRFDI","RMPRFME") | 
|---|
| 205 | I $D(RMPRFME) S RMPRERR=1 G VNDIENX | 
|---|
| 206 | S RMPR("VENDOR IEN")=RMPRFDI(661.6,RMPRIEN,12,"I") | 
|---|
| 207 | VNDIENX Q RMPRERR | 
|---|
| 208 | ; | 
|---|
| 209 | ; DEL - Delete a record | 
|---|
| 210 | DEL(RMPR6) ; | 
|---|
| 211 | N RMPRFDA,RMPRFME,RMPRERR,RMPRIEN,X,Y,DA | 
|---|
| 212 | S RMPRERR=0 | 
|---|
| 213 | I $G(RMPR6("IEN"))="" S RMPRERR=1 G DELX | 
|---|
| 214 | S RMPRIEN=RMPR6("IEN")_"," | 
|---|
| 215 | S RMPRFDA(661.6,RMPRIEN,.01)="@" | 
|---|
| 216 | D FILE^DIE("","RMPRFDA","RMPRFME") | 
|---|
| 217 | I $D(RMPRFME) S RMPRERR=1 | 
|---|
| 218 | DELX Q RMPRERR | 
|---|
| 219 | ; | 
|---|
| 220 | ; Get the ien for a 2319 patient stock issue record in file 660 | 
|---|
| 221 | IEN60(RMPR6,RMPR60) ; | 
|---|
| 222 | N RMPRERR,RMPRIEN | 
|---|
| 223 | S RMPRERR=0 | 
|---|
| 224 | I $G(RMPR6("IEN"))="" S RMPRERR=1 G IEN60X | 
|---|
| 225 | S RMPRIEN=$O(^RMPR(661.63,"B",RMPR6("IEN"),"")) | 
|---|
| 226 | I RMPRIEN="" S RMPRERR=2 G IEN60X | 
|---|
| 227 | S RMPR60("IEN")=$P($G(^RMPR(661.63,RMPRIEN,0)),"^",2) | 
|---|
| 228 | IEN60X Q RMPRERR | 
|---|