IBTRV3 ;ALB/AAS - CLAIMS TRACKING -  REVIEW ACTIONS ; 14-JUL-93
 ;;Version 2.0 ; INTEGRATED BILLING ;**40,58**; 21-MAR-94
 ;;Per VHA Directive 10-93-142, this routine should not be modified.
 ;
% G EN^IBTRV
 ;
ADNXT(IBTRN) ; -- Add next Hospital Review
 ; -- Input  ibtrn = internal entry in claims tracking (356)
 ;
 N IBETYP,IBTRTP,IBQUIT,IBDGPM,IBTRVDT,IBTRV,IBRDAY,IBMORE,IBSAME,IBSEL
 D FULL^VALM1
 S VALMBCK="R",IBQUIT=0
 S IBTRVDT=DT
 S IBETYP=$$TRTP^IBTRE1(IBTRN)
 I IBETYP>2 W !!,"This doesn't appear to be an admission or outpatient visit.",!,"I don't know how to review this.",! D PAUSE^VALM1 G ADNXTQ
 I IBETYP=2 D  I IBQUIT D PAUSE^VALM1 G ADNXTQ
 .S IBTDAY=1
 .S IBTRTP=50
 .I '$D(^IBT(356.1,"ATRTP",IBTRN,IBTRTP)) Q
 .W !!,"You have already entered a Review for this Outpatient Encounter.",!,"Use Quick Edit to Edit."
 .S IBQUIT=1
 .Q
 ;
 ; -- inpatient review type
 I IBETYP=1 S IBTRTP=15 I $D(^IBT(356.1,"ATRTP",IBTRN,15)) S IBTRTP=30
 S IBRDAY=$$RDAY^IBTRV31(IBTRN)
 ;
