IBCICMSP ;DSI/JSR - ClaimsManager STATUS REPORT ;6-APR-2001
 ;;2.0;INTEGRATED BILLING;**161**;21-MAR-94
 ;;Per VHA Directive 10-93-142, this routine should not be modified.
 ;; ** Program Description **
 ;     This routine has only 1 entry point EN.
 ;     This routine is invoked when ^IBCICMS is run from the menu option.
 ;     ^IBCICMS is and extraction routine which collects claims which
 ;     the user defined report extracted for reporting purposes.
 ;     This routine ^IBCICMSP is the print routine which permits the 
 ;     user to print the report to the screen or to queue as a background
 ;     job which can be stopped at any time using TaskManager.
 ;  Variables
 ;     IBCIPXT = (0 or 1) halts job if report is stopped.
 ;     SORT1  = will always be a 1
 ;     SORT2  = will always be a 1
 ;     SORT3  = "1" or the  Assigned to person name
 ;     SORT4  = a space concatenated with whatever data the user is
 ;              sorting by (terminal digit, Insurance company name,
 ;              patient last name, negative charge amount, or bill#. 
 ;     SORT5  = 1 will always be a 1
 ;     MAXCNT = Kernel determines the Max Lines per Page for each device
 ;     CRT    = Determines if output is sent to screen.
 ;     RPTTYP = Identifies type of report being compiled.
EN ; this is the only entry point
 N ASSIGN,AUDIT,COMMEN,CRT,DATE,EFLAG,ERRSEQ,GROUPBY,I,IBCI1,IBCI10
 N IBCI2,IBCI3,IBCI4,IBCI5,IBCI6,IBCI7,IBCI8,IBCI9,IBCIARR
 N IBCIBEG,IBCIDATA,IBCIDT,IBCIEND,IBCIPGCT,IBCIARR,IBCIEMN
 N IBCIRUN,IBCISEQ,IBCITXT,IBCIX,IBIFN,MAXCNT,PREV
 N IBCIPXT,RPTTYP,SORT1,SORT2,SORT3,SORT4,SORT5,Y,Z,X,STOP,NAME
 S ASSIGN=RPTSPECS("ASNSORT") ; PRIMARY SORT BY ASSIGN TO PERSON 1 YES 0 NO
 S COMMEN=RPTSPECS("IBCICOMM") ; FLAG PRINT COMMENT 1 YES 0 NO
 S GROUPBY=RPTSPECS("SORTBY")   ;TYPE 2=INS LOGIC DIFF SORT4
 S IBCIBEG=RPTSPECS("BEGDATE")
 S DATE=RPTSPECS("DATYP")
 S IBCIEND=RPTSPECS("ENDDATE")
 S (IBCIPXT,IBCIPGCT)=0  ; flags quit and header
 S Z=($P($G(^IBA(351.91,0)),U,4))
 F I=1:1:Z S (IBCIARR(I))=$P($G(^IBA(351.91,I,0)),U,2)  ; CM status
 S RPTTYP(1)="Terminal Digit"
 S RPTTYP(2)="Insurance Company"
 S RPTTYP(3)="Patient Last Name"
 S RPTTYP(4)="Dollar Impact"
 S RPTTYP(5)="Bill Number"  ; jsr 6/12/01
 ;
 I IOST["C" S MAXCNT=IOSL-4,CRT=1
 E  S MAXCNT=IOSL-6,CRT=0
 I RPTSPECS("TYPE")="D" D PRINT  ;Detailed report ;DSI/DJW 3/21/02
 D PRINT2
 I CRT,IBCIPGCT>0,'$D(ZTQUEUED),IBCIPXT=0 S DIR(0)="E" D ^DIR K DIR I $D(DTOUT)!($D(DUOUT)) S IBCIPXT=1 Q
 I $D(ZTQUEUED),$$S^%ZTLOAD() S ZTSTOP=1 Q
 G XIT
 Q
PRINT ; prints data extracted
 I '$D(^TMP($J,IBCIRTN)) D HEADER W ?35,"N O   D A T A   F O U N D",!!
 S SORT1="" F  S SORT1=$O(^TMP($J,IBCIRTN,SORT1)) Q:SORT1=""!(IBCIPXT=1)!($G(ZTSTOP))   D
 . S SORT2="" F  S SORT2=$O(^TMP($J,IBCIRTN,SORT1,SORT2)) Q:SORT2=""!(IBCIPXT=1)!($G(ZTSTOP))   D
 . . S SORT3="" F  S SORT3=$O(^TMP($J,IBCIRTN,SORT1,SORT2,SORT3)) Q:SORT3=""!(IBCIPXT=1)!($G(ZTSTOP))   D
 . . . I ASSIGN D HEADER
 . . . S SORT4="" F  S SORT4=$O(^TMP($J,IBCIRTN,SORT1,SORT2,SORT3,SORT4)) Q:SORT4=""!(IBCIPXT=1)!($G(ZTSTOP))   D
 . . . . S PREV=SORT4
 . . . . I GROUPBY=2,IBCIPXT=0,IBCIPGCT>0 D HEAD2
 . . . . S SORT5="" F  S SORT5=$O(^TMP($J,IBCIRTN,SORT1,SORT2,SORT3,SORT4,SORT5)) Q:SORT5=""!(IBCIPXT=1)!($G(ZTSTOP))   D
 . . . . . S NAME="" F  S NAME=$O(^TMP($J,IBCIRTN,SORT1,SORT2,SORT3,SORT4,SORT5,NAME)) Q:NAME=""!(IBCIPXT=1)!($G(ZTSTOP))   D
 . . . . . . S IBIFN="" F  S IBIFN=$O(^TMP($J,IBCIRTN,SORT1,SORT2,SORT3,SORT4,SORT5,NAME,IBIFN)) Q:IBIFN=""!(IBCIPXT=1)!($G(ZTSTOP))   D
 . . . . . . . D DATA
 . . . . . . . D LINE
 . . . . . . . I COMMEN D COMM
 ; Exit from the PRINT procedure
 Q
 ;
PRINT2 ; Print the totals by CM status at the end of the report
 ; esg - 5/22/01
 ;
 I RPTSPECS("TYPE")="D" G PR2    ; detailed report
 D HEADER
 I '$D(^TMP($J,IBCIRTN)) W ?35,"N O   D A T A   F O U N D",!! G PRX
PR2 ;
 I $D(IBCISCNT),'$G(IBCIPXT),'$G(ZTSTOP) D TOTALS
 ;
PRX ; Exit from the PRINT2 procedure
 Q
 ;
 ;
 I CRT,IBCIPGCT>0,'$D(ZTQUEUED),IBCIPXT=0 S DIR(0)="E" D ^DIR K DIR I $D(DTOUT)!($D(DUOUT)) S IBCIPXT=1 Q
 I $D(ZTQUEUED),$$S^%ZTLOAD() S ZTSTOP=1 Q
 S IBCIPGCT=IBCIPGCT+1
 W @IOF,!,"ClaimsManager Status Report sort by "_RPTTYP(GROUPBY)_" for "
 W $E(IBCIBEG,4,5)_"/"_$E(IBCIBEG,6,7)_"/"_$E(IBCIBEG,2,3)_" thru "_$E(IBCIEND,4,5)_"/"_$E(IBCIEND,6,7)_"/"_$E(IBCIEND,2,3)
 W ?100,"Page :"_IBCIPGCT,!
 I RPTSPECS("TYPE")="S" W "Summary Report"
 E  W "Detailed Report"
 S Y=$$NOW^XLFDT X ^DD("DD") S IBCIRUN=Y
 W ?100,"Run Date: "_IBCIRUN,!!
 ;
 ; skip the column headings for the summary report
 I RPTSPECS("TYPE")="S" G HEADERX
 ;
 I DATE=1 W ?8,"BILL NO.",?18,"PATIENT NAME",?44,"PID",?50," EVENT",?60,"BILLER",?68,"CODER",?76,"ASSIGN",?84,"ERROR CODES",?102,"TYPE",?108,"CHARGES",?116,"CM STATUS"
 E  W ?8,"BILL NO.",?18,"PATIENT NAME",?44,"PID",?50," ENTER",?60,"BILLER",?68,"CODER",?76,"ASSIGN",?84,"ERROR CODES",?102,"TYPE",?108,"CHARGES",?116,"CM STATUS"
 N X S $P(X,"=",130)="" W !,X,!
 Q
 ; 
HEAD2 ; only printed when insurance is a selected sort
 Q:GROUPBY'=2
 Q:IBCIPXT=1
 I $Y+4>MAXCNT,IBCIPXT=0 D HEADER
 I $Y=6,IBCIPXT=0 W ?2,"INSURANCE: "_SORT4,!
 E  W:IBCIPXT=0 !,?2,"INSURANCE: "_SORT4,!
 Q
DATA ; formats line item data - note claims with same edit error mnemonic
 ; may print mulitple times if the HFCA line item is an unique line
 ; with the same error type. The report prints the error mnemonic and
 ; the HCFA line # as it relates to IB.
 S IBCIDATA=^TMP($J,IBCIRTN,SORT1,SORT2,SORT3,SORT4,SORT5,NAME,IBIFN)
 S IBCI1=$P(IBCIDATA,U,1)  ; [1] External Bill#
 S IBCI2=$P(IBCIDATA,U,2)  ; [2] Patient SSN
 S IBCI3=$P(IBCIDATA,U,3)  ; ck logic [3] EventDate or Bill
 S IBCIDT=$E(IBCI3,4,5)_"/"_$E(IBCI3,6,7)_"/"_$E(IBCI3,2,3)
 S IBCI4=$P(IBCIDATA,U,4)  ; [4] Biller name
 S IBCI5=$P(IBCIDATA,U,5)  ; [5] Coder name
 S IBCI6=$P(IBCIDATA,U,6)  ; [6] Assigned to person name
 S IBCI7=$P(IBCIDATA,U,7)  ;[7] inpatient/outpatient flag
 S IBCI8=$P(IBCIDATA,U,8)  ;[8] Charges
 S IBCI9=$P(IBCIDATA,U,9)  ;[9] ien of current ClaimsManager
 S IBCI10=$P(IBCIDATA,U,10)  ;[10] String of error code mne
 S IBCIX=(IBCIARR(IBCI9))
 Q
COMM ; print CM user comments these comments are keyed by the user
 I '$D(^IBA(351.9,IBIFN,2,0)) W ! Q  ; JSR 6/13/01 line feed correction
 I $Y+2>MAXCNT,IBCIPXT=0 D HEADER
 Q:IBCIPXT=1
 W ?10,$$CMTINFO^IBCIUT5(IBIFN),!
 S IBCISEQ=0 F  S IBCISEQ=$O(^IBA(351.9,IBIFN,2,IBCISEQ)) Q:'IBCISEQ!(IBCIPXT=1)  D
 . S IBCITXT=$G(^IBA(351.9,IBIFN,2,IBCISEQ,0))
 . I $Y+1>MAXCNT,IBCIPXT=0 D HEADER
 . Q:IBCIPXT=1
 . W ?28,IBCITXT,!
 W !
 Q
LINE ; print report detail line
 Q:IBCIPXT=1
 I $Y+1>MAXCNT,IBCIPXT=0 D HEADER
 I IBCIPGCT=0,IBCIPXT=0 D HEADER D HEAD2
 Q:IBCIPXT=1
 W ?8,IBCI1,?19,$E(NAME,1,23),?44,$E(IBCI2,6,9),?50,IBCIDT
 W ?60,$E(IBCI4,1,6),?68,$E(IBCI5,1,6),?76,$E(IBCI6,1,6),?84,IBCI10
 W ?102,IBCI7,?108,$J($FN(IBCI8,",",0),6),?116,IBCIX,!
 Q
XIT ; one exit point
 Q
 ;
 ;
TOTALS ; Print totals - esg - 5/22/01
 NEW CMDESC,CMSTS
 I $Y+5>MAXCNT D HEADER Q:IBCIPXT!$G(ZTSTOP)
 W !!?32,"ClaimsManager Bill Totals by ClaimsManager Status",!
 S CMDESC=""
 F  S CMDESC=$O(^IBA(351.91,"B",CMDESC)) Q:CMDESC=""  D  Q:IBCIPXT!$G(ZTSTOP)
 . S CMSTS=0
 . F  S CMSTS=$O(^IBA(351.91,"B",CMDESC,CMSTS)) Q:'CMSTS  D  Q:IBCIPXT!$G(ZTSTOP)
 .. I '$D(IBCISCNT(1,CMSTS)) Q    ; no bill with this status on report
 .. I $Y+3>MAXCNT D HEADER Q:IBCIPXT!$G(ZTSTOP)
 .. W !?22,$P(^IBA(351.91,CMSTS,0),U,1),?63,$J(IBCISCNT(1,CMSTS),6)
 .. W ?76,$J("$"_$FN(IBCISCNT(2,CMSTS),",",0),12)
 .. Q
 . Q
 Q:IBCIPXT!$G(ZTSTOP)
 I $Y+4>MAXCNT D HEADER Q:IBCIPXT!$G(ZTSTOP)
 W !?62,"-------",?75,"-------------"
 W !?22,"GRAND TOTAL",?63,$J(IBCISCNT(1),6)
 W ?76,$J("$"_$FN(IBCISCNT(2),",",0),12)
 Q
 ;
 
--- Routine Detail   --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HIBCICMSP   7875     printed  Sep 23, 2025@19:49:29                                                                                                                                                                                                    Page 2
IBCICMSP  ;DSI/JSR - ClaimsManager STATUS REPORT ;6-APR-2001
 +1       ;;2.0;INTEGRATED BILLING;**161**;21-MAR-94
 +2       ;;Per VHA Directive 10-93-142, this routine should not be modified.
 +3       ;; ** Program Description **
 +4       ;     This routine has only 1 entry point EN.
 +5       ;     This routine is invoked when ^IBCICMS is run from the menu option.
 +6       ;     ^IBCICMS is and extraction routine which collects claims which
 +7       ;     the user defined report extracted for reporting purposes.
 +8       ;     This routine ^IBCICMSP is the print routine which permits the 
 +9       ;     user to print the report to the screen or to queue as a background
 +10      ;     job which can be stopped at any time using TaskManager.
 +11      ;  Variables
 +12      ;     IBCIPXT = (0 or 1) halts job if report is stopped.
 +13      ;     SORT1  = will always be a 1
 +14      ;     SORT2  = will always be a 1
 +15      ;     SORT3  = "1" or the  Assigned to person name
 +16      ;     SORT4  = a space concatenated with whatever data the user is
 +17      ;              sorting by (terminal digit, Insurance company name,
 +18      ;              patient last name, negative charge amount, or bill#. 
 +19      ;     SORT5  = 1 will always be a 1
 +20      ;     MAXCNT = Kernel determines the Max Lines per Page for each device
 +21      ;     CRT    = Determines if output is sent to screen.
 +22      ;     RPTTYP = Identifies type of report being compiled.
EN        ; this is the only entry point
 +1        NEW ASSIGN,AUDIT,COMMEN,CRT,DATE,EFLAG,ERRSEQ,GROUPBY,I,IBCI1,IBCI10
 +2        NEW IBCI2,IBCI3,IBCI4,IBCI5,IBCI6,IBCI7,IBCI8,IBCI9,IBCIARR
 +3        NEW IBCIBEG,IBCIDATA,IBCIDT,IBCIEND,IBCIPGCT,IBCIARR,IBCIEMN
 +4        NEW IBCIRUN,IBCISEQ,IBCITXT,IBCIX,IBIFN,MAXCNT,PREV
 +5        NEW IBCIPXT,RPTTYP,SORT1,SORT2,SORT3,SORT4,SORT5,Y,Z,X,STOP,NAME
 +6       ; PRIMARY SORT BY ASSIGN TO PERSON 1 YES 0 NO
           SET ASSIGN=RPTSPECS("ASNSORT")
 +7       ; FLAG PRINT COMMENT 1 YES 0 NO
           SET COMMEN=RPTSPECS("IBCICOMM")
 +8       ;TYPE 2=INS LOGIC DIFF SORT4
           SET GROUPBY=RPTSPECS("SORTBY")
 +9        SET IBCIBEG=RPTSPECS("BEGDATE")
 +10       SET DATE=RPTSPECS("DATYP")
 +11       SET IBCIEND=RPTSPECS("ENDDATE")
 +12      ; flags quit and header
           SET (IBCIPXT,IBCIPGCT)=0
 +13       SET Z=($PIECE($GET(^IBA(351.91,0)),U,4))
 +14      ; CM status
           FOR I=1:1:Z
               SET (IBCIARR(I))=$PIECE($GET(^IBA(351.91,I,0)),U,2)
 +15       SET RPTTYP(1)="Terminal Digit"
 +16       SET RPTTYP(2)="Insurance Company"
 +17       SET RPTTYP(3)="Patient Last Name"
 +18       SET RPTTYP(4)="Dollar Impact"
 +19      ; jsr 6/12/01
           SET RPTTYP(5)="Bill Number"
 +20      ;
 +21       IF IOST["C"
               SET MAXCNT=IOSL-4
               SET CRT=1
 +22      IF '$TEST
               SET MAXCNT=IOSL-6
               SET CRT=0
 +23      ;Detailed report ;DSI/DJW 3/21/02
           IF RPTSPECS("TYPE")="D"
               DO PRINT
 +24       DO PRINT2
 +25       IF CRT
               IF IBCIPGCT>0
                   IF '$DATA(ZTQUEUED)
                       IF IBCIPXT=0
                           SET DIR(0)="E"
                           DO ^DIR
                           KILL DIR
                           IF $DATA(DTOUT)!($DATA(DUOUT))
                               SET IBCIPXT=1
                               QUIT 
 +26       IF $DATA(ZTQUEUED)
               IF $$S^%ZTLOAD()
                   SET ZTSTOP=1
                   QUIT 
 +27       GOTO XIT
 +28       QUIT 
PRINT     ; prints data extracted
 +1        IF '$DATA(^TMP($JOB,IBCIRTN))
               DO HEADER
               WRITE ?35,"N O   D A T A   F O U N D",!!
 +2        SET SORT1=""
           FOR 
               SET SORT1=$ORDER(^TMP($JOB,IBCIRTN,SORT1))
               if SORT1=""!(IBCIPXT=1)!($GET(ZTSTOP))
                   QUIT 
               Begin DoDot:1
 +3                SET SORT2=""
                   FOR 
                       SET SORT2=$ORDER(^TMP($JOB,IBCIRTN,SORT1,SORT2))
                       if SORT2=""!(IBCIPXT=1)!($GET(ZTSTOP))
                           QUIT 
                       Begin DoDot:2
 +4                        SET SORT3=""
                           FOR 
                               SET SORT3=$ORDER(^TMP($JOB,IBCIRTN,SORT1,SORT2,SORT3))
                               if SORT3=""!(IBCIPXT=1)!($GET(ZTSTOP))
                                   QUIT 
                               Begin DoDot:3
 +5                                IF ASSIGN
                                       DO HEADER
 +6                                SET SORT4=""
                                   FOR 
                                       SET SORT4=$ORDER(^TMP($JOB,IBCIRTN,SORT1,SORT2,SORT3,SORT4))
                                       if SORT4=""!(IBCIPXT=1)!($GET(ZTSTOP))
                                           QUIT 
                                       Begin DoDot:4
 +7                                        SET PREV=SORT4
 +8                                        IF GROUPBY=2
                                               IF IBCIPXT=0
                                                   IF IBCIPGCT>0
                                                       DO HEAD2
 +9                                        SET SORT5=""
                                           FOR 
                                               SET SORT5=$ORDER(^TMP($JOB,IBCIRTN,SORT1,SORT2,SORT3,SORT4,SORT5))
                                               if SORT5=""!(IBCIPXT=1)!($GET(ZTSTOP))
                                                   QUIT 
                                               Begin DoDot:5
 +10                                               SET NAME=""
                                                   FOR 
                                                       SET NAME=$ORDER(^TMP($JOB,IBCIRTN,SORT1,SORT2,SORT3,SORT4,SORT5,NAME))
                                                       if NAME=""!(IBCIPXT=1)!($GET(ZTSTOP))
                                                           QUIT 
                                                       Begin DoDot:6
 +11                                                       SET IBIFN=""
                                                           FOR 
                                                               SET IBIFN=$ORDER(^TMP($JOB,IBCIRTN,SORT1,SORT2,SORT3,SORT4,SORT5,NAME,IBIFN))
                                                               if IBIFN=""!(IBCIPXT=1)!($GET(ZTSTOP))
                                                                   QUIT 
                                                               Begin DoDot:7
 +12                                                               DO DATA
 +13                                                               DO LINE
 +14                                                               IF COMMEN
                                                                       DO COMM
                                                               End DoDot:7
                                                       End DoDot:6
                                               End DoDot:5
                                       End DoDot:4
                               End DoDot:3
                       End DoDot:2
               End DoDot:1
 +15      ; Exit from the PRINT procedure
 +16       QUIT 
 +17      ;
PRINT2    ; Print the totals by CM status at the end of the report
 +1       ; esg - 5/22/01
 +2       ;
 +3       ; detailed report
           IF RPTSPECS("TYPE")="D"
               GOTO PR2
 +4        DO HEADER
 +5        IF '$DATA(^TMP($JOB,IBCIRTN))
               WRITE ?35,"N O   D A T A   F O U N D",!!
               GOTO PRX
PR2       ;
 +1        IF $DATA(IBCISCNT)
               IF '$GET(IBCIPXT)
                   IF '$GET(ZTSTOP)
                       DO TOTALS
 +2       ;
PRX       ; Exit from the PRINT2 procedure
 +1        QUIT 
 +2       ;
 +3       ;
 +1        IF CRT
               IF IBCIPGCT>0
                   IF '$DATA(ZTQUEUED)
                       IF IBCIPXT=0
                           SET DIR(0)="E"
                           DO ^DIR
                           KILL DIR
                           IF $DATA(DTOUT)!($DATA(DUOUT))
                               SET IBCIPXT=1
                               QUIT 
 +2        IF $DATA(ZTQUEUED)
               IF $$S^%ZTLOAD()
                   SET ZTSTOP=1
                   QUIT 
 +3        SET IBCIPGCT=IBCIPGCT+1
 +4        WRITE @IOF,!,"ClaimsManager Status Report sort by "_RPTTYP(GROUPBY)_" for "
 +5        WRITE $EXTRACT(IBCIBEG,4,5)_"/"_$EXTRACT(IBCIBEG,6,7)_"/"_$EXTRACT(IBCIBEG,2,3)_" thru "_$EXTRACT(IBCIEND,4,5)_"/"_$EXTRACT(IBCIEND,6,7)_"/"_$EXTRACT(IBCIEND,2,3)
 +6        WRITE ?100,"Page :"_IBCIPGCT,!
 +7        IF RPTSPECS("TYPE")="S"
               WRITE "Summary Report"
 +8       IF '$TEST
               WRITE "Detailed Report"
 +9        SET Y=$$NOW^XLFDT
           XECUTE ^DD("DD")
           SET IBCIRUN=Y
 +10       WRITE ?100,"Run Date: "_IBCIRUN,!!
 +11      ;
 +12      ; skip the column headings for the summary report
 +13       IF RPTSPECS("TYPE")="S"
               GOTO HEADERX
 +14      ;
 +15       IF DATE=1
               WRITE ?8,"BILL NO.",?18,"PATIENT NAME",?44,"PID",?50," EVENT",?60,"BILLER",?68,"CODER",?76,"ASSIGN",?84,"ERROR CODES",?102,"TYPE",?108,"CHARGES",?116,"CM STATUS"
 +16      IF '$TEST
               WRITE ?8,"BILL NO.",?18,"PATIENT NAME",?44,"PID",?50," ENTER",?60,"BILLER",?68,"CODER",?76,"ASSIGN",?84,"ERROR CODES",?102,"TYPE",?108,"CHARGES",?116,"CM STATUS"
 +17       NEW X
           SET $PIECE(X,"=",130)=""
           WRITE !,X,!
 +1        QUIT 
 +2       ; 
HEAD2     ; only printed when insurance is a selected sort
 +1        if GROUPBY'=2
               QUIT 
 +2        if IBCIPXT=1
               QUIT 
 +3        IF $Y+4>MAXCNT
               IF IBCIPXT=0
                   DO HEADER
 +4        IF $Y=6
               IF IBCIPXT=0
                   WRITE ?2,"INSURANCE: "_SORT4,!
 +5       IF '$TEST
               if IBCIPXT=0
                   WRITE !,?2,"INSURANCE: "_SORT4,!
 +6        QUIT 
DATA      ; formats line item data - note claims with same edit error mnemonic
 +1       ; may print mulitple times if the HFCA line item is an unique line
 +2       ; with the same error type. The report prints the error mnemonic and
 +3       ; the HCFA line # as it relates to IB.
 +4        SET IBCIDATA=^TMP($JOB,IBCIRTN,SORT1,SORT2,SORT3,SORT4,SORT5,NAME,IBIFN)
 +5       ; [1] External Bill#
           SET IBCI1=$PIECE(IBCIDATA,U,1)
 +6       ; [2] Patient SSN
           SET IBCI2=$PIECE(IBCIDATA,U,2)
 +7       ; ck logic [3] EventDate or Bill
           SET IBCI3=$PIECE(IBCIDATA,U,3)
 +8        SET IBCIDT=$EXTRACT(IBCI3,4,5)_"/"_$EXTRACT(IBCI3,6,7)_"/"_$EXTRACT(IBCI3,2,3)
 +9       ; [4] Biller name
           SET IBCI4=$PIECE(IBCIDATA,U,4)
 +10      ; [5] Coder name
           SET IBCI5=$PIECE(IBCIDATA,U,5)
 +11      ; [6] Assigned to person name
           SET IBCI6=$PIECE(IBCIDATA,U,6)
 +12      ;[7] inpatient/outpatient flag
           SET IBCI7=$PIECE(IBCIDATA,U,7)
 +13      ;[8] Charges
           SET IBCI8=$PIECE(IBCIDATA,U,8)
 +14      ;[9] ien of current ClaimsManager
           SET IBCI9=$PIECE(IBCIDATA,U,9)
 +15      ;[10] String of error code mne
           SET IBCI10=$PIECE(IBCIDATA,U,10)
 +16       SET IBCIX=(IBCIARR(IBCI9))
 +17       QUIT 
COMM      ; print CM user comments these comments are keyed by the user
 +1       ; JSR 6/13/01 line feed correction
           IF '$DATA(^IBA(351.9,IBIFN,2,0))
               WRITE !
               QUIT 
 +2        IF $Y+2>MAXCNT
               IF IBCIPXT=0
                   DO HEADER
 +3        if IBCIPXT=1
               QUIT 
 +4        WRITE ?10,$$CMTINFO^IBCIUT5(IBIFN),!
 +5        SET IBCISEQ=0
           FOR 
               SET IBCISEQ=$ORDER(^IBA(351.9,IBIFN,2,IBCISEQ))
               if 'IBCISEQ!(IBCIPXT=1)
                   QUIT 
               Begin DoDot:1
 +6                SET IBCITXT=$GET(^IBA(351.9,IBIFN,2,IBCISEQ,0))
 +7                IF $Y+1>MAXCNT
                       IF IBCIPXT=0
                           DO HEADER
 +8                if IBCIPXT=1
                       QUIT 
 +9                WRITE ?28,IBCITXT,!
               End DoDot:1
 +10       WRITE !
 +11       QUIT 
LINE      ; print report detail line
 +1        if IBCIPXT=1
               QUIT 
 +2        IF $Y+1>MAXCNT
               IF IBCIPXT=0
                   DO HEADER
 +3        IF IBCIPGCT=0
               IF IBCIPXT=0
                   DO HEADER
                   DO HEAD2
 +4        if IBCIPXT=1
               QUIT 
 +5        WRITE ?8,IBCI1,?19,$EXTRACT(NAME,1,23),?44,$EXTRACT(IBCI2,6,9),?50,IBCIDT
 +6        WRITE ?60,$EXTRACT(IBCI4,1,6),?68,$EXTRACT(IBCI5,1,6),?76,$EXTRACT(IBCI6,1,6),?84,IBCI10
 +7        WRITE ?102,IBCI7,?108,$JUSTIFY($FNUMBER(IBCI8,",",0),6),?116,IBCIX,!
 +8        QUIT 
XIT       ; one exit point
 +1        QUIT 
 +2       ;
 +3       ;
TOTALS    ; Print totals - esg - 5/22/01
 +1        NEW CMDESC,CMSTS
 +2        IF $Y+5>MAXCNT
               DO HEADER
               if IBCIPXT!$GET(ZTSTOP)
                   QUIT 
 +3        WRITE !!?32,"ClaimsManager Bill Totals by ClaimsManager Status",!
 +4        SET CMDESC=""
 +5        FOR 
               SET CMDESC=$ORDER(^IBA(351.91,"B",CMDESC))
               if CMDESC=""
                   QUIT 
               Begin DoDot:1
 +6                SET CMSTS=0
 +7                FOR 
                       SET CMSTS=$ORDER(^IBA(351.91,"B",CMDESC,CMSTS))
                       if 'CMSTS
                           QUIT 
                       Begin DoDot:2
 +8       ; no bill with this status on report
                           IF '$DATA(IBCISCNT(1,CMSTS))
                               QUIT 
 +9                        IF $Y+3>MAXCNT
                               DO HEADER
                               if IBCIPXT!$GET(ZTSTOP)
                                   QUIT 
 +10                       WRITE !?22,$PIECE(^IBA(351.91,CMSTS,0),U,1),?63,$JUSTIFY(IBCISCNT(1,CMSTS),6)
 +11                       WRITE ?76,$JUSTIFY("$"_$FNUMBER(IBCISCNT(2,CMSTS),",",0),12)
 +12                       QUIT 
                       End DoDot:2
                       if IBCIPXT!$GET(ZTSTOP)
                           QUIT 
 +13               QUIT 
               End DoDot:1
               if IBCIPXT!$GET(ZTSTOP)
                   QUIT 
 +14       if IBCIPXT!$GET(ZTSTOP)
               QUIT 
 +15       IF $Y+4>MAXCNT
               DO HEADER
               if IBCIPXT!$GET(ZTSTOP)
                   QUIT 
 +16       WRITE !?62,"-------",?75,"-------------"
 +17       WRITE !?22,"GRAND TOTAL",?63,$JUSTIFY(IBCISCNT(1),6)
 +18       WRITE ?76,$JUSTIFY("$"_$FNUMBER(IBCISCNT(2),",",0),12)
 +19       QUIT 
 +20      ;