1 | PRCHITX ;WOIFO/LKG-SELECTING ITEMS USED IN LAST 12 MONTHS ;1/27/05 10:56
|
---|
2 | ;;5.1;IFCAP;**75**;OCT 20, 2000
|
---|
3 | ;Per VHA Directive 10-93-142, this routine should not be modified.
|
---|
4 | D EN^DDIOL("^PRCHITX is not a valid entry point.")
|
---|
5 | Q
|
---|
6 | ;Output
|
---|
7 | ;^TMP($J,"I",Item#,0)=PO_Date^PO#^FCP^FSC^NSN^Mf_Part#^Station#^Stakeholder
|
---|
8 | ;^TMP($J,"I",Item#,1)=Vendor_ID^UOP^Pkg_Mult^Stock#^NDC^Contract#
|
---|
9 | ;^TMP($J,"V",Vendor#)=Vendor_Name^TIN^POC^Phone#^Accnt#
|
---|
10 | IN ;Entry point
|
---|
11 | N PRCA,PRCB,PRCDT,PRCFILE,PRCI,PRCJ,PRCPODT,PRCSTAT,PRCITM,PRCDATE,PRCCNT,PRCTRANS,PRCX,PRCY,PRCV,X,X1,X2 K ^TMP($J)
|
---|
12 | S PRCA=0,PRCCNT=0,PRCDT=$$ONEYRAGO,X1=PRCDT,X2=-1 D C^%DTC S PRCDT=X
|
---|
13 | ;Purchase Orders
|
---|
14 | S PRCX=PRCDT
|
---|
15 | F S PRCX=$O(^PRC(442,"AB",PRCX)) Q:PRCX="" D
|
---|
16 | . S PRCA=""
|
---|
17 | . F S PRCA=$O(^PRC(442,"AB",PRCX,PRCA)) Q:+PRCA'=PRCA D
|
---|
18 | . . S PRCPODT=$$GETPODT(PRCA) I '$$DATEGTR(PRCPODT,PRCDT) Q
|
---|
19 | . . Q:'$$MOPOK(PRCA)
|
---|
20 | . . S PRCSTAT=$$GETSTAT(PRCA) Q:'$$STATUSOK(PRCSTAT)
|
---|
21 | . . S PRCB=0
|
---|
22 | . . F S PRCB=$O(^PRC(442,PRCA,2,PRCB)) Q:+PRCB'=PRCB D
|
---|
23 | . . . S PRCITM=$$GETITMID(PRCA,PRCB) Q:PRCITM=""
|
---|
24 | . . . Q:'$$ITEMACT(PRCITM) Q:$$NIFITEM(PRCITM)
|
---|
25 | . . . S PRCDATE=$P($G(^TMP($J,"I",PRCITM,0)),"^") Q:'$$DATEGTR(PRCPODT,PRCDATE)
|
---|
26 | . . . S:'$D(^TMP($J,"I",PRCITM)) PRCCNT=PRCCNT+1
|
---|
27 | . . . S ^TMP($J,"I",PRCITM,0)=PRCPODT_"^"_$$GETPONUM(PRCA)_"^"_$$GETFCP(PRCA)_"^"_$$GETFSC(PRCA,PRCB)_"^"_$$GETNSN(PRCA,PRCB)_"^"_$$GETMPNUM(PRCITM)
|
---|
28 | . . . S ^TMP($J,"I",PRCITM,1)=$$GETVENDR(PRCA)_"^"_$$GETUOP(PRCA,PRCB)_"^"_$$GETPKGM(PRCA,PRCB)_"^"_$$GETSTKNO(PRCA,PRCB)_"^"_$$GETNDC(PRCA,PRCB)_"^"_$$GETCONTR(PRCA,PRCB)
|
---|
29 | S ^TMP($J,"I")=PRCCNT
|
---|
30 | ;Reusable Items
|
---|
31 | S PRCITM=0
|
---|
32 | F S PRCITM=$O(^PRC(441,PRCITM)) Q:+PRCITM'=PRCITM D
|
---|
33 | . Q:$D(^TMP($J,"I",PRCITM)) Q:'$$ITEMACT(PRCITM) Q:'$$REUSABLE(PRCITM) Q:$$NIFITEM(PRCITM)
|
---|
34 | . S PRCCNT=PRCCNT+1,^TMP($J,"I",PRCITM,0)="^^"_$$FCP(PRCITM)_"^"_$$FSC(PRCITM)_"^"_$$NSN(PRCITM)_"^"_$$GETMPNUM(PRCITM)
|
---|
35 | . S PRCI=$$LASTVDR(PRCITM) S:PRCI="" PRCI=$$VDRLSTD(PRCITM)
|
---|
36 | . I PRCI>0 D
|
---|
37 | . . I $P($G(^PRC(440,PRCI,10)),"^",5),$P($G(^PRC(440,PRCI,9)),"^")>0 S PRCV=$P(^(9),"^") I $P($G(^PRC(440,PRCV,10)),"^",5)'=1,$D(^PRC(441,PRCITM,2,PRCV)) S PRCI=PRCV
|
---|
38 | . . S ^TMP($J,"I",PRCITM,1)=PRCI_"^"_$$UOP(PRCITM,PRCI)_"^"_$$PKGMULT(PRCITM,PRCI)_"^"_$$STKNO(PRCITM,PRCI)_"^"_$$NDC(PRCITM,PRCI)_"^"_$$CONTRACT(PRCITM,PRCI)
|
---|
39 | S ^TMP($J,"I")=PRCCNT
|
---|
40 | ;Inventory Transactions
|
---|
41 | S PRCX="",PRCITM="",PRCA="",PRCTRANS=";A;RC;R;U;C;S;E;"_$S(PRCPHYS="Y":"P;",1:"")
|
---|
42 | F S PRCX=$O(^PRCP(445.2,"AD",PRCX)) Q:PRCX="" D
|
---|
43 | . F S PRCITM=$O(^PRCP(445.2,"AD",PRCX,PRCITM)) Q:PRCITM="" D
|
---|
44 | . . Q:$D(^TMP($J,"I",PRCITM)) Q:'$$ITEMACT(PRCITM) Q:$$NIFITEM(PRCITM)
|
---|
45 | . . S PRCA=""
|
---|
46 | . . F S PRCA=$O(^PRCP(445.2,"AD",PRCX,PRCITM,PRCA)) Q:PRCA="" D Q:$D(^TMP($J,"I",PRCITM))
|
---|
47 | . . . S PRCY=$G(^PRCP(445.2,PRCA,0)) Q:PRCY=""
|
---|
48 | . . . Q:PRCTRANS'[(";"_$P(PRCY,"^",4)_";")
|
---|
49 | . . . Q:'$$DATEGTR($P(PRCY,"^",17),PRCDT)
|
---|
50 | . . . S PRCCNT=PRCCNT+1,^TMP($J,"I",PRCITM,0)="^^"_$$FCPINV(PRCA)_"^"_$$FSC(PRCITM)_"^"_$$NSN(PRCITM)_"^"_$$GETMPNUM(PRCITM)
|
---|
51 | . . . S PRCI=$$LASTVDR(PRCITM) S:PRCI="" PRCI=$$INVVNDR(PRCA) S:PRCI="" PRCI=$$VDRLSTD(PRCITM)
|
---|
52 | . . . I PRCI>0 D
|
---|
53 | . . . . I $P($G(^PRC(440,PRCI,10)),"^",5),$P($G(^PRC(440,PRCI,9)),"^")>0 S PRCV=$P(^(9),"^") I $P($G(^PRC(440,PRCV,10)),"^",5)'=1,$D(^PRC(441,PRCITM,2,PRCV)) S PRCI=PRCV
|
---|
54 | . . . . S ^TMP($J,"I",PRCITM,1)=PRCI_"^"_$$UOP(PRCITM,PRCI)_"^"_$$PKGMULT(PRCITM,PRCI)_"^"_$$STKNO(PRCITM,PRCI)_"^"_$$NDC(PRCITM,PRCI)_"^"_$$CONTRACT(PRCITM,PRCI)
|
---|
55 | S ^TMP($J,"I")=PRCCNT
|
---|
56 | ;Case carts and instrument kits - processing items
|
---|
57 | F PRCFILE=445.7,445.8 S PRCJ=0 F S PRCJ=$O(^PRCP(PRCFILE,"B",PRCJ)) Q:PRCJ="" D
|
---|
58 | . Q:'$$ITEMACT(PRCJ) Q:$$NIFITEM(PRCJ)
|
---|
59 | . S PRCITM=0 F S PRCITM=$O(^PRCP(PRCFILE,PRCJ,1,PRCITM)) Q:+PRCITM'=PRCITM D
|
---|
60 | . . Q:$D(^TMP($J,"I",PRCITM)) Q:'$$ITEMACT(PRCITM) Q:$$NIFITEM(PRCITM)
|
---|
61 | . . S PRCCNT=PRCCNT+1,^TMP($J,"I",PRCITM,0)="^^"_$$FCP(PRCITM)_"^"_$$FSC(PRCITM)_"^"_$$NSN(PRCITM)_"^"_$$GETMPNUM(PRCITM)
|
---|
62 | . . S PRCI=$$LASTVDR(PRCITM) S:PRCI="" PRCI=$$VDRLSTD(PRCITM) S:PRCI>0 ^TMP($J,"I",PRCITM,1)=PRCI_"^"_$$UOP(PRCITM,PRCI)_"^"_$$PKGMULT(PRCITM,PRCI)_"^"_$$STKNO(PRCITM,PRCI)_"^"_$$NDC(PRCITM,PRCI)_"^"_$$CONTRACT(PRCITM,PRCI)
|
---|
63 | S ^TMP($J,"I")=PRCCNT
|
---|
64 | ;Compiling vendor info
|
---|
65 | S PRCI="",PRCCNT=0
|
---|
66 | F S PRCI=$O(^TMP($J,"I",PRCI)) Q:PRCI="" D
|
---|
67 | . S X=$P($G(^TMP($J,"I",PRCI,1)),"^") Q:X=""
|
---|
68 | . S:'$D(^TMP($J,"V",X)) ^TMP($J,"V",X)=$$GETVNAME(X)_"^"_$$GETTIN(X)_"^"_$$GETPOC(X)_"^"_$$GETPHONE(X)_"^"_$$ACCNT(X),PRCCNT=PRCCNT+1
|
---|
69 | S ^TMP($J,"V")=PRCCNT
|
---|
70 | Q
|
---|
71 | ONEYRAGO() ;Returns FileMan date of one year ago
|
---|
72 | N X S:'$D(DT) DT=$$DT^XLFDT S X=$E(DT,1,3)-1_$E(DT,4,7)
|
---|
73 | Q X
|
---|
74 | DATEGTR(X,Y) ;Tests if first date is greater than second
|
---|
75 | I X>Y Q 1
|
---|
76 | Q 0
|
---|
77 | GETPONUM(PRCDA) ;Returns PO Number
|
---|
78 | N X S X=$P($G(^PRC(442,PRCDA,0)),"^")
|
---|
79 | Q X
|
---|
80 | GETSTAT(PRCDA) ;Returns Supply Status Order
|
---|
81 | N X S X=$P($G(^PRC(442,PRCDA,7)),"^") I X="" Q X
|
---|
82 | S X=$P($G(^PRCD(442.3,X,0)),"^",2)
|
---|
83 | Q X
|
---|
84 | STATUSOK(X) ;Checks if Supply Status Order value okay for selection
|
---|
85 | I ";;1;5;6;45;"[(";"_X_";") Q 0
|
---|
86 | Q 1
|
---|
87 | GETPODT(PRCDA) ;Returns P.O. Date in FileMan date format
|
---|
88 | Q $P($G(^PRC(442,PRCDA,1)),"^",15)
|
---|
89 | GETFCP(PRCDA) ;Returns Fund Control Point
|
---|
90 | Q $P($G(^PRC(442,PRCDA,0)),"^",3)
|
---|
91 | MOPOK(PRCDA) ;Checks Method of Processing
|
---|
92 | N X S X=$P($G(^PRC(442,PRCDA,0)),"^",2) I X="" Q 0
|
---|
93 | S X=$P($G(^PRCD(442.5,X,0)),"^",2) I X="" Q 0
|
---|
94 | I ";IS;1358;TA;OTA;AR;"[(";"_X_";") Q 0
|
---|
95 | Q 1
|
---|
96 | GETVENDR(PRCDA) ;Returns Vendor ID
|
---|
97 | N X S X=$P($G(^PRC(442,PRCDA,1)),"^")
|
---|
98 | Q X
|
---|
99 | GETITMID(PRCDA,PRCDA1) ;Returns Item Master File Ien
|
---|
100 | N X S X=$P($G(^PRC(442,PRCDA,2,PRCDA1,0)),"^",5)
|
---|
101 | Q X
|
---|
102 | GETUOP(PRCDA,PRCDA1) ;Returns Unit of Purchase
|
---|
103 | N X S X=$P($G(^PRC(442,PRCDA,2,PRCDA1,0)),"^",3) I X="" Q X
|
---|
104 | S X=$P($G(^PRCD(420.5,X,0)),"^")
|
---|
105 | Q X
|
---|
106 | GETPKGM(PRCDA,PRCDA1) ;Returns Packaging Multiple
|
---|
107 | N X S X=$P($G(^PRC(442,PRCDA,2,PRCDA1,0)),"^",12)
|
---|
108 | Q X
|
---|
109 | GETFSC(PRCDA,PRCDA1) ;Returns Federal Supply Classification
|
---|
110 | N X S X=$P($G(^PRC(442,PRCDA,2,PRCDA1,2)),"^",3)
|
---|
111 | I X="" S X=$E($P($G(^PRC(442,PRCDA,2,PRCDA1,0)),"^",13),1,4)
|
---|
112 | Q X
|
---|
113 | GETNSN(PRCDA,PRCDA1) ;Returns National Stock Number
|
---|
114 | N X S X=$P($G(^PRC(442,PRCDA,2,PRCDA1,0)),"^",13)
|
---|
115 | Q X
|
---|
116 | GETSTKNO(PRCDA,PRCDA1) ;Returns Vendor Stock Number
|
---|
117 | N X S X=$P($G(^PRC(442,PRCDA,2,PRCDA1,0)),"^",6)
|
---|
118 | Q X
|
---|
119 | GETNDC(PRCDA,PRCDA1) ;Returns National Drug Code
|
---|
120 | N X S X=$P($G(^PRC(442,PRCDA,2,PRCDA1,0)),"^",15)
|
---|
121 | Q X
|
---|
122 | GETCONTR(PRCDA,PRCDA1) ;Returns Contract/BOA #
|
---|
123 | N X S X=$P($G(^PRC(442,PRCDA,2,PRCDA1,2)),"^",2)
|
---|
124 | Q X
|
---|
125 | ITEMACT(X) ;Checks if item is active
|
---|
126 | I '$D(^PRC(441,X)) Q 0
|
---|
127 | I $P($G(^PRC(441,X,3)),"^")=1 Q 0
|
---|
128 | Q 1
|
---|
129 | GETMPNUM(X) ;Returns Manufacturer Part Number
|
---|
130 | S X=$P($G(^PRC(441,X,3)),"^",5)
|
---|
131 | Q X
|
---|
132 | GETSDESC(X) ;Returns Item Short Description
|
---|
133 | S X=$P($G(^PRC(441,X,0)),"^",2)
|
---|
134 | Q X
|
---|
135 | GETVNAME(X) ;Returns Vendor Name
|
---|
136 | S X=$P($G(^PRC(440,X,0)),"^")
|
---|
137 | Q X
|
---|
138 | GETTIN(X) ;Returns Tax ID Number or Social Security Number
|
---|
139 | S X=$P($G(^PRC(440,X,3)),"^",8)
|
---|
140 | Q X
|
---|
141 | GETPOC(X) ;Returns Vendor Point of Contact
|
---|
142 | S X=$P($G(^PRC(440,X,0)),"^",9)
|
---|
143 | Q X
|
---|
144 | GETPHONE(X) ;Returns Vendor's Phone Number
|
---|
145 | S X=$P($G(^PRC(440,X,0)),"^",10)
|
---|
146 | Q X
|
---|
147 | REUSABLE(PRCDA) ;Returns 1 if item is reusable or 0 if not
|
---|
148 | N X S X=$P($G(^PRC(441,PRCDA,0)),"^",13) S X=$S(X="y":1,1:0)
|
---|
149 | Q X
|
---|
150 | LASTVDR(PRCDA) ;Returns vendor ID
|
---|
151 | N X S X=$P($G(^PRC(441,PRCDA,0)),"^",4)
|
---|
152 | Q X
|
---|
153 | CONTRACT(PRCDA,PRCDA1) ;Returns Contract #
|
---|
154 | N X S X=$P($G(^PRC(441,PRCDA,2,PRCDA1,0)),"^",3)
|
---|
155 | S X=$S(X>0:$P($G(^PRC(440,PRCDA1,4,X,0)),"^"),1:"")
|
---|
156 | Q X
|
---|
157 | STKNO(PRCDA,PRCDA1) ;Returns vendor stock #
|
---|
158 | N X S X=$P($G(^PRC(441,PRCDA,2,PRCDA1,0)),"^",4)
|
---|
159 | Q X
|
---|
160 | UOP(PRCDA,PRCDA1) ;Returns Unit of Purchase
|
---|
161 | N X S X=$P($G(^PRC(441,PRCDA,2,PRCDA1,0)),"^",7)
|
---|
162 | I X'="" S X=$P($G(^PRCD(420.5,X,0)),"^")
|
---|
163 | Q X
|
---|
164 | PKGMULT(PRCDA,PRCDA1) ;Returns Packaging Multiple
|
---|
165 | N X S X=$P($G(^PRC(441,PRCDA,2,PRCDA1,0)),"^",8)
|
---|
166 | Q X
|
---|
167 | NDC(PRCDA,PRCDA1) ;Returns NDC
|
---|
168 | N X S X=$P($G(^PRC(441,PRCDA,2,PRCDA1,0)),"^",5)
|
---|
169 | Q X
|
---|
170 | FSC(PRCDA) ;Returns Federal Supply Classification
|
---|
171 | N X S X=$P($G(^PRC(441,PRCDA,0)),"^",3)
|
---|
172 | I X="" S X=$E($P($G(^PRC(441,PRCDA,0)),"^",5),1,4)
|
---|
173 | Q X
|
---|
174 | NSN(PRCDA) ;Returns National Stock Number
|
---|
175 | N X S X=$P($G(^PRC(441,PRCDA,0)),"^",5)
|
---|
176 | Q X
|
---|
177 | FCP(PRCDA) ;Returns FCP
|
---|
178 | N X,PRCA,PRCB,PRCX,PRCI S PRCI=0,PRCX=""
|
---|
179 | F S PRCI=$O(^PRC(441,PRCDA,4,PRCI)) Q:+PRCI'=PRCI D Q:PRCX'=""
|
---|
180 | . S X=$P($G(^PRC(441,PRCDA,4,PRCI,0)),"^") Q:X=""
|
---|
181 | . S PRCA=+$E(X,1,3),PRCB=+$E(X,4,99)
|
---|
182 | . Q:$P($G(^PRC(420,PRCA,1,PRCB,0)),"^",19)
|
---|
183 | . S PRCX=$P($G(^PRC(420,PRCA,1,PRCB,0)),"^")
|
---|
184 | Q PRCX
|
---|
185 | DATE(X) ;Processes date in VA FileMan format and returns date as 'DD-MON-YYYY'
|
---|
186 | Q:$P(X,".")'?7N ""
|
---|
187 | N Y,Z
|
---|
188 | S Y=X#100,Y=$S(Y>0:$E(100+Y,2,3)_"-",1:"")
|
---|
189 | S Z=$P("JAN;FEB;MAR;APR;MAY;JUN;JUL;AUG;SEP;OCT;NOV;DEC",";",X#10000\100) S:Z'="" Z=Z_"-"
|
---|
190 | S X=Y_Z_(X\10000+1700)
|
---|
191 | Q X
|
---|
192 | GETSTATN() ;Returns station number of VistA installation
|
---|
193 | N X
|
---|
194 | S X=$$GET1^DIQ(4,$$KSP^XUPARAM("INST")_",",99)
|
---|
195 | Q X
|
---|
196 | NIFITEM(X) ;Checks if item already has NIF Item #
|
---|
197 | N Y S Y=0
|
---|
198 | I X>0 S:+$P($G(^PRC(441,X,0)),"^",15)>0 Y=1
|
---|
199 | Q Y
|
---|
200 | ACCNT(X) ;Returns vendor account number
|
---|
201 | N Y S Y=""
|
---|
202 | S:X>0 Y=$P($G(^PRC(440,X,2)),"^")
|
---|
203 | Q Y
|
---|
204 | VDRLSTD(X) ;Returns vendor with highest ID from item's VENDOR multiple
|
---|
205 | N Y S Y=""
|
---|
206 | S:X>0 Y=$O(^PRC(441,X,2,"B",""),-1)
|
---|
207 | Q Y
|
---|
208 | INVVNDR(PRCX) ;Returns inv's mandatory/requested source of item on trxn
|
---|
209 | N Y,PRCINV,PRCY,PRCZ S Y="" Q:PRCX'>0 Y
|
---|
210 | S PRCZ=$G(^PRCP(445.2,PRCX,0)),PRCY=$P(PRCZ,"^",5) Q:PRCY'>0 Y
|
---|
211 | S PRCINV=$P(PRCZ,"^"),PRCZ="" S:PRCINV>0 PRCZ=$P($G(^PRCP(445,PRCINV,1,PRCY,0)),"^",12)
|
---|
212 | I $P(PRCZ,";",2)="PRC(440," S PRCZ=$P(PRCZ,";") S:PRCZ>0 Y=$S($P($G(^PRC(440,PRCZ,0)),"^",11)'="S":PRCZ,1:"")
|
---|
213 | Q Y
|
---|
214 | FCPINV(PRCX) ;Get FCP for Inv Transaction
|
---|
215 | N Y S Y="" Q:PRCX'>0 Y
|
---|
216 | N PRCINV S PRCINV=$P($G(^PRCP(445.2,PRCX,0)),"^")
|
---|
217 | I PRCINV>0 D
|
---|
218 | . N PRCSTA,PRCDA S PRCDA="",PRCSTA=$P($G(^PRCP(445,PRCINV,0)),"-")
|
---|
219 | . S:PRCSTA'="" PRCDA=$O(^PRC(420,"AE",PRCSTA,PRCINV,""))
|
---|
220 | . S:PRCDA>0 Y=$P($G(^PRC(420,PRCSTA,1,PRCDA,0)),"^")
|
---|
221 | Q Y
|
---|