INPT D REV(IBTRN,IBTRTP)
 D:$G(IBSEL)'["^" EN^IBTRE3(IBTRN)
 D:$G(IBSEL)'["^" EN^IBTRE4(IBTRN)
 D:$G(IBSEL)'["^" EN^IBTRE5(IBTRN)
 D EDIT^IBTRVD1(".21////10;.21",1)
 G:$G(IBSEL)["^" ANOTHER
 I IBETYP'=1 G ADNXTQ
 ;
ANOTHER ; -- ask if add another if no ask next review date/status
 S IBMORE=$$ASKMORE^IBTRV31()
 I IBMORE["^" D  G ADNXTQ
 .D EDIT^IBTRVD1("1.13////0;1.15////1;.2",1)
 .Q
 ;
 ; -- if yes ask set next review date ="" ask status
 I IBMORE D
 .D EDIT^IBTRVD1(".2///@",1) ;delete next review date
 .Q
 ; -- if no g adnxtq
 I 'IBMORE S VALMBCK="R" D  G ADNXTQ
 .D EDIT^IBTRVD1("1.13////0;1.15;I 'X S Y=""@9"";.2//^S X=$$DAT1^IBOUTL($$NXTRVDT^IBTRV31(IBTRV));@9;1.17;S Y=""@99"";.2///@;@99",1)
 ;
SAME ; -- ask if same
 S IBSAME=$$ASKSAME^IBTRV31()
 D EDIT^IBTRVD1("1.13////1;1.14////"_+IBSAME,1)
 ;
 I IBSAME["^" G ADNXTQ
 ;
 ; -- if yes file / increment day ask status/clinical data g another
 I IBSAME D  G ANOTHER
 .S IBRDAY=IBRDAY+1
 .S IBTRTP=30
 .D MESS
 .D COPY^IBTRV31(IBTRV) ; after copy ibtrv will be value of new review
 .Q
 ;
 ; -- if no edit g another
 I 'IBSAME D  G INPT
 .S IBRDAY=IBRDAY+1
 .S IBTRTP=30
 ;
ADNXTQ Q
 ;
REV(IBTRN,IBTRTP) ; -- Add review
 ; -- input ibtrtp = tracking type code,
 ;          ibtrn  = internal id of tracking entry
 I '$G(IBTRTP)!('$G(IBTRN)) W !!,"DUH, Nothing Added!" D PAUSE^VALM1 G REVQ ; only stupid programmers should get this message
 N IBQUIT,IBDGPMD,IBTRVDT
 S IBQUIT=0,IBTRVDT=$$RDT^IBTRV31(IBTRN)
 ;
 I IBTRTP=30 D  G:IBQUIT REVQ
 .I '$D(^IBT(356.1,"ATRTP",IBTRN,15)) W !!,"There must be an admission review first" S IBQUIT=1 Q
 .Q
 ;
 ; -- reviews after discharge date don't make sense
 S IBDGPMD=$P($G(^DGPM(+$P(^IBT(356,IBTRN,0),"^",5),0)),"^",17)
 ; finish this here
 ;
 D PRE^IBTUTL2(+$P(IBTRVDT,"."),IBTRN,IBTRTP)
 D MESS
 I '$D(IBTRV) G REVQ
 S VA200="" D INP^VADPT
 D @IBTRTP D EDIT^IBTRVD1(.DR,1)
REVQ Q
 ;
15 ; -- Initial edit of admission review
 S DR=".03////1;D UNIT^IBTRV3(IBTRV);.01;.07////^S X=IBSPEC;.07;.23//INTERQUAL;I X'=1 S Y=""@20"";.04;.05;.06;I X=1 S Y=""@20"";12;.1;I 'X S Y=""@20"";.11;@20;11;"
 Q
 ;
30 ; -- Initial edit for continued stay
 S DR=".01;.03//^S X=$$RDAY^IBTRV31(IBTRN);D UNIT^IBTRV3(IBTRV);.07////^S X=$G(IBSPEC);.07;.23//INTERQUAL;I X'=1 S Y=""@20"";.05;.04;I $P(^IBT(356.1,DA,0),U,4),$P(^(0),U,5) S Y=""@20"";.12;13;"
 S DR=DR_".1;I 'X S Y=""@20"";.11;@20;11;"
 ;S DR="[IBTRV NEW CONT]"
 Q
 ;
50 ; -- outpatient review
 D 15
 Q
 ;
UNIT(X) ; -- determine if specialty is a specialized unit
 ;    input (review)
 ;    output 1 if unit, 0 if not
 N Y,VAIN,VAINDT,VA200
 S IBUNIT=0,VA200=""
 I '$D(DA),$G(IBTRV) N DA S DA=IBTRV
 S VAINDT=$$VDT(IBTRN,DA),VA200="" D INP^VADPT
 I $P(VAIN(3),"^",2)["ICU"!$P(VAIN(3),"^",2)["CCU" S IBUNIT=1
 S IBSPEC=$P(VAIN(3),U),IBPROV=$P(VAIN(2),U),IBATD=$P(VAIN(11),U)
 Q
 ;
INSURD(X) ; -- determine if this is tracked as an ins. claim
 Q +$P(^IBT(356,+$P(^IBT(356.1,X,0),"^",2),0),"^",24)
 ;
VDT(IBTRN,IBTRV) ; compute vaindt for day of review
 N IBX,DAY
 ;patch 40
 S IBX=$P($P(^IBT(356,+IBTRN,0),"^",6),".")_.2359 ; midnight of admission day
 I $G(IBTRV) S DAY=$P($G(^IBT(356.1,+IBTRV,0)),"^",3)
 I $G(DAY)>1 S IBX=$P($$FMADD^XLFDT(IBX,DAY-1),".")_.2359 ; midnight of review day (day1 = admission day) ; patch 40 corrects the time problem +.24
 Q IBX
 ;
MESS ; -- add message
 W:IBTRTP=30 !!,"Adding a Continued Stay Review for Review Day ",$G(IBRDAY),".",!
 W:IBTRTP=15 !!,"Adding an Admission Review",!
 W:IBTRTP=50 !!,"Adding an Outpatient Visit Review",!
 Q
 
--- Routine Detail   --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HIBTRV3   4625     printed  Sep 23, 2025@20:05:19                                                                                                                                                                                                      Page 2
IBTRV3    ;ALB/AAS - CLAIMS TRACKING -  REVIEW ACTIONS ; 14-JUL-93
 +1       ;;Version 2.0 ; INTEGRATED BILLING ;**40,58**; 21-MAR-94
 +2       ;;Per VHA Directive 10-93-142, this routine should not be modified.
 +3       ;
%          GOTO EN^IBTRV
 +1       ;
ADNXT(IBTRN) ; -- Add next Hospital Review
 +1       ; -- Input  ibtrn = internal entry in claims tracking (356)
 +2       ;
 +3        NEW IBETYP,IBTRTP,IBQUIT,IBDGPM,IBTRVDT,IBTRV,IBRDAY,IBMORE,IBSAME,IBSEL
 +4        DO FULL^VALM1
 +5        SET VALMBCK="R"
           SET IBQUIT=0
 +6        SET IBTRVDT=DT
 +7        SET IBETYP=$$TRTP^IBTRE1(IBTRN)
 +8        IF IBETYP>2
               WRITE !!,"This doesn't appear to be an admission or outpatient visit.",!,"I don't know how to review this.",!
               DO PAUSE^VALM1
               GOTO ADNXTQ
 +9        IF IBETYP=2
               Begin DoDot:1
 +10               SET IBTDAY=1
 +11               SET IBTRTP=50
 +12               IF '$DATA(^IBT(356.1,"ATRTP",IBTRN,IBTRTP))
                       QUIT 
 +13               WRITE !!,"You have already entered a Review for this Outpatient Encounter.",!,"Use Quick Edit to Edit."
 +14               SET IBQUIT=1
 +15               QUIT 
               End DoDot:1
               IF IBQUIT
                   DO PAUSE^VALM1
                   GOTO ADNXTQ
 +16      ;
 +17      ; -- inpatient review type
 +18       IF IBETYP=1
               SET IBTRTP=15
               IF $DATA(^IBT(356.1,"ATRTP",IBTRN,15))
                   SET IBTRTP=30
 +19       SET IBRDAY=$$RDAY^IBTRV31(IBTRN)
 +20      ;
INPT       DO REV(IBTRN,IBTRTP)
 +1        if $GET(IBSEL)'["^"
               DO EN^IBTRE3(IBTRN)
 +2        if $GET(IBSEL)'["^"
               DO EN^IBTRE4(IBTRN)
 +3        if $GET(IBSEL)'["^"
               DO EN^IBTRE5(IBTRN)
 +4        DO EDIT^IBTRVD1(".21////10;.21",1)
 +5        if $GET(IBSEL)["^"
               GOTO ANOTHER
 +6        IF IBETYP'=1
               GOTO ADNXTQ
 +7       ;
ANOTHER   ; -- ask if add another if no ask next review date/status
 +1        SET IBMORE=$$ASKMORE^IBTRV31()
 +2        IF IBMORE["^"
               Begin DoDot:1
 +3                DO EDIT^IBTRVD1("1.13////0;1.15////1;.2",1)
 +4                QUIT 
               End DoDot:1
               GOTO ADNXTQ
 +5       ;
 +6       ; -- if yes ask set next review date ="" ask status
 +7        IF IBMORE
               Begin DoDot:1
 +8       ;delete next review date
                   DO EDIT^IBTRVD1(".2///@",1)
 +9                QUIT 
               End DoDot:1
 +10      ; -- if no g adnxtq
 +11       IF 'IBMORE
               SET VALMBCK="R"
               Begin DoDot:1
 +12               DO EDIT^IBTRVD1("1.13////0;1.15;I 'X S Y=""@9"";.2//^S X=$$DAT1^IBOUTL($$NXTRVDT^IBTRV31(IBTRV));@9;1.17;S Y=""@99"";.2///@;@99",1)
               End DoDot:1
               GOTO ADNXTQ
 +13      ;
SAME      ; -- ask if same
 +1        SET IBSAME=$$ASKSAME^IBTRV31()
 +2        DO EDIT^IBTRVD1("1.13////1;1.14////"_+IBSAME,1)
 +3       ;
 +4        IF IBSAME["^"
               GOTO ADNXTQ
 +5       ;
 +6       ; -- if yes file / increment day ask status/clinical data g another
 +7        IF IBSAME
               Begin DoDot:1
 +8                SET IBRDAY=IBRDAY+1
 +9                SET IBTRTP=30
 +10               DO MESS
 +11      ; after copy ibtrv will be value of new review
                   DO COPY^IBTRV31(IBTRV)
 +12               QUIT 
               End DoDot:1
               GOTO ANOTHER
 +13      ;
 +14      ; -- if no edit g another
 +15       IF 'IBSAME
               Begin DoDot:1
 +16               SET IBRDAY=IBRDAY+1
 +17               SET IBTRTP=30
               End DoDot:1
               GOTO INPT
 +18      ;
ADNXTQ     QUIT 
 +1       ;
REV(IBTRN,IBTRTP) ; -- Add review
 +1       ; -- input ibtrtp = tracking type code,
 +2       ;          ibtrn  = internal id of tracking entry
 +3       ; only stupid programmers should get this message
           IF '$GET(IBTRTP)!('$GET(IBTRN))
               WRITE !!,"DUH, Nothing Added!"
               DO PAUSE^VALM1
               GOTO REVQ
 +4        NEW IBQUIT,IBDGPMD,IBTRVDT
 +5        SET IBQUIT=0
           SET IBTRVDT=$$RDT^IBTRV31(IBTRN)
 +6       ;
 +7        IF IBTRTP=30
               Begin DoDot:1
 +8                IF '$DATA(^IBT(356.1,"ATRTP",IBTRN,15))
                       WRITE !!,"There must be an admission review first"
                       SET IBQUIT=1
                       QUIT 
 +9                QUIT 
               End DoDot:1
               if IBQUIT
                   GOTO REVQ
 +10      ;
 +11      ; -- reviews after discharge date don't make sense
 +12       SET IBDGPMD=$PIECE($GET(^DGPM(+$PIECE(^IBT(356,IBTRN,0),"^",5),0)),"^",17)
 +13      ; finish this here
 +14      ;
 +15       DO PRE^IBTUTL2(+$PIECE(IBTRVDT,"."),IBTRN,IBTRTP)
 +16       DO MESS
 +17       IF '$DATA(IBTRV)
               GOTO REVQ
 +18       SET VA200=""
           DO INP^VADPT
 +19       DO @IBTRTP
           DO EDIT^IBTRVD1(.DR,1)
REVQ       QUIT 
 +1       ;
15        ; -- Initial edit of admission review
 +1        SET DR=".03////1;D UNIT^IBTRV3(IBTRV);.01;.07////^S X=IBSPEC;.07;.23//INTERQUAL;I X'=1 S Y=""@20"";.04;.05;.06;I X=1 S Y=""@20"";12;.1;I 'X S Y=""@20"";.11;@20;11;"
 +2        QUIT 
 +3       ;
30        ; -- Initial edit for continued stay
 +1        SET DR=".01;.03//^S X=$$RDAY^IBTRV31(IBTRN);D UNIT^IBTRV3(IBTRV);.07////^S X=$G(IBSPEC);.07;.23//INTERQUAL;I X'=1 S Y=""@20"";.05;.04;I $P(^IBT(356.1,DA,0),U,4),$P(^(0),U,5) S Y=""@20"";.12;13;"
 +2        SET DR=DR_".1;I 'X S Y=""@20"";.11;@20;11;"
 +3       ;S DR="[IBTRV NEW CONT]"
 +4        QUIT 
 +5       ;
50        ; -- outpatient review
 +1        DO 15
 +2        QUIT 
 +3       ;
UNIT(X)   ; -- determine if specialty is a specialized unit
 +1       ;    input (review)
 +2       ;    output 1 if unit, 0 if not
 +3        NEW Y,VAIN,VAINDT,VA200
 +4        SET IBUNIT=0
           SET VA200=""
 +5        IF '$DATA(DA)
               IF $GET(IBTRV)
                   NEW DA
                   SET DA=IBTRV
 +6        SET VAINDT=$$VDT(IBTRN,DA)
           SET VA200=""
           DO INP^VADPT
 +7        IF $PIECE(VAIN(3),"^",2)["ICU"!$PIECE(VAIN(3),"^",2)["CCU"
               SET IBUNIT=1
 +8        SET IBSPEC=$PIECE(VAIN(3),U)
           SET IBPROV=$PIECE(VAIN(2),U)
           SET IBATD=$PIECE(VAIN(11),U)
 +9        QUIT 
 +10      ;
INSURD(X) ; -- determine if this is tracked as an ins. claim
 +1        QUIT +$PIECE(^IBT(356,+$PIECE(^IBT(356.1,X,0),"^",2),0),"^",24)
 +2       ;
VDT(IBTRN,IBTRV) ; compute vaindt for day of review
 +1        NEW IBX,DAY
 +2       ;patch 40
 +3       ; midnight of admission day
           SET IBX=$PIECE($PIECE(^IBT(356,+IBTRN,0),"^",6),".")_.2359
 +4        IF $GET(IBTRV)
               SET DAY=$PIECE($GET(^IBT(356.1,+IBTRV,0)),"^",3)
 +5       ; midnight of review day (day1 = admission day) ; patch 40 corrects the time problem +.24
           IF $GET(DAY)>1
               SET IBX=$PIECE($$FMADD^XLFDT(IBX,DAY-1),".")_.2359
 +6        QUIT IBX
 +7       ;
MESS      ; -- add message
 +1        if IBTRTP=30
               WRITE !!,"Adding a Continued Stay Review for Review Day ",$GET(IBRDAY),".",!
 +2        if IBTRTP=15
               WRITE !!,"Adding an Admission Review",!
 +3        if IBTRTP=50
               WRITE !!,"Adding an Outpatient Visit Review",!
 +4        QUIT