IBOMBL ;ALB/SGD - MAS BILLING LOG  ;25 MAY 88 11:42
 ;;Version 2.0 ; INTEGRATED BILLING ;; 21-MAR-94
 ;
 ;MAP TO DGCROMBL
 ;
 I '$D(DT) D DT^DICRW
DATE S %DT="AEPX",%DT("A")="Start with DATE: ",%DT(0)=-DT D ^%DT G Q:Y<0 S IBBEG=Y
DATE1 S %DT="EPX" R !,"Go to DATE: ",X:DTIME S:X=" " X=IBBEG G Q:(X="")!(X["^") D ^%DT G DATE1:Y<0 S IBEND=Y I IBEND<IBBEG W *7," ??",!,"ENDING DATE must follow BEGINNING DATE." G DATE1
 I IBEND>DT W *7," ??" G DATE1
 ;
 W !!,*7,"*** Margin width of this output is 132 ***"
 ;S DGPGM="BEGIN^IBOMBL",DGVAR="IBBEG^IBEND^DUZ" D ZIS^DGUTQ G Q:POP U IO
 S %ZIS="QM" D ^%ZIS G:POP Q
 I $D(IO("Q")) K IO("Q") D  G Q
 .S ZTRTN="BEGIN^IBOMBL",ZTSAVE("IB*")="",ZTDESC="IB - MAS BILLING LOG"
 .D ^%ZTLOAD K ZTSK D HOME^%ZIS
 U IO
 ;
BEGIN S Y=IBBEG X ^DD("DD") S IBHD="MAS Billing Log of Printed Bills for "_$S(IBBEG'=IBEND:"period covering ",1:"")_Y I IBBEG<IBEND S Y=IBEND X ^DD("DD") S IBHD=IBHD_" through "_Y
 S (IBL,IBL1)="",$P(IBL,"=",131)="",$P(IBL1,"-",131)="",(IBNEX,IBPG)=0,X=132 X ^%ZOSF("RM") D HEAD
 F I=0:0 S IBNEX=$O(^DGCR(399,IBNEX)) Q:'IBNEX  I $D(^DGCR(399,IBNEX,"S")) S IBS=^DGCR(399,IBNEX,"S") D:($P(IBS,"^",12)'<(IBBEG\1))&($P(IBS,"^",12)'>(IBEND\1_.2359)) PRINT I $Y>$S($D(IOSL):(IOSL-6),1:6) D HEAD
 I '$D(IBFLAG) W !!,?30,"No matches found."
Q K IB0,IBS,IBFLAG,IBPG,IBBEG,IBEND,IBHD,IBL,IBL1,IBNEX,POP,I,X,X2,Y,%DT,%
 I '$D(ZTQUEUED) D ^%ZISC
 Q
 ;
PRINT S IBFLAG=1,IB0=^DGCR(399,IBNEX,0) S DFN=$P(IB0,"^",2) D PID^VADPT6 W ! I DFN]"",$D(^DPT(DFN,0)) W $P(^DPT(DFN,0),"^",1),?30,VA("BID") K VA("BID"),VA("PID")
 W ?39,$P(IB0,"^",1) I $P(IBS,"^",12)]"" S Y=$P(IBS,"^",12) X ^DD("DD") W ?50,Y
 I $D(^DGCR(399,IBNEX,"U1")) S IBU1=^DGCR(399,IBNEX,"U1") I $P(IBU1,"^",1)]"" S X=$S($P(IBU1,"^",2)]"":$P(IBU1,"^",1)-$P(IBU1,"^",2),1:$P(IBU1,"^",1)),X2="2$" D COMMA^%DTC W ?64,$J(X,15)
 I $P(IB0,"^",7),$D(^DGCR(399.3,$P(IB0,"^",7),0)) W ?81,$P(^(0),"^",1)
 W ?102,$S($P(IB0,"^",5)']"":"UNKNOWN",$P(IB0,"^",5)<3:"INPATIENT",1:"OUTPATIENT")
 I $P(IBS,"^",17)]"" S Y=$P(IBS,"^",17) X ^DD("DD") W ?116,Y
 Q
HEAD S IBPG=IBPG+1 W !,@IOF,!,?94,"Date/Time Printed: " D NOW^%DTC S Y=$E(%,1,12) X ^DD("DD") W Y,!!,IBHD,?120,"Page ",IBPG,!,IBL1,!!
 W "PATIENT NAME",?30,"PT ID",?38,"BILL NO.",?50,"DATE OF BILL",?67,"AMT. BILLED",?81,"BILL CATEGORY",?102,"INPT./OPT.",?116,"DATE CANCELLED",!,IBL
 Q
 
--- Routine Detail   --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HIBOMBL   2360     printed  Sep 23, 2025@20:02:08                                                                                                                                                                                                      Page 2
IBOMBL    ;ALB/SGD - MAS BILLING LOG  ;25 MAY 88 11:42
 +1       ;;Version 2.0 ; INTEGRATED BILLING ;; 21-MAR-94
 +2       ;
 +3       ;MAP TO DGCROMBL
 +4       ;
 +5        IF '$DATA(DT)
               DO DT^DICRW
DATE       SET %DT="AEPX"
           SET %DT("A")="Start with DATE: "
           SET %DT(0)=-DT
           DO ^%DT
           if Y<0
               GOTO Q
           SET IBBEG=Y
