| 1 | IBR ;ALB/AAS - INTEGRATED BILLING - A/R INTERFACE ;25-FEB-91
 | 
|---|
| 2 | V ;;2.0;INTEGRATED BILLING;**52,70,93,113,132,51**;21-MAR-94
 | 
|---|
| 3 |  ;;Per VHA Directive 10-93-142, this routine should not be modified.
 | 
|---|
| 4 |  ;
 | 
|---|
| 5 |  ;  - handles calls to AR
 | 
|---|
| 6 |  ;  -  input   IBSEQNO = 1,2, or 3
 | 
|---|
| 7 |  ;  -          IBDUZ   = user causing entry
 | 
|---|
| 8 |  ;  -          IBNOS   = IBnumber^Ibnumber... to process
 | 
|---|
| 9 |  ;  -          DFN     = patient number
 | 
|---|
| 10 |  ;  -  output  Y       = 1 if successful
 | 
|---|
| 11 |  ;  -                   =-1^error code if unsuccessful
 | 
|---|
| 12 |  S IBERR=""
 | 
|---|
| 13 |  I '$D(IBSEQNO) S IBERR="IB017;"_IBERR G END
 | 
|---|
| 14 |  D @IBSEQNO
 | 
|---|
| 15 |  G END
 | 
|---|
| 16 |  ;
 | 
|---|
| 17 | 1 ;  -pass new entries to a/r
 | 
|---|
| 18 |  S IBTOTL=0 N IBNOW
 | 
|---|
| 19 |  F I=1:1 S IBN=$P(IBNOS,"^",I) Q:'IBN  S X=$S($D(^IB(IBN,0)):^(0),1:"") S:X="" IBERR="IB018;"_IBERR D TRCHK S IBTOTL=IBTOTL+$P(X,"^",7)
 | 
|---|
| 20 |  Q:IBNOS=""!(IBTOTL<1)
 | 
|---|
| 21 |  S IBSERV="",IBATYP=$P(X,"^",3) I $D(^IBE(350.1,+IBATYP,0)) S IBSERV=$P(^(0),"^",4)
 | 
|---|
| 22 |  D ARPARM^IBAUTL
 | 
|---|
| 23 |  S IBWHER=3
 | 
|---|
| 24 |  D BILLNO^IBAUTL I +Y<1 G ERR
 | 
|---|
| 25 |  S IBWHER=4
 | 
|---|
| 26 |  ;
 | 
|---|
| 27 |  F I=1:1 S IBN=$P(IBNOS,"^",I) Q:'IBN  D UP1,UP3:IBSEQNO=3
 | 
|---|
| 28 |  Q
 | 
|---|
| 29 | UP1 ;  -update IB data and reindex
 | 
|---|
| 30 |  N DIERR
 | 
|---|
| 31 |  S FDA(350,IBN_",",.05)=$S(IBERR="":3,1:9)
 | 
|---|
| 32 |  S FDA(350,IBN_",",.11)=IBIL
 | 
|---|
| 33 |  S FDA(350,IBN_",",.12)=IBTRAN
 | 
|---|
| 34 |  D FILE^DIE("K","FDA")
 | 
|---|
| 35 |  I $G(DIERR) S IBERR="IB020;"_IBERR
 | 
|---|
| 36 |  ;S DIE="^IB(",DA=IBN,DR=".05////"_$S(IBERR="":3,1:9)_";.11////"_IBIL_";.12////"_IBTRAN
 | 
|---|
| 37 |  ;D ^DIE K DIE,DR,DA
 | 
|---|
| 38 |  ;I $D(Y) S IBERR="IB020;"_IBERR
 | 
|---|
| 39 |  ;S DA=IBN,DIK="^IB(" D IX^DIK
 | 
|---|
| 40 |  ;K DIK,DA
 | 
|---|
| 41 |  Q
 | 
|---|
| 42 | 2 S IBTOTL=0 N IBNOW
 | 
|---|
| 43 |  F I=1:1 S IBN=$P(IBNOS,"^",I) Q:'IBN  S X=$S($D(^IB(IBN,0)):^(0),1:"") S:X="" IBERR="IB018;"_IBERR S:$P($G(^IB(+$P(X,"^",9),0)),"^",5)'=8 IBTOTL=IBTOTL+$P(X,"^",7)
 | 
