- XDRCNT ;SF-IRMFO/OHPRD/LAB - Count/Tally records by status/merged status; [ 08/13/92 09:50 AM ] ;8/28/08 17:55
- ;;7.3;TOOLKIT;**23,113**;Apr 25, 1995;Build 9
- ;;Per VHA Directive 2004-038, this routine should not be modified.
- ;;
- START ;
- D EN^XDRVCHEK
- D INFORM
- D INIT
- D GETFILE
- G:XDRQFLG EOJ
- D ZIS
- G:XDRQFLG EOJ
- D PROCESS
- D EOJ
- Q
- EOJ ;Eoj cleanup
- K XDRQFLG,XDRD,XDRFL,XDRCNT
- S:$D(ZTQUEUED) ZTREQ="@"
- K ZTSK,POP,I,S
- W:$D(IOF) @IOF
- D ^%ZISC
- Q
- INIT ;initialize variables
- S XDRQFLG=0,XDRCNT("PG")=0
- S X=$G(^DD(15,.03,0)) I X="" W !!,$C(7),"Dictionary error!! Notify a programmer!" S XDRQFLG=1 Q
- S X=$P(X,U,3)
- F I=1:1 S S=$P(X,";",I) Q:S="" S XDRCNT("STATUS",$P(S,":",1),"CNT")=0,XDRCNT("STATUS",$P(S,":",1),"NAME")=$P(S,":",2)
- I '$D(XDRCNT("STATUS")) S XDRQFLG=1 W !!,"Dictionary error!! Notify a programmer!" Q
- S X=$G(^DD(15,.05,0)) I X="" W !!,$C(7),"Dictionary error!! Notify a programmer!" S XDRQFLG=1 Q
- S X=$P(X,U,3)
- F I=1:1 S S=$P(X,";",I) Q:S="" S XDRCNT("MERGE STATUS",$P(S,":",1),"CNT")=0,XDRCNT("MERGE STATUS",$P(S,":",1),"NAME")=$P(S,":",2)
- I '$D(XDRCNT("MERGE STATUS")) S XDRQFLG=1 W !!,"Dictionary error!! Notify a programmer!" Q
- S XDRCNT("TOTAL RECS")=0
- Q
- ;
- GETFILE ;get file to tally records fo
- K XDRFL
- ; XT*7.3*113 input variable XDRNOPT to FILE^XDRDQUE-if UNDEF, allows PATIENT file to be selected
- N XDRNOPT
- S DIC("A")="Tally duplicate entries for which file? " D FILE^XDRDQUE
- Q:XDRQFLG
- S XDRCNT("GBL")=^DIC(XDRFL,0,"GL"),XDRCNT("GBL")=$P(XDRCNT("GBL"),U,2)
- Q
- ZIS W !! K ZTSK,ZTQUEUED,IOP S %ZIS="PQM" D ^%ZIS
- I POP S XDRQFLG=1 Q
- I $D(IO("Q")) D TSKMN
- Q
- TSKMN ;
- S ZTIO=$S($D(ION):ION,1:IO) I $D(IOST)#2,IOST]"" S ZTIO=ZTIO_";"_IOST
- I $D(IO("DOC")),IO("DOC")]"" S ZTIO=ZTIO_";"_IO("DOC")
- I $D(IOM)#2,IOM S ZTIO=ZTIO_";"_IOM I $D(IOSL)#2,IOSL S ZTIO=ZTIO_";"_IOSL
- K ZTSAVE S ZTSAVE("*")=""
- S ZTRTN="PROCESS^XDRCNT",ZTDTH="",ZTDESC="TALLY DUPLICATE RECORD STATUS" D ^%ZTLOAD S XDRQFLG=1
- Q
- PROCESS ;
- NEW X,D,S
- ;S X=0_";"_XDRCNT("GBL") F S X=$O(^VA(15,"B",X)) Q:X=""!($P(X,";",2)'=XDRCNT("GBL")) D
- S X=0_";"_XDRCNT("GBL") F S X=$O(^VA(15,"B",X)) Q:X="" I $P(X,";",2)=XDRCNT("GBL") D
- . S D=0 F S D=$O(^VA(15,"B",X,D)) Q:D'=+D D
- . . Q:^VA(15,"B",X,D)=1
- . . S XDRCNT("TOTAL RECS")=XDRCNT("TOTAL RECS")+1
- . . S S=$P(^VA(15,D,0),U,3)
- . . I S=""
- . . E S XDRCNT("STATUS",S,"CNT")=$G(XDRCNT("STATUS",S,"CNT"))+1
- . . I S="V" D
- . . . S S=+$P(^VA(15,D,0),U,5)
- . . . S XDRCNT("MERGE STATUS",S,"CNT")=XDRCNT("MERGE STATUS",S,"CNT")+1
- . . Q
- .Q
- PRINT ;print report
- U IO
- D HEADER
- W !!,"Total Number of Duplicate Records for File ",$E(XDRD(0,0),1,18),": ",?65,$J(XDRCNT("TOTAL RECS"),6),!
- W !?5,"STATUS field:" S X=0 F S X=$O(XDRCNT("STATUS",X)) Q:X="" D
- .I $Y>(IOSL-5) D HEADER Q:$D(XDRCNT("QUIT")) W !
- .W ?26,$E(XDRCNT("STATUS",X,"NAME"),1,34),?65,$J(XDRCNT("STATUS",X,"CNT"),6),!
- W !?5,"MERGE STATUS field:" S X="" F S X=$O(XDRCNT("MERGE STATUS",X)) Q:X="" D
- .I $Y>(IOSL-5) D HEADER Q:$D(XDRCNT("QUIT")) W !
- .W ?26,$E(XDRCNT("MERGE STATUS",X,"NAME"),1,34),?65,$J(XDRCNT("MERGE STATUS",X,"CNT"),6),!
- .Q
- I $E(IOST)="C" W !!,"End of Report. Press return to exit" R X:DTIME
- Q
- N DIR,X,Y
- I 'XDRCNT("PG") G HEADER1
- I $E(IOST)="C",IO=IO(0) W ! S DIR(0)="EO" D ^DIR K DIR I Y=0!(Y="^")!($D(DTOUT)) S XDRCNT("QUIT")="" Q
- W:$D(IOF) @IOF S XDRCNT("PG")=XDRCNT("PG")+1
- W !?3,$P(^DIC(4,DUZ(2),0),U) S Y=DT D DD^%DT W ?50,Y,?70,"Page ",XDRCNT("PG"),?78,!
- W !?12,"TALLY OF DUPLICATE RECORDS' STATUS/MERGE STATUS FIELDS"
- S XDRCNT("LENG")=7+$L(XDRD(0,0))
- W !?((80-XDRCNT("LENG"))/2),"FILE: ",XDRD(0,0),?78,!
- W !,$TR($J("",80)," ","-")
- Q
- INFORM ;inform user
- W !!,"This report will tally the Status and Merge Status fields for all",!,"entries in the Duplicate record file for the file that you select.",!
- Q
- XDRCNT ;SF-IRMFO/OHPRD/LAB - Count/Tally records by status/merged status; [ 08/13/92 09:50 AM ] ;8/28/08 17:55
- +1 ;;7.3;TOOLKIT;**23,113**;Apr 25, 1995;Build 9
- +2 ;;Per VHA Directive 2004-038, this routine should not be modified.
- +3 ;;
- START ;
- +1 DO EN^XDRVCHEK
- +2 DO INFORM
- +3 DO INIT
- +4 DO GETFILE
- +5 IF XDRQFLG
- GOTO EOJ
- +6 DO ZIS
- +7 IF XDRQFLG
- GOTO EOJ
- +8 DO PROCESS
- +9 DO EOJ
- +10 QUIT
- EOJ ;Eoj cleanup
- +1 KILL XDRQFLG,XDRD,XDRFL,XDRCNT
- +2 IF $DATA(ZTQUEUED)
- SET ZTREQ="@"
- +3 KILL ZTSK,POP,I,S
- +4 IF $DATA(IOF)
- WRITE @IOF
- +5 DO ^%ZISC
- +6 QUIT
- INIT ;initialize variables
- +1 SET XDRQFLG=0
- SET XDRCNT("PG")=0
- +2 SET X=$GET(^DD(15,.03,0))
- IF X=""
- WRITE !!,$CHAR(7),"Dictionary error!! Notify a programmer!"
- SET XDRQFLG=1
- QUIT
- +3 SET X=$PIECE(X,U,3)
- +4 FOR I=1:1
- SET S=$PIECE(X,";",I)
- IF S=""
- QUIT
- SET XDRCNT("STATUS",$PIECE(S,":",1),"CNT")=0
- SET XDRCNT("STATUS",$PIECE(S,":",1),"NAME")=$PIECE(S,":",2)
- +5 IF '$DATA(XDRCNT("STATUS"))
- SET XDRQFLG=1
- WRITE !!,"Dictionary error!! Notify a programmer!"
- QUIT
- +6 SET X=$GET(^DD(15,.05,0))
- IF X=""
- WRITE !!,$CHAR(7),"Dictionary error!! Notify a programmer!"
- SET XDRQFLG=1
- QUIT
- +7 SET X=$PIECE(X,U,3)
- +8 FOR I=1:1
- SET S=$PIECE(X,";",I)
- IF S=""
- QUIT
- SET XDRCNT("MERGE STATUS",$PIECE(S,":",1),"CNT")=0
- SET XDRCNT("MERGE STATUS",$PIECE(S,":",1),"NAME")=$PIECE(S,":",2)
- +9 IF '$DATA(XDRCNT("MERGE STATUS"))
- SET XDRQFLG=1
- WRITE !!,"Dictionary error!! Notify a programmer!"
- QUIT
- +10 SET XDRCNT("TOTAL RECS")=0
- +11 QUIT
- +12 ;
- GETFILE ;get file to tally records fo
- +1 KILL XDRFL
- +2 ; XT*7.3*113 input variable XDRNOPT to FILE^XDRDQUE-if UNDEF, allows PATIENT file to be selected
- +3 NEW XDRNOPT
- +4 SET DIC("A")="Tally duplicate entries for which file? "
- DO FILE^XDRDQUE
- +5 IF XDRQFLG
- QUIT
- +6 SET XDRCNT("GBL")=^DIC(XDRFL,0,"GL")
- SET XDRCNT("GBL")=$PIECE(XDRCNT("GBL"),U,2)
- +7 QUIT
- ZIS WRITE !!
- KILL ZTSK,ZTQUEUED,IOP
- SET %ZIS="PQM"
- DO ^%ZIS
- +1 IF POP
- SET XDRQFLG=1
- QUIT
- +2 IF $DATA(IO("Q"))
- DO TSKMN
- +3 QUIT
- TSKMN ;
- +1 SET ZTIO=$SELECT($DATA(ION):ION,1:IO)
- IF $DATA(IOST)#2
- IF IOST]""
- SET ZTIO=ZTIO_";"_IOST
- +2 IF $DATA(IO("DOC"))
- IF IO("DOC")]""
- SET ZTIO=ZTIO_";"_IO("DOC")
- +3 IF $DATA(IOM)#2
- IF IOM
- SET ZTIO=ZTIO_";"_IOM
- IF $DATA(IOSL)#2
- IF IOSL
- SET ZTIO=ZTIO_";"_IOSL
- +4 KILL ZTSAVE
- SET ZTSAVE("*")=""
- +5 SET ZTRTN="PROCESS^XDRCNT"
- SET ZTDTH=""
- SET ZTDESC="TALLY DUPLICATE RECORD STATUS"
- DO ^%ZTLOAD
- SET XDRQFLG=1
- +6 QUIT
- PROCESS ;
- +1 NEW X,D,S
- +2 ;S X=0_";"_XDRCNT("GBL") F S X=$O(^VA(15,"B",X)) Q:X=""!($P(X,";",2)'=XDRCNT("GBL")) D
- +3 SET X=0_";"_XDRCNT("GBL")
- FOR
- SET X=$ORDER(^VA(15,"B",X))
- IF X=""
- QUIT
- IF $PIECE(X,";",2)=XDRCNT("GBL")
- Begin DoDot:1
- +4 SET D=0
- FOR
- SET D=$ORDER(^VA(15,"B",X,D))
- IF D'=+D
- QUIT
- Begin DoDot:2
- +5 IF ^VA(15,"B",X,D)=1
- QUIT
- +6 SET XDRCNT("TOTAL RECS")=XDRCNT("TOTAL RECS")+1
- +7 SET S=$PIECE(^VA(15,D,0),U,3)
- +8 IF S=""
- +9 IF '$TEST
- SET XDRCNT("STATUS",S,"CNT")=$GET(XDRCNT("STATUS",S,"CNT"))+1
- +10 IF S="V"
- Begin DoDot:3
- +11 SET S=+$PIECE(^VA(15,D,0),U,5)
- +12 SET XDRCNT("MERGE STATUS",S,"CNT")=XDRCNT("MERGE STATUS",S,"CNT")+1
- End DoDot:3
- +13 QUIT
- End DoDot:2
- +14 QUIT
- End DoDot:1
- PRINT ;print report
- +1 USE IO
- +2 DO HEADER
- +3 WRITE !!,"Total Number of Duplicate Records for File ",$EXTRACT(XDRD(0,0),1,18),": ",?65,$JUSTIFY(XDRCNT("TOTAL RECS"),6),!
- +4 WRITE !?5,"STATUS field:"
- SET X=0
- FOR
- SET X=$ORDER(XDRCNT("STATUS",X))
- IF X=""
- QUIT
- Begin DoDot:1
- +5 IF $Y>(IOSL-5)
- DO HEADER
- IF $DATA(XDRCNT("QUIT"))
- QUIT
- WRITE !
- +6 WRITE ?26,$EXTRACT(XDRCNT("STATUS",X,"NAME"),1,34),?65,$JUSTIFY(XDRCNT("STATUS",X,"CNT"),6),!
- End DoDot:1
- +7 WRITE !?5,"MERGE STATUS field:"
- SET X=""
- FOR
- SET X=$ORDER(XDRCNT("MERGE STATUS",X))
- IF X=""
- QUIT
- Begin DoDot:1
- +8 IF $Y>(IOSL-5)
- DO HEADER
- IF $DATA(XDRCNT("QUIT"))
- QUIT
- WRITE !
- +9 WRITE ?26,$EXTRACT(XDRCNT("MERGE STATUS",X,"NAME"),1,34),?65,$JUSTIFY(XDRCNT("MERGE STATUS",X,"CNT"),6),!
- +10 QUIT
- End DoDot:1
- +11 IF $EXTRACT(IOST)="C"
- WRITE !!,"End of Report. Press return to exit"
- READ X:DTIME
- +12 QUIT
- +1 NEW DIR,X,Y
- +2 IF 'XDRCNT("PG")
- GOTO HEADER1
- +3 IF $EXTRACT(IOST)="C"
- IF IO=IO(0)
- WRITE !
- SET DIR(0)="EO"
- DO ^DIR
- KILL DIR
- IF Y=0!(Y="^")!($DATA(DTOUT))
- SET XDRCNT("QUIT")=""
- QUIT
- +1 IF $DATA(IOF)
- WRITE @IOF
- SET XDRCNT("PG")=XDRCNT("PG")+1
- +2 WRITE !?3,$PIECE(^DIC(4,DUZ(2),0),U)
- SET Y=DT
- DO DD^%DT
- WRITE ?50,Y,?70,"Page ",XDRCNT("PG"),?78,!
- +3 WRITE !?12,"TALLY OF DUPLICATE RECORDS' STATUS/MERGE STATUS FIELDS"
- +4 SET XDRCNT("LENG")=7+$LENGTH(XDRD(0,0))
- +5 WRITE !?((80-XDRCNT("LENG"))/2),"FILE: ",XDRD(0,0),?78,!
- +6 WRITE !,$TRANSLATE($JUSTIFY("",80)," ","-")
- +7 QUIT
- INFORM ;inform user
- +1 WRITE !!,"This report will tally the Status and Merge Status fields for all",!,"entries in the Duplicate record file for the file that you select.",!
- +2 QUIT