| 1 | IBAMTI ;ALB/CPM - SPECIAL INPATIENT BILLING CASES ; 11-AUG-93 | 
|---|
| 2 | ;;2.0;INTEGRATED BILLING;**52,132,153,156,234,247,339**;21-MAR-94;Build 2 | 
|---|
| 3 | ;;Per VHA Directive 2004-038, this routine should not be modified. | 
|---|
| 4 | ; | 
|---|
| 5 | ADM(DFN,IBPM,IBCL) ; Create a new case record upon admission | 
|---|
| 6 | ;  Input:     DFN  --  Pointer to the patient in file #2 | 
|---|
| 7 | ;            IBPM  --  Pointer to the adm movement in file #405 | 
|---|
| 8 | ;            IBCL  --  Patient class [1-ao|2-ir|3-sc|4-swa|5-mst|6-hnc|7-cv|8-shad] | 
|---|
| 9 | I '$G(DFN)!'$G(IBPM)!'$G(IBCL) G ADMQ | 
|---|
| 10 | N DA,DIC,DIE,DR,IBC,X,Y | 
|---|
| 11 | ; | 
|---|
| 12 | ; - need to swap the input of 3 (SC) to 4, and 4 (EC) to 3 | 
|---|
| 13 | S IBCL=$S(IBCL=3:4,IBCL=4:3,IBCL=5:5,1:IBCL) | 
|---|
| 14 | ; | 
|---|
| 15 | K DD,DO S DIC="^IBE(351.2,",DIC(0)="",X=DFN D FILE^DICN S IBC=+Y | 
|---|
| 16 | S DR=".02////"_IBPM_";.03////"_IBCL_";.05////1;2.01////"_DUZ_";2.02///NOW;2.03////"_DUZ_";2.04///NOW" | 
|---|
| 17 | S DA=IBC,DIE=DIC D ^DIE | 
|---|
| 18 | D BULL(1,IBCL) ; send admission bulletin | 
|---|
| 19 | ADMQ Q | 
|---|
| 20 | ; | 
|---|
| 21 | DIS(IBPM) ; Update the case record upon discharge | 
|---|
| 22 | ;  Input:    IBPM  --  Pointer to the adm movement in file #405 | 
|---|
| 23 | N DA,DIE,DR,IBC | 
|---|
| 24 | S IBC=$O(^IBE(351.2,"AC",+$G(IBPM),0)) I 'IBC G DISQ | 
|---|
| 25 | S DR=".05////2;.06////"_DT_";2.03////"_DUZ_";2.04///NOW" | 
|---|
| 26 | S DA=IBC,DIE="^IBE(351.2," D ^DIE | 
|---|
| 27 | D BULL(2,+$P($G(^IBE(351.2,IBC,0)),"^",3)) ; send discharge bulletin | 
|---|
| 28 | DISQ Q | 
|---|
| 29 | ; | 
|---|
| 30 | BGJ ; Perform nightly background monitoring of all case records. | 
|---|
| 31 | N IBC,IBCD,IBNUM | 
|---|
| 32 | S IBC=0 F  S IBC=$O(^IBE(351.2,IBC)) Q:'IBC  S IBCD=$G(^(IBC,0)) D | 
|---|
| 33 | .Q:$P(IBCD,"^",8)  ; case has been dispositioned | 
|---|
| 34 | .Q:$P(IBCD,"^",5)=1  ; patient still admitted | 
|---|
| 35 | .I '$P(IBCD,"^",6) S $P(^IBE(351.2,IBC,0),"^",6)=DT Q  ; no disch date | 
|---|
| 36 | .S IBNUM=$$FMDIFF^XLFDT(DT,$P(IBCD,"^",6)) | 
|---|
| 37 | .Q:IBNUM<45  ; still time to disposition the case | 
|---|
| 38 | .D NOTICE(IBNUM,+IBCD,+$P(IBCD,"^",2),+$P(IBCD,"^",3)) ; send reminder to disposition | 
|---|
| 39 | Q | 
|---|
| 40 | ; | 
|---|
| 41 | BULL(IBEV,IBCL) ; Send a bulletin at admission and discharge. | 
|---|
| 42 | ;  Input:    IBEV  --  Event [1:admission|2:discharge] | 
|---|
| 43 | ;            IBCL  --  Patient class [1-ao|2-ir|3-swa|4-sc|5-mst|6-hnc|7-cv|8-shad] | 
|---|
| 44 | K IBT S IBPT=$$PT^IBEFUNC(DFN) | 
|---|
| 45 | S XMSUB=$E($P(IBPT,"^"),1,14)_"  "_$P(IBPT,"^",3)_" - "_$$UCCL(IBCL)_$S($G(IBEV)=1:" ADM",1:" DISCH") | 
|---|
| 46 | S IBT(1)="The following Means Test copay "_$$LCCL(IBCL)_" patient was just "_$S($G(IBEV)=1:"admitted:",1:"discharged:") | 
|---|
| 47 | S IBT(2)=" " S IBC=2 | 
|---|
| 48 | S IBDUZ=DUZ D PAT^IBAERR1 | 
|---|
| 49 | S IBC=IBC+1,IBT(IBC)=" " | 
|---|
| 50 | S IBC=IBC+1,IBT(IBC)=$S($G(IBEV)=1:"Please note that a special inpatient case record has been created for",1:"Please note that you have 45 days to determine if this episode of care") | 
|---|
| 51 | S IBC=IBC+1,IBT(IBC)=$S($G(IBEV)=1:"this admission.",1:"should be billed.") | 
|---|
| 52 | ;---CV | 
|---|
| 53 | I IBCL=7,$G(IBEV)=2 D | 
|---|
| 54 | . N Y,X,IBZ,IBFL,IBEXP,IBTODAY,IBDIS | 
|---|
| 55 | . S (Y,X,IBZ,IBFL,IBEXP,IBTODAY,IBDIS)=0 | 
|---|
| 56 | . D NOW^%DTC S IBTODAY=%\1 | 
|---|
| 57 | . S IBZ=$$CVEDT^IBACV(DFN,IBTODAY) | 
|---|
| 58 | . I +IBZ=1 Q  ;patient is still CV | 
|---|
| 59 | . S IBEXP=+$P(IBZ,"^",2)\1 | 
|---|
| 60 | . S IBDIS=+$G(^DGPM(+$P($G(^DGPM(+$G(IBPM),0)),"^",17),0))\1 | 
|---|
| 61 | . ; if CV expired during inpatient stay | 
|---|
| 62 | . I IBDIS>0,IBEXP'>IBDIS D | 
|---|
| 63 | . . S IBFL=1 | 
|---|
| 64 | . . S Y=IBEXP D DD^%DT S IBEXP=Y | 
|---|
| 65 | . . S IBC=IBC+1,IBT(IBC)="" | 
|---|
| 66 | . . S IBC=IBC+1,IBT(IBC)="WARNING: Patient's CV status has expired on "_IBEXP_" during the" | 
|---|
| 67 | . . S IBC=IBC+1,IBT(IBC)="inpatient stay. Billing needs to be adjusted accordingly." | 
|---|
| 68 | . ; if discharge move was entered after actual discharge date | 
|---|
| 69 | . I IBFL=0 D | 
|---|
| 70 | . . S Y=IBEXP D DD^%DT S IBEXP=Y | 
|---|
| 71 | . . S IBC=IBC+1,IBT(IBC)="" | 
|---|
| 72 | . . S IBC=IBC+1,IBT(IBC)="WARNING: Patient CV status has expired on "_IBEXP_"" | 
|---|
| 73 | ;--- | 
|---|
| 74 | I IBEV=2 D | 
|---|
| 75 | .I '$$BIL^DGMTUB(DFN,DT) S IBC=IBC+1,IBT(IBC)=" ",IBC=IBC+1,IBT(IBC)="Note: This patient, who was MT copay at admission, is no longer MT billable." | 
|---|
| 76 | .I $$BFO^IBECEAU(DFN,+$G(^DGPM(IBPM,0))\1) S IBC=IBC+1,IBT(IBC)=" ",IBC=IBC+1,IBT(IBC)="Note: This patient was billed the outpatient copayment at admission." | 
|---|
| 77 | D SEND^IBACVA2 | 
|---|
| 78 | Q | 
|---|
| 79 | ; | 
|---|
| 80 | NOTICE(IBNUM,DFN,IBPM,IBCL) ; Notice to disposition billing case | 
|---|
| 81 | ;  Input:   IBNUM  --  Number of days since discharge | 
|---|
| 82 | ;             DFN  --  Pointer to the patient in file #2 | 
|---|
| 83 | ;            IBPM  --  Pointer to the admission in file #405 | 
|---|
| 84 | ;            IBCL  --  Patient class [1-ao|2-ir|3-swa|4-sc|5-mst|6-hnc|7-cv|8-shad] | 
|---|
| 85 | ; | 
|---|
| 86 | Q:IBNUM#15  ; send notice every 15 days only | 
|---|
| 87 | N IBC K IBT S IBPT=$$PT^IBEFUNC(DFN) | 
|---|
| 88 | S XMSUB="NOTICE TO DISPOSITION SPECIAL INPATIENT BILLING CASE" | 
|---|
| 89 | S IBT(1)="The case record for this Means Test copay "_$$LCCL(IBCL)_" patient" | 
|---|
| 90 | S IBT(2)="is now "_IBNUM_" days old and should be dispositioned:" | 
|---|
| 91 | S IBT(3)=" " S IBC=3 | 
|---|
| 92 | S IBDUZ=DUZ D PAT^IBAERR1 | 
|---|
| 93 | S Y=+$G(^DGPM(+$G(IBPM),0)) D DD^%DT | 
|---|
| 94 | S IBC=IBC+1,IBT(IBC)=" Adm Date: "_Y | 
|---|
| 95 | S Y=+$G(^DGPM(+$P($G(^DGPM(+$G(IBPM),0)),"^",17),0)) D DD^%DT | 
|---|
| 96 | S IBC=IBC+1,IBT(IBC)="Disc Date: "_Y | 
|---|
| 97 | S IBC=IBC+1,IBT(IBC)=" " | 
|---|
| 98 | S IBC=IBC+1,IBT(IBC)="Please determine if this episode of care should be billed, and use" | 
|---|
| 99 | S IBC=IBC+1,IBT(IBC)="the Cancel/Edit/Add Patient Charges option to add charges, or the" | 
|---|
| 100 | S IBC=IBC+1,IBT(IBC)="Disposition Special Inpatient Billing Cases option to enter the reason" | 
|---|
| 101 | S IBC=IBC+1,IBT(IBC)="for not billing." | 
|---|
| 102 | D SEND^IBACVA2 | 
|---|
| 103 | Q | 
|---|
| 104 | ; | 
|---|
| 105 | UCCL(X) ; Return the upper case classification description. | 
|---|
| 106 | ;  Input:       X  --  Patient class [1-ao|2-ir|3-swa|4-sc|5-mst|6-hnc|7-cv|8-shad] | 
|---|
| 107 | Q $S('$G(X):"SPECIAL",1:$$PATTYPE^IBACV(X)) | 
|---|
| 108 | ; | 
|---|
| 109 | LCCL(X) ; Return the lower case classification description. | 
|---|
| 110 | ;  Input:       X  --  Patient class [1-ao|2-ir|3-swa|4-sc|5-mst|6-hnc|7-cv|8-shad] | 
|---|
| 111 | Q $S('$G(X):"Special",1:$$PATTYPE^IBACV(X,"M")) | 
|---|
| 112 | ; | 
|---|