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