| 1 | IBAMTV4 ;ALB/CPM - FIND CHARGES FOR IVM PATIENTS ; 13-JUN-94
 | 
|---|
| 2 |  ;;Version 2.0 ; INTEGRATED BILLING ;**15**; 21-MAR-94
 | 
|---|
| 3 |  ;;Per VHA Directive 10-93-142, this routine should not be modified.
 | 
|---|
| 4 |  ;
 | 
|---|
| 5 | ALL(DFN,IBROOT,IBST,IBEND) ; Find IB Actions and Claims for the IVM Patient
 | 
|---|
| 6 |  ;  Input:     DFN  --  Pointer to the patient in file #2
 | 
|---|
| 7 |  ;          IBROOT  --  Root in which to place array of charges
 | 
|---|
| 8 |  ;            IBST  --  Start date used as check for patient charges
 | 
|---|
| 9 |  ;           IBEND  --  End date used as check for patient charges
 | 
|---|
| 10 |  ;
 | 
|---|
| 11 |  ; Output:  Array of charges:
 | 
|---|
| 12 |  ;              @IBROOT@(ref #)=1^2^3^4^5^6^7^8^9^10^11, where
 | 
|---|
| 13 |  ;                 ref # - bill number or field #.01 to #350
 | 
|---|
| 14 |  ;                     1 - DFN
 | 
|---|
| 15 |  ;                     2 - Classification [1-Inpt,2-Opt,3-Refill,4-Pros]
 | 
|---|
| 16 |  ;                     3 - Type [1-Claim,2-Copay,3-Per Diem]
 | 
|---|
| 17 |  ;                     4 - Bill From Date
 | 
|---|
| 18 |  ;                     5 - Bill To Date
 | 
|---|
| 19 |  ;                     6 - Date Bill Created
 | 
|---|
| 20 |  ;                     7 - Amt Billed
 | 
|---|
| 21 |  ;                     8 - Amt Collected  (Claims only)
 | 
|---|
| 22 |  ;                     9 - Date Bill Closed  (Claims only)
 | 
|---|
| 23 |  ;                    10 - Cancelled? [0-No,1-Yes]
 | 
|---|
| 24 |  ;                    11 - On Hold?  (Patient charges only)
 | 
|---|
| 25 |  ;
 | 
|---|
| 26 |  I $G(IBROOT)=""!'$G(DFN) G ALLQ
 | 
|---|
| 27 |  ;
 | 
|---|
| 28 |  ; - build patient charge array
 | 
|---|
| 29 |  I $G(IBST) S Y="" F  S Y=$O(^IB("AFDT",DFN,Y)) Q:'Y  I -Y'>IBEND S Y1=0 F  S Y1=$O(^IB("AFDT",DFN,Y,Y1)) Q:'Y1  D
 | 
|---|
| 30 |  .S IBDA=0 F  S IBDA=$O(^IB("AF",Y1,IBDA)) Q:'IBDA  D
 | 
|---|
| 31 |  ..Q:'$D(^IB(IBDA,0))  S IBX=^(0)
 | 
|---|
| 32 |  ..Q:$P(IBX,"^",8)["ADMISSION"
 | 
|---|
| 33 |  ..Q:$P(IBX,"^",9)'=IBDA
 | 
|---|
| 34 |  ..S IBN=$$LAST^IBECEAU(IBDA),IBND=$G(^IB(IBN,0)),IBND1=$G(^(1))
 | 
|---|
| 35 |  ..I $P(IBND,"^",15)<IBST!($P(IBND,"^",14)>IBEND) Q
 | 
|---|
| 36 |  ..;
 | 
|---|
| 37 |  ..; - start building string
 | 
|---|
| 38 |  ..S IBSTR=DFN_"^"_$S($P(IBND,"^",8)["OPT COPAY":2,1:1)
 | 
|---|
| 39 |  ..S IBSTR=IBSTR_"^"_$S($P($G(^IBE(350.1,+$P(IBND,"^",3),0)),"^")["PER DIEM":3,1:2)
 | 
|---|
| 40 |  ..S IBSTR=IBSTR_"^"_$P(IBND,"^",14)_"^"_$P(IBND,"^",15)_"^"_($P(IBND1,"^",4)\1)_"^"_$P(IBND,"^",7)
 | 
|---|
| 41 |  ..S IBSTAT=$G(^IBE(350.21,+$P(IBND,"^",5),0))
 | 
|---|
| 42 |  ..S IBSTR=IBSTR_"^^^"_$P(IBSTAT,"^",5)_"^"_$P(IBSTAT,"^",6)
 | 
|---|
| 43 |  ..I $P(IBSTAT,"^",6) S $P(IBSTR,"^",6)=""
 | 
|---|
| 44 |  ..;
 | 
|---|
| 45 |  ..S @IBROOT@(+IBX)=IBSTR
 | 
|---|
| 46 |  ;
 | 
|---|
| 47 |  ; - build claim array
 | 
|---|
| 48 |  D CLM(DFN,IBROOT)
 | 
|---|
| 49 |  ;
 | 
|---|
| 50 | ALLQ K Y,Y1,IBDA,IBX,IBN,IBND,IBND1,IBSTR,IBSTAT
 | 
|---|
| 51 |  Q
 | 
|---|
| 52 |  ;
 | 
|---|
| 53 |  ;
 | 
|---|
| 54 | INS(IBROOT) ; Find claims for patients with IVM-identified policies.
 | 
|---|
| 55 |  ;  Input:  IBROOT  --  Root in which to place array of charges
 | 
|---|
| 56 |  ; Output:  Array of charges as defined above
 | 
|---|
| 57 |  ;
 | 
|---|
| 58 |  N DFN
 | 
|---|
| 59 |  I $G(IBROOT)="" G INSQ
 | 
|---|
| 60 |  S DFN=0 F  S DFN=$O(^IBA(354,"AIVM",DFN)) Q:'DFN  I '$$CHK^IVMUFNC3(DFN) D CLM(DFN,IBROOT)
 | 
|---|
| 61 | INSQ Q
 | 
|---|
| 62 |  ;
 | 
|---|
| 63 |  ;
 | 
|---|
| 64 | CLM(DFN,IBROOT) ; Build charge array for insurance claims
 | 
|---|
| 65 |  ;  Input:     DFN  --  Pointer to the patient in file #2
 | 
|---|
| 66 |  ;          IBROOT  --  Root in which to place array of charges
 | 
|---|
| 67 |  ; Output:  Array of charges as defined above
 | 
|---|
| 68 |  ;
 | 
|---|
| 69 |  I $G(IBROOT)=""!'$G(DFN) G CLMQ
 | 
|---|
| 70 |  ;
 | 
|---|
| 71 |  N IBN,IBI,IBND,IBX,IBSTR
 | 
|---|
| 72 |  ;
 | 
|---|
| 73 |  S IBN=0 F  S IBN=$O(^DGCR(399,"C",DFN,IBN)) Q:'IBN  I $$HOWID^IBRFN2(IBN)=3,$P($G(^DGCR(399,IBN,"S")),"^",12) D
 | 
|---|
| 74 |  .F IBI=0,"S","U" S IBND(IBI)=$G(^DGCR(399,IBN,IBI))
 | 
|---|
| 75 |  .;
 | 
|---|
| 76 |  .; - build string
 | 
|---|
| 77 |  .S IBSTR=DFN_"^"_$$CLS(IBN,IBND(0))_"^1"
 | 
|---|
| 78 |  .S IBSTR=IBSTR_"^"_+IBND("U")_"^"_$P(IBND("U"),"^",2)_"^"_$P(IBND("S"),"^",12)
 | 
|---|
| 79 |  .S IBX=$$ORI^PRCAFN(IBN) ; amt billed
 | 
|---|
| 80 |  .S IBSTR=IBSTR_"^"_$S(IBX>0:IBX,1:0)
 | 
|---|
| 81 |  .S IBX=$$TPR^PRCAFN(IBN) ; amt collected
 | 
|---|
| 82 |  .S IBSTR=IBSTR_"^"_$S(IBX>0:IBX,1:0)
 | 
|---|
| 83 |  .S IBX=$$CLO^PRCAFN(IBN) ; date bill closed
 | 
|---|
| 84 |  .S IBSTR=IBSTR_"^"_$S(IBX>0:IBX,1:"")_"^"_$P(IBND("S"),"^",16)
 | 
|---|
| 85 |  .;
 | 
|---|
| 86 |  .S @IBROOT@($$BN^PRCAFN(IBN))=IBSTR
 | 
|---|
| 87 |  ;
 | 
|---|
| 88 | CLMQ Q
 | 
|---|
| 89 |  ;
 | 
|---|
| 90 | CLS(BN,BN0) ; Return a code for the bill classification.
 | 
|---|
| 91 |  ;  Input:   BN  --  Pointer to the bill in file #399
 | 
|---|
| 92 |  ;          BN0  --  Zeroth node of bill in file #399
 | 
|---|
| 93 |  N X S X="O"
 | 
|---|
| 94 |  I $G(BN)=""!($G(BN0)="") G CLSQ
 | 
|---|
| 95 |  S X=$$BTYP^IBCOIVM1(BN,BN0)
 | 
|---|
| 96 | CLSQ Q $S(X="I":1,X="O":2,X="R":3,X="P":4,1:2)
 | 
|---|