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

PRCHITM3.m

Go to the documentation of this file.
  1. PRCHITM3 ;OI&T/LKG - READING 832 TXN IN HOST FILE ;12/20/21 22:14
  1. ;;5.1;IFCAP;**198,226**;OCT 20, 2000;Build 2
  1. ;Per VA Directive 6402, this routine should not be modified.
  1. ;Integration agreements
  1. ; ICR #2320: CLOSE^%ZISH(),$$LIST^%ZISH(),OPEN^%ZISH(),$$STATUS^%ZISH()
  1. ; ICR #2171: $$STA^XUAF4()
  1. ; ICR #2541: $$KSP^XUPARAM()
  1. ; ICR #4440: $$PROD^XUPROD()
  1. ; ICR #10026: ^DIR
  1. ; ICR #10070: ^XMD
  1. ; ICR #10142: EN^DDIOL()
  1. ST ;Entry point
  1. N DIR,DTOUT,DUOUT,DIROUT,DIRUT,POP,X,Y,PRCI,PRCLFARR,PRCLFDIR,PRCLFF,PRCLFFIL,PRCLFIN,PRCFATAL S PRCFATAL=0
  1. N ZTSK,ZTSAVE,ZTDTM,ZTRTN,ZTDESC,ZTIO,PRCX
  1. GETDIR S DIR(0)="FA^1:75",DIR("A")="Enter the file's directory: ",DIR("B")="/srv/vista/patches/.NIF/"
  1. S DIR("?",1)="Enter name of the directory containing the file.",DIR("?")=" Directory value is up to 75 characters in the format for the operating system."
  1. D ^DIR I $D(DIRUT) S PRCFATAL=1 G END
  1. S PRCLFDIR=Y
  1. K DIR S DIR(0)="FA^1:50^K:X'?1.46ANP1"".""3A X",DIR("A")="Enter file name: ",DIR("?",1)="Enter the name of file with extension that you wish to process."
  1. S DIR("?")="File name up to 50 characters, without directory."
  1. D ^DIR I $D(DIRUT) S PRCFATAL=1 G END
  1. S PRCLFFIL=Y K DIR
  1. S PRCLFF(PRCLFFIL)="",PRCX=$$LIST^%ZISH(PRCLFDIR,"PRCLFF","PRCLFARR")
  1. K PRCLFF,PRCLFARR
  1. I 'PRCX W !,"File not found!" G GETDIR
  1. D OPEN^%ZISH("PRCLFIN",PRCLFDIR,PRCLFFIL,"R",)
  1. I POP W !,"Unable to open file "_PRCLFDIR_PRCLFFIL_"." S PRCFATAL=1 G END
  1. U IO
  1. F PRCI=1:1 R PRCX:DTIME Q:$E(PRCX,1,4)="ISA^" Q:$$STATUS^%ZISH!($P(PRCX,"^")="***END OF FILE***")
  1. I $E(PRCX,1,4)'="ISA^" U IO(0) D EN^DDIOL("*** ISA segment is missing. ***","","!!?10") S PRCFATAL=1 D CLOSE^%ZISH("PRCLFIN") G END
  1. U IO(0) W !
  1. N PRCISITE,PRCRSITE S PRCISITE=$P($P($P(PRCX,"^",9),"~",2)," "),PRCRSITE=$$STA^XUAF4($$KSP^XUPARAM("INST"))
  1. S:PRCISITE="" PRCISITE="not specified"
  1. I PRCISITE'="ALL",PRCISITE'=PRCRSITE D G END
  1. . N PRCMSG S PRCMSG(1)="*** Wrong receiving station; Import aborted ***"
  1. . S PRCMSG(2)="832 Txn ICN "_$P(PRCX,"^",14)_" for station "_PRCISITE_" was sent to "_PRCRSITE_"."
  1. . D EN^DDIOL(.PRCMSG)
  1. . S PRCFATAL=1 D CLOSE^%ZISH("PRCLFIN")
  1. K DIR S DIR(0)="YA",DIR("A")="Do you want to queue the item load? ",DIR("B")="YES"
  1. S DIR("?")="Enter 'YES' to run in background or 'NO' to run in foreground."
  1. D ^DIR I $D(DIRUT) S PRCFATAL=1 D CLOSE^%ZISH("PRCLFIN") G END
  1. I Y D G END
  1. . D CLOSE^%ZISH("PRCLFIN")
  1. . S ZTRTN="RUN^PRCHITM3",ZTDESC="NIF/IFCAP Item Load",ZTIO=""
  1. . S ZTSAVE("PRCLFDIR")="",ZTSAVE("PRCLFFIL")="",ZTSAVE("DUZ")="",ZTSAVE("DTIME")=""
  1. . D ^%ZTLOAD W !,"Task #=",$G(ZTSK)
  1. U IO
  1. ;
  1. RUN ;
  1. N POP,X,Y,PRCI,PRCJ,PRCK,PRCLFIN,PRCLFARR I $D(ZTQUEUED) N PRCX
  1. N PRCTXN,PRCHNODE,PRCERRC,PRCLCTR,PRCIUPD,PRCITC,PRCFATAL S PRCLCTR=0,PRCIUPD=0,PRCFATAL=0
  1. N PRCSTN S PRCSTN=$$STA^XUAF4($$KSP^XUPARAM("INST"))
  1. I $D(ZTQUEUED) D G:POP END
  1. . D OPEN^%ZISH("PRCLFIN",PRCLFDIR,PRCLFFIL,"R",,"P-OTHER")
  1. . I POP D Q
  1. . . N XMDUZ,XMMG,XMSUB,XMTEXT,XMY,XMZ
  1. . . S XMSUB="NIF/IFCAP Item Load Failure",XMDUZ=.5,XMY("G.ISM")="",XMY(DUZ)=""
  1. . . S PRCARR(1)="Unable to open host file "_PRCLFDIR_PRCLFFIL,XMTEXT="PRCARR("
  1. . . D ^XMD
  1. . U IO
  1. . F PRCI=1:1 R PRCX:DTIME Q:$E(PRCX,1,4)="ISA^" Q:$$STATUS^%ZISH
  1. I '$$STATUS^%ZISH D
  1. . S PRCTXN=$P(PRCX,"^",14) D INITLOG^PRCHITM5(PRCTXN)
  1. . F PRCI=1:1 R PRCX:DTIME Q:$$STATUS^%ZISH!($E(PRCX,1,4)="IEA^") D Q:$$STATUS^%ZISH
  1. . . I $E(PRCX,1,3)="ST^" D PROCTXN
  1. D CLOSE^%ZISH("PRCLFIN")
  1. I $D(PRCHNODE),$D(^XTMP(PRCHNODE,"ERR")) D
  1. . N PRCARR,PRCC,PRCI,PRCJ,PRCK,PRCL S PRCC=0,PRCI=0,PRCJ=0,PRCK=0,PRCL=120
  1. . F S PRCI=$O(^XTMP(PRCHNODE,"ERR",PRCI)) Q:PRCI="" S PRCC=PRCC+1
  1. . S PRCC=PRCC\PRCL+$S(PRCC#PRCL>0:1,1:0),PRCI=0
  1. . F S PRCI=$O(^XTMP(PRCHNODE,"ERR",PRCI)) Q:PRCI="" D
  1. . . S PRCJ=PRCJ+1,PRCARR(PRCJ)=^XTMP(PRCHNODE,"ERR",PRCI)
  1. . . I PRCJ=PRCL D
  1. . . . S PRCK=PRCK+1 D SEND(.PRCARR,$P(PRCHNODE,";",2),PRCK,PRCC,PRCSTN)
  1. . . . K PRCARR S PRCJ=0
  1. . I $D(PRCARR) S PRCK=PRCK+1 D SEND(.PRCARR,$P(PRCHNODE,";",2),PRCK,PRCC,PRCSTN)
  1. I $D(PRCHNODE) D
  1. . N XMDUZ,XMMG,XMSUB,XMTEXT,XMY,XMZ,PRCARR
  1. . S XMSUB="Stn "_PRCSTN_" Statistics NIF/IFCAP 832 Txn ICN "_$P(PRCHNODE,";",2)
  1. . S PRCARR(1)="Transaction Item Lines Processed: "_PRCLCTR,PRCARR(2)="Item Master File Entries Updated: "_PRCIUPD
  1. . S XMDUZ=.5,XMTEXT="PRCARR(",XMY("G.ISM")="",XMY(DUZ)=""
  1. . S:$$PROD^XUPROD() XMY("VHANIFMO@domain.ext")=""
  1. . D ^XMD
  1. ;
  1. END ;
  1. S:$D(ZTQUEUED) ZTREQ="@"
  1. W:'$D(ZTQUEUED) !!,$S(PRCFATAL:"<LOAD ABORTED>",1:"<DONE>")
  1. K ^TMP($J,"PRCHITM3") K PRCLFDIR,PRCLFFILE
  1. Q
  1. ;
  1. PROCTXN ;
  1. K ^TMP($J,"PRCHITM3") N PRCTRANS,PRCTXNTYPE S PRCTRANS=$P(PRCX,"^",3),PRCTXNTYPE=$P(PRCX,"^",2)
  1. I PRCTXNTYPE'=832 D ERR^PRCHITM5("Trans #"_PRCTRANS_" is not X.12 832 type.") Q
  1. F PRCJ=1:1 R PRCX:DTIME Q:$E(PRCX,1,3)="SE^"!$$STATUS^%ZISH D Q:$$STATUS^%ZISH
  1. . D:$E(PRCX,1,4)="REF^" REF
  1. . D:$E(PRCX,1,3)="N1^" N1
  1. . I $E(PRCX,1,4)="LIN^" D LIN S PRCLCTR=PRCLCTR+1 I '$D(ZTQUEUED),PRCLCTR#25=0 U IO(0) W:$X>60 ! W $J(PRCLCTR,6) U IO
  1. Q
  1. REF ;Process REF segments
  1. I $P(PRCX,"^",4)="IEN",$P(PRCX,"^",3)'="" S ^TMP($J,"PRCHITM3","VEN","IEN")=$P(PRCX,"^",3)
  1. E D ERR^PRCHITM5("Erroneous vendor '"_$P(PRCX,"^",4)_"' REF segment for ST #"_PRCTRANS_".")
  1. Q
  1. N1 ;
  1. N PRCL,PRCM S PRCM=0
  1. Q:$P(PRCX,"^",3)="" N PRCTYPE,PRCVALUE
  1. S PRCTYPE=$P(PRCX,"^",5),PRCVALUE=$P(PRCX,"^",3)
  1. I PRCTYPE="ORDER" S ^TMP($J,"PRCHITM3","VEN","ORDER NAME")=PRCVALUE
  1. E D ERR^PRCHITM5("Erroneous vendor '"_PRCTYPE_"' N1 segment for ST #"_PRCTRANS_".")
  1. Q
  1. LIN ;Process Item Lines
  1. N PRCLNCT,PRCLIN,PRCREFCT S PRCLNCT=0,PRCLIN=$P(PRCX,"^",2),PRCREFCT=0
  1. K ^TMP($J,"PRCHITM3","ITEM")
  1. S:$P(PRCX,"^",4)'="" ^TMP($J,"PRCHITM3","ITEM","NIF#")=$P(PRCX,"^",4)
  1. S:$P(PRCX,"^",6)'="" ^TMP($J,"PRCHITM3","ITEM","FSC")=$P(PRCX,"^",6)
  1. S:$P(PRCX,"^",8)'="" ^TMP($J,"PRCHITM3","ITEM","NSN")=$P(PRCX,"^",8)
  1. S:$P(PRCX,"^",10)'="" ^TMP($J,"PRCHITM3","ITEM","MFG PART")=$P(PRCX,"^",10)
  1. S:$P(PRCX,"^",12)'="" ^TMP($J,"PRCHITM3","ITEM","VSTOCK#")=$P(PRCX,"^",12)
  1. S:$P(PRCX,"^",14)'="" ^TMP($J,"PRCHITM3","ITEM","NDC")=$P(PRCX,"^",14)
  1. S:$P(PRCX,"^",18)'="" ^TMP($J,"PRCHITM3","ITEM","BOC")=$P(PRCX,"^",18)
  1. S:$P(PRCX,"^",20)'="" ^TMP($J,"PRCHITM3","ITEM","DRUG TYPE")=$P(PRCX,"^",20)
  1. S:$P(PRCX,"^",22)'="" ^TMP($J,"PRCHITM3","ITEM","MANUFACTURER")=$P(PRCX,"^",22)
  1. S:$P(PRCX,"^",24)'="" ^TMP($J,"PRCHITM3","ITEM","SOURCE MFG PART#")=$P(PRCX,"^",24)
  1. S:$P(PRCX,"^",26)'="" ^TMP($J,"PRCHITM3","ITEM","SOURCE VENDOR STOCK#")=$P(PRCX,"^",26)
  1. F PRCK=1:1 R PRCX:DTIME Q:$$STATUS^%ZISH D Q:$E(PRCX,1,4)="G55^"
  1. . D:$E(PRCX,1,4)="SLN^" SLN
  1. . D:$E(PRCX,1,4)="DTM^" DTM
  1. . D:$E(PRCX,1,4)="REF^" IREF
  1. . D:$E(PRCX,1,4)="CTB^" CTB
  1. . D:$E(PRCX,1,4)="PID^" PID
  1. . D:$E(PRCX,1,4)="PKG^" PKG
  1. . D:$E(PRCX,1,4)="PO4^" PO4
  1. . D:$E(PRCX,1,4)="G55^" G55
  1. D FILE^PRCHITM5(PRCTRANS,PRCLIN,.PRCITC) S PRCIUPD=PRCIUPD+PRCITC
  1. Q
  1. SLN ;
  1. S:$P(PRCX,"^",6)'="" ^TMP($J,"PRCHITM3","ITEM","UOP")=$P(PRCX,"^",6)
  1. S:$P(PRCX,"^",7)'="" ^TMP($J,"PRCHITM3","ITEM","UNIT COST")=$P(PRCX,"^",7)
  1. S:$P(PRCX,"^",11)'="" ^TMP($J,"PRCHITM3","ITEM","CONTRACT")=$P(PRCX,"^",11)
  1. Q
  1. DTM ;
  1. I $P(PRCX,"^",3)'="",$P(PRCX,"^",2)=167 S ^TMP($J,"PRCHITM3","ITEM","NIF UPDATE DATE")=$P(PRCX,"^",3)
  1. Q
  1. IREF ;
  1. S:$P(PRCX,"^",4)'="" PRCREFCT=PRCREFCT+1,^TMP($J,"PRCHITM3","ITEM","SYN",PRCREFCT)=$P(PRCX,"^",4)
  1. Q
  1. CTB ;
  1. N PRCCODE,PRCVALUE S PRCCODE=$P(PRCX,"^",4),PRCVALUE=$P(PRCX,"^",5)
  1. I PRCCODE=57 S ^TMP($J,"PRCHITM3","ITEM","MIN QTY")=PRCVALUE
  1. E I PRCCODE=70 S ^TMP($J,"PRCHITM3","ITEM","MAX QTY")=PRCVALUE
  1. E I PRCCODE="AP" S ^TMP($J,"PRCHITM3","ITEM","ORDER QTY MULTIPLE")=PRCVALUE
  1. Q
  1. PID ;
  1. S PRCLNCT=PRCLNCT+1
  1. S:$P(PRCX,"^",6)'="" ^TMP($J,"PRCHITM3","ITEM","LONG DESC",PRCLNCT)=$P(PRCX,"^",6)
  1. Q
  1. PKG ;
  1. S:$P(PRCX,"^",5)'="" ^TMP($J,"PRCHITM3","ITEM","UNIT CONVERSION FACTOR")=$P(PRCX,"^",5)
  1. S:$P(PRCX,"^",6)'="" ^TMP($J,"PRCHITM3","ITEM","SHORT DESC")=$P(PRCX,"^",6)
  1. Q
  1. PO4 ;
  1. S:$P(PRCX,"^",2)'="" ^TMP($J,"PRCHITM3","ITEM","PKG MULT")=$P(PRCX,"^",2)
  1. Q
  1. G55 ;
  1. S:$P(PRCX,"^",3)'="" ^TMP($J,"PRCHITM3","ITEM","IMFNBR")=$P(PRCX,"^",3)
  1. S:$P(PRCX,"^",5)'="" ^TMP($J,"PRCHITM3","ITEM","STOCK KEEPING UNIT")=$P(PRCX,"^",5)
  1. S PRCX="G55^"
  1. Q
  1. ;
  1. ; Send e-mails with error messages
  1. SEND(PRCA,PRCB,PRCC,PRCD,PRCE) ;
  1. N XMDUZ,XMMG,XMSUB,XMTEXT,XMY,XMZ
  1. S XMSUB="Stn "_PRCE_" Errors NIF/IFCAP 832 Txn ICN "_PRCB_" Msg #"_PRCC_" of "_PRCD
  1. S XMDUZ=.5,XMTEXT="PRCA(",XMY("G.ISM")="",XMY(DUZ)=""
  1. S:$$PROD^XUPROD() XMY("VHANIFMO@domain.ext")=""
  1. D ^XMD
  1. Q
  1. ;
  1. ;PRCHITM3