DATE1      SET %DT="EPX"
           READ !,"Go to DATE: ",X:DTIME
           if X=" "
               SET X=IBBEG
           if (X="")!(X["^")
               GOTO Q
           DO ^%DT
           if Y<0
               GOTO DATE1
           SET IBEND=Y
           IF IBEND<IBBEG
               WRITE *7," ??",!,"ENDING DATE must follow BEGINNING DATE."
               GOTO DATE1
 +1        IF IBEND>DT
               WRITE *7," ??"
               GOTO DATE1
 +2       ;
 +3        WRITE !!,*7,"*** Margin width of this output is 132 ***"
 +4       ;S DGPGM="BEGIN^IBOMBL",DGVAR="IBBEG^IBEND^DUZ" D ZIS^DGUTQ G Q:POP U IO
 +5        SET %ZIS="QM"
           DO ^%ZIS
           if POP
               GOTO Q
 +6        IF $DATA(IO("Q"))
               KILL IO("Q")
               Begin DoDot:1
 +7                SET ZTRTN="BEGIN^IBOMBL"
                   SET ZTSAVE("IB*")=""
                   SET ZTDESC="IB - MAS BILLING LOG"
 +8                DO ^%ZTLOAD
                   KILL ZTSK
                   DO HOME^%ZIS
               End DoDot:1
               GOTO Q
 +9        USE IO
 +10      ;
BEGIN      SET Y=IBBEG
           XECUTE ^DD("DD")
           SET IBHD="MAS Billing Log of Printed Bills for "_$SELECT(IBBEG'=IBEND:"period covering ",1:"")_Y
           IF IBBEG<IBEND
               SET Y=IBEND
               XECUTE ^DD("DD")
               SET IBHD=IBHD_" through "_Y
 +1        SET (IBL,IBL1)=""
           SET $PIECE(IBL,"=",131)=""
           SET $PIECE(IBL1,"-",131)=""
           SET (IBNEX,IBPG)=0
           SET X=132
           XECUTE ^%ZOSF("RM")
           DO HEAD
 +2        FOR I=0:0
               SET IBNEX=$ORDER(^DGCR(399,IBNEX))
               if 'IBNEX
                   QUIT 
               IF $DATA(^DGCR(399,IBNEX,"S"))
                   SET IBS=^DGCR(399,IBNEX,"S")
                   if ($PIECE(IBS,"^",12)'<(IBBEG\1))&($PIECE(IBS,"^",12)'>(IBEND\1_.2359))
                       DO PRINT
                   IF $Y>$SELECT($DATA(IOSL):(IOSL-6),1:6)
                       DO HEAD
 +3        IF '$DATA(IBFLAG)
               WRITE !!,?30,"No matches found."
Q          KILL IB0,IBS,IBFLAG,IBPG,IBBEG,IBEND,IBHD,IBL,IBL1,IBNEX,POP,I,X,X2,Y,%DT,%
 +1        IF '$DATA(ZTQUEUED)
               DO ^%ZISC
 +2        QUIT 
 +3       ;
PRINT      SET IBFLAG=1
           SET IB0=^DGCR(399,IBNEX,0)
           SET DFN=$PIECE(IB0,"^",2)
           DO PID^VADPT6
           WRITE !
           IF DFN]""
               IF $DATA(^DPT(DFN,0))
                   WRITE $PIECE(^DPT(DFN,0),"^",1),?30,VA("BID")
                   KILL VA("BID"),VA("PID")
 +1        WRITE ?39,$PIECE(IB0,"^",1)
           IF $PIECE(IBS,"^",12)]""
               SET Y=$PIECE(IBS,"^",12)
               XECUTE ^DD("DD")
               WRITE ?50,Y
 +2        IF $DATA(^DGCR(399,IBNEX,"U1"))
               SET IBU1=^DGCR(399,IBNEX,"U1")
               IF $PIECE(IBU1,"^",1)]""
                   SET X=$SELECT($PIECE(IBU1,"^",2)]"":$PIECE(IBU1,"^",1)-$PIECE(IBU1,"^",2),1:$PIECE(IBU1,"^",1))
                   SET X2="2$"
                   DO COMMA^%DTC
                   WRITE ?64,$JUSTIFY(X,15)
 +3        IF $PIECE(IB0,"^",7)
               IF $DATA(^DGCR(399.3,$PIECE(IB0,"^",7),0))
                   WRITE ?81,$PIECE(^(0),"^",1)
 +4        WRITE ?102,$SELECT($PIECE(IB0,"^",5)']"":"UNKNOWN",$PIECE(IB0,"^",5)<3:"INPATIENT",1:"OUTPATIENT")
 +5        IF $PIECE(IBS,"^",17)]""
               SET Y=$PIECE(IBS,"^",17)
               XECUTE ^DD("DD")
               WRITE ?116,Y
 +6        QUIT 
HEAD       SET IBPG=IBPG+1
           WRITE !,@IOF,!,?94,"Date/Time Printed: "
           DO NOW^%DTC
           SET Y=$EXTRACT(%,1,12)
           XECUTE ^DD("DD")
           WRITE Y,!!,IBHD,?120,"Page ",IBPG,!,IBL1,!!
 +1        WRITE "PATIENT NAME",?30,"PT ID",?38,"BILL NO.",?50,"DATE OF BILL",?67,"AMT. BILLED",?81,"BILL CATEGORY",?102,"INPT./OPT.",?116,"DATE CANCELLED",!,IBL
 +2        QUIT