Home   Package List   Routine Alphabetical List   Global Alphabetical List   FileMan Files List   FileMan Sub-Files List   Package Component Lists   Package-Namespace Mapping  
Routine: PRCHITM5

PRCHITM5.m

Go to the documentation of this file.
  1. PRCHITM5 ;OI&T/LKG - FILING DATA FROM NIF ;5/25/17 16:10
  1. ;;5.1;IFCAP;**198**;OCT 20, 2000;Build 6
  1. ;Per VA Directive 6402, this routine should not be modified.
  1. ;Integration agreements
  1. ; ICR #2051 FIND^DIC(), $$FIND1()^DIC
  1. ; ICR #2053 FILE^DIE(), UPDATE^DIE(), WP^DIE()
  1. ; ICR #2054 DT^DILF(), CLEAN^DILF
  1. ; ICR #2056 GETS^DIQ(), $$GET1^DIQ()
  1. ; ICR #10000 C^%DTC
  1. ; ICR #10103 $$DT^XLFDT
  1. ; ICR #10104 $$UP^XLFSTR()
  1. Q
  1. FILE(PRCTRANNBR,PRCLINE,PRCITMC) ;
  1. N PRCCONTR,PRCIMF,PRCVEN,PRCNITM,PRCJ S PRCITMC=0
  1. D GETVEN(.PRCVEN) I PRCVEN=0 D ERR("Vendor not resolved for ST #"_PRCTRANNBR_" Line #"_PRCLINE_".") Q
  1. D GETITEM(.PRCIMF,.PRCNITM) I PRCIMF=0 D ERR("Item not resolved for ST #"_PRCTRANNBR_" Line #"_PRCLINE_".") Q
  1. S PRCJ=""
  1. F S PRCJ=$O(PRCIMF(PRCJ)) Q:PRCJ="" D
  1. . D ITEMFILE(PRCIMF(PRCJ),PRCVEN(1),PRCNITM) S PRCITMC=PRCITMC+1
  1. Q
  1. ;
  1. ITEMFILE(PRCITMIEN,PRCVEND,PRCADDED) ;
  1. N PRCARR,PRCERR,PRCNEW,PRCX,PRCVENSK S PRCVENSK=0
  1. S PRCNEW=$S('$D(^PRC(441,PRCITMIEN,2,PRCVEND)):1,1:0) ; New vendor multiple entry
  1. D:'PRCADDED BACKUP(PRCITMIEN)
  1. I $G(^TMP($J,"PRCHITM3","ITEM","FSC"))=6505!($P($G(^TMP($J,"PRCHITM3","ITEM","NSN")),"-")=6505) D
  1. . I $G(^TMP($J,"PRCHITM3","ITEM","DRUG TYPE"))="" D ERR("ST #"_PRCTRANNBR_" Line #"_PRCLINE_" IMF #"_PRCITMIEN_" is missing Drug Type although FSC 6505.")
  1. S PRCITMIEN=PRCITMIEN_","
  1. K PRCARR,PRCERR S PRCARR(441,PRCITMIEN,53)=$$DT^XLFDT
  1. D FILE^DIE("","PRCARR","PRCERR") K PRCARR,PRCERR
  1. I $G(^TMP($J,"PRCHITM3","ITEM","BOC"))'="" S PRCX=^("BOC") D
  1. . I '$D(^PRCD(420.2,PRCX,0)) D ERR("ST #"_PRCTRANNBR_" Line #"_PRCLINE_" IMF #"_$P(PRCITMIEN,",")_" BOC "_PRCX_" does not exist in file #420.2.") Q
  1. . N PRCARR,PRCERR
  1. . S PRCARR(441,PRCITMIEN,12)=PRCX
  1. . D FILE^DIE("K","PRCARR","PRCERR")
  1. . D:$D(PRCERR) PROCERRS(.PRCERR,PRCTRANNBR,PRCLINE,$P(PRCITMIEN,","))
  1. I 'PRCADDED D
  1. . S:$G(^TMP($J,"PRCHITM3","ITEM","NIF#"))'="" PRCARR(441,PRCITMIEN,51)=^("NIF#")
  1. . S:$G(^TMP($J,"PRCHITM3","ITEM","FSC"))'="" PRCARR(441,PRCITMIEN,2)=^("FSC")
  1. . S:$G(^TMP($J,"PRCHITM3","ITEM","SHORT DESC"))'="" PRCARR(441,PRCITMIEN,.05)=$$UP^XLFSTR(^("SHORT DESC"))
  1. S:$G(^TMP($J,"PRCHITM3","ITEM","NSN"))'="" PRCARR(441,PRCITMIEN,5)=^("NSN")
  1. S:$G(^TMP($J,"PRCHITM3","ITEM","MFG PART"))'="" PRCARR(441,PRCITMIEN,19)=^("MFG PART")
  1. S:$G(^TMP($J,"PRCHITM3","ITEM","STOCK KEEPING UNIT"))'="" PRCARR(441,PRCITMIEN,21)=^("STOCK KEEPING UNIT")
  1. S:$G(^TMP($J,"PRCHITM3","ITEM","DRUG TYPE"))'="" PRCARR(441,PRCITMIEN,22)=^("DRUG TYPE")
  1. S:$G(^TMP($J,"PRCHITM3","ITEM","MANUFACTURER"))'="" PRCARR(441,PRCITMIEN,25)=$$UP^XLFSTR(^("MANUFACTURER"))
  1. S:$G(^TMP($J,"PRCHITM3","ITEM","SOURCE MFG PART#"))'="" PRCARR(441,PRCITMIEN,19.1)=^("SOURCE MFG PART#")
  1. S:$G(^TMP($J,"PRCHITM3","ITEM","NIF UPDATE DATE"))'="" PRCARR(441,PRCITMIEN,54)=$$DT2FMD(^("NIF UPDATE DATE"))
  1. D FILE^DIE("EK","PRCARR","PRCERR")
  1. D:$D(PRCERR) PROCERRS(.PRCERR,PRCTRANNBR,PRCLINE,$P(PRCITMIEN,",")) K PRCARR,PRCERR
  1. I '$D(^TMP($J,"PRCHITM3","ITEM","LONG DESC")) D ERR("ST #"_PRCTRANNBR_" Line #"_PRCLINE_" IMF #"_$P(PRCITMIEN,",")_" is missing Long Desc.")
  1. I $D(^TMP($J,"PRCHITM3","ITEM","LONG DESC")) D
  1. . D WP^DIE(441,PRCITMIEN,.1,"K","^TMP($J,""PRCHITM3"",""ITEM"",""LONG DESC"")","PRCERR")
  1. . D:$D(PRCERR) PROCERRS(.PRCERR,PRCTRANNBR,PRCLINE,$P(PRCITMIEN,","))
  1. . K PRCARR,PRCERR
  1. ; Update supply stations
  1. I $O(^PRCP(445,"AH",$P(PRCITMIEN,","),""))]"" D BLDSEG^PRCPHLFM(3,$P(PRCITMIEN,","),0)
  1. D SYNONYM(PRCITMIEN)
  1. I PRCNEW D
  1. . N PRCIEN S PRCIEN(2)=PRCVEND
  1. . S PRCARR(441.01,"+2,"_PRCITMIEN,.01)=PRCVEND
  1. . S:$G(^TMP($J,"PRCHITM3","ITEM","UOP"))'="" PRCARR(441.01,"+2,"_PRCITMIEN,1.5)=^("UOP")
  1. . S:$G(^TMP($J,"PRCHITM3","ITEM","UNIT COST"))'="" PRCARR(441.01,"+2,"_PRCITMIEN,1)=^("UNIT COST")
  1. . S:$G(^TMP($J,"PRCHITM3","ITEM","PKG MULT"))'="" PRCARR(441.01,"+2,"_PRCITMIEN,1.6)=^("PKG MULT")
  1. . S:$G(^TMP($J,"PRCHITM3","ITEM","UNIT CONVERSION FACTOR"))'="" PRCARR(441.01,"+2,"_PRCITMIEN,10)=^("UNIT CONVERSION FACTOR")
  1. . D UPDATE^DIE("E","PRCARR","PRCIEN","PRCERR")
  1. . I $D(PRCERR) D
  1. . . D ERR("Problem adding vendor entry to item for ST #"_PRCTRANNBR_" Line #"_PRCLINE_" IMF #"_$P(PRCITMIEN,",")_".") D PROCERRS(.PRCERR,PRCTRANNBR,PRCLINE,$P(PRCITMIEN,",")) S PRCVENSK=1
  1. . . I $G(^TMP($J,"PRCHITM3","ITEM","UOP"))="" D ERR("ST #"_PRCTRANNBR_" Line #"_PRCLINE_" IMF #"_$P(PRCITMIEN,",")_" is missing UOP.")
  1. . . I $G(^TMP($J,"PRCHITM3","ITEM","UNIT COST"))="" D ERR("ST #"_PRCTRANNBR_" Line #"_PRCLINE_" IMF #"_$P(PRCITMIEN,",")_" is missing Unit Cost.")
  1. . . I $G(^TMP($J,"PRCHITM3","ITEM","PKG MULT"))="" D ERR("ST #"_PRCTRANNBR_" Line #"_PRCLINE_" IMF #"_$P(PRCITMIEN,",")_" is missing Pkg Mult.")
  1. . . I $G(^TMP($J,"PRCHITM3","ITEM","UNIT CONVERSION FACTOR"))="" D ERR("ST #"_PRCTRANNBR_" Line #"_PRCLINE_" IMF #"_$P(PRCITMIEN,",")_" is missing Unit Conversion Factor.")
  1. . K PRCARR,PRCERR
  1. Q:PRCVENSK
  1. S PRCITMIEN=PRCVEND_","_PRCITMIEN ;Changing PRCITMIEN for Vendor subfile
  1. S:$G(^TMP($J,"PRCHITM3","ITEM","VSTOCK#"))'="" PRCARR(441.01,PRCITMIEN,3)=^("VSTOCK#")
  1. S:$G(^TMP($J,"PRCHITM3","ITEM","NDC"))'="" PRCARR(441.01,PRCITMIEN,4)=^("NDC")
  1. S:$G(^TMP($J,"PRCHITM3","ITEM","MIN QTY"))'="" PRCARR(441.01,PRCITMIEN,8)=^("MIN QTY")
  1. S:$G(^TMP($J,"PRCHITM3","ITEM","MAX QTY"))'="" PRCARR(441.01,PRCITMIEN,8.5)=^("MAX QTY")
  1. S:$G(^TMP($J,"PRCHITM3","ITEM","ORDER QTY MULTIPLE"))'="" PRCARR(441.01,PRCITMIEN,9)=^("ORDER QTY MULTIPLE")
  1. S:$G(^TMP($J,"PRCHITM3","ITEM","SOURCE VENDOR STOCK#"))'="" PRCARR(441.01,PRCITMIEN,3.1)=^("SOURCE VENDOR STOCK#")
  1. I 'PRCNEW D
  1. . S:$G(^TMP($J,"PRCHITM3","ITEM","UOP"))'="" PRCARR(441.01,PRCITMIEN,1.5)=^("UOP")
  1. . S:$G(^TMP($J,"PRCHITM3","ITEM","UNIT COST"))'="" PRCARR(441.01,PRCITMIEN,1)=^("UNIT COST")
  1. . S:$G(^TMP($J,"PRCHITM3","ITEM","PKG MULT"))'="" PRCARR(441.01,PRCITMIEN,1.6)=^("PKG MULT")
  1. . S:$G(^TMP($J,"PRCHITM3","ITEM","UNIT CONVERSION FACTOR"))'="" PRCARR(441.01,PRCITMIEN,10)=^("UNIT CONVERSION FACTOR")
  1. D FILE^DIE("EK","PRCARR","PRCERR")
  1. D:$D(PRCERR) PROCERRS(.PRCERR,PRCTRANNBR,PRCLINE,$P(PRCITMIEN,",",2))
  1. K PRCARR,PRCERR
  1. I $G(^TMP($J,"PRCHITM3","ITEM","CONTRACT"))="" D ERR("ST #"_PRCTRANNBR_" Line #"_PRCLINE_" IMF #"_$P(PRCITMIEN,",",2)_" is missing Contract.")
  1. I $G(^TMP($J,"PRCHITM3","ITEM","CONTRACT"))'="" S PRCX=^("CONTRACT") D
  1. . N PRCSCRN,PRCY S PRCSCRN="I $P($G(^(0)),U,2)=""""!($P($G(^(0)),U,2)'<"_$$DT^XLFDT()_")"
  1. . K PRCERR
  1. . S PRCY=$$FIND1^DIC(440.03,","_PRCVEND_",","BX",PRCX,"",PRCSCRN,"PRCERR")
  1. . I PRCY'>0 D ERR("ST #"_PRCTRANNBR_" Line #"_PRCLINE_" IMF #"_$P(PRCITMIEN,",",2)_": The value '"_PRCX_"' for field CONTRACT in VENDOR SUB-FIELD in file ITEM MASTER is not valid.") Q
  1. . K PRCARR,PRCERR S PRCARR(441.01,PRCITMIEN,2)=PRCY
  1. . D FILE^DIE("K","PRCARR","PRCERR")
  1. . D:$D(PRCERR) PROCERRS(.PRCERR,PRCTRANNBR,PRCLINE,$P(PRCITMIEN,",",2))
  1. . K PRCARR,PRCERR
  1. D CLEAN^DILF
  1. Q
  1. ;
  1. GETVEN(PRCVEN) ;
  1. N PRCE,PRCLX S PRCVEN=0
  1. I $G(^TMP($J,"PRCHITM3","VEN","IEN"))'>0 D ERR("ST #"_PRCTRANNBR_" Line #"_PRCLINE_" Vendor IEN missing or invalid.") Q
  1. I $G(^TMP($J,"PRCHITM3","VEN","IEN"))>0 S PRCVEN=1,PRCVEN(1)=^("IEN") D
  1. . I '$D(^PRC(440,PRCVEN(1),0)) D ERR("ST #"_PRCTRANNBR_": Vendor with Number "_PRCVEN(1)_" does not exist.") K PRCVEN(1) S PRCVEN=0 Q
  1. . S PRCLX=$$GET1^DIQ(440,PRCVEN(1)_",",.01)
  1. . I $$UP^XLFSTR($G(^TMP($J,"PRCHITM3","VEN","ORDER NAME")))'=PRCLX D Q
  1. . . D ERR("ST #"_PRCTRANNBR_" Line #"_PRCLINE_" Incoming and stored vendor names for ien "_PRCVEN(1)_" are")
  1. . . D ERR(" different '"_$G(^TMP($J,"PRCHITM3","VEN","ORDER NAME"))_"' versus '"_PRCLX_"'.")
  1. . . K PRCVEN(1) S PRCVEN=0
  1. Q
  1. ;
  1. GETITEM(PRCIMF,PRCADD) ;
  1. N PRCNIF S PRCIMF=0,PRCADD=0
  1. I $G(^TMP($J,"PRCHITM3","ITEM","IMFNBR"))'>0 D ERR("ST #"_PRCTRANNBR_" Line #"_PRCLINE_" IMF# is missing or invalid.") Q
  1. I $G(^TMP($J,"PRCHITM3","ITEM","IMFNBR"))>0 S PRCIMF=1,PRCIMF(1)=^("IMFNBR") D
  1. . I $G(^TMP($J,"PRCHITM3","ITEM","NIF#"))="" D ERR("ST #"_PRCTRANNBR_" Line #"_PRCLINE_" IMF #"_PRCIMF(1)_" is missing NIF#.")
  1. . I $D(^PRC(441,PRCIMF(1))) D Q
  1. . . N PRCX,PRCY,PRCERR S PRCX=$G(^TMP($J,"PRCHITM3","ITEM","NIF#")),PRCY=$$GET1^DIQ(441,PRCIMF(1)_",",51,,,"PRCERR")
  1. . . I PRCX'="",PRCY'="",PRCX'=PRCY D
  1. . . . D ERR("ST #"_PRCTRANNBR_" Line #"_PRCLINE_": IMF #"_PRCIMF(1)_" exists but has different NIF#, "_PRCY)
  1. . . . D ERR(" not incoming value "_PRCX_". It will be updated.")
  1. . I '$D(^PRC(441,PRCIMF(1))) D
  1. . . L +^PRC(441,0):15 N PRCNBROLD S PRCNBROLD=$P($G(^PRC(441,0)),U,3)
  1. . . N PRCARR,PRCERR,PRCIENS S PRCARR(441,"+1,",.01)=PRCIMF(1)
  1. . . S PRCARR(441,"+1,",.05)=$$UP^XLFSTR($G(^TMP($J,"PRCHITM3","ITEM","SHORT DESC")))
  1. . . S PRCARR(441,"+1,",2)=$G(^TMP($J,"PRCHITM3","ITEM","FSC"))
  1. . . I PRCARR(441,"+1,",2)="" S PRCARR(441,"+1,",2)=$P($G(^TMP($J,"PRCHITM3","ITEM","NSN")),"-")
  1. . . S PRCARR(441,"+1,",51)=$G(^TMP($J,"PRCHITM3","ITEM","NIF#"))
  1. . . D UPDATE^DIE("E","PRCARR","PRCIENS","PRCERR") S PRCADD=1
  1. . . I $D(PRCERR) D Q
  1. . . . D ERR("ST #"_PRCTRANNBR_" Line #"_PRCLINE_": Problem adding IMF entry #"_PRCIMF(1)_".") D PROCERRS(.PRCERR,PRCTRANNBR,PRCLINE)
  1. . . . I $G(^TMP($J,"PRCHITM3","ITEM","SHORT DESC"))="" D ERR("ST #"_PRCTRANNBR_" Line #"_PRCLINE_" IMF #"_PRCIMF(1)_" is missing Short Desc.")
  1. . . . I $G(^TMP($J,"PRCHITM3","ITEM","FSC"))="" D ERR("ST #"_PRCTRANNBR_" Line #"_PRCLINE_" IMF #"_PRCIMF(1)_" is missing FSC.")
  1. . . . K PRCIMF S PRCIMF=0,PRCADD=0
  1. . . I $G(PRCIMF(1))'=$G(PRCIENS(1)) D
  1. . . . I $G(PRCIENS(1))>0 D ERR("ST #"_PRCTRANNBR_" Line #"_PRCLINE_": Item assigned IMF# "_PRCIENS(1)_" instead of requested "_(PRCIMF(1))_".")
  1. . . . S PRCIMF(1)=$G(PRCIENS(1))
  1. . . S $P(^PRC(441,0),U,3)=PRCNBROLD L -^PRC(441,0)
  1. Q
  1. ;
  1. DT2FMD(PRCDATE) ;
  1. ; Input date in YYMMDD format
  1. ; Returns date in VA FileMan date format if successful
  1. ; or null value if input invalid
  1. N PRCARR,PRCERR,PRCOUT S PRCOUT=""
  1. S PRCDATE=$E(PRCDATE,3,4)_"/"_$E(PRCDATE,5,6)_"/"_$E(PRCDATE,1,2)
  1. D DT^DILF("X",PRCDATE,.PRCARR,,"PRCERR")
  1. S:'$D(PRCERR) PRCOUT=PRCARR
  1. Q PRCOUT
  1. ;
  1. FMD(PRCDATE) ;
  1. ; Input external date and output VA FileMan date
  1. N PRCARR,PRCERR,PRCOUT S PRCOUT=""
  1. D DT^DILF("X",PRCDATE,.PRCARR,,"PRCERR")
  1. S:'$D(PRCERR) PRCOUT=PRCARR
  1. Q PRCOUT
  1. ;
  1. BACKUP(PRCIEN) ;Backup Short Description and long Description
  1. ; Also add short description as Synonym if value not already present
  1. Q:'$D(^PRC(441,PRCIEN))
  1. N PRCARR,PRCERR,PRCX S PRCIEN=PRCIEN_","
  1. D GETS^DIQ(441,PRCIEN,".05;51;52","","PRCARR","PRCERR")
  1. I PRCARR(441,PRCIEN,52)="",PRCARR(441,PRCIEN,51)="" D
  1. . S PRCARR(441,PRCIEN,52)=PRCARR(441,PRCIEN,.05),PRCX=$E(PRCARR(441,PRCIEN,.05),1,36)
  1. . K PRCARR(441,PRCIEN,.05),PRCARR(441,PRCIEN,51),PRCERR
  1. . D FILE^DIE("EK","PRCARR","PRCERR")
  1. . D:$D(PRCERR) PROCERRS(.PRCERR,PRCTRANNBR,PRCLINE)
  1. . K PRCARR,PRCERR
  1. . I '$$FIND1^DIC(441.05,","_PRCIEN,"X",PRCX,"","","PRCERR"),'$D(PRCERR) D
  1. . . S PRCARR(441.05,"+1,"_PRCIEN,.01)=PRCX
  1. . . D UPDATE^DIE("E","PRCARR","","PRCERR")
  1. . . D:$D(PRCERR) PROCERRS(.PRCERR,PRCTRANNBR,PRCLINE)
  1. K PRCARR,PRCERR N PRCI S PRCI=$P(PRCIEN,",")
  1. I '$P($G(^PRC(441,PRCI,0)),"^",15),$P($G(^PRC(441,PRCI,8,0)),"^",4)'>0 D
  1. . I $P($G(^PRC(441,PRCI,1,0)),"^",4)>0 D
  1. . . D WP^DIE(441,PRCIEN,50,"","^PRC(441,PRCI,1)","PRCERR")
  1. . . D:$D(PRCERR) PROCERRS(.PRCERR,PRCTRANNBR,PRCLINE)
  1. Q
  1. ;
  1. SYNONYM(PRCIEN) ;
  1. N PRCI S PRCI=""
  1. F S PRCI=$O(^TMP($J,"PRCHITM3","ITEM","SYN",PRCI)) Q:PRCI="" S PRCX=^(PRCI) D
  1. . N PRCARR,PRCERR
  1. . I '$$FIND1^DIC(441.05,","_PRCIEN,"X",PRCX,"","","PRCERR"),'$D(PRCERR) D
  1. . . S PRCARR(441.05,"+1,"_PRCIEN,.01)=PRCX
  1. . . D UPDATE^DIE("E","PRCARR","","PRCERR")
  1. . . D:$D(PRCERR) PROCERRS(.PRCERR,PRCTRANNBR,PRCLINE)
  1. Q
  1. INITLOG(PRCTXNID) ; Initialize error log
  1. N PRCDT,X1,X2,X,%H
  1. S PRCERRC=0,PRCHNODE="PRCHITM3;"_PRCTXNID K ^XTMP(PRCHNODE)
  1. ; Setting up ^XTMP header node including automatic purge date
  1. S PRCDT=$$DT^XLFDT,X1=PRCDT,X2=30 D C^%DTC S ^XTMP(PRCHNODE,0)=X_"^"_PRCDT_"^"_"NIF Item Add/Update"
  1. Q
  1. ;
  1. PROCERRS(PRCE,PRCT,PRCL,PRCIMF) ; Process errors in DIERR
  1. N PRCI,PRCK,PRCM S PRCK=$P($G(PRCE("DIERR")),"^") Q:+PRCK'>0
  1. F PRCI=1:1:PRCK S PRCM=$G(PRCE("DIERR",PRCI,"TEXT",1)) I PRCM'="" S PRCM="ST #"_PRCT_" Line #"_PRCL_$S($G(PRCIMF)>0:" IMF #"_PRCIMF,1:"")_": "_PRCM D ERR(PRCM)
  1. Q
  1. ERR(PRCMSG) ; Error processing
  1. S PRCERRC=PRCERRC+1 S ^XTMP(PRCHNODE,"ERR",PRCERRC)=PRCMSG
  1. Q
  1. ;
  1. ;PRCHITM5