| [613] | 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) | 
|---|