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

PRCHJRP6.m

Go to the documentation of this file.
  1. PRCHJRP6 ;OI&T/DDA - Transaction Report from 414.06 [CONT.] ;5/21/13 13:48
  1. V ;;5.1;IFCAP;**174**;Oct 20,2000;Build 23
  1. ;Per VHA Directive 2004-38, this routine should not be modified.
  1. ;
  1. Q
  1. GATHER ;
  1. K ^TMP("PRCHJRP6",$J)
  1. N CHECKED,NODE0,NODE1,NODE2,NODEHALF,DIR,Y
  1. N PRC2237,PRCACKER,PRCEDT,PRCEDTX,PRCEVENT,PRCEVTX,PRCEXIT,PRCI,PRCPAGE,PRCRUNDT,PRCSTN
  1. N PRCH37,PRCHAND,PRCHCNT,PRCHCTYP,PRCHEDT,PRCHEIEN,PRCHERCT,PRCHERR,PRCHESTN,PRCHEVNT,PRCHEVT,PRCHIEN,PRCHKFCP,PRCHKSTN,PRCHLPDT,PRCHSDT,PRCHSDTX,PRCHSHKE,PRCHSEI,PRCHSI,PRCHSNGL
  1. S PRCHSNGL=0,PRCH37=PRCH2237
  1. ; Build the handshake events for those primary events selected.
  1. I PRCH2237="ALL" D
  1. . I $G(PRCHTYPE)'="ALL" D
  1. ..; Include RESENT (4) to be equal to SEND (1) event
  1. .. S PRCHAND=",",PRCHTYPE=","_PRCHTYPE
  1. .. S:PRCHTYPE[",1," PRCHAND=PRCHAND_"2,",PRCHTYPE=",1,4,"_$P(PRCHTYPE,",1,",2)
  1. .. S:PRCHTYPE[",6," PRCHAND=PRCHAND_"7,"
  1. .. S:PRCHTYPE[",8," PRCHAND=PRCHAND_"9,"
  1. .. S:PRCHTYPE[",10," PRCHAND=PRCHAND_"11,"
  1. ..Q
  1. . I PRCHTYPE="ALL" S PRCHTYPE=",1,4,6,8,10,",PRCHAND=",2,7,9,11,"
  1. ; if single GRABIT, SORTIT and DISPLAY it; then exit.
  1. I +PRCH2237 D G EXITD
  1. . S PRCHIEN=""
  1. . S PRCHTYPE=",1,4,6,8,10,",PRCHAND=",2,7,9,11,",PRCHSNGL=1
  1. . S PRCHIEN=$O(^PRCV(414.06,"B",PRCH2237,PRCHIEN))
  1. . S (PRCHCNT,PRCHEIEN)=0
  1. . F S PRCHEIEN=$O(^PRCV(414.06,PRCHIEN,1,PRCHEIEN)) Q:+PRCHEIEN'>0 D GRABIT D
  1. .. I PRCHDATA=0 K PRCHDATA Q
  1. .. S PRCHEDT=$P(PRCHDATA(PRCHEIEN,0),"^"),PRCHEVNT=$P(PRCHDATA(PRCHEIEN,0),"^",2),PRCHESTN=$P(PRCH2237,"-")
  1. .. D SORTIT
  1. .. K PRCHDATA
  1. ..Q
  1. . D DISPLAY
  1. .Q
  1. ; loop on event date; GRABIT, CHECKS, SORTIT, new loop to add ACK Handshake data outside the date range, DISPLAY.
  1. S PRCHLPDT=PRCHSTDT
  1. F S PRCHLPDT=$O(^PRCV(414.06,"AED",PRCHLPDT)) Q:(+PRCHLPDT'>0)!($P(PRCHLPDT,".")>PRCHENDT) S PRCHAKLP=PRCHLPDT D
  1. . S PRCHIEN=0
  1. . F S PRCHIEN=$O(^PRCV(414.06,"AED",PRCHLPDT,PRCHIEN)) Q:+PRCHIEN'>0 D
  1. .. S PRCHEIEN=0
  1. .. F S PRCHEIEN=$O(^PRCV(414.06,"AED",PRCHLPDT,PRCHIEN,PRCHEIEN)) Q:+PRCHEIEN'>0 S PRCH2237=$P(^PRCV(414.06,PRCHIEN,0),"^") D GRABIT D
  1. ... I PRCHDATA=0 K PRCHDATA Q
  1. ... D CHECKS
  1. ... S PRCHEDT=$P(PRCHDATA(PRCHEIEN,0),"^"),PRCHEVNT=$P(PRCHDATA(PRCHEIEN,0),"^",2),PRCHESTN=$P(PRCH2237,"-")
  1. ... S:+PRCHEVNT=0 CHECKED=0
  1. ... D:CHECKED SORTIT
  1. ... K PRCH2237,PRCHDATA
  1. ...Q
  1. ..Q
  1. .Q
  1. ; Grab any remaining ACK Handshake data, if any. By skipping CHECKS and SORTIT, only ACK handshake data is selected via GRABIT.
  1. G:PRCHLPDT'>0 D1
  1. S PRCHLPDT=PRCHAKLP
  1. F S PRCHLPDT=$O(^PRCV(414.06,"AED",PRCHLPDT)) Q:(+PRCHLPDT'>0) D
  1. . S PRCHIEN=0
  1. . F S PRCHIEN=$O(^PRCV(414.06,"AED",PRCHLPDT,PRCHIEN)) Q:+PRCHIEN'>0 D
  1. .. S PRCHEIEN=0
  1. .. F S PRCHEIEN=$O(^PRCV(414.06,"AED",PRCHLPDT,PRCHIEN,PRCHEIEN)) Q:+PRCHEIEN'>0 S PRCH2237=$P(^PRCV(414.06,PRCHIEN,0),"^") D GRABIT D
  1. ... I PRCHDATA=0 K PRCHDATA Q
  1. ... K PRCH2237,PRCHDATA
  1. ...Q
  1. ..Q
  1. .Q
  1. D1 D DISPLAY
  1. D EXITD
  1. Q
  1. CHECKS ; SCREENS - DATE RANGE AND TYPE HAVE ALREADY BEEN SCREENED
  1. S CHECKED=0
  1. S PRCHEDT=PRCHLPDT
  1. S PRCH2237=$P(PRCHDATA(PRCHIEN,"IEN",0),"^")
  1. ; exit if FCP does not pass USER screen
  1. S PRCHKSTN=$P(PRCH2237,"-"),PRCHKFCP=$P(PRCH2237,"-",4)
  1. Q:$D(PRCHURCP(PRCHKFCP,PRCHKSTN))'=1
  1. G:PRCHFUND="ALL" CHKECMS
  1. ; exit if FCP does not pass SELECTION screen
  1. Q:PRCHKFCP'=PRCHFUND
  1. CHKECMS ; if ecms contact = ALL continue, else exit if it does not pass the SELECTION screen
  1. G:PRCHECMS="ALL" CHKSTN
  1. Q:$P($G(PRCHDATA(PRCHEIEN,1)),"^",6)'=PRCHEML
  1. CHKSTN ; screen station and substation
  1. ; if station = ALL and substation = ALL, continue
  1. G:(PRCHSTN="ALL")&(PRCHSUB="ALL") CHKDONE
  1. ; if substation selected; i.e. - station = SUB and substation = substation ID, screen to continue
  1. I PRCHSTN="SUB" Q:$P($G(PRCHDATA(PRCHEIEN,1)),"^",2)'=PRCHSUB
  1. ; if station selected and substation = ALL; screen to continue
  1. I (+PRCHSTN)&(PRCHSUB="ALL") Q:+PRCHSTN'=PRCHKSTN
  1. ; if station selected and substation = NONE, screen to continue
  1. I (+PRCHSTN)&(PRCHSUB="NONE") Q:+PRCHSTN'=PRCHKSTN G:($P($G(PRCHDATA(PRCHEIEN,1)),"^",2)="")!($P($G(PRCHDATA(PRCHEIEN,1)),"^",2)=PRCHKSTN) CHKDONE Q
  1. CHKDONE ; still with me? set the flag! all checks successfull!
  1. S CHECKED=1
  1. Q
  1. GRABIT ; pull data from global
  1. S PRCHDATA=0
  1. S PRCHDATA(PRCHIEN,"IEN",0)=^PRCV(414.06,PRCHIEN,0)
  1. S PRCHDATA(PRCHEIEN,0)=^PRCV(414.06,PRCHIEN,1,PRCHEIEN,0)
  1. ;Build a list of handshake events. Needed to display "ack dates", etc.
  1. S PRCHCTYP=","_$P(PRCHDATA(PRCHEIEN,0),"^",2)_","
  1. I PRCHAND[PRCHCTYP S ^TMP("PRCHJRP6",$J,"PRCHAND",PRCH2237,$P(PRCHDATA(PRCHEIEN,0),"^",2),$P(^PRCV(414.06,PRCHIEN,1,PRCHEIEN,0),"^"),.5)=PRCHIEN_"^"_PRCHEIEN Q
  1. Q:PRCHTYPE'[PRCHCTYP
  1. S PRCHDATA(PRCHEIEN,1)=$G(^PRCV(414.06,PRCHIEN,1,PRCHEIEN,1))
  1. S PRCHDATA(PRCHEIEN,2)=$G(^PRCV(414.06,PRCHIEN,1,PRCHEIEN,2))
  1. S PRCHERR=0
  1. F S PRCHERR=$O(^PRCV(414.06,PRCHIEN,1,PRCHEIEN,3,PRCHERR)) Q:+PRCHERR'>0 S PRCHDATA(PRCHEIEN,3,PRCHERR)=^PRCV(414.06,PRCHIEN,1,PRCHEIEN,3,PRCHERR,0)
  1. S PRCHDATA=1
  1. Q
  1. SORTIT ; Drop data into TMP to sort it.
  1. S ^TMP("PRCHJRP6",$J,PRCH2237,PRCHEDT,PRCHESTN,PRCHEVNT,.5)=PRCHDATA(PRCHIEN,"IEN",0)_"^"_PRCHIEN_"^"_PRCHEIEN
  1. S ^TMP("PRCHJRP6",$J,PRCH2237,PRCHEDT,PRCHESTN,PRCHEVNT,0)=PRCHDATA(PRCHEIEN,0)
  1. S ^TMP("PRCHJRP6",$J,PRCH2237,PRCHEDT,PRCHESTN,PRCHEVNT,1)=$G(PRCHDATA(PRCHEIEN,1))
  1. S ^TMP("PRCHJRP6",$J,PRCH2237,PRCHEDT,PRCHESTN,PRCHEVNT,2)=$G(PRCHDATA(PRCHEIEN,2))
  1. S ^TMP("PRCHJRP6",$J,PRCH2237,PRCHEDT,PRCHESTN,PRCHEVNT,3)=0
  1. I $D(PRCHDATA(PRCHEIEN,3))=10 D
  1. . S (PRCHERCT,PRCHERR)=0
  1. . F S PRCHERR=$O(PRCHDATA(PRCHEIEN,3,PRCHERR)) Q:+PRCHERR'>0 S ^TMP("PRCHJRP6",$J,PRCH2237,PRCHEDT,PRCHESTN,PRCHEVNT,3,PRCHERR)=PRCHDATA(PRCHEIEN,3,PRCHERR),PRCHERCT=PRCHERCT+1
  1. . S ^TMP("PRCHJRP6",$J,PRCH2237,PRCHEDT,PRCHESTN,PRCHEVNT,3)=PRCHERCT
  1. .Q
  1. Q
  1. DISPLAY ; Selection and sort criteria have already been obtained.
  1. U IO
  1. D NOW^%DTC S Y=$J(%,7,4) D DD^%DT S PRCRUNDT=Y
  1. S (PRCEXIT,PRCPAGE)=0,PRCHSHKE="2^^^2^^7^^9^^11"
  1. D HEADER
  1. S PRC2237="",PRCHNO=0
  1. G:$D(^TMP("PRCHJRP6",$J))=0 DX
  1. F S PRC2237=$O(^TMP("PRCHJRP6",$J,PRC2237)) Q:(PRC2237="PRCHAND")!(PRCEXIT)!(PRC2237="") D
  1. . S PRCEDT=0,PRCHNO=1
  1. . F S PRCEDT=$O(^TMP("PRCHJRP6",$J,PRC2237,PRCEDT)) Q:(+PRCEDT'>0)!(PRCEXIT) D
  1. .. S PRCSTN=0
  1. .. F PRCSTN=$O(^TMP("PRCHJRP6",$J,PRC2237,PRCEDT,PRCSTN)) Q:(+PRCSTN'>0)!(PRCEXIT) D
  1. ... S PRCEVENT=0
  1. ... F PRCEVENT=$O(^TMP("PRCHJRP6",$J,PRC2237,PRCEDT,PRCSTN,PRCEVENT)) Q:(+PRCEVENT'>0)!(PRCEXIT) D
  1. ... S NODEHALF=^TMP("PRCHJRP6",$J,PRC2237,PRCEDT,PRCSTN,PRCEVENT,.5)
  1. ... S NODE0=^TMP("PRCHJRP6",$J,PRC2237,PRCEDT,PRCSTN,PRCEVENT,0)
  1. ... S NODE1=^TMP("PRCHJRP6",$J,PRC2237,PRCEDT,PRCSTN,PRCEVENT,1)
  1. ... S NODE2=^TMP("PRCHJRP6",$J,PRC2237,PRCEDT,PRCSTN,PRCEVENT,2)
  1. ... S PRCACKER=^TMP("PRCHJRP6",$J,PRC2237,PRCEDT,PRCSTN,PRCEVENT,3)
  1. ... ; PRC2237 - EVENT TEXT - EVENT DATE
  1. ... S PRCEVTX=$P(^PRCV(414.07,PRCEVENT,0),"^")
  1. ... S Y=PRCEDT D DD^%DT S PRCEDTX=Y
  1. ... W !,PRC2237,?21,PRCEVTX,?58,PRCEDTX
  1. ... ; SUBSTATION (PRIMARY) - HANDSHAKE EVENT DATE - (set handshake event iens for future use)
  1. ... S PRCHSDT=PRCEDT,PRCHEVT=$P(PRCHSHKE,"^",PRCEVENT)
  1. ... F S PRCHSDT=$O(^TMP("PRCHJRP6",$J,"PRCHAND",PRC2237,PRCHEVT,PRCHSDT)) S:PRCHSDT'="" PRCHSI=$P(^TMP("PRCHJRP6",$J,"PRCHAND",PRC2237,PRCHEVT,PRCHSDT,.5),"^"),PRCHSEI=$P(^TMP("PRCHJRP6",$J,"PRCHAND",PRC2237,PRCHEVT,PRCHSDT,.5),"^",2) Q
  1. ... S:PRCHSDT'="" Y=PRCHSDT D DD^%DT S PRCHSDTX=Y
  1. ... S:PRCHSDT="" PRCHSDTX="(Pending)"
  1. ... W !
  1. ... W:$P(NODE1,"^",2)'="" "SUBSTATION: "_$P(NODE1,"^",2)
  1. ... W ?44,"ACKNOWLEDGED: "_PRCHSDTX
  1. ... ; eCMS CONTACT - eCMS PHONE
  1. ... W:(PRCEVENT'=1)&(PRCEVENT'=4) !,"eCMS CONTACT: "_$P(NODE1,"^",6),?44,"PHONE: "_$P(NODE1,"^",5)
  1. ... ; RETURN/CANCEL DATE and COMMENT or REASON TEXT
  1. ... I $P(NODE1,"^",7)'="" S Y=$P(NODE1,"^",7) D DD^%DT W !,"RETURN/CANCEL DATE: "_Y
  1. ... W:(NODE2'="")&(NODE2'="^")&(PRCEVENT'=1) !,"REASON/COMMENT: "_$S($P(NODE2,"^",2)'="":$P(NODE2,"^",2),1:$P(NODE2,"^"))
  1. ... ; ERROR TEXT IF ANY, BOTH MAIN AND HANDSHAKE
  1. ... I PRCACKER>0 D
  1. .... I 'PRCHERTX W !,"This "_PRCEVTX_" has ERROR TEXT." Q
  1. .... W !,"ERROR TEXT FOR "_PRCEVTX_":"
  1. .... S PRCI=0
  1. .... F S PRCI=$O(^TMP("PRCHJRP6",$J,PRC2237,PRCEDT,PRCSTN,PRCEVENT,3,PRCI)) Q:(+PRCI'>0)!(PRCEXIT) D:(IOSL-$Y)<4 HEADER Q:PRCEXIT W !," ",^TMP("PRCHJRP6",$J,PRC2237,PRCEDT,PRCSTN,PRCEVENT,3,PRCI)
  1. ....Q
  1. ... I PRCHSDT'="" D
  1. .... I $D(^PRCV(414.06,PRCHSI,1,PRCHSEI,3))>0 D
  1. ..... I 'PRCHERTX W !,"This "_PRCEVTX_" has ACKNOWLEDGMENT ERROR TEXT." Q
  1. ..... W !,"ACKNOWLEDGMENT ERROR TEXT FOR "_PRCEVTX_":"
  1. ..... S PRCI=0
  1. ..... F S PRCI=$O(^PRCV(414.06,PRCHSI,1,PRCHSEI,3,PRCI)) Q:(+PRCI'>0)!(PRCEXIT) D:(IOSL-$Y)<4 HEADER Q:PRCEXIT W !," ",^PRCV(414.06,PRCHSI,1,PRCHSEI,3,PRCI,0)
  1. .....Q
  1. ....Q
  1. ... W !
  1. ... ; PAGE BREAK CHECK
  1. ... D:((IOSL-$Y)<4)&(PRCEXIT'=1) HEADER
  1. ... Q:PRCEXIT
  1. ...Q
  1. ..Q
  1. .Q
  1. DX W !,?25,$S(PRCEXIT:"USER ABORTED REPORT",PRCHNO=1:"END OF REPORT",PRCHNO=0:"NO DATA TO REPORT!",1:""),!
  1. G:PRCEXIT EXITD
  1. I $E(IOST,1,2)="C-" S DIR(0)="E" D ^DIR
  1. S:$D(ZTQUEUED) ZTREQ="@"
  1. D EXITZT^PRCHJRP5
  1. D EXITD
  1. Q
  1. I PRCPAGE>0 W ! I $E(IOST,1,2)="C-" S DIR(0)="E" D ^DIR S:+$G(DUOUT)!$G(DTOUT) PRCEXIT=1
  1. Q:PRCEXIT
  1. S PRCPAGE=PRCPAGE+1
  1. W:PRCPAGE>1 @IOF
  1. W !,PRCRUNDT,?25,"eCMS/IFCAP TRANSACTION LOG REPORT",?74,"p. "_PRCPAGE
  1. I PRCHSNGL W !!,"eCMS 2237: ",PRCH2237 G TABLE
  1. W !!,"eCMS 2237: ",PRCH37,?17,"eCMS Contact: ",PRCHEML,?65,"Station: ",$S(PRCHSTN="SUB":+PRCHSUB,1:PRCHSTN)
  1. W !,"Report Date Range: "_PRCHSTAR_" - "_PRCHEND,?59,"Control Point: ",PRCHFUND
  1. W !,"Events: ",PRCHTYTX
  1. TABLE W !!,"IFCAP Reference",?21,"Message Event",?58,"Event Date"
  1. W ! S L="",$P(L,"_",IOM)="_" W L S L=""
  1. Q
  1. EXITD ; Exit display portion
  1. K ^TMP("PRCHJRP6",$J)
  1. K %,DTOUT,DUOUT,I,L,POP,PRCETMP0,PRCETMP1,PRCETMP3,PRCH411,PRCHAKLP,PRCHI,PRCHINIC,PRCHINSN,PRCHJ,PRCHNO,PRCHSLTY,PRCHTT,XQOPT,ZTQUEUED,ZTREQ
  1. K PRCH2237,PRCHDATA,PRCHECMS,PRCHEML,PRCHEND,PRCHENDT,PRCHERTX,PRCHFUND,PRCHSNGL,PRCHSTAR,PRCHSTDT,PRCHSTN,PRCHSUB,PRCHTYPE,PRCHTYTX,PRCHURCP
  1. Q