|---|
| 44 |  S IBIL=$P(X,"^",11)
 | 
|---|
| 45 |  ;
 | 
|---|
| 46 |  S IBSERV="",IBATYP=$P(X,"^",3) I $D(^IBE(350.1,+IBATYP,0)) S IBSERV=$P(^(0),"^",4)
 | 
|---|
| 47 |  D ARPARM^IBAUTL
 | 
|---|
| 48 |  S IBWHER=3
 | 
|---|
| 49 |  ; - piece 1 of X (21) denotes the AR Trans. Type of Decrease Adjustment
 | 
|---|
| 50 |  I IBTOTL>0 S X="21^"_IBTOTL_"^"_IBIL_"^"_IBDUZ_"^"_$P(IBNOW,".")_"^"_$S($D(^IBE(350.3,+$P(^IB(IBNOS,0),"^",10),0)):$P(^(0),"^",1),1:"") D ^PRCASER1 I +Y<0 G ERR
 | 
|---|
| 51 |  ;
 | 
|---|
| 52 |  S IBWHER=4
 | 
|---|
| 53 |  F I=1:1 S IBN=$P(IBNOS,"^",I) Q:'IBN  D UP2
 | 
|---|
| 54 |  Q
 | 
|---|
| 55 | UP2 ;  -update IB data and reindex
 | 
|---|
| 56 |  S DIE="^IB(",DA=IBN,DR=".05////"_$S(IBERR="":3,1:9)
 | 
|---|
| 57 |  D ^DIE K DIE,DR,DA
 | 
|---|
| 58 |  I $D(Y) S IBERR="IB020;"_IBERR
 | 
|---|
| 59 |  S DA=IBN,DIK="^IB(" D IX^DIK
 | 
|---|
| 60 |  ;W "FILING UPDATED ENTRY IN IB",!
 | 
|---|
| 61 |  K DIK,DA
 | 
|---|
| 62 |  ;  -update parent to cancelled
 | 
|---|
| 63 |  S IBPARNT=$P(^IB(IBN,0),"^",9),IBCRES=$P(^IB(IBN,0),"^",10)
 | 
|---|
| 64 |  S DIE="^IB(",DA=IBPARNT,DR=".05////10;.1////"_IBCRES D ^DIE K DIE,DA,DR
 | 
|---|
| 65 |  Q
 | 
|---|
| 66 |  ;
 | 
|---|
| 67 | 3 D 1
 | 
|---|
| 68 |  Q
 | 
|---|
| 69 | UP3 ;  -update status of all previous bills to updated
 | 
|---|
| 70 |  ;
 | 
|---|
| 71 |  N IBI,IBJ
 | 
|---|
| 72 |  S IBJ="" F IBI=0:0 S IBJ=$O(^IB("AD",$P(^IB(IBN,0),"^",9),IBJ)) Q:'IBJ  I $D(^IB(IBJ,0)),$P(^(0),"^",5)=3,IBN'=IBJ S DIE="^IB(",DA=IBJ,DR=".05////4" D ^DIE
 | 
|---|
| 73 |  Q
 | 
|---|
| 74 |  ;
 | 
|---|
| 75 | ERR D ^IBAERR:$D(ZTQUEUED) Q
 | 
|---|
| 76 | END ;
 | 
|---|
| 77 |  S Y=$S(IBERR="":1,1:"-1^"_IBERR)
 | 
|---|
| 78 |  K IBERR Q
 | 
|---|
| 79 |  ;
 | 
|---|
| 80 | TRCHK ;  - if entry has an ar transaction number take out of list
 | 
|---|
| 81 |  I $P(X,"^",12)!($$HOLD^IBRUTL(X,IBN,IBDUZ,IBSEQNO)) D
 | 
|---|
| 82 |  . I I=1 S IBNOS=$P(IBNOS,"^",2,99)
 | 
|---|
| 83 |  . E  S IBNOS=$P(IBNOS,"^",1,I-1)_"^"_$P(IBNOS,"^",I+1,99)
 | 
|---|
| 84 |  . S $P(X,"^",7)=0,I=I-1
 | 
