ORLPSR ; SLC/RAF-unsigned orders search ;10/19/00  14:02
 ;;3.0;ORDER ENTRY/RESULTS REPORTING;**243**;Dec 17, 1997;Build 242
 ;
 ;This routine will loop thru the "AS" xref in file 100 and 
 ;allow the user to sort orders by date range, with a status of unsigned,
 ;released/unsigned or unsigned/unreleased. It will also allow sorting by
 ;service/section, provider, patient, location, entered by person,
 ;or division
 ;
EN ;
 N CNT,DASH,DATE,DCNT,DFN,DIR,DIRUT,DIV,DTOUT,DUOUT,EDATE,EDT
 N HDR,HDR1,IEN,LCNT,LOC,LONER,LONUM,PAGE,PAT,PNM,PROV,QUIT,RPDT
 N SD1,SD2,SDATE,SDT,SER,SINGLE,SORT,SSN,STOP,STATUS,SUB,SUMONLY,TOT,TOT0,TOT1
 N TYPE,VA,VADM,VAERR,WHO,WHEN,Y
 S U="^" K ^TMP("ORUNS",$J),^TMP("ORSTATS",$J)
 W @IOF,!!?30,"Lapsed Orders Search",!?15,"This report is formatted for a 132 column output.",!
TYPE S TYPE=2
SORT ;sets DIR call to ask for the sorting criteria
 S DIR(0)="SX^1:Service/Section;2:Provider;3:Patient;4:Location;5:Entered By;6:Division"
 S DIR("A")="Enter the sort criteria"
 S DIR("?")="To sort orders by Service/Section enter a 1, by Provider enter a 2, by Patient enter a 3, by Location enter a 4, by Entering Person enter a 5 and by Division enter a 6, Enter an ^ to exit the option"
 D ^DIR S:+Y>0 SORT=+Y K DIR I $D(DTOUT)!$D(DUOUT) G EXIT
SINGLE ;sets DIR call to ask the user if they want to sort for a single
 ;service, provider, patient, location, division or entered by
 S DIR(0)="Y"
 S DIR("A")="Would you like a specific "_$S(SORT=1:"Service/Section",SORT=2:"Provider",SORT=3:"Patient",SORT=4:"Location",SORT=5:"Entering person",1:"Division")
 S DIR("B")="NO"
 S DIR("?")="You can limit your sort to one or more Service/Section, Provider, Patient, Location, Entered by, or Division, by entering a YES  here"
 D ^DIR S:+Y>0 SINGLE=+Y K DIR I $D(DTOUT)!$D(DUOUT) G EXIT
