- PRCHITX ;WOIFO/LKG-SELECTING ITEMS USED IN LAST 12 MONTHS ;1/27/05 10:56
- ;;5.1;IFCAP;**75**;OCT 20, 2000
- ;Per VHA Directive 10-93-142, this routine should not be modified.
- D EN^DDIOL("^PRCHITX is not a valid entry point.")
- Q
- ;Output
- ;^TMP($J,"I",Item#,0)=PO_Date^PO#^FCP^FSC^NSN^Mf_Part#^Station#^Stakeholder
- ;^TMP($J,"I",Item#,1)=Vendor_ID^UOP^Pkg_Mult^Stock#^NDC^Contract#
- ;^TMP($J,"V",Vendor#)=Vendor_Name^TIN^POC^Phone#^Accnt#
- IN ;Entry point
- N PRCA,PRCB,PRCDT,PRCFILE,PRCI,PRCJ,PRCPODT,PRCSTAT,PRCITM,PRCDATE,PRCCNT,PRCTRANS,PRCX,PRCY,PRCV,X,X1,X2 K ^TMP($J)
- S PRCA=0,PRCCNT=0,PRCDT=$$ONEYRAGO,X1=PRCDT,X2=-1 D C^%DTC S PRCDT=X
- ;Purchase Orders
- S PRCX=PRCDT
- F S PRCX=$O(^PRC(442,"AB",PRCX)) Q:PRCX="" D
- . S PRCA=""
- . F S PRCA=$O(^PRC(442,"AB",PRCX,PRCA)) Q:+PRCA'=PRCA D
- . . S PRCPODT=$$GETPODT(PRCA) I '$$DATEGTR(PRCPODT,PRCDT) Q
- . . Q:'$$MOPOK(PRCA)
- . . S PRCSTAT=$$GETSTAT(PRCA) Q:'$$STATUSOK(PRCSTAT)
- . . S PRCB=0
- . . F S PRCB=$O(^PRC(442,PRCA,2,PRCB)) Q:+PRCB'=PRCB D
- . . . S PRCITM=$$GETITMID(PRCA,PRCB) Q:PRCITM=""
- . . . Q:'$$ITEMACT(PRCITM) Q:$$NIFITEM(PRCITM)
- . . . S PRCDATE=$P($G(^TMP($J,"I",PRCITM,0)),"^") Q:'$$DATEGTR(PRCPODT,PRCDATE)
- . . . S:'$D(^TMP($J,"I",PRCITM)) PRCCNT=PRCCNT+1
- . . . S ^TMP($J,"I",PRCITM,0)=PRCPODT_"^"_$$GETPONUM(PRCA)_"^"_$$GETFCP(PRCA)_"^"_$$GETFSC(PRCA,PRCB)_"^"_$$GETNSN(PRCA,PRCB)_"^"_$$GETMPNUM(PRCITM)
- . . . S ^TMP($J,"I",PRCITM,1)=$$GETVENDR(PRCA)_"^"_$$GETUOP(PRCA,PRCB)_"^"_$$GETPKGM(PRCA,PRCB)_"^"_$$GETSTKNO(PRCA,PRCB)_"^"_$$GETNDC(PRCA,PRCB)_"^"_$$GETCONTR(PRCA,PRCB)
- S ^TMP($J,"I")=PRCCNT
- ;Reusable Items
- S PRCITM=0
- F S PRCITM=$O(^PRC(441,PRCITM)) Q:+PRCITM'=PRCITM D
- . Q:$D(^TMP($J,"I",PRCITM)) Q:'$$ITEMACT(PRCITM) Q:'$$REUSABLE(PRCITM) Q:$$NIFITEM(PRCITM)
- . S PRCCNT=PRCCNT+1,^TMP($J,"I",PRCITM,0)="^^"_$$FCP(PRCITM)_"^"_$$FSC(PRCITM)_"^"_$$NSN(PRCITM)_"^"_$$GETMPNUM(PRCITM)
- . S PRCI=$$LASTVDR(PRCITM) S:PRCI="" PRCI=$$VDRLSTD(PRCITM)
- . I PRCI>0 D
- . . 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
- . . S ^TMP($J,"I",PRCITM,1)=PRCI_"^"_$$UOP(PRCITM,PRCI)_"^"_$$PKGMULT(PRCITM,PRCI)_"^"_$$STKNO(PRCITM,PRCI)_"^"_$$NDC(PRCITM,PRCI)_"^"_$$CONTRACT(PRCITM,PRCI)
- S ^TMP($J,"I")=PRCCNT
- ;Inventory Transactions
- S PRCX="",PRCITM="",PRCA="",PRCTRANS=";A;RC;R;U;C;S;E;"_$S(PRCPHYS="Y":"P;",1:"")
- F S PRCX=$O(^PRCP(445.2,"AD",PRCX)) Q:PRCX="" D
- . F S PRCITM=$O(^PRCP(445.2,"AD",PRCX,PRCITM)) Q:PRCITM="" D
- . . Q:$D(^TMP($J,"I",PRCITM)) Q:'$$ITEMACT(PRCITM) Q:$$NIFITEM(PRCITM)
- . . S PRCA=""
- . . F S PRCA=$O(^PRCP(445.2,"AD",PRCX,PRCITM,PRCA)) Q:PRCA="" D Q:$D(^TMP($J,"I",PRCITM))
- . . . S PRCY=$G(^PRCP(445.2,PRCA,0)) Q:PRCY=""
- . . . Q:PRCTRANS'[(";"_$P(PRCY,"^",4)_";")
- . . . Q:'$$DATEGTR($P(PRCY,"^",17),PRCDT)
- . . . S PRCCNT=PRCCNT+1,^TMP($J,"I",PRCITM,0)="^^"_$$FCPINV(PRCA)_"^"_$$FSC(PRCITM)_"^"_$$NSN(PRCITM)_"^"_$$GETMPNUM(PRCITM)
- . . . S PRCI=$$LASTVDR(PRCITM) S:PRCI="" PRCI=$$INVVNDR(PRCA) S:PRCI="" PRCI=$$VDRLSTD(PRCITM)
- . . . I PRCI>0 D
- . . . . 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
- . . . . S ^TMP($J,"I",PRCITM,1)=PRCI_"^"_$$UOP(PRCITM,PRCI)_"^"_$$PKGMULT(PRCITM,PRCI)_"^"_$$STKNO(PRCITM,PRCI)_"^"_$$NDC(PRCITM,PRCI)_"^"_$$CONTRACT(PRCITM,PRCI)
- S ^TMP($J,"I")=PRCCNT
- ;Case carts and instrument kits - processing items
- F PRCFILE=445.7,445.8 S PRCJ=0 F S PRCJ=$O(^PRCP(PRCFILE,"B",PRCJ)) Q:PRCJ="" D
- . Q:'$$ITEMACT(PRCJ) Q:$$NIFITEM(PRCJ)
- . S PRCITM=0 F S PRCITM=$O(^PRCP(PRCFILE,PRCJ,1,PRCITM)) Q:+PRCITM'=PRCITM D
- . . Q:$D(^TMP($J,"I",PRCITM)) Q:'$$ITEMACT(PRCITM) Q:$$NIFITEM(PRCITM)
- . . S PRCCNT=PRCCNT+1,^TMP($J,"I",PRCITM,0)="^^"_$$FCP(PRCITM)_"^"_$$FSC(PRCITM)_"^"_$$NSN(PRCITM)_"^"_$$GETMPNUM(PRCITM)
- . . 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)
- S ^TMP($J,"I")=PRCCNT
- ;Compiling vendor info
- S PRCI="",PRCCNT=0
- F S PRCI=$O(^TMP($J,"I",PRCI)) Q:PRCI="" D
- . S X=$P($G(^TMP($J,"I",PRCI,1)),"^") Q:X=""
- . S:'$D(^TMP($J,"V",X)) ^TMP($J,"V",X)=$$GETVNAME(X)_"^"_$$GETTIN(X)_"^"_$$GETPOC(X)_"^"_$$GETPHONE(X)_"^"_$$ACCNT(X),PRCCNT=PRCCNT+1
- S ^TMP($J,"V")=PRCCNT
- Q
- ONEYRAGO() ;Returns FileMan date of one year ago
- N X S:'$D(DT) DT=$$DT^XLFDT S X=$E(DT,1,3)-1_$E(DT,4,7)
- Q X
- DATEGTR(X,Y) ;Tests if first date is greater than second
- I X>Y Q 1
- Q 0
- GETPONUM(PRCDA) ;Returns PO Number
- N X S X=$P($G(^PRC(442,PRCDA,0)),"^")
- Q X
- GETSTAT(PRCDA) ;Returns Supply Status Order
- N X S X=$P($G(^PRC(442,PRCDA,7)),"^") I X="" Q X
- S X=$P($G(^PRCD(442.3,X,0)),"^",2)
- Q X
- STATUSOK(X) ;Checks if Supply Status Order value okay for selection
- I ";;1;5;6;45;"[(";"_X_";") Q 0
- Q 1
- GETPODT(PRCDA) ;Returns P.O. Date in FileMan date format
- Q $P($G(^PRC(442,PRCDA,1)),"^",15)
- GETFCP(PRCDA) ;Returns Fund Control Point
- Q $P($G(^PRC(442,PRCDA,0)),"^",3)
- MOPOK(PRCDA) ;Checks Method of Processing
- N X S X=$P($G(^PRC(442,PRCDA,0)),"^",2) I X="" Q 0
- S X=$P($G(^PRCD(442.5,X,0)),"^",2) I X="" Q 0
- I ";IS;1358;TA;OTA;AR;"[(";"_X_";") Q 0
- Q 1
- GETVENDR(PRCDA) ;Returns Vendor ID
- N X S X=$P($G(^PRC(442,PRCDA,1)),"^")
- Q X
- GETITMID(PRCDA,PRCDA1) ;Returns Item Master File Ien
- N X S X=$P($G(^PRC(442,PRCDA,2,PRCDA1,0)),"^",5)
- Q X
- GETUOP(PRCDA,PRCDA1) ;Returns Unit of Purchase
- N X S X=$P($G(^PRC(442,PRCDA,2,PRCDA1,0)),"^",3) I X="" Q X
- S X=$P($G(^PRCD(420.5,X,0)),"^")
- Q X
- GETPKGM(PRCDA,PRCDA1) ;Returns Packaging Multiple
- N X S X=$P($G(^PRC(442,PRCDA,2,PRCDA1,0)),"^",12)
- Q X
- GETFSC(PRCDA,PRCDA1) ;Returns Federal Supply Classification
- N X S X=$P($G(^PRC(442,PRCDA,2,PRCDA1,2)),"^",3)
- I X="" S X=$E($P($G(^PRC(442,PRCDA,2,PRCDA1,0)),"^",13),1,4)
- Q X
- GETNSN(PRCDA,PRCDA1) ;Returns National Stock Number
- N X S X=$P($G(^PRC(442,PRCDA,2,PRCDA1,0)),"^",13)
- Q X
- GETSTKNO(PRCDA,PRCDA1) ;Returns Vendor Stock Number
- N X S X=$P($G(^PRC(442,PRCDA,2,PRCDA1,0)),"^",6)
- Q X
- GETNDC(PRCDA,PRCDA1) ;Returns National Drug Code
- N X S X=$P($G(^PRC(442,PRCDA,2,PRCDA1,0)),"^",15)
- Q X
- GETCONTR(PRCDA,PRCDA1) ;Returns Contract/BOA #
- N X S X=$P($G(^PRC(442,PRCDA,2,PRCDA1,2)),"^",2)
- Q X
- ITEMACT(X) ;Checks if item is active
- I '$D(^PRC(441,X)) Q 0
- I $P($G(^PRC(441,X,3)),"^")=1 Q 0
- Q 1
- GETMPNUM(X) ;Returns Manufacturer Part Number
- S X=$P($G(^PRC(441,X,3)),"^",5)
- Q X
- GETSDESC(X) ;Returns Item Short Description
- S X=$P($G(^PRC(441,X,0)),"^",2)
- Q X
- GETVNAME(X) ;Returns Vendor Name
- S X=$P($G(^PRC(440,X,0)),"^")
- Q X
- GETTIN(X) ;Returns Tax ID Number or Social Security Number
- S X=$P($G(^PRC(440,X,3)),"^",8)
- Q X
- GETPOC(X) ;Returns Vendor Point of Contact
- S X=$P($G(^PRC(440,X,0)),"^",9)
- Q X
- GETPHONE(X) ;Returns Vendor's Phone Number
- S X=$P($G(^PRC(440,X,0)),"^",10)
- Q X
- REUSABLE(PRCDA) ;Returns 1 if item is reusable or 0 if not
- N X S X=$P($G(^PRC(441,PRCDA,0)),"^",13) S X=$S(X="y":1,1:0)
- Q X
- LASTVDR(PRCDA) ;Returns vendor ID
- N X S X=$P($G(^PRC(441,PRCDA,0)),"^",4)
- Q X
- CONTRACT(PRCDA,PRCDA1) ;Returns Contract #
- N X S X=$P($G(^PRC(441,PRCDA,2,PRCDA1,0)),"^",3)
- S X=$S(X>0:$P($G(^PRC(440,PRCDA1,4,X,0)),"^"),1:"")
- Q X
- STKNO(PRCDA,PRCDA1) ;Returns vendor stock #
- N X S X=$P($G(^PRC(441,PRCDA,2,PRCDA1,0)),"^",4)
- Q X
- UOP(PRCDA,PRCDA1) ;Returns Unit of Purchase
- N X S X=$P($G(^PRC(441,PRCDA,2,PRCDA1,0)),"^",7)
- I X'="" S X=$P($G(^PRCD(420.5,X,0)),"^")
- Q X
- PKGMULT(PRCDA,PRCDA1) ;Returns Packaging Multiple
- N X S X=$P($G(^PRC(441,PRCDA,2,PRCDA1,0)),"^",8)
- Q X
- NDC(PRCDA,PRCDA1) ;Returns NDC
- N X S X=$P($G(^PRC(441,PRCDA,2,PRCDA1,0)),"^",5)
- Q X
- FSC(PRCDA) ;Returns Federal Supply Classification
- N X S X=$P($G(^PRC(441,PRCDA,0)),"^",3)
- I X="" S X=$E($P($G(^PRC(441,PRCDA,0)),"^",5),1,4)
- Q X
- NSN(PRCDA) ;Returns National Stock Number
- N X S X=$P($G(^PRC(441,PRCDA,0)),"^",5)
- Q X
- FCP(PRCDA) ;Returns FCP
- N X,PRCA,PRCB,PRCX,PRCI S PRCI=0,PRCX=""
- F S PRCI=$O(^PRC(441,PRCDA,4,PRCI)) Q:+PRCI'=PRCI D Q:PRCX'=""
- . S X=$P($G(^PRC(441,PRCDA,4,PRCI,0)),"^") Q:X=""
- . S PRCA=+$E(X,1,3),PRCB=+$E(X,4,99)
- . Q:$P($G(^PRC(420,PRCA,1,PRCB,0)),"^",19)
- . S PRCX=$P($G(^PRC(420,PRCA,1,PRCB,0)),"^")
- Q PRCX
- DATE(X) ;Processes date in VA FileMan format and returns date as 'DD-MON-YYYY'
- Q:$P(X,".")'?7N ""
- N Y,Z
- S Y=X#100,Y=$S(Y>0:$E(100+Y,2,3)_"-",1:"")
- S Z=$P("JAN;FEB;MAR;APR;MAY;JUN;JUL;AUG;SEP;OCT;NOV;DEC",";",X#10000\100) S:Z'="" Z=Z_"-"
- S X=Y_Z_(X\10000+1700)
- Q X
- GETSTATN() ;Returns station number of VistA installation
- N X
- S X=$$GET1^DIQ(4,$$KSP^XUPARAM("INST")_",",99)
- Q X
- NIFITEM(X) ;Checks if item already has NIF Item #
- N Y S Y=0
- I X>0 S:+$P($G(^PRC(441,X,0)),"^",15)>0 Y=1
- Q Y
- ACCNT(X) ;Returns vendor account number
- N Y S Y=""
- S:X>0 Y=$P($G(^PRC(440,X,2)),"^")
- Q Y
- VDRLSTD(X) ;Returns vendor with highest ID from item's VENDOR multiple
- N Y S Y=""
- S:X>0 Y=$O(^PRC(441,X,2,"B",""),-1)
- Q Y
- INVVNDR(PRCX) ;Returns inv's mandatory/requested source of item on trxn
- N Y,PRCINV,PRCY,PRCZ S Y="" Q:PRCX'>0 Y
- S PRCZ=$G(^PRCP(445.2,PRCX,0)),PRCY=$P(PRCZ,"^",5) Q:PRCY'>0 Y
- S PRCINV=$P(PRCZ,"^"),PRCZ="" S:PRCINV>0 PRCZ=$P($G(^PRCP(445,PRCINV,1,PRCY,0)),"^",12)
- 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:"")
- Q Y
- FCPINV(PRCX) ;Get FCP for Inv Transaction
- N Y S Y="" Q:PRCX'>0 Y
- N PRCINV S PRCINV=$P($G(^PRCP(445.2,PRCX,0)),"^")
- I PRCINV>0 D
- . N PRCSTA,PRCDA S PRCDA="",PRCSTA=$P($G(^PRCP(445,PRCINV,0)),"-")
- . S:PRCSTA'="" PRCDA=$O(^PRC(420,"AE",PRCSTA,PRCINV,""))
- . S:PRCDA>0 Y=$P($G(^PRC(420,PRCSTA,1,PRCDA,0)),"^")
- Q Y
- --- Routine Detail --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HPRCHITX 9915 printed Mar 13, 2025@21:12:54 Page 2
- PRCHITX ;WOIFO/LKG-SELECTING ITEMS USED IN LAST 12 MONTHS ;1/27/05 10:56
- +1 ;;5.1;IFCAP;**75**;OCT 20, 2000
- +2 ;Per VHA Directive 10-93-142, this routine should not be modified.
- +3 DO EN^DDIOL("^PRCHITX is not a valid entry point.")
- +4 QUIT
- +5 ;Output
- +6 ;^TMP($J,"I",Item#,0)=PO_Date^PO#^FCP^FSC^NSN^Mf_Part#^Station#^Stakeholder
- +7 ;^TMP($J,"I",Item#,1)=Vendor_ID^UOP^Pkg_Mult^Stock#^NDC^Contract#
- +8 ;^TMP($J,"V",Vendor#)=Vendor_Name^TIN^POC^Phone#^Accnt#
- IN ;Entry point
- +1 NEW PRCA,PRCB,PRCDT,PRCFILE,PRCI,PRCJ,PRCPODT,PRCSTAT,PRCITM,PRCDATE,PRCCNT,PRCTRANS,PRCX,PRCY,PRCV,X,X1,X2
- KILL ^TMP($JOB)
- +2 SET PRCA=0
- SET PRCCNT=0
- SET PRCDT=$$ONEYRAGO
- SET X1=PRCDT
- SET X2=-1
- DO C^%DTC
- SET PRCDT=X
- +3 ;Purchase Orders
- +4 SET PRCX=PRCDT
- +5 FOR
- SET PRCX=$ORDER(^PRC(442,"AB",PRCX))
- if PRCX=""
- QUIT
- Begin DoDot:1
- +6 SET PRCA=""
- +7 FOR
- SET PRCA=$ORDER(^PRC(442,"AB",PRCX,PRCA))
- if +PRCA'=PRCA
- QUIT
- Begin DoDot:2
- +8 SET PRCPODT=$$GETPODT(PRCA)
- IF '$$DATEGTR(PRCPODT,PRCDT)
- QUIT
- +9 if '$$MOPOK(PRCA)
- QUIT
- +10 SET PRCSTAT=$$GETSTAT(PRCA)
- if '$$STATUSOK(PRCSTAT)
- QUIT
- +11 SET PRCB=0
- +12 FOR
- SET PRCB=$ORDER(^PRC(442,PRCA,2,PRCB))
- if +PRCB'=PRCB
- QUIT
- Begin DoDot:3
- +13 SET PRCITM=$$GETITMID(PRCA,PRCB)
- if PRCITM=""
- QUIT
- +14 if '$$ITEMACT(PRCITM)
- QUIT
- if $$NIFITEM(PRCITM)
- QUIT
- +15 SET PRCDATE=$PIECE($GET(^TMP($JOB,"I",PRCITM,0)),"^")
- if '$$DATEGTR(PRCPODT,PRCDATE)
- QUIT
- +16 if '$DATA(^TMP($JOB,"I",PRCITM))
- SET PRCCNT=PRCCNT+1
- +17 SET ^TMP($JOB,"I",PRCITM,0)=PRCPODT_"^"_$$GETPONUM(PRCA)_"^"_$$GETFCP(PRCA)_"^"_$$GETFSC(PRCA,PRCB)_"^"_$$GETNSN(PRCA,PRCB)_"^"_$$GETMPNUM(PRCITM)
- +18 SET ^TMP($JOB,"I",PRCITM,1)=$$GETVENDR(PRCA)_"^"_$$GETUOP(PRCA,PRCB)_"^"_$$GETPKGM(PRCA,PRCB)_"^"_$$GETSTKNO(PRCA,PRCB)_"^"_$$GETNDC(PRCA,PRCB)_"^"_$$GETCONTR(PRCA,PRCB)
- End DoDot:3
- End DoDot:2
- End DoDot:1
- +19 SET ^TMP($JOB,"I")=PRCCNT
- +20 ;Reusable Items
- +21 SET PRCITM=0
- +22 FOR
- SET PRCITM=$ORDER(^PRC(441,PRCITM))
- if +PRCITM'=PRCITM
- QUIT
- Begin DoDot:1
- +23 if $DATA(^TMP($JOB,"I",PRCITM))
- QUIT
- if '$$ITEMACT(PRCITM)
- QUIT
- if '$$REUSABLE(PRCITM)
- QUIT
- if $$NIFITEM(PRCITM)
- QUIT
- +24 SET PRCCNT=PRCCNT+1
- SET ^TMP($JOB,"I",PRCITM,0)="^^"_$$FCP(PRCITM)_"^"_$$FSC(PRCITM)_"^"_$$NSN(PRCITM)_"^"_$$GETMPNUM(PRCITM)
- +25 SET PRCI=$$LASTVDR(PRCITM)
- if PRCI=""
- SET PRCI=$$VDRLSTD(PRCITM)
- +26 IF PRCI>0
- Begin DoDot:2
- +27 IF $PIECE($GET(^PRC(440,PRCI,10)),"^",5)
- IF $PIECE($GET(^PRC(440,PRCI,9)),"^")>0
- SET PRCV=$PIECE(^(9),"^")
- IF $PIECE($GET(^PRC(440,PRCV,10)),"^",5)'=1
- IF $DATA(^PRC(441,PRCITM,2,PRCV))
- SET PRCI=PRCV
- +28 SET ^TMP($JOB,"I",PRCITM,1)=PRCI_"^"_$$UOP(PRCITM,PRCI)_"^"_$$PKGMULT(PRCITM,PRCI)_"^"_$$STKNO(PRCITM,PRCI)_"^"_$$NDC(PRCITM,PRCI)_"^"_$$CONTRACT(PRCITM,PRCI)
- End DoDot:2
- End DoDot:1
- +29 SET ^TMP($JOB,"I")=PRCCNT
- +30 ;Inventory Transactions
- +31 SET PRCX=""
- SET PRCITM=""
- SET PRCA=""
- SET PRCTRANS=";A;RC;R;U;C;S;E;"_$SELECT(PRCPHYS="Y":"P;",1:"")
- +32 FOR
- SET PRCX=$ORDER(^PRCP(445.2,"AD",PRCX))
- if PRCX=""
- QUIT
- Begin DoDot:1
- +33 FOR
- SET PRCITM=$ORDER(^PRCP(445.2,"AD",PRCX,PRCITM))
- if PRCITM=""
- QUIT
- Begin DoDot:2
- +34 if $DATA(^TMP($JOB,"I",PRCITM))
- QUIT
- if '$$ITEMACT(PRCITM)
- QUIT
- if $$NIFITEM(PRCITM)
- QUIT
- +35 SET PRCA=""
- +36 FOR
- SET PRCA=$ORDER(^PRCP(445.2,"AD",PRCX,PRCITM,PRCA))
- if PRCA=""
- QUIT
- Begin DoDot:3
- +37 SET PRCY=$GET(^PRCP(445.2,PRCA,0))
- if PRCY=""
- QUIT
- +38 if PRCTRANS'[(";"_$PIECE(PRCY,"^",4)_";")
- QUIT
- +39 if '$$DATEGTR($PIECE(PRCY,"^",17),PRCDT)
- QUIT
- +40 SET PRCCNT=PRCCNT+1
- SET ^TMP($JOB,"I",PRCITM,0)="^^"_$$FCPINV(PRCA)_"^"_$$FSC(PRCITM)_"^"_$$NSN(PRCITM)_"^"_$$GETMPNUM(PRCITM)
- +41 SET PRCI=$$LASTVDR(PRCITM)
- if PRCI=""
- SET PRCI=$$INVVNDR(PRCA)
- if PRCI=""
- SET PRCI=$$VDRLSTD(PRCITM)
- +42 IF PRCI>0
- Begin DoDot:4
- +43 IF $PIECE($GET(^PRC(440,PRCI,10)),"^",5)
- IF $PIECE($GET(^PRC(440,PRCI,9)),"^")>0
- SET PRCV=$PIECE(^(9),"^")
- IF $PIECE($GET(^PRC(440,PRCV,10)),"^",5)'=1
- IF $DATA(^PRC(441,PRCITM,2,PRCV))
- SET PRCI=PRCV
- +44 SET ^TMP($JOB,"I",PRCITM,1)=PRCI_"^"_$$UOP(PRCITM,PRCI)_"^"_$$PKGMULT(PRCITM,PRCI)_"^"_$$STKNO(PRCITM,PRCI)_"^"_$$NDC(PRCITM,PRCI)_"^"_$$CONTRACT(PRCITM,PRCI)
- End DoDot:4
- End DoDot:3
- if $DATA(^TMP($JOB,"I",PRCITM))
- QUIT
- End DoDot:2
- End DoDot:1
- +45 SET ^TMP($JOB,"I")=PRCCNT
- +46 ;Case carts and instrument kits - processing items
- +47 FOR PRCFILE=445.7,445.8
- SET PRCJ=0
- FOR
- SET PRCJ=$ORDER(^PRCP(PRCFILE,"B",PRCJ))
- if PRCJ=""
- QUIT
- Begin DoDot:1
- +48 if '$$ITEMACT(PRCJ)
- QUIT
- if $$NIFITEM(PRCJ)
- QUIT
- +49 SET PRCITM=0
- FOR
- SET PRCITM=$ORDER(^PRCP(PRCFILE,PRCJ,1,PRCITM))
- if +PRCITM'=PRCITM
- QUIT
- Begin DoDot:2
- +50 if $DATA(^TMP($JOB,"I",PRCITM))
- QUIT
- if '$$ITEMACT(PRCITM)
- QUIT
- if $$NIFITEM(PRCITM)
- QUIT
- +51 SET PRCCNT=PRCCNT+1
- SET ^TMP($JOB,"I",PRCITM,0)="^^"_$$FCP(PRCITM)_"^"_$$FSC(PRCITM)_"^"_$$NSN(PRCITM)_"^"_$$GETMPNUM(PRCITM)
- +52 SET PRCI=$$LASTVDR(PRCITM)
- if PRCI=""
- SET PRCI=$$VDRLSTD(PRCITM)
- if PRCI>0
- SET ^TMP($JOB,"I",PRCITM,1)=PRCI_"^"_$$UOP(PRCITM,PRCI)_"^"_$$PKGMULT(PRCITM,PRCI)_"^"_$$STKNO(PRCITM,PRCI)_"^"_$$NDC(PRCITM,PRCI)_"^"_$$CONTRACT(PRCITM,PRCI)
- End DoDot:2
- End DoDot:1
- +53 SET ^TMP($JOB,"I")=PRCCNT
- +54 ;Compiling vendor info
- +55 SET PRCI=""
- SET PRCCNT=0
- +56 FOR
- SET PRCI=$ORDER(^TMP($JOB,"I",PRCI))
- if PRCI=""
- QUIT
- Begin DoDot:1
- +57 SET X=$PIECE($GET(^TMP($JOB,"I",PRCI,1)),"^")
- if X=""
- QUIT
- +58 if '$DATA(^TMP($JOB,"V",X))
- SET ^TMP($JOB,"V",X)=$$GETVNAME(X)_"^"_$$GETTIN(X)_"^"_$$GETPOC(X)_"^"_$$GETPHONE(X)_"^"_$$ACCNT(X)
- SET PRCCNT=PRCCNT+1
- End DoDot:1
- +59 SET ^TMP($JOB,"V")=PRCCNT
- +60 QUIT
- ONEYRAGO() ;Returns FileMan date of one year ago
- +1 NEW X
- if '$DATA(DT)
- SET DT=$$DT^XLFDT
- SET X=$EXTRACT(DT,1,3)-1_$EXTRACT(DT,4,7)
- +2 QUIT X
- DATEGTR(X,Y) ;Tests if first date is greater than second
- +1 IF X>Y
- QUIT 1
- +2 QUIT 0
- GETPONUM(PRCDA) ;Returns PO Number
- +1 NEW X
- SET X=$PIECE($GET(^PRC(442,PRCDA,0)),"^")
- +2 QUIT X
- GETSTAT(PRCDA) ;Returns Supply Status Order
- +1 NEW X
- SET X=$PIECE($GET(^PRC(442,PRCDA,7)),"^")
- IF X=""
- QUIT X
- +2 SET X=$PIECE($GET(^PRCD(442.3,X,0)),"^",2)
- +3 QUIT X
- STATUSOK(X) ;Checks if Supply Status Order value okay for selection
- +1 IF ";;1;5;6;45;"[(";"_X_";")
- QUIT 0
- +2 QUIT 1
- GETPODT(PRCDA) ;Returns P.O. Date in FileMan date format
- +1 QUIT $PIECE($GET(^PRC(442,PRCDA,1)),"^",15)
- GETFCP(PRCDA) ;Returns Fund Control Point
- +1 QUIT $PIECE($GET(^PRC(442,PRCDA,0)),"^",3)
- MOPOK(PRCDA) ;Checks Method of Processing
- +1 NEW X
- SET X=$PIECE($GET(^PRC(442,PRCDA,0)),"^",2)
- IF X=""
- QUIT 0
- +2 SET X=$PIECE($GET(^PRCD(442.5,X,0)),"^",2)
- IF X=""
- QUIT 0
- +3 IF ";IS;1358;TA;OTA;AR;"[(";"_X_";")
- QUIT 0
- +4 QUIT 1
- GETVENDR(PRCDA) ;Returns Vendor ID
- +1 NEW X
- SET X=$PIECE($GET(^PRC(442,PRCDA,1)),"^")
- +2 QUIT X
- GETITMID(PRCDA,PRCDA1) ;Returns Item Master File Ien
- +1 NEW X
- SET X=$PIECE($GET(^PRC(442,PRCDA,2,PRCDA1,0)),"^",5)
- +2 QUIT X
- GETUOP(PRCDA,PRCDA1) ;Returns Unit of Purchase
- +1 NEW X
- SET X=$PIECE($GET(^PRC(442,PRCDA,2,PRCDA1,0)),"^",3)
- IF X=""
- QUIT X
- +2 SET X=$PIECE($GET(^PRCD(420.5,X,0)),"^")
- +3 QUIT X
- GETPKGM(PRCDA,PRCDA1) ;Returns Packaging Multiple
- +1 NEW X
- SET X=$PIECE($GET(^PRC(442,PRCDA,2,PRCDA1,0)),"^",12)
- +2 QUIT X
- GETFSC(PRCDA,PRCDA1) ;Returns Federal Supply Classification
- +1 NEW X
- SET X=$PIECE($GET(^PRC(442,PRCDA,2,PRCDA1,2)),"^",3)
- +2 IF X=""
- SET X=$EXTRACT($PIECE($GET(^PRC(442,PRCDA,2,PRCDA1,0)),"^",13),1,4)
- +3 QUIT X
- GETNSN(PRCDA,PRCDA1) ;Returns National Stock Number
- +1 NEW X
- SET X=$PIECE($GET(^PRC(442,PRCDA,2,PRCDA1,0)),"^",13)
- +2 QUIT X
- GETSTKNO(PRCDA,PRCDA1) ;Returns Vendor Stock Number
- +1 NEW X
- SET X=$PIECE($GET(^PRC(442,PRCDA,2,PRCDA1,0)),"^",6)
- +2 QUIT X
- GETNDC(PRCDA,PRCDA1) ;Returns National Drug Code
- +1 NEW X
- SET X=$PIECE($GET(^PRC(442,PRCDA,2,PRCDA1,0)),"^",15)
- +2 QUIT X
- GETCONTR(PRCDA,PRCDA1) ;Returns Contract/BOA #
- +1 NEW X
- SET X=$PIECE($GET(^PRC(442,PRCDA,2,PRCDA1,2)),"^",2)
- +2 QUIT X
- ITEMACT(X) ;Checks if item is active
- +1 IF '$DATA(^PRC(441,X))
- QUIT 0
- +2 IF $PIECE($GET(^PRC(441,X,3)),"^")=1
- QUIT 0
- +3 QUIT 1
- GETMPNUM(X) ;Returns Manufacturer Part Number
- +1 SET X=$PIECE($GET(^PRC(441,X,3)),"^",5)
- +2 QUIT X
- GETSDESC(X) ;Returns Item Short Description
- +1 SET X=$PIECE($GET(^PRC(441,X,0)),"^",2)
- +2 QUIT X
- GETVNAME(X) ;Returns Vendor Name
- +1 SET X=$PIECE($GET(^PRC(440,X,0)),"^")
- +2 QUIT X
- GETTIN(X) ;Returns Tax ID Number or Social Security Number
- +1 SET X=$PIECE($GET(^PRC(440,X,3)),"^",8)
- +2 QUIT X
- GETPOC(X) ;Returns Vendor Point of Contact
- +1 SET X=$PIECE($GET(^PRC(440,X,0)),"^",9)
- +2 QUIT X
- GETPHONE(X) ;Returns Vendor's Phone Number
- +1 SET X=$PIECE($GET(^PRC(440,X,0)),"^",10)
- +2 QUIT X
- REUSABLE(PRCDA) ;Returns 1 if item is reusable or 0 if not
- +1 NEW X
- SET X=$PIECE($GET(^PRC(441,PRCDA,0)),"^",13)
- SET X=$SELECT(X="y":1,1:0)
- +2 QUIT X
- LASTVDR(PRCDA) ;Returns vendor ID
- +1 NEW X
- SET X=$PIECE($GET(^PRC(441,PRCDA,0)),"^",4)
- +2 QUIT X
- CONTRACT(PRCDA,PRCDA1) ;Returns Contract #
- +1 NEW X
- SET X=$PIECE($GET(^PRC(441,PRCDA,2,PRCDA1,0)),"^",3)
- +2 SET X=$SELECT(X>0:$PIECE($GET(^PRC(440,PRCDA1,4,X,0)),"^"),1:"")
- +3 QUIT X
- STKNO(PRCDA,PRCDA1) ;Returns vendor stock #
- +1 NEW X
- SET X=$PIECE($GET(^PRC(441,PRCDA,2,PRCDA1,0)),"^",4)
- +2 QUIT X
- UOP(PRCDA,PRCDA1) ;Returns Unit of Purchase
- +1 NEW X
- SET X=$PIECE($GET(^PRC(441,PRCDA,2,PRCDA1,0)),"^",7)
- +2 IF X'=""
- SET X=$PIECE($GET(^PRCD(420.5,X,0)),"^")
- +3 QUIT X
- PKGMULT(PRCDA,PRCDA1) ;Returns Packaging Multiple
- +1 NEW X
- SET X=$PIECE($GET(^PRC(441,PRCDA,2,PRCDA1,0)),"^",8)
- +2 QUIT X
- NDC(PRCDA,PRCDA1) ;Returns NDC
- +1 NEW X
- SET X=$PIECE($GET(^PRC(441,PRCDA,2,PRCDA1,0)),"^",5)
- +2 QUIT X
- FSC(PRCDA) ;Returns Federal Supply Classification
- +1 NEW X
- SET X=$PIECE($GET(^PRC(441,PRCDA,0)),"^",3)
- +2 IF X=""
- SET X=$EXTRACT($PIECE($GET(^PRC(441,PRCDA,0)),"^",5),1,4)
- +3 QUIT X
- NSN(PRCDA) ;Returns National Stock Number
- +1 NEW X
- SET X=$PIECE($GET(^PRC(441,PRCDA,0)),"^",5)
- +2 QUIT X
- FCP(PRCDA) ;Returns FCP
- +1 NEW X,PRCA,PRCB,PRCX,PRCI
- SET PRCI=0
- SET PRCX=""
- +2 FOR
- SET PRCI=$ORDER(^PRC(441,PRCDA,4,PRCI))
- if +PRCI'=PRCI
- QUIT
- Begin DoDot:1
- +3 SET X=$PIECE($GET(^PRC(441,PRCDA,4,PRCI,0)),"^")
- if X=""
- QUIT
- +4 SET PRCA=+$EXTRACT(X,1,3)
- SET PRCB=+$EXTRACT(X,4,99)
- +5 if $PIECE($GET(^PRC(420,PRCA,1,PRCB,0)),"^",19)
- QUIT
- +6 SET PRCX=$PIECE($GET(^PRC(420,PRCA,1,PRCB,0)),"^")
- End DoDot:1
- if PRCX'=""
- QUIT
- +7 QUIT PRCX
- DATE(X) ;Processes date in VA FileMan format and returns date as 'DD-MON-YYYY'
- +1 if $PIECE(X,".")'?7N
- QUIT ""
- +2 NEW Y,Z
- +3 SET Y=X#100
- SET Y=$SELECT(Y>0:$EXTRACT(100+Y,2,3)_"-",1:"")
- +4 SET Z=$PIECE("JAN;FEB;MAR;APR;MAY;JUN;JUL;AUG;SEP;OCT;NOV;DEC",";",X#10000\100)
- if Z'=""
- SET Z=Z_"-"
- +5 SET X=Y_Z_(X\10000+1700)
- +6 QUIT X
- GETSTATN() ;Returns station number of VistA installation
- +1 NEW X
- +2 SET X=$$GET1^DIQ(4,$$KSP^XUPARAM("INST")_",",99)
- +3 QUIT X
- NIFITEM(X) ;Checks if item already has NIF Item #
- +1 NEW Y
- SET Y=0
- +2 IF X>0
- if +$PIECE($GET(^PRC(441,X,0)),"^",15)>0
- SET Y=1
- +3 QUIT Y
- ACCNT(X) ;Returns vendor account number
- +1 NEW Y
- SET Y=""
- +2 if X>0
- SET Y=$PIECE($GET(^PRC(440,X,2)),"^")
- +3 QUIT Y
- VDRLSTD(X) ;Returns vendor with highest ID from item's VENDOR multiple
- +1 NEW Y
- SET Y=""
- +2 if X>0
- SET Y=$ORDER(^PRC(441,X,2,"B",""),-1)
- +3 QUIT Y
- INVVNDR(PRCX) ;Returns inv's mandatory/requested source of item on trxn
- +1 NEW Y,PRCINV,PRCY,PRCZ
- SET Y=""
- if PRCX'>0
- QUIT Y
- +2 SET PRCZ=$GET(^PRCP(445.2,PRCX,0))
- SET PRCY=$PIECE(PRCZ,"^",5)
- if PRCY'>0
- QUIT Y
- +3 SET PRCINV=$PIECE(PRCZ,"^")
- SET PRCZ=""
- if PRCINV>0
- SET PRCZ=$PIECE($GET(^PRCP(445,PRCINV,1,PRCY,0)),"^",12)
- +4 IF $PIECE(PRCZ,";",2)="PRC(440,"
- SET PRCZ=$PIECE(PRCZ,";")
- if PRCZ>0
- SET Y=$SELECT($PIECE($GET(^PRC(440,PRCZ,0)),"^",11)'="S":PRCZ,1:"")
- +5 QUIT Y
- FCPINV(PRCX) ;Get FCP for Inv Transaction
- +1 NEW Y
- SET Y=""
- if PRCX'>0
- QUIT Y
- +2 NEW PRCINV
- SET PRCINV=$PIECE($GET(^PRCP(445.2,PRCX,0)),"^")
- +3 IF PRCINV>0
- Begin DoDot:1
- +4 NEW PRCSTA,PRCDA
- SET PRCDA=""
- SET PRCSTA=$PIECE($GET(^PRCP(445,PRCINV,0)),"-")
- +5 if PRCSTA'=""
- SET PRCDA=$ORDER(^PRC(420,"AE",PRCSTA,PRCINV,""))
- +6 if PRCDA>0
- SET Y=$PIECE($GET(^PRC(420,PRCSTA,1,PRCDA,0)),"^")
- End DoDot:1
- +7 QUIT Y