| [613] | 1 | IBCRU1 ;ALB/ARH - RATES: UTILITIES ; 22-MAY-1996
 | 
|---|
 | 2 |  ;;2.0;INTEGRATED BILLING;**52,106,210**;21-MAR-94
 | 
|---|
 | 3 |  ;;Per VHA Directive 10-93-142, this routine should not be modified.
 | 
|---|
 | 4 |  ;
 | 
|---|
 | 5 |  ;
 | 
|---|
 | 6 | EMUTL(X,LNG) ; returns external form of an MCCR Utility entry (399.1), full or abbrev.
 | 
|---|
 | 7 |  S X=$G(^DGCR(399.1,+$G(X),0)),LNG=$S(+$G(LNG)=2:3,1:1)
 | 
|---|
 | 8 |  S X=$P(X,U,LNG)
 | 
|---|
 | 9 |  Q X
 | 
|---|
 | 10 |  ;
 | 
|---|
 | 11 | MCCRUTL(N,P) ; returns IFN of MCCR Utility entry (399.1) if Name N is found and piece P is true
 | 
|---|
 | 12 |  N X,I,Y S X=0
 | 
|---|
 | 13 |  I +$G(P),$G(N)'="" S I=0 F  S I=$O(^DGCR(399.1,"B",$E(N,1,30),I)) Q:'I  S Y=$G(^DGCR(399.1,I,0)) I +$P(Y,U,P),$P(Y,U,1)=N S X=I Q
 | 
|---|
 | 14 |  Q X
 | 
|---|
 | 15 |  ;
 | 
|---|
 | 16 | EXPAND(FILE,FIELD,VALUE) ; return expanded external form of a data element
 | 
|---|
 | 17 |  N Y,C S Y=$G(VALUE)
 | 
|---|
 | 18 |  I +$G(FILE),+$G(FIELD),Y'="" S C=$P(^DD(FILE,FIELD,0),"^",2) D Y^DIQ
 | 
|---|
 | 19 |  Q Y
 | 
|---|
 | 20 |  ;
 | 
|---|
 | 21 | DATE(X) ; date in external format
 | 
|---|
 | 22 |  N Y S Y="" I $G(X)?7N.E S Y=$E(X,4,5)_"/"_$E(X,6,7)_"/"_$E(X,2,3)
 | 
|---|
 | 23 |  Q Y
 | 
|---|
 | 24 |  ;
 | 
|---|
 | 25 | GETDT(DEFAULT,PROMPT,MIN,MAX) ; user select effective date  (-1 if ^, 0 if none)  DT1
 | 
|---|
 | 26 |  N IBX,DIR,X,Y,DTOUT,DUOUT,DIRUT S IBX=0 I $G(DEFAULT) S DIR("B")=$$DATE(DEFAULT)
 | 