LONER ;sets DIR call to allow the user to select the specific sort entity
 ;only asked if the user entered a YES in the previous prompt
 I $D(SINGLE) D  I $D(QUIT)!('$D(LONER)) G EXIT
 .F  D  I Y=-1!($D(QUIT)) Q
 ..S DIR(0)=$S(SORT=1:"PAO^49:AEQM",SORT=2:"PAO^200:AEQM,",SORT=3:"PAO^2:AEQM",SORT=4:"PAO^44:AEQM",SORT=5:"PAO^200:AEQM",SORT=6:"PAO^40.8:AEQM")
 ..S DIR("A")="Select "_$S(SORT=1:"Service/Section: ",SORT=2:"Provider: ",SORT=3:"Patient: ",SORT=4:"Location: ",SORT=5:"Entering Person: ",1:"Division: ")
 ..S DIR("?")="When finished entering all the selections you want, press return or enter to go on. Enter an ^ to exit the option."
 ..D ^DIR S:+Y>0 LONER($P(Y,U,2))=+Y K DIR I $D(DTOUT)!$D(DUOUT) S QUIT=1
SDATE ;sets DIR call to ask the user for a starting date
 S DIR(0)="DA^::ETX"
 S DIR("A")="Enter a starting date: "
 S DIR("?")="Enter the date or date/time that you want the search to start with.  Example: If your site has a 48 hr grace period for signing orders,         enter T-2"
 D ^DIR S:+Y>0 (SDATE,SD1)=(9999999-Y),SDT=$$FMTE^XLFDT(Y) K DIR I $D(DTOUT)!$D(DUOUT) G EXIT
EDATE ;sets DIR call to ask the user for an ending date (optional)
 S DIR(0)="DA^::ETX"
 S DIR("A")="Enter an ending date: "
 S DIR("?")="Enter the date or date/time that you want the search to end with. This field can be used to ignore pre-CPRS unsigned orders by entering the date of your CPRS installation."
 D ^DIR S (EDATE,SD2)=(9999999-Y),EDT=$$FMTE^XLFDT(Y) K DIR I $D(DTOUT)!$D(DUOUT) G EXIT
SWITCH ;takes the date input from the user and does a switcheroo so the program
 ;can work as intended
 I EDATE'>SDATE S EDATE=SD1,SDATE=SD2
SUMONLY ;ask if summary only or full detail
 S DIR(0)="Y",DIR("A")="Print summary only ",DIR("B")="NO",DIR("?")="Enter yes for summary report (statistics), no for detailed report."
 D ^DIR S SUMONLY=$S(Y=1:1,Y=0:0,1:"^") K DIR I SUMONLY="^" Q
TASK ;
 S %ZIS="Q" D ^%ZIS I POP Q
 I $D(IO("Q")) D  K IO("Q") Q
 .S ZTIO=ION,ZTDESC="File 100 order status search"
 .S ZTRTN="LOOP^ORLPSRA",ZTSAVE("SORT")="",ZTSAVE("TYPE")=""
 .S ZTSAVE("SDATE")="",ZTSAVE("EDATE")="",ZTSAVE("SINGLE")=""
 .S ZTSAVE("LONER*")="",ZTSAVE("SDT")="",ZTSAVE("EDT")="",ZTSAVE("SUMONLY")=""
 .D ^%ZTLOAD I $D(ZTSK) W !,?32,"REQUEST QUEUED"
 U IO D LOOP^ORLPSRA Q
STATS ;SERVICE/SECTION statistics
 S:SUMONLY PAGE=0 S SUMONLY=0 ;Set SUMONLY back to zero so header will print.
 I '$D(^TMP("ORSTATS",$J)) D HDR Q:STOP  W !,"There are no statistics for the selected sort range." Q
 I SORT=1&($D(^TMP("ORSTATS",$J))) D
 .S HDR="!!?25,""Order Statistics for Service/Section sort"""
 .S HDR1="!,""Service/Section"",?25,""Provider"",?50,""# of Orders"""
 .S TOT=0 D HDR
 .S SER="" F  S SER=$O(^TMP("ORSTATS",$J,SER)) S TOT0=0 Q:SER=""!STOP  D
 ..S PROV="" F  S PROV=$O(^TMP("ORSTATS",$J,SER,PROV)) Q:PROV=""!STOP  D
 ...W SER,?25,PROV,?50,^(PROV),! S TOT1=^(PROV),TOT0=TOT0+TOT1
 ...S TOT=TOT+TOT1 D:$Y>(IOSL-4) HDR Q:STOP
 ..W:'STOP ?46,"SUBTOTAL: ",TOT0,!
 .W:'STOP ?46,"------------",!?46,"TOTAL: ",TOT
PV ;PROVIDER statistics
 I SORT=2&($D(^TMP("ORSTATS",$J))) D
 .S HDR="!!?25,""Order Statistics for Provider sort"""
 .S HDR1="!,""Provider"",?25,""Patient"",?50,""# of Orders"""
 .S TOT=0 D HDR
 .S PROV="" F  S PROV=$O(^TMP("ORSTATS",$J,PROV)) S TOT0=0 Q:PROV=""!STOP  D
 ..S PNM="" F  S PNM=$O(^TMP("ORSTATS",$J,PROV,PNM)) Q:PNM=""!STOP  D
 ...W PROV,?25,PNM,?50,^(PNM),! S TOT1=^(PNM)
 ...S TOT=TOT+TOT1,TOT0=TOT0+TOT1 D:$Y>(IOSL-4) HDR Q:STOP
 ..W:'STOP ?46,"SUBTOTAL: ",TOT0,!
 .W:'STOP ?46,"------------",!?46,"TOTAL: ",TOT
PT ;PATIENT statistics
 I SORT=3&($D(^TMP("ORSTATS",$J))) D
 .S HDR="!!?25,""Order Statistics for Patient sort"""
 .S HDR1="!,""Patient"",?25,""Provider"",?50,""# of Orders"""
 .S TOT=0 D HDR
 .S PNM="" F  S PNM=$O(^TMP("ORSTATS",$J,PNM)) S TOT0=0 Q:PNM=""!STOP  D
 ..S PROV="" F  S PROV=$O(^TMP("ORSTATS",$J,PNM,PROV)) Q:PROV=""!STOP  D
 ...W PNM,?25,PROV,?50,^(PROV),! S TOT1=^(PROV),TOT0=TOT0+TOT1
 ...S TOT=TOT+TOT1 D:$Y>(IOSL-4) HDR Q:STOP
 ..W:'STOP ?46,"SUBTOTAL: ",TOT0,!
 .W:'STOP ?46,"------------",!?46,"TOTAL: ",TOT
L ;LOCATION statistics
 I SORT=4&($D(^TMP("ORSTATS",$J))) D
 .S HDR="!!?25,""Order Statistics for Location sort"""
 .S HDR1="!,""Location"",?25,""Provider"",?50,""# of Orders"""
 .S TOT=0 D HDR
 .S LOC="" F  S LOC=$O(^TMP("ORSTATS",$J,LOC)) S TOT0=0 Q:LOC=""!STOP  D
 ..S PROV="" F  S PROV=$O(^TMP("ORSTATS",$J,LOC,PROV)) Q:PROV=""!STOP  D
 ...W $E(LOC,1,24),?25,PROV,?50,^(PROV),! S TOT1=^(PROV),TOT0=TOT0+TOT1
 ...S TOT=TOT+TOT1 D:$Y>(IOSL-4) HDR Q:STOP
 ..W:'STOP ?46,"SUBTOTAL: ",TOT0,!
 .W:'STOP ?46,"------------",!?46,"TOTAL: ",TOT
EB ;ENTERED BY statistics
 I SORT=5&($D(^TMP("ORSTATS",$J))) D
 .S HDR="!!?25,""Order Statistics for Entering Person sort"""
 .S HDR1="!,""Entering person"",?25,""Patient"",?50,""# of Orders"""
 .S TOT=0 D HDR
 .S WHO="" F  S WHO=$O(^TMP("ORSTATS",$J,WHO)) S TOT0=0 Q:WHO=""!STOP  D
 ..S PNM="" F  S PNM=$O(^TMP("ORSTATS",$J,WHO,PNM)) Q:PNM=""!STOP  D
 ...W WHO,?25,PNM,?50,^(PNM),! S TOT1=^(PNM),TOT0=TOT0+TOT1
 ...S TOT=TOT+TOT1 D:$Y>(IOS-4) HDR Q:STOP
 ..W:'STOP ?46,"SUBTOTAL: ",TOT0,!
 .W:'STOP ?46,"------------",!?46,"TOTAL: ",TOT
D ;DIVISION statistics
 I SORT=6&($D(^TMP("ORSTATS",$J))) D
 .S HDR="!!?25,""Order Statistics for Division sort"""
 .S DIV="" F  S DIV=$O(^TMP("ORSTATS",$J,DIV)) Q:DIV=""!STOP  S DCNT=0 D
 ..S LOC="" F  S LOC=$O(^TMP("ORSTATS",$J,DIV,LOC)) Q:LOC=""!STOP  S LCNT=0 D
 ...S HDR1="!!,""Division: "",DIV,!?5,""Location: "",LOC,!?20,""Provider"",?51,""Orders""" D HDR Q:STOP
 ...S PROV="" F  S PROV=$O(^TMP("ORSTATS",$J,DIV,LOC,PROV)) Q:PROV=""!STOP  D
 ....W ?20,PROV,?51,^(PROV),! S LCNT=LCNT+^(PROV) D:$Y>(IOSL-4) HDR Q:STOP
 ...I 'STOP W !?41,"Subtotal",?51,LCNT S DCNT=DCNT+LCNT
 ..I 'STOP W !?5,"Total orders for Division: ",DIV_" = "_DCNT
EXIT K ^TMP("ORUNS",$J),^TMP("ORSTATS",$J)
 D ^%ZISC
 Q
LOC(LOC) ;resolves the location pointer
 N X
 S X=$P(^SC(+LOC,0),U)
 Q X
USER(USER) ;resolves user pointers
 N X
 S X=$E($P(^VA(200,+USER,0),U),1,24)
 Q X
STAT(STA) ;resolves pointer to the order status file
 N X
 S X=$E($P(^ORD(100.01,+STA,0),U),1,14)
 Q X
SER(SER) ;resolves pointer to the service/section file
 N X
 S X=$P(^DIC(49,+SER,0),U)
 Q X
DIV(LOC) ;determines the division based on the entry in file 44
 N X
 S X=$P(^SC(+LOC,0),U,15) I X="" Q "UNKNOWN"
 S X=$P(^DG(40.8,X,0),U)
 Q X
HDR ;Print header
 I $G(SUMONLY) Q
 I $E(IOST)="C"&(PAGE) S DIR(0)="E" D ^DIR S:Y'=1 STOP=1 K DIR Q:STOP
 I PAGE!('PAGE&($E(IOST)="C")) W @IOF
 I $D(RPDT) W @RPDT
 I $D(HDR) W @HDR
 I $D(HDR1) W @HDR1
 W !,$$REPEAT^XLFSTR("-",IOM),!
 S PAGE=1
 Q
 
--- Routine Detail   --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HORLPSR   8547     printed  Sep 23, 2025@20:07:55                                                                                                                                                                                                      Page 2
ORLPSR    ; SLC/RAF-unsigned orders search ;10/19/00  14:02
 +1       ;;3.0;ORDER ENTRY/RESULTS REPORTING;**243**;Dec 17, 1997;Build 242
 +2       ;
 +3       ;This routine will loop thru the "AS" xref in file 100 and 
 +4       ;allow the user to sort orders by date range, with a status of unsigned,
 +5       ;released/unsigned or unsigned/unreleased. It will also allow sorting by
 +6       ;service/section, provider, patient, location, entered by person,
 +7       ;or division
 +8       ;
EN        ;
 +1        NEW CNT,DASH,DATE,DCNT,DFN,DIR,DIRUT,DIV,DTOUT,DUOUT,EDATE,EDT
 +2        NEW HDR,HDR1,IEN,LCNT,LOC,LONER,LONUM,PAGE,PAT,PNM,PROV,QUIT,RPDT
 +3        NEW SD1,SD2,SDATE,SDT,SER,SINGLE,SORT,SSN,STOP,STATUS,SUB,SUMONLY,TOT,TOT0,TOT1
 +4        NEW TYPE,VA,VADM,VAERR,WHO,WHEN,Y
 +5        SET U="^"
           KILL ^TMP("ORUNS",$JOB),^TMP("ORSTATS",$JOB)
 +6        WRITE @IOF,!!?30,"Lapsed Orders Search",!?15,"This report is formatted for a 132 column output.",!
TYPE       SET TYPE=2
SORT      ;sets DIR call to ask for the sorting criteria
 +1        SET DIR(0)="SX^1:Service/Section;2:Provider;3:Patient;4:Location;5:Entered By;6:Division"
 +2        SET DIR("A")="Enter the sort criteria"
 +3        SET DIR("?")="To sort orders by Service/Section enter a 1, by Provider enter a 2, by Patient enter a 3, by Location enter a 4, by Entering Person enter a 5 and by Division enter a 6, Enter an ^ to exit the option"
 +4        DO ^DIR
           if +Y>0
               SET SORT=+Y
           KILL DIR
           IF $DATA(DTOUT)!$DATA(DUOUT)
               GOTO EXIT
SINGLE    ;sets DIR call to ask the user if they want to sort for a single
 +1       ;service, provider, patient, location, division or entered by
 +2        SET DIR(0)="Y"
 +3        SET DIR("A")="Would you like a specific "_$SELECT(SORT=1:"Service/Section",SORT=2:"Provider",SORT=3:"Patient",SORT=4:"Location",SORT=5:"Entering person",1:"Division")
 +4        SET DIR("B")="NO"
 +5        SET DIR("?")="You can limit your sort to one or more Service/Section, Provider, Patient, Location, Entered by, or Division, by entering a YES  here"
 +6        DO ^DIR
           if +Y>0
               SET SINGLE=+Y
           KILL DIR
           IF $DATA(DTOUT)!$DATA(DUOUT)
               GOTO EXIT
LONER     ;sets DIR call to allow the user to select the specific sort entity
 +1       ;only asked if the user entered a YES in the previous prompt
 +2        IF $DATA(SINGLE)
               Begin DoDot:1
 +3                FOR 
                       Begin DoDot:2
 +4                        SET DIR(0)=$SELECT(SORT=1:"PAO^49:AEQM",SORT=2:"PAO^200:AEQM,",SORT=3:"PAO^2:AEQM",SORT=4:"PAO^44:AEQM",SORT=5:"PAO^200:AEQM",SORT=6:"PAO^40.8:AEQM")
 +5                        SET DIR("A")="Select "_$SELECT(SORT=1:"Service/Section: ",SORT=2:"Provider: ",SORT=3:"Patient: ",SORT=4:"Location: ",SORT=5:"Entering Person: ",1:"Division: ")
 +6                        SET DIR("?")="When finished entering all the selections you want, press return or enter to go on. Enter an ^ to exit the option."
 +7                        DO ^DIR
                           if +Y>0
                               SET LONER($PIECE(Y,U,2))=+Y
                           KILL DIR
                           IF $DATA(DTOUT)!$DATA(DUOUT)
                               SET QUIT=1
                       End DoDot:2
                       IF Y=-1!($DATA(QUIT))
                           QUIT 
               End DoDot:1
               IF $DATA(QUIT)!('$DATA(LONER))
                   GOTO EXIT
SDATE     ;sets DIR call to ask the user for a starting date
 +1        SET DIR(0)="DA^::ETX"
 +2        SET DIR("A")="Enter a starting date: "
 +3        SET DIR("?")="Enter the date or date/time that you want the search to start with.  Example: If your site has a 48 hr grace period for signing orders,         enter T-2"
 +4        DO ^DIR
           if +Y>0
               SET (SDATE,SD1)=(9999999-Y)
               SET SDT=$$FMTE^XLFDT(Y)
           KILL DIR
           IF $DATA(DTOUT)!$DATA(DUOUT)
               GOTO EXIT
EDATE     ;sets DIR call to ask the user for an ending date (optional)
 +1        SET DIR(0)="DA^::ETX"
 +2        SET DIR("A")="Enter an ending date: "
 +3        SET DIR("?")="Enter the date or date/time that you want the search to end with. This field can be used to ignore pre-CPRS unsigned orders by entering the date of your CPRS installation."
 +4        DO ^DIR
           SET (EDATE,SD2)=(9999999-Y)
           SET EDT=$$FMTE^XLFDT(Y)
           KILL DIR
           IF $DATA(DTOUT)!$DATA(DUOUT)
               GOTO EXIT
SWITCH    ;takes the date input from the user and does a switcheroo so the program
 +1       ;can work as intended
 +2        IF EDATE'>SDATE
               SET EDATE=SD1
               SET SDATE=SD2
SUMONLY   ;ask if summary only or full detail
 +1        SET DIR(0)="Y"
           SET DIR("A")="Print summary only "
           SET DIR("B")="NO"
           SET DIR("?")="Enter yes for summary report (statistics), no for detailed report."
 +2        DO ^DIR
           SET SUMONLY=$SELECT(Y=1:1,Y=0:0,1:"^")
           KILL DIR
           IF SUMONLY="^"
               QUIT 
TASK      ;
 +1        SET %ZIS="Q"
           DO ^%ZIS
           IF POP
               QUIT 
 +2        IF $DATA(IO("Q"))
               Begin DoDot:1
 +3                SET ZTIO=ION
                   SET ZTDESC="File 100 order status search"
 +4                SET ZTRTN="LOOP^ORLPSRA"
                   SET ZTSAVE("SORT")=""
                   SET ZTSAVE("TYPE")=""
 +5                SET ZTSAVE("SDATE")=""
                   SET ZTSAVE("EDATE")=""
                   SET ZTSAVE("SINGLE")=""
 +6                SET ZTSAVE("LONER*")=""
                   SET ZTSAVE("SDT")=""
                   SET ZTSAVE("EDT")=""
                   SET ZTSAVE("SUMONLY")=""
 +7                DO ^%ZTLOAD
                   IF $DATA(ZTSK)
                       WRITE !,?32,"REQUEST QUEUED"
               End DoDot:1
               KILL IO("Q")
               QUIT 
 +8        USE IO
           DO LOOP^ORLPSRA
           QUIT 
STATS     ;SERVICE/SECTION statistics
 +1       ;Set SUMONLY back to zero so header will print.
           if SUMONLY
               SET PAGE=0
           SET SUMONLY=0
 +2        IF '$DATA(^TMP("ORSTATS",$JOB))
               DO HDR
               if STOP
                   QUIT 
               WRITE !,"There are no statistics for the selected sort range."
               QUIT 
 +3        IF SORT=1&($DATA(^TMP("ORSTATS",$JOB)))
               Begin DoDot:1
 +4                SET HDR="!!?25,""Order Statistics for Service/Section sort"""
 +5                SET HDR1="!,""Service/Section"",?25,""Provider"",?50,""# of Orders"""
 +6                SET TOT=0
                   DO HDR
 +7                SET SER=""
                   FOR 
                       SET SER=$ORDER(^TMP("ORSTATS",$JOB,SER))
                       SET TOT0=0
                       if SER=""!STOP
                           QUIT 
                       Begin DoDot:2
 +8                        SET PROV=""
                           FOR 
                               SET PROV=$ORDER(^TMP("ORSTATS",$JOB,SER,PROV))
                               if PROV=""!STOP
                                   QUIT 
                               Begin DoDot:3
 +9                                WRITE SER,?25,PROV,?50,^(PROV),!
                                   SET TOT1=^(PROV)
                                   SET TOT0=TOT0+TOT1
 +10                               SET TOT=TOT+TOT1
                                   if $Y>(IOSL-4)
                                       DO HDR
                                   if STOP
                                       QUIT 
                               End DoDot:3
 +11                       if 'STOP
                               WRITE ?46,"SUBTOTAL: ",TOT0,!
                       End DoDot:2
 +12               if 'STOP
                       WRITE ?46,"------------",!?46,"TOTAL: ",TOT
               End DoDot:1
PV        ;PROVIDER statistics
 +1        IF SORT=2&($DATA(^TMP("ORSTATS",$JOB)))
               Begin DoDot:1
 +2                SET HDR="!!?25,""Order Statistics for Provider sort"""
 +3                SET HDR1="!,""Provider"",?25,""Patient"",?50,""# of Orders"""
 +4                SET TOT=0
                   DO HDR
 +5                SET PROV=""
                   FOR 
                       SET PROV=$ORDER(^TMP("ORSTATS",$JOB,PROV))
                       SET TOT0=0
                       if PROV=""!STOP
                           QUIT 
                       Begin DoDot:2
 +6                        SET PNM=""
                           FOR 
                               SET PNM=$ORDER(^TMP("ORSTATS",$JOB,PROV,PNM))
                               if PNM=""!STOP
                                   QUIT 
                               Begin DoDot:3
 +7                                WRITE PROV,?25,PNM,?50,^(PNM),!
                                   SET TOT1=^(PNM)
 +8                                SET TOT=TOT+TOT1
                                   SET TOT0=TOT0+TOT1
                                   if $Y>(IOSL-4)
                                       DO HDR
                                   if STOP
                                       QUIT 
                               End DoDot:3
 +9                        if 'STOP
                               WRITE ?46,"SUBTOTAL: ",TOT0,!
                       End DoDot:2
 +10               if 'STOP
                       WRITE ?46,"------------",!?46,"TOTAL: ",TOT
               End DoDot:1
PT        ;PATIENT statistics
 +1        IF SORT=3&($DATA(^TMP("ORSTATS",$JOB)))
               Begin DoDot:1
 +2                SET HDR="!!?25,""Order Statistics for Patient sort"""
 +3                SET HDR1="!,""Patient"",?25,""Provider"",?50,""# of Orders"""
 +4                SET TOT=0
                   DO HDR
 +5                SET PNM=""
                   FOR 
                       SET PNM=$ORDER(^TMP("ORSTATS",$JOB,PNM))
                       SET TOT0=0
                       if PNM=""!STOP
                           QUIT 
                       Begin DoDot:2
 +6                        SET PROV=""
                           FOR 
                               SET PROV=$ORDER(^TMP("ORSTATS",$JOB,PNM,PROV))
                               if PROV=""!STOP
                                   QUIT 
                               Begin DoDot:3
 +7                                WRITE PNM,?25,PROV,?50,^(PROV),!
                                   SET TOT1=^(PROV)
                                   SET TOT0=TOT0+TOT1
 +8                                SET TOT=TOT+TOT1
                                   if $Y>(IOSL-4)
                                       DO HDR
                                   if STOP
                                       QUIT 
                               End DoDot:3
 +9                        if 'STOP
                               WRITE ?46,"SUBTOTAL: ",TOT0,!
                       End DoDot:2
 +10               if 'STOP
                       WRITE ?46,"------------",!?46,"TOTAL: ",TOT
               End DoDot:1
L         ;LOCATION statistics
 +1        IF SORT=4&($DATA(^TMP("ORSTATS",$JOB)))
               Begin DoDot:1
 +2                SET HDR="!!?25,""Order Statistics for Location sort"""
 +3                SET HDR1="!,""Location"",?25,""Provider"",?50,""# of Orders"""
 +4                SET TOT=0
                   DO HDR
 +5                SET LOC=""
                   FOR 
                       SET LOC=$ORDER(^TMP("ORSTATS",$JOB,LOC))
                       SET TOT0=0
                       if LOC=""!STOP
                           QUIT 
                       Begin DoDot:2
 +6                        SET PROV=""
                           FOR 
                               SET PROV=$ORDER(^TMP("ORSTATS",$JOB,LOC,PROV))
                               if PROV=""!STOP
                                   QUIT 
                               Begin DoDot:3
 +7                                WRITE $EXTRACT(LOC,1,24),?25,PROV,?50,^(PROV),!
                                   SET TOT1=^(PROV)
                                   SET TOT0=TOT0+TOT1
 +8                                SET TOT=TOT+TOT1
                                   if $Y>(IOSL-4)
                                       DO HDR
                                   if STOP
                                       QUIT 
                               End DoDot:3
 +9                        if 'STOP
                               WRITE ?46,"SUBTOTAL: ",TOT0,!
                       End DoDot:2
 +10               if 'STOP
                       WRITE ?46,"------------",!?46,"TOTAL: ",TOT
               End DoDot:1
EB        ;ENTERED BY statistics
 +1        IF SORT=5&($DATA(^TMP("ORSTATS",$JOB)))
               Begin DoDot:1
 +2                SET HDR="!!?25,""Order Statistics for Entering Person sort"""
 +3                SET HDR1="!,""Entering person"",?25,""Patient"",?50,""# of Orders"""
 +4                SET TOT=0
                   DO HDR
 +5                SET WHO=""
                   FOR 
                       SET WHO=$ORDER(^TMP("ORSTATS",$JOB,WHO))
                       SET TOT0=0
                       if WHO=""!STOP
                           QUIT 
                       Begin DoDot:2
 +6                        SET PNM=""
                           FOR 
                               SET PNM=$ORDER(^TMP("ORSTATS",$JOB,WHO,PNM))
                               if PNM=""!STOP
                                   QUIT 
                               Begin DoDot:3
 +7                                WRITE WHO,?25,PNM,?50,^(PNM),!
                                   SET TOT1=^(PNM)
                                   SET TOT0=TOT0+TOT1
 +8                                SET TOT=TOT+TOT1
                                   if $Y>(IOS-4)
                                       DO HDR
                                   if STOP
                                       QUIT 
                               End DoDot:3
 +9                        if 'STOP
                               WRITE ?46,"SUBTOTAL: ",TOT0,!
                       End DoDot:2
 +10               if 'STOP
                       WRITE ?46,"------------",!?46,"TOTAL: ",TOT
               End DoDot:1
D         ;DIVISION statistics
 +1        IF SORT=6&($DATA(^TMP("ORSTATS",$JOB)))
               Begin DoDot:1
 +2                SET HDR="!!?25,""Order Statistics for Division sort"""
 +3                SET DIV=""
                   FOR 
                       SET DIV=$ORDER(^TMP("ORSTATS",$JOB,DIV))
                       if DIV=""!STOP
                           QUIT 
                       SET DCNT=0
                       Begin DoDot:2
 +4                        SET LOC=""
                           FOR 
                               SET LOC=$ORDER(^TMP("ORSTATS",$JOB,DIV,LOC))
                               if LOC=""!STOP
                                   QUIT 
                               SET LCNT=0
                               Begin DoDot:3
 +5                                SET HDR1="!!,""Division: "",DIV,!?5,""Location: "",LOC,!?20,""Provider"",?51,""Orders"""
                                   DO HDR
                                   if STOP
                                       QUIT 
 +6                                SET PROV=""
                                   FOR 
                                       SET PROV=$ORDER(^TMP("ORSTATS",$JOB,DIV,LOC,PROV))
                                       if PROV=""!STOP
                                           QUIT 
                                       Begin DoDot:4
 +7                                        WRITE ?20,PROV,?51,^(PROV),!
                                           SET LCNT=LCNT+^(PROV)
                                           if $Y>(IOSL-4)
                                               DO HDR
                                           if STOP
                                               QUIT 
                                       End DoDot:4
 +8                                IF 'STOP
                                       WRITE !?41,"Subtotal",?51,LCNT
                                       SET DCNT=DCNT+LCNT
                               End DoDot:3
 +9                        IF 'STOP
                               WRITE !?5,"Total orders for Division: ",DIV_" = "_DCNT
                       End DoDot:2
               End DoDot:1
EXIT       KILL ^TMP("ORUNS",$JOB),^TMP("ORSTATS",$JOB)
 +1        DO ^%ZISC
 +2        QUIT 
LOC(LOC)  ;resolves the location pointer
 +1        NEW X
 +2        SET X=$PIECE(^SC(+LOC,0),U)
 +3        QUIT X
USER(USER) ;resolves user pointers
 +1        NEW X
 +2        SET X=$EXTRACT($PIECE(^VA(200,+USER,0),U),1,24)
 +3        QUIT X
STAT(STA) ;resolves pointer to the order status file
 +1        NEW X
 +2        SET X=$EXTRACT($PIECE(^ORD(100.01,+STA,0),U),1,14)
 +3        QUIT X
SER(SER)  ;resolves pointer to the service/section file
 +1        NEW X
 +2        SET X=$PIECE(^DIC(49,+SER,0),U)
 +3        QUIT X
DIV(LOC)  ;determines the division based on the entry in file 44
 +1        NEW X
 +2        SET X=$PIECE(^SC(+LOC,0),U,15)
           IF X=""
               QUIT "UNKNOWN"
 +3        SET X=$PIECE(^DG(40.8,X,0),U)
 +4        QUIT X
HDR       ;Print header
 +1        IF $GET(SUMONLY)
               QUIT 
 +2        IF $EXTRACT(IOST)="C"&(PAGE)
               SET DIR(0)="E"
               DO ^DIR
               if Y'=1
                   SET STOP=1
               KILL DIR
               if STOP
                   QUIT 
 +3        IF PAGE!('PAGE&($EXTRACT(IOST)="C"))
               WRITE @IOF
 +4        IF $DATA(RPDT)
               WRITE @RPDT
 +5        IF $DATA(HDR)
               WRITE @HDR
 +6        IF $DATA(HDR1)
               WRITE @HDR1
 +7        WRITE !,$$REPEAT^XLFSTR("-",IOM),!
 +8        SET PAGE=1
 +9        QUIT