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

XDRCNT.m

Go to the documentation of this file.
  1. 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
  1. ;;Per VHA Directive 2004-038, this routine should not be modified.
  1. ;;
  1. START ;
  1. D EN^XDRVCHEK
  1. D INFORM
  1. D INIT
  1. D GETFILE
  1. G:XDRQFLG EOJ
  1. D ZIS
  1. G:XDRQFLG EOJ
  1. D PROCESS
  1. D EOJ
  1. Q
  1. EOJ ;Eoj cleanup
  1. K XDRQFLG,XDRD,XDRFL,XDRCNT
  1. S:$D(ZTQUEUED) ZTREQ="@"
  1. K ZTSK,POP,I,S
  1. W:$D(IOF) @IOF
  1. D ^%ZISC
  1. Q
  1. INIT ;initialize variables
  1. S XDRQFLG=0,XDRCNT("PG")=0
  1. S X=$G(^DD(15,.03,0)) I X="" W !!,$C(7),"Dictionary error!! Notify a programmer!" S XDRQFLG=1 Q
  1. S X=$P(X,U,3)
  1. 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)
  1. I '$D(XDRCNT("STATUS")) S XDRQFLG=1 W !!,"Dictionary error!! Notify a programmer!" Q
  1. S X=$G(^DD(15,.05,0)) I X="" W !!,$C(7),"Dictionary error!! Notify a programmer!" S XDRQFLG=1 Q
  1. S X=$P(X,U,3)
  1. 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)
  1. I '$D(XDRCNT("MERGE STATUS")) S XDRQFLG=1 W !!,"Dictionary error!! Notify a programmer!" Q
  1. S XDRCNT("TOTAL RECS")=0
  1. Q
  1. ;
  1. GETFILE ;get file to tally records fo
  1. K XDRFL
  1. ; XT*7.3*113 input variable XDRNOPT to FILE^XDRDQUE-if UNDEF, allows PATIENT file to be selected
  1. N XDRNOPT
  1. S DIC("A")="Tally duplicate entries for which file? " D FILE^XDRDQUE
  1. Q:XDRQFLG
  1. S XDRCNT("GBL")=^DIC(XDRFL,0,"GL"),XDRCNT("GBL")=$P(XDRCNT("GBL"),U,2)
  1. Q
  1. ZIS W !! K ZTSK,ZTQUEUED,IOP S %ZIS="PQM" D ^%ZIS
  1. I POP S XDRQFLG=1 Q
  1. I $D(IO("Q")) D TSKMN
  1. Q
  1. TSKMN ;
  1. S ZTIO=$S($D(ION):ION,1:IO) I $D(IOST)#2,IOST]"" S ZTIO=ZTIO_";"_IOST
  1. I $D(IO("DOC")),IO("DOC")]"" S ZTIO=ZTIO_";"_IO("DOC")
  1. I $D(IOM)#2,IOM S ZTIO=ZTIO_";"_IOM I $D(IOSL)#2,IOSL S ZTIO=ZTIO_";"_IOSL
  1. K ZTSAVE S ZTSAVE("*")=""
  1. S ZTRTN="PROCESS^XDRCNT",ZTDTH="",ZTDESC="TALLY DUPLICATE RECORD STATUS" D ^%ZTLOAD S XDRQFLG=1
  1. Q
  1. PROCESS ;
  1. NEW X,D,S
  1. ;S X=0_";"_XDRCNT("GBL") F S X=$O(^VA(15,"B",X)) Q:X=""!($P(X,";",2)'=XDRCNT("GBL")) D
  1. S X=0_";"_XDRCNT("GBL") F S X=$O(^VA(15,"B",X)) Q:X="" I $P(X,";",2)=XDRCNT("GBL") D
  1. . S D=0 F S D=$O(^VA(15,"B",X,D)) Q:D'=+D D
  1. . . Q:^VA(15,"B",X,D)=1
  1. . . S XDRCNT("TOTAL RECS")=XDRCNT("TOTAL RECS")+1
  1. . . S S=$P(^VA(15,D,0),U,3)
  1. . . I S=""
  1. . . E S XDRCNT("STATUS",S,"CNT")=$G(XDRCNT("STATUS",S,"CNT"))+1
  1. . . I S="V" D
  1. . . . S S=+$P(^VA(15,D,0),U,5)
  1. . . . S XDRCNT("MERGE STATUS",S,"CNT")=XDRCNT("MERGE STATUS",S,"CNT")+1
  1. . . Q
  1. .Q
  1. PRINT ;print report
  1. U IO
  1. D HEADER
  1. W !!,"Total Number of Duplicate Records for File ",$E(XDRD(0,0),1,18),": ",?65,$J(XDRCNT("TOTAL RECS"),6),!
  1. W !?5,"STATUS field:" S X=0 F S X=$O(XDRCNT("STATUS",X)) Q:X="" D
  1. .I $Y>(IOSL-5) D HEADER Q:$D(XDRCNT("QUIT")) W !
  1. .W ?26,$E(XDRCNT("STATUS",X,"NAME"),1,34),?65,$J(XDRCNT("STATUS",X,"CNT"),6),!
  1. W !?5,"MERGE STATUS field:" S X="" F S X=$O(XDRCNT("MERGE STATUS",X)) Q:X="" D
  1. .I $Y>(IOSL-5) D HEADER Q:$D(XDRCNT("QUIT")) W !
  1. .W ?26,$E(XDRCNT("MERGE STATUS",X,"NAME"),1,34),?65,$J(XDRCNT("MERGE STATUS",X,"CNT"),6),!
  1. .Q
  1. I $E(IOST)="C" W !!,"End of Report. Press return to exit" R X:DTIME
  1. Q
  1. N DIR,X,Y
  1. I 'XDRCNT("PG") G HEADER1
  1. 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
  1. HEADER1 ;
  1. W:$D(IOF) @IOF S XDRCNT("PG")=XDRCNT("PG")+1
  1. W !?3,$P(^DIC(4,DUZ(2),0),U) S Y=DT D DD^%DT W ?50,Y,?70,"Page ",XDRCNT("PG"),?78,!
  1. W !?12,"TALLY OF DUPLICATE RECORDS' STATUS/MERGE STATUS FIELDS"
  1. S XDRCNT("LENG")=7+$L(XDRD(0,0))
  1. W !?((80-XDRCNT("LENG"))/2),"FILE: ",XDRD(0,0),?78,!
  1. W !,$TR($J("",80)," ","-")
  1. Q
  1. INFORM ;inform user
  1. 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.",!
  1. Q