|---|
| 85 |  Q
 | 
|---|
| 86 |  ;
 | 
|---|
| 87 |  ;
 | 
|---|
| 88 | AR ; Pass charges which need separate bills to Accounts Receivable.
 | 
|---|
| 89 |  ;  Variable input:    DFN  --  Pointer to the patient in file #2
 | 
|---|
| 90 |  ;                  IBSITE  --  Facility number
 | 
|---|
| 91 |  ;                  IBATYP  --  Pointer to the action type in file #350.1
 | 
|---|
| 92 |  ;                    IBFR  --  'Bill From' Date
 | 
|---|
| 93 |  ;                   IBCHG  --  Charge amount
 | 
|---|
| 94 |  ;                     IBN  --  Pointer to the charge in file #350
 | 
|---|
| 95 |  ;                     IBY  --  Set to 1 to denote potential success
 | 
|---|
| 96 |  ;                  IBSERV  --  Pointer to the service in file #49
 | 
|---|
| 97 |  ;
 | 
|---|
| 98 |  ;  Variable output:   IBY  --  Set <0 if there is an error
 | 
|---|
| 99 |  ;
 | 
|---|
| 100 |  D SET,REL:IBY>0
 | 
|---|
| 101 |  Q
 | 
|---|
| 102 |  ;
 | 
|---|
| 103 |  ;
 | 
|---|
| 104 | SET ; Set up stub receivable in AR.
 | 
|---|
| 105 |  S PRCASV("SITE")=IBSITE
 | 
|---|
| 106 |  S PRCASV("SER")=IBSERV
 | 
|---|
| 107 |  D SETUP^PRCASVC3
 | 
|---|
| 108 |  S:PRCASV("ARREC")<0 IBY=PRCASV("ARREC")
 | 
|---|
| 109 |  S:PRCASV("ARBIL")<0 IBY=PRCASV("ARBIL")
 | 
|---|
| 110 |  Q
 | 
|---|
| 111 |  ;
 | 
|---|
| 112 | REL ; Release the charge to AR.
 | 
|---|
| 113 |  S PRCASV("APR")=DUZ
 | 
|---|
| 114 |  S PRCASV("BDT")=DT
 | 
|---|
| 115 |  S PRCASV("CAT")=+$P($G(^IBE(350.1,IBATYP,0)),"^",3)
 | 
|---|
| 116 |  S PRCASV("DEBTOR")=DFN_";DPT("
 | 
|---|
| 117 |  S PRCASV("FY")=$$FY^IBOUTL(IBFR)_"^"_IBCHG
 | 
|---|
| 118 |  ;
 | 
|---|
| 119 |  D ^PRCASVC6
 | 
|---|
| 120 |  I PRCASV("OKAY") D
 | 
|---|
| 121 |  .S (IBTRAN,IBERR)="",IBIL=PRCASV("ARBIL")
 | 
|---|
| 122 |  .D UP1
 | 
|---|
| 123 |  .;
 | 
|---|
| 124 |  .D REL^PRCASVC
 | 
|---|
| 125 |  ;
 | 
|---|
| 126 |  I 'PRCASV("OKAY") D  G RELQ
 | 
|---|
| 127 |  .W:$G(IBJOB)=4 !," >> Unable to establish this receivable in AR!  Please investigate before",!,"    trying to re-bill this patient."
 | 
|---|
| 128 |  .S IBY="-1^^Unable to establish receivable in AR."
 | 
|---|
| 129 |  ;
 | 
|---|
| 130 |  ; - update the receivable status to Active
 | 
|---|
| 131 |  S PRCASV("STATUS")=16
 | 
|---|
| 132 |  D STATUS^PRCASVC1
 | 
|---|
| 133 |  ;
 | 
|---|
| 134 |  ; - update charge status
 | 
|---|
| 135 |  ;S (IBTRAN,IBERR)="",IBIL=PRCASV("ARBIL")
 | 
|---|
| 136 |  ;D UP1
 | 
|---|
| 137 |  ;
 | 
|---|
| 138 | RELQ K PRCASV,IBTRAN,IBIL,IBERR
 | 
|---|
| 139 |  Q
 | 
|---|
| 140 |  ;
 | 
|---|