|---|
 | 27 |  S DIR("A")=$S($G(PROMPT)'="":PROMPT,1:"Select EFFECTIVE DATE")
 | 
|---|
 | 28 |  S DIR(0)="DO^"_$G(MIN)_":"_$G(MAX)_":EX" D ^DIR K DIR I Y?7N S IBX=+Y
 | 
|---|
 | 29 |  I $D(DTOUT)!$D(DUOUT) S IBX=-1
 | 
|---|
 | 30 |  Q IBX
 | 
|---|
 | 31 |  ;
 | 
|---|
 | 32 | GETBR(BI) ; ask and return a billing rate (363.3):  (-1 if ^, 0 if none)  IFN^.01
 | 
|---|
 | 33 |  ; if BI passed in then only allow selection of billing rates with that type of billable item
 | 
|---|
 | 34 |  N IBX,DIC,DIE,DA,DR,X,Y,DTOUT,DUOUT S IBX=0
 | 
|---|
 | 35 |  I +$G(BI) S DIC("S")="I $P(^(0),U,4)="_BI
 | 
|---|
 | 36 |  S DIC="^IBE(363.3,",DIC(0)="AENQ" D ^DIC K DIC
 | 
|---|
 | 37 |  I $D(DTOUT)!($D(DUOUT)) S IBX=-1
 | 
|---|
 | 38 |  I +Y>0 S IBX=Y
 | 
|---|
 | 39 |  Q IBX
 | 
|---|
 | 40 |  ;
 | 
|---|
 | 41 | GETCS() ; ask and return a charge set (363.2):  (-1 if ^, 0 if none)  IFN^.01
 | 
|---|
 | 42 |  N IBX,DIC,DIE,DA,DR,X,Y,DTOUT,DUOUT S IBX=0
 | 
|---|
 | 43 |  S DIC="^IBE(363.1,",DIC(0)="AENQ" D ^DIC K DIC
 | 
|---|
 | 44 |  I $D(DTOUT)!($D(DUOUT)) S IBX=-1
 | 
|---|
 | 45 |  I +Y>0 S IBX=Y
 | 
|---|
 | 46 |  Q IBX
 | 
|---|
 | 47 |  ;
 | 
|---|
 | 48 | GETSG(TYPE,BR) ; ask and return a special group (363.32):  (-1 if ^, 0 if none)  IFN^.01
 | 
|---|
 | 49 |  ; if TYPE is passed in then only groups of that type may be selected
 | 
|---|
 | 50 |  ; if BR is passed in then only groups assigned that billing rate may be selected
 | 
|---|
 | 51 |  N IBX,DIC,DIE,DA,DR,X,Y,DTOUT,DUOUT S IBX=0
 | 
|---|
 | 52 |  I +$G(TYPE) S DIC("S")="I $P(^(0),U,2)="_TYPE_$S(+$G(BR):" ",1:"")
 | 
|---|
 | 53 |  I +$G(BR) S DIC("S")=$G(DIC("S"))_"I $O(^IBE(363.32,Y,11,""B"",+BR,0))"
 | 
|---|
 | 54 |  S DIC="^IBE(363.32,",DIC(0)="AENQ" D ^DIC K DIC
 | 
|---|
 | 55 |  I $D(DTOUT)!($D(DUOUT)) S IBX=-1
 | 
|---|
 | 56 |  I +Y>0 S IBX=Y
 | 
|---|
 | 57 |  Q IBX
 | 
|---|
 | 58 |  ;
 | 
|---|
 | 59 | GETBED(COL) ; ask and return billable bedsection (399.1):  (-1 if ^, 0 if none)  IFN^.01
 | 
|---|
 | 60 |  N IBX,DIC,DIE,DA,DR,X,Y,DTOUT,DUOUT S IBX=0
 | 
|---|
 | 61 |  S DIC("A")=$J("",$G(COL))_"Select BEDSECTION: "
 | 
|---|
 | 62 |  S DIC="^DGCR(399.1,",DIC(0)="AENQ",DIC("S")="I +$P(^(0),U,5)=1" D ^DIC K DIC
 | 
|---|
 | 63 |  I $D(DTOUT)!($D(DUOUT)) S IBX=-1
 | 
|---|
 | 64 |  I +Y>0 S IBX=Y
 | 
|---|
 | 65 |  Q IBX
 | 
|---|
 | 66 |  ;
 | 
|---|
 | 67 | GETCPT(COL,ALL) ; ask and return CPT (81):  (-1 if ^, 0 if none)  IFN^.01
 | 
|---|
 | 68 |  N IBX,DIC,DIE,DA,DR,X,Y,DTOUT,DUOUT S IBX=0
 | 
|---|
 | 69 |  S DIC("A")=$J("",$G(COL))_"Select CPT: " I '$G(ALL) S DIC("S")="I $$CPTACT^IBACSV(+Y,DT)"
 | 
|---|
 | 70 |  S DIC="^ICPT(",DIC(0)="AEMNQ" D ^DIC K DIC
 | 
|---|
 | 71 |  I $D(DTOUT)!($D(DUOUT)) S IBX=-1
 | 
|---|
 | 72 |  I +Y>0 S IBX=Y
 | 
|---|
 | 73 |  Q IBX
 | 
|---|
 | 74 |  ;
 | 
|---|
 | 75 | GETNDC(COL) ; ask and return NDC #'s (363.21):  (-1 if ^, 0 if none)  IFN^.01
 | 
|---|
 | 76 |  N IBX,DIC,DIE,DA,DR,X,Y,DTOUT,DUOUT S IBX=0
 | 
|---|
 | 77 |  S DIC("A")=$J("",$G(COL))_"Select NDC #: "
 | 
|---|
 | 78 |  S DIC="^IBA(363.21,",DIC(0)="AENQ",DIC("S")="I +$P(^(0),U,2)=1" D ^DIC K DIC
 | 
|---|
 | 79 |  I $D(DTOUT)!($D(DUOUT)) S IBX=-1
 | 
|---|
 | 80 |  I +Y>0 S IBX=Y
 | 
|---|
 | 81 |  Q IBX
 | 
|---|
 | 82 |  ;
 | 
|---|
 | 83 | GETDRG(COL,ALL) ; ask and return DRG (80.2):  (-1 if ^, 0 if none)  IFN^.01
 | 
|---|
 | 84 |  ; ALL: Default is 1 (disable screening)
 | 
|---|
 | 85 |  N IBX,DIC,DIE,DA,DR,X,Y,DTOUT,DUOUT S IBX=0
 | 
|---|
 | 86 |  S DIC("A")=$J("",$G(COL))_"Select DRG: " I '$G(ALL,1) S DIC("S")="I $$DRGACT^IBACSV(+Y,DT)"
 | 
|---|
 | 87 |  S DIC="^ICD(",DIC(0)="AEMNQ" D ^DIC K DIC
 | 
|---|
 | 88 |  I $D(DTOUT)!($D(DUOUT)) S IBX=-1
 | 
|---|
 | 89 |  I +Y>0 S IBX=Y
 | 
|---|
 | 90 |  Q IBX
 | 
|---|
 | 91 |  ;
 | 
|---|
 | 92 | GETMISC(COL,CS) ; ask and return MISCELLANEOUS item (363.21):  (-1 if ^, 0 if none)  IFN^.01
 | 
|---|
 | 93 |  ; if CS is passed in then only billing items with charges in that set are selectable
 | 
|---|
 | 94 |  N IBX,DIC,DIE,DA,DR,X,Y,DTOUT,DUOUT S IBX=0
 | 
|---|
 | 95 |  S DIC("A")=$J("",$G(COL))_"Select MISCELLANEOUS Item: "
 | 
|---|
 | 96 |  S DIC("S")="I +$P(^(0),U,2)=9" I +$G(CS) S DIC("S")=DIC("S")_",$D(^IBA(363.2,""AIVDTS""_+CS,Y))"
 | 
|---|
 | 97 |  S DIC="^IBA(363.21,",DIC(0)="AENQ" D ^DIC K DIC
 | 
|---|
 | 98 |  I $D(DTOUT)!($D(DUOUT)) S IBX=-1
 | 
|---|
 | 99 |  I +Y>0 S IBX=Y
 | 
|---|
 | 100 |  Q IBX
 | 
|---|
 | 101 |  ;
 | 
|---|
 | 102 | GETITEM(IBCSFN,COL,ALL) ; returns user selected item for a specific charge set:
 | 
|---|
 | 103 |  ;  IFN ^ .01 ^ source file reference ^ source file   (-1 if ^, 0 if none)
 | 
|---|
 | 104 |  N IBCS0,IBBRFN,IBBR0,IBBRBI,IBITEM S IBITEM=0,COL=$G(COL),ALL=$G(ALL)
 | 
|---|
 | 105 |  I '$G(IBCSFN) S IBCSFN=+$$GETCS I IBCSFN'>0 G GIQ
 | 
|---|
 | 106 |  ;
 | 
|---|
 | 107 |  S IBCS0=$G(^IBE(363.1,+IBCSFN,0)),IBBRFN=$P(IBCS0,U,2)
 | 
|---|
 | 108 |  S IBBR0=$G(^IBE(363.3,+IBBRFN,0)),IBBRBI=$P(IBBR0,U,4)
 | 
|---|
 | 109 |  ;
 | 
|---|
 | 110 |  I IBBRBI=1 S IBITEM=$$GETBED(COL) S:IBITEM>0 IBITEM=IBITEM_U_$$BIFILE^IBCRU2(IBBRBI) G GIQ
 | 
|---|
 | 111 |  I IBBRBI=2 S IBITEM=$$GETCPT(COL,ALL) S:IBITEM>0 IBITEM=IBITEM_U_$$BIFILE^IBCRU2(IBBRBI) G GIQ
 | 
|---|
 | 112 |  I IBBRBI=3 S IBITEM=$$GETNDC(COL) S:IBITEM>0 IBITEM=IBITEM_U_$$BIFILE^IBCRU2(IBBRBI) G GIQ
 | 
|---|
 | 113 |  I IBBRBI=4 S IBITEM=$$GETDRG(COL) S:IBITEM>0 IBITEM=IBITEM_U_$$BIFILE^IBCRU2(IBBRBI) G GIQ
 | 
|---|
 | 114 |  I IBBRBI=9 S IBITEM=$$GETMISC(COL,$S('ALL:+IBCSFN,1:0)) S:IBITEM>0 IBITEM=IBITEM_U_$$BIFILE^IBCRU2(IBBRBI) G GIQ
 | 
|---|
 | 115 | GIQ Q IBITEM
 | 
|---|