IBOUNP6 ;ALB/CJM - INPATIENT INSURANCE REPORT ;JAN 25,1991
 ;;2.0;INTEGRATED BILLING;**528**;21-MAR-94;Build 163
 ;;Per VA Directive 6402, this routine should not be modified.
REPORT ;
 N QUIT,DIV,TIME,DFN,CTG,HDR,HDR2,HDR1,PAGE,NOW,LINE1,LINE2,B,E,NAME,CRT,BOT,SUBTOT,TOTAL,FIRST,WRDN,WARD,PATINF
 S CRT=0,BOT=6,QUIT=0 I $E(IOST,1,2)="C-" S CRT=1,BOT=2
 S FIRST=1
 D NOW^%DTC S Y=X X ^DD("DD") S NOW=Y
 I "^R^E^"'[(U_$G(IBOUT)_U) S IBOUT="R"
 W:CRT @IOF
 ;
 S HDR="VETERANS"
 I IBOUT="E" S (HDR1,HDR2,LINE1,LINE2)="" D PHDL G CAT
 S LINE1="",$P(LINE1,"-",126)=""
 S LINE2="",$P(LINE2,"=",126)=""
 I IBOPICK="D" S Y=IBOBEG X ^DD("DD") S B=Y,Y=IBOEND X ^DD("DD") S E=Y,HDR2="THAT WERE ADMITTED " S:E'=B HDR2=HDR2_"BETWEEN "_B_" AND "_E S:E=B HDR2=HDR2_"ON "_B
 I IBOPICK="C" S HDR2="THAT ARE CURRENTLY ADMITTED"
 I CRT W @IOF
CAT I IBOUI S CTG="NO",HDR1=HDR_" WITH NO INSURANCE " D LOOP G:QUIT Q
 I IBOEXP S CTG="EXPIRED",HDR1=HDR_" WHOSE INSURANCE IS EXPIRED OR WILL EXPIRE WITHIN 30 DAYS " D LOOP G:QUIT Q
 I IBOUK S CTG="UNKNOWN",HDR1=HDR_" WHOSE INSURANCE IS UNKNOWN " D LOOP
 W:IBOUT="E" !
 I CRT,'QUIT D PAUSE
Q D KVAR^VADPT K VA
 Q
