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