LOOP ;
 N NODE
 S PAGE=1,(SUBTOT,TOTAL)=0 I IBOUT="R" D HEADER Q:QUIT
 I IBOUT="E" W !!,HDR1
 S DIV="" F   S DIV=$O(^TMP($J,CTG,DIV)) S TOTAL=TOTAL+SUBTOT,SUBTOT=0 Q:DIV=""!QUIT   D:$Y>(IOSL-(BOT+4))&(IBOUT="R") HEADER Q:QUIT  W:IBOUT="R" !!,?6,"Division: ",?31,DIV W:IBOUT="E" !!,"Division:^",DIV W !,LINE2,! D
 .S WRDN="" F  S WRDN=$O(^TMP($J,CTG,DIV,WRDN)) Q:QUIT  D:WRDN=""&(SUBTOT>0) SUBTOT Q:WRDN=""  D  Q:QUIT
 ..I WRDN'="ALL WARDS" D  Q:QUIT
 ...I ($Y>(IOSL-(BOT+8))),(IBOUT="R") D HEADER Q:QUIT
 ...I IBOUT="R" W !,?6,"Ward: ",?31,WRDN,!
 ...I IBOUT="E" W !,"Ward:^",WRDN,!
 ..S NAME="" F  S NAME=$O(^TMP($J,CTG,DIV,WRDN,NAME)) Q:NAME=""  D
 ...F DFN=0:0 S DFN=$O(^TMP($J,CTG,DIV,WRDN,NAME,DFN)) Q:QUIT!(DFN'>0)  S NODE=^TMP($J,CTG,DIV,WRDN,NAME,DFN),TIME=$P(NODE,"^"),WARD=$P(NODE,"^",2) D ITEM
 ..I WRDN'="ALL WARDS" W !,LINE1
 D:'QUIT TOTAL
 Q
SUBTOT ; prints subtotal for division
 I IBOUT="E" W !,"_________________",!,"Subtotal: ",SUBTOT Q
 I $Y+BOT>(IOSL-3) D HEADER
 W !?3,"_________________"
 W !,?3,"Subtotal: ",SUBTOT
 Q
TOTAL ; prints total for all divisions
 I IBOUT="E" W !,"_________________",!,"Total: ",TOTAL Q
 I $Y+BOT>(IOSL-3) D HEADER Q:QUIT
 W !?3,"_________________"
 W !?3,"Total: ",TOTAL
 ;F  Q:($Y>(IOSL-2))  W !     ; Eliminate scrolling problem - CJS, IB*2.0*528
 Q
ITEM ; prints patient data for a single appt
 N CNT,TM,E1,E2,PID,MS,ES,SC,AGE,INS,I,VAPA S (E1,E2,PID,MS,ES,SC,AGE)="",CNT=2,SUBTOT=SUBTOT+1
DATA S Y=TIME X ^DD("DD") S TM=$P(Y,"@",1)_"@"_$E($P(Y,"@",2),1,5)
 D DEM^VADPT I 'VAERR S MS=$P(VADM(10),"^",2),PID=VA("PID"),AGE=VADM(4)
 D OPD^VADPT I 'VAERR S ES=$P(VAPD(7),"^",2)
 D ELIG^VADPT I 'VAERR,+VAEL(3) S SC=$P(VAEL(3),"^",2)
CKSPACE ; tries to keep vet's data on same page
 S VAPA("P")="" D ADD^VADPT I 'VAERR D
 . F I=2,3,4 S:VAPA(I)]"" CNT=CNT+1
 S VAOA("A")=5 D OAD^VADPT I 'VAERR S E1=VAOA(9) I E1]"" D
 . S CNT=CNT+1
 . F I=1,2,3,4,5,6,8 S E1(I)=VAOA(I)
 . F I=1,2,3 S:VAOA(I)]"" CNT=CNT+1
 S VAOA("A")=6 D OAD^VADPT I 'VAERR S E2=VAOA(9) I E2]"" D
 . S CNT=CNT+1
 . F I=1,2,3,4,5,6,8 S E2(I)=VAOA(I)
 . F I=1,2,3 S:VAOA(I)]"" CNT=CNT+1
 S CNT=$P($G(^DPT(DFN,.312,0)),"^",4)+CNT G:IBOUT="E" XLPRINT
 I CNT>(IOSL-($Y+BOT)) D HEADER Q:QUIT
PRINT W !?3,$E(NAME,1,25),?31,PID,?51,TM,?74,AGE,?81,SC,?87,$E(MS,1,15),?104,$E(ES,1,20)
 W !?5,WARD,?34,"Address:",?51,VAPA(1),?87,"Tele: ",?104,VAPA(8) W:VAPA(2)]"" !?51,VAPA(2) W:VAPA(3)]"" !?51,VAPA(3) W:VAPA(4)]"" !?51,VAPA(4)_","_$P($G(^DIC(5,+VAPA(5),0)),"^",2)_" "_VAPA(6)
 I E1]"" W !?34,"Employer:",?51,E1,?87,"Tele: ",?104,E1(8) W:E1(1)]"" !?51,E1(1) W:E1(2)]"" !?51,E1(2) W:E1(3)]"" !?51,E1(3) W:E1(4)]"" !?51,E1(4)_","_$P($G(^DIC(5,+E1(5),0)),"^",2)_" "_E1(6)
 I E2]"" W !?34,"Sps's Emplr:",?51,E2,?87,"Tele: ",?104,E2(8) W:E2(1)]"" !?51,E2(1) W:E2(2)]"" !?51,E2(2) W:E2(3)]"" !?51,E2(3) W:E2(4)]"" !?51,E2(4)_","_$P($G(^DIC(5,+E2(5),0)),"^",2)_" "_E2(6)
INS ; writes insurance data
 N I,J S J=1 F I=0:0 S I=$O(^DPT(DFN,.312,I)) Q:I'>0  S INS=$G(^(I,0)) D:$Y>(IOSL-BOT) HEADER Q:QUIT  W ! W:J ?34,"Insurance:" W ?51,$P($G(^DIC(36,$P(INS,"^",1),0)),"^",1),?87 W:J "Expiration:" S Y=$P(INS,"^",4),J=0 I Y>0 X ^DD("DD") W ?104,Y
 W !
 Q
XLPRINT ; Excel data output
 W !,$E(NAME,1,25),"^",PID,"^",TM,"^",AGE,"^",SC,"^",$E(MS,1,15),"^",$E(ES,1,20)
 W !,WARD,"^Address:^",VAPA(1),"^^^Tele:^",VAPA(8) W:VAPA(2)]"" !,"^^",VAPA(2) W:VAPA(3)]"" !,"^^",VAPA(3) W:VAPA(4)]"" !,"^^",VAPA(4)_","_$P($G(^DIC(5,+VAPA(5),0)),"^",2)_" "_VAPA(6)
 I E1]"" W !,"^Employer:^",E1,"^^^Tele:^",E1(8) W:E1(1)]"" !,"^^",E1(1) W:E1(2)]"" !,"^^",E1(2) W:E1(3)]"" !,"^^",E1(3) W:E1(4)]"" !,"^^",E1(4)_","_$P($G(^DIC(5,+E1(5),0)),"^",2)_" "_E1(6)
 I E2]"" W !,"^Sps's Emplr:^",E2,"^^^Tele:^",E2(8) W:E2(1)]"" !,"^^",E2(1) W:E2(2)]"" !,"^^",E2(2) W:E2(3)]"" !,"^^",E2(3) W:E2(4)]"" !,"^^",E2(4)_","_$P($G(^DIC(5,+E2(5),0)),"^",2)_" "_E2(6)
XLINS ; writes insurance data in Excel format
 N I,J S J=1 F I=0:0 S I=$O(^DPT(DFN,.312,I)) Q:I'>0  S INS=$G(^(I,0)) W ! W:J "^Insurance:^" W:'J "^^" W $P($G(^DIC(36,$P(INS,"^",1),0)),"^",1),"^^^" W:J "Expiration:" S Y=$P(INS,"^",4),J=0 I Y>0 X ^DD("DD") W "^",Y
 W !
 Q
 ;
 I CRT,$Y>1,'FIRST D  Q:QUIT
 .; F  Q:$Y>(IOSL-1)  W !     ; Eliminate scrolling problem - CJS, IB*2.0*528
 .D PAUSE
 I 'FIRST W @IOF
 I FIRST S FIRST=0
 W ?104,NOW,"  PAGE ",PAGE,!?1,HDR1,HDR2,!!
 W ?3,"PATIENT/WARD",?32,"PT ID",?51,"ADMISSION DATE",?74,"AGE",?81,"%SC",?87,"MARITAL STATUS",?104,"EMPLOYMENT STATUS",!
 W LINE1
 S PAGE=PAGE+1
 Q
PAUSE ;
 N T W:($Y<IOSL) ! R "    Press RETURN to continue",T:DTIME I '$T!(T["^") S QUIT=1 Q
 Q
 ;
PHDL ; Print header for Excel format
 W "PATIENT/WARD^PT ID^ADMISSION DATE^AGE^%SC^MARITAL STATUS^EMPLOYMENT STATUS"
 Q
 
--- Routine Detail   --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HIBOUNP6   5941     printed  Sep 23, 2025@20:02:40                                                                                                                                                                                                     Page 2
IBOUNP6   ;ALB/CJM - INPATIENT INSURANCE REPORT ;JAN 25,1991
 +1       ;;2.0;INTEGRATED BILLING;**528**;21-MAR-94;Build 163
 +2       ;;Per VA Directive 6402, this routine should not be modified.
REPORT    ;
 +1        NEW QUIT,DIV,TIME,DFN,CTG,HDR,HDR2,HDR1,PAGE,NOW,LINE1,LINE2,B,E,NAME,CRT,BOT,SUBTOT,TOTAL,FIRST,WRDN,WARD,PATINF
 +2        SET CRT=0
           SET BOT=6
           SET QUIT=0
           IF $EXTRACT(IOST,1,2)="C-"
               SET CRT=1
               SET BOT=2
 +3        SET FIRST=1
 +4        DO NOW^%DTC
           SET Y=X
           XECUTE ^DD("DD")
           SET NOW=Y
 +5        IF "^R^E^"'[(U_$GET(IBOUT)_U)
               SET IBOUT="R"
 +6        if CRT
               WRITE @IOF
 +7       ;
 +8        SET HDR="VETERANS"
 +9        IF IBOUT="E"
               SET (HDR1,HDR2,LINE1,LINE2)=""
               DO PHDL
               GOTO CAT
 +10       SET LINE1=""
           SET $PIECE(LINE1,"-",126)=""
 +11       SET LINE2=""
           SET $PIECE(LINE2,"=",126)=""
 +12       IF IBOPICK="D"
               SET Y=IBOBEG
               XECUTE ^DD("DD")
               SET B=Y
               SET Y=IBOEND
               XECUTE ^DD("DD")
               SET E=Y
               SET HDR2="THAT WERE ADMITTED "
               if E'=B
                   SET HDR2=HDR2_"BETWEEN "_B_" AND "_E
               if E=B
                   SET HDR2=HDR2_"ON "_B
 +13       IF IBOPICK="C"
               SET HDR2="THAT ARE CURRENTLY ADMITTED"
 +14       IF CRT
               WRITE @IOF
CAT        IF IBOUI
               SET CTG="NO"
               SET HDR1=HDR_" WITH NO INSURANCE "
               DO LOOP
               if QUIT
                   GOTO Q
 +1        IF IBOEXP
               SET CTG="EXPIRED"
               SET HDR1=HDR_" WHOSE INSURANCE IS EXPIRED OR WILL EXPIRE WITHIN 30 DAYS "
               DO LOOP
               if QUIT
                   GOTO Q
 +2        IF IBOUK
               SET CTG="UNKNOWN"
               SET HDR1=HDR_" WHOSE INSURANCE IS UNKNOWN "
               DO LOOP
 +3        if IBOUT="E"
               WRITE !
 +4        IF CRT
               IF 'QUIT
                   DO PAUSE
Q          DO KVAR^VADPT
           KILL VA
 +1        QUIT 
LOOP      ;
 +1        NEW NODE
 +2        SET PAGE=1
           SET (SUBTOT,TOTAL)=0
           IF IBOUT="R"
               DO HEADER
               if QUIT
                   QUIT 
 +3        IF IBOUT="E"
               WRITE !!,HDR1
 +4        SET DIV=""
           FOR 
               SET DIV=$ORDER(^TMP($JOB,CTG,DIV))
               SET TOTAL=TOTAL+SUBTOT
               SET SUBTOT=0
               if DIV=""!QUIT
                   QUIT 
               if $Y>(IOSL-(BOT+4))&(IBOUT="R")
                   DO HEADER
               if QUIT
                   QUIT 
               if IBOUT="R"
                   WRITE !!,?6,"Division: ",?31,DIV
               if IBOUT="E"
                   WRITE !!,"Division:^",DIV
               WRITE !,LINE2,!
               Begin DoDot:1
 +5                SET WRDN=""
                   FOR 
                       SET WRDN=$ORDER(^TMP($JOB,CTG,DIV,WRDN))
                       if QUIT
                           QUIT 
                       if WRDN=""&(SUBTOT>0)
                           DO SUBTOT
                       if WRDN=""
                           QUIT 
                       Begin DoDot:2
 +6                        IF WRDN'="ALL WARDS"
                               Begin DoDot:3
 +7                                IF ($Y>(IOSL-(BOT+8)))
                                       IF (IBOUT="R")
                                           DO HEADER
                                           if QUIT
                                               QUIT 
 +8                                IF IBOUT="R"
                                       WRITE !,?6,"Ward: ",?31,WRDN,!
 +9                                IF IBOUT="E"
                                       WRITE !,"Ward:^",WRDN,!
                               End DoDot:3
                               if QUIT
                                   QUIT 
 +10                       SET NAME=""
                           FOR 
                               SET NAME=$ORDER(^TMP($JOB,CTG,DIV,WRDN,NAME))
                               if NAME=""
                                   QUIT 
                               Begin DoDot:3
 +11                               FOR DFN=0:0
                                       SET DFN=$ORDER(^TMP($JOB,CTG,DIV,WRDN,NAME,DFN))
                                       if QUIT!(DFN'>0)
                                           QUIT 
                                       SET NODE=^TMP($JOB,CTG,DIV,WRDN,NAME,DFN)
                                       SET TIME=$PIECE(NODE,"^")
                                       SET WARD=$PIECE(NODE,"^",2)
                                       DO ITEM
                               End DoDot:3
 +12                       IF WRDN'="ALL WARDS"
                               WRITE !,LINE1
                       End DoDot:2
                       if QUIT
                           QUIT 
               End DoDot:1
 +13       if 'QUIT
               DO TOTAL
 +14       QUIT 
SUBTOT    ; prints subtotal for division
 +1        IF IBOUT="E"
               WRITE !,"_________________",!,"Subtotal: ",SUBTOT
               QUIT 
 +2        IF $Y+BOT>(IOSL-3)
               DO HEADER
 +3        WRITE !?3,"_________________"
 +4        WRITE !,?3,"Subtotal: ",SUBTOT
 +5        QUIT 
TOTAL     ; prints total for all divisions
 +1        IF IBOUT="E"
               WRITE !,"_________________",!,"Total: ",TOTAL
               QUIT 
 +2        IF $Y+BOT>(IOSL-3)
               DO HEADER
               if QUIT
                   QUIT 
 +3        WRITE !?3,"_________________"
 +4        WRITE !?3,"Total: ",TOTAL
 +5       ;F  Q:($Y>(IOSL-2))  W !     ; Eliminate scrolling problem - CJS, IB*2.0*528
 +6        QUIT 
ITEM      ; prints patient data for a single appt
 +1        NEW CNT,TM,E1,E2,PID,MS,ES,SC,AGE,INS,I,VAPA
           SET (E1,E2,PID,MS,ES,SC,AGE)=""
           SET CNT=2
           SET SUBTOT=SUBTOT+1
DATA       SET Y=TIME
           XECUTE ^DD("DD")
           SET TM=$PIECE(Y,"@",1)_"@"_$EXTRACT($PIECE(Y,"@",2),1,5)
 +1        DO DEM^VADPT
           IF 'VAERR
               SET MS=$PIECE(VADM(10),"^",2)
               SET PID=VA("PID")
               SET AGE=VADM(4)
 +2        DO OPD^VADPT
           IF 'VAERR
               SET ES=$PIECE(VAPD(7),"^",2)
 +3        DO ELIG^VADPT
           IF 'VAERR
               IF +VAEL(3)
                   SET SC=$PIECE(VAEL(3),"^",2)
CKSPACE   ; tries to keep vet's data on same page
 +1        SET VAPA("P")=""
           DO ADD^VADPT
           IF 'VAERR
               Begin DoDot:1
 +2                FOR I=2,3,4
                       if VAPA(I)]""
                           SET CNT=CNT+1
               End DoDot:1
 +3        SET VAOA("A")=5
           DO OAD^VADPT
           IF 'VAERR
               SET E1=VAOA(9)
               IF E1]""
                   Begin DoDot:1
 +4                    SET CNT=CNT+1
 +5                    FOR I=1,2,3,4,5,6,8
                           SET E1(I)=VAOA(I)
 +6                    FOR I=1,2,3
                           if VAOA(I)]""
                               SET CNT=CNT+1
                   End DoDot:1
 +7        SET VAOA("A")=6
           DO OAD^VADPT
           IF 'VAERR
               SET E2=VAOA(9)
               IF E2]""
                   Begin DoDot:1
 +8                    SET CNT=CNT+1
 +9                    FOR I=1,2,3,4,5,6,8
                           SET E2(I)=VAOA(I)
 +10                   FOR I=1,2,3
                           if VAOA(I)]""
                               SET CNT=CNT+1
                   End DoDot:1
 +11       SET CNT=$PIECE($GET(^DPT(DFN,.312,0)),"^",4)+CNT
           if IBOUT="E"
               GOTO XLPRINT
 +12       IF CNT>(IOSL-($Y+BOT))
               DO HEADER
               if QUIT
                   QUIT 
PRINT      WRITE !?3,$EXTRACT(NAME,1,25),?31,PID,?51,TM,?74,AGE,?81,SC,?87,$EXTRACT(MS,1,15),?104,$EXTRACT(ES,1,20)
 +1        WRITE !?5,WARD,?34,"Address:",?51,VAPA(1),?87,"Tele: ",?104,VAPA(8)
           if VAPA(2)]""
               WRITE !?51,VAPA(2)
           if VAPA(3)]""
               WRITE !?51,VAPA(3)
           if VAPA(4)]""
               WRITE !?51,VAPA(4)_","_$PIECE($GET(^DIC(5,+VAPA(5),0)),"^",2)_" "_VAPA(6)
 +2        IF E1]""
               WRITE !?34,"Employer:",?51,E1,?87,"Tele: ",?104,E1(8)
               if E1(1)]""
                   WRITE !?51,E1(1)
               if E1(2)]""
                   WRITE !?51,E1(2)
               if E1(3)]""
                   WRITE !?51,E1(3)
               if E1(4)]""
                   WRITE !?51,E1(4)_","_$PIECE($GET(^DIC(5,+E1(5),0)),"^",2)_" "_E1(6)
 +3        IF E2]""
               WRITE !?34,"Sps's Emplr:",?51,E2,?87,"Tele: ",?104,E2(8)
               if E2(1)]""
                   WRITE !?51,E2(1)
               if E2(2)]""
                   WRITE !?51,E2(2)
               if E2(3)]""
                   WRITE !?51,E2(3)
               if E2(4)]""
                   WRITE !?51,E2(4)_","_$PIECE($GET(^DIC(5,+E2(5),0)),"^",2)_" "_E2(6)
INS       ; writes insurance data
 +1        NEW I,J
           SET J=1
           FOR I=0:0
               SET I=$ORDER(^DPT(DFN,.312,I))
               if I'>0
                   QUIT 
               SET INS=$GET(^(I,0))
               if $Y>(IOSL-BOT)
                   DO HEADER
               if QUIT
                   QUIT 
               WRITE !
               if J
                   WRITE ?34,"Insurance:"
               WRITE ?51,$PIECE($GET(^DIC(36,$PIECE(INS,"^",1),0)),"^",1),?87
               if J
                   WRITE "Expiration:"
               SET Y=$PIECE(INS,"^",4)
               SET J=0
               IF Y>0
                   XECUTE ^DD("DD")
                   WRITE ?104,Y
 +2        WRITE !
 +3        QUIT 
XLPRINT   ; Excel data output
 +1        WRITE !,$EXTRACT(NAME,1,25),"^",PID,"^",TM,"^",AGE,"^",SC,"^",$EXTRACT(MS,1,15),"^",$EXTRACT(ES,1,20)
 +2        WRITE !,WARD,"^Address:^",VAPA(1),"^^^Tele:^",VAPA(8)
           if VAPA(2)]""
               WRITE !,"^^",VAPA(2)
           if VAPA(3)]""
               WRITE !,"^^",VAPA(3)
           if VAPA(4)]""
               WRITE !,"^^",VAPA(4)_","_$PIECE($GET(^DIC(5,+VAPA(5),0)),"^",2)_" "_VAPA(6)
 +3        IF E1]""
               WRITE !,"^Employer:^",E1,"^^^Tele:^",E1(8)
               if E1(1)]""
                   WRITE !,"^^",E1(1)
               if E1(2)]""
                   WRITE !,"^^",E1(2)
               if E1(3)]""
                   WRITE !,"^^",E1(3)
               if E1(4)]""
                   WRITE !,"^^",E1(4)_","_$PIECE($GET(^DIC(5,+E1(5),0)),"^",2)_" "_E1(6)
 +4        IF E2]""
               WRITE !,"^Sps's Emplr:^",E2,"^^^Tele:^",E2(8)
               if E2(1)]""
                   WRITE !,"^^",E2(1)
               if E2(2)]""
                   WRITE !,"^^",E2(2)
               if E2(3)]""
                   WRITE !,"^^",E2(3)
               if E2(4)]""
                   WRITE !,"^^",E2(4)_","_$PIECE($GET(^DIC(5,+E2(5),0)),"^",2)_" "_E2(6)
XLINS     ; writes insurance data in Excel format
 +1        NEW I,J
           SET J=1
           FOR I=0:0
               SET I=$ORDER(^DPT(DFN,.312,I))
               if I'>0
                   QUIT 
               SET INS=$GET(^(I,0))
               WRITE !
               if J
                   WRITE "^Insurance:^"
               if 'J
                   WRITE "^^"
               WRITE $PIECE($GET(^DIC(36,$PIECE(INS,"^",1),0)),"^",1),"^^^"
               if J
                   WRITE "Expiration:"
               SET Y=$PIECE(INS,"^",4)
               SET J=0
               IF Y>0
                   XECUTE ^DD("DD")
                   WRITE "^",Y
 +2        WRITE !
 +3        QUIT 
 +4       ;
 +1        IF CRT
               IF $Y>1
                   IF 'FIRST
                       Begin DoDot:1
 +2       ; F  Q:$Y>(IOSL-1)  W !     ; Eliminate scrolling problem - CJS, IB*2.0*528
 +3                        DO PAUSE
                       End DoDot:1
                       if QUIT
                           QUIT 
 +4        IF 'FIRST
               WRITE @IOF
 +5        IF FIRST
               SET FIRST=0
 +6        WRITE ?104,NOW,"  PAGE ",PAGE,!?1,HDR1,HDR2,!!
 +7        WRITE ?3,"PATIENT/WARD",?32,"PT ID",?51,"ADMISSION DATE",?74,"AGE",?81,"%SC",?87,"MARITAL STATUS",?104,"EMPLOYMENT STATUS",!
 +8        WRITE LINE1
 +9        SET PAGE=PAGE+1
 +10       QUIT 
PAUSE     ;
 +1        NEW T
           if ($Y<IOSL)
               WRITE !
           READ "    Press RETURN to continue",T:DTIME
           IF '$TEST!(T["^")
               SET QUIT=1
               QUIT 
 +2        QUIT 
 +3       ;
PHDL      ; Print header for Excel format
 +1        WRITE "PATIENT/WARD^PT ID^ADMISSION DATE^AGE^%SC^MARITAL STATUS^EMPLOYMENT STATUS"
 +2        QUIT