| 1 | IBATFILE ;LL/ELZ - TRANSFER PRICING FILLING ; 22-JAN-1999
|
---|
| 2 | ;;2.0;INTEGRATED BILLING;**115**;21-MAR-94
|
---|
| 3 | ;;Per VHA Directive 10-93-142, this routine should not be modified.
|
---|
| 4 | PAT(DA,IBFAC,IBOVER) ; files patient in transfer pricing returns dfn
|
---|
| 5 | Q:'$G(DA) 0
|
---|
| 6 | I $D(^IBAT(351.6,DA,0)) Q DA
|
---|
| 7 | N DO,DD,DIC,X,DINUM
|
---|
| 8 | S DIC="^IBAT(351.6,",DIC(0)="",X=DA,DINUM=DA
|
---|
| 9 | S DIC("DR")=".02///"_$$NOW^XLFDT_";.03////"_+$S($G(IBFAC):IBFAC,1:$$PPF^IBATUTL(DA))_";.04///1"_$S($D(IBOVER):";.1////"_+IBOVER,1:"")
|
---|
| 10 | D FILE^DICN
|
---|
| 11 | Q $S(Y>0:Y,1:0)
|
---|
| 12 | UPPPF(DA,PPF) ; updates a patient's enrolled facility
|
---|
| 13 | I '$G(DA)!('$G(PPF))!('$D(^IBAT(351.6,DA))) Q
|
---|
| 14 | N DIE,DR
|
---|
| 15 | S DIE="^IBAT(351.6,",DR=".03////"_+PPF D ^DIE
|
---|
| 16 | Q
|
---|
| 17 | ADM(DFN,IBADMDT,IBPREF,IBSOURCE) ; - files admissions
|
---|
| 18 | ; IBADMDT=admission date, IBPREF=enrolled facility
|
---|
| 19 | ; IBSOURCE=source (movement ien;DGPM(
|
---|
| 20 | I '$G(DFN)!('$G(IBADMDT))!('$G(IBPREF))!($G(IBSOURCE)="") Q 0
|
---|
| 21 | Q $$NEW(DFN,IBADMDT,IBPREF,IBSOURCE)
|
---|
| 22 | DIS(DA,IBDISDT,IBPTF,IBDISM) ; - files discharges
|
---|
| 23 | ; DA=transaction ien in 351.61, IBDISDT=discharge date
|
---|
| 24 | ; IBPTF=ptf pointer, IBDISM=discharge movement pointer
|
---|
| 25 | I '$G(DA)!('$G(IBDISDT))!('$G(IBPTF))!('$G(IBDISM)) Q 0
|
---|
| 26 | N DIE,DR
|
---|
| 27 | S DIE="^IBAT(351.61,"
|
---|
| 28 | S DR=".05////C;.1////"_IBDISDT_";1.07////"_IBPTF_";1.08////"_IBDISM
|
---|
| 29 | L +^IBAT(351.61,DA):10 I '$T Q "0^Transaction Locked"
|
---|
| 30 | D ^DIE L -^IBAT(351.61,DA)
|
---|
| 31 | Q DA
|
---|
| 32 | DISC(DA) ; - deletes discharge data
|
---|
| 33 | ; DA=transaction ien in 351.61
|
---|
| 34 | N DIE,DR Q:'$G(DA) 0
|
---|
| 35 | S DIE="^IBAT(351.61,"
|
---|
| 36 | S DR=".05////E;.1///@;1.08///@"
|
---|
| 37 | L +^IBAT(351.61,DA):10 I '$T Q "0^Transaction Locked"
|
---|
| 38 | D ^DIE L -^IBAT(351.61,DA)
|
---|
| 39 | Q DA
|
---|
| 40 | INPT(IBIEN,IBDRG,IBDRGA,IBLOS,IBHIGH,IBOUT,IBOUTR) ; - file remaining inpt
|
---|
| 41 | ; IBIEN=transaction ien in 351.61, IBDRG=DRG pointer
|
---|
| 42 | ; IBDRGA=DRG amount,IBLOS=inpatient LOS,IBHIGH=high trim days
|
---|
| 43 | ; IBOUT=outlier days,IBOUTR=outlier rate
|
---|
| 44 | I '$G(IBIEN)!('$G(IBLOS))!('$D(IBHIGH))!('$D(IBOUT)) Q 0
|
---|
| 45 | N DIE,X,Y,DR
|
---|
| 46 | S DIE="^IBAT(351.61,",DA=IBIEN
|
---|
| 47 | S DR="1.03////"_IBLOS_";1.04////"_IBHIGH_";1.05////"_IBOUT
|
---|
| 48 | S:$G(IBDRG) DR=DR_";1.01///"_IBDRG
|
---|
| 49 | S:$G(IBDRGA) DR=DR_";1.02////"_IBDRGA
|
---|
| 50 | S:$G(IBOUTR) DR=DR_";1.06////"_IBOUTR
|
---|
| 51 | L +^IBAT(351.61,IBIEN):10 I '$T Q "0^Transaction Locked"
|
---|
| 52 | D ^DIE,TOTAL^IBATCM(IBIEN) I $P($G(^IBAT(351.61,IBIEN,6)),"^",2) D
|
---|
| 53 | . S DR=";.05////P;.13////"_DT D ^DIE
|
---|
| 54 | L -^IBAT(351.61,IBIEN)
|
---|
| 55 | Q IBIEN
|
---|
| 56 | OUT(DFN,IBEDT,IBPREF,IBSOURCE,IBPROC) ; - files outpatient data
|
---|
| 57 | ; DFN=dfn for patient, IBEDT=event date, IBPREF=enrolled facility
|
---|
| 58 | ; IBSOURCE=source (outpatient encounter ien;SCE(
|
---|
| 59 | ; IBPROC=procedures (by ref in array)
|
---|
| 60 | I '$G(DFN)!('$G(IBEDT))!('$G(IBPREF))!($G(IBSOURCE)="") Q 0
|
---|
| 61 | N IBIEN,IBX,Y,IBPRICE
|
---|
| 62 | S IBIEN=$$NEW(DFN,IBEDT,IBPREF,IBSOURCE) I 'IBIEN Q IBIEN
|
---|
| 63 | L +^IBAT(351.61,IBIEN):10 I '$T Q "0^Transaction Locked"
|
---|
| 64 | S IBIEN=$$PROC(IBIEN,.IBPROC,.IBPRICE) ; file procedures
|
---|
| 65 | I IBIEN<1 L -^IBAT(351.61,IBIEN) Q "0^Unable to file procedures"
|
---|
| 66 | S DIE="^IBAT(351.61,",DA=IBIEN
|
---|
| 67 | S DR=".1////"_IBEDT_";.05////"_$S($G(IBPRICE):"C",1:"P;.13////"_DT)
|
---|
| 68 | D ^DIE,TOTAL^IBATCM(IBIEN) L -^IBAT(351.61,IBIEN)
|
---|
| 69 | Q IBIEN
|
---|
| 70 | UPDATE(IBIEN,IBPROC) ; -- updates procedures
|
---|
| 71 | ; IBIEN=351.61 ien, IBPROC=procedures by ref like above
|
---|
| 72 | Q:'$G(IBIEN) 0
|
---|
| 73 | N IBX,IBPRICE,DIE,DA,DR,X,Y
|
---|
| 74 | S IBIEN(0)=^IBAT(351.61,IBIEN,0),IBEDT=$P(IBIEN(0),"^",4)
|
---|
| 75 | ; if approved, cancel and create a new one
|
---|
| 76 | I $P(IBIEN(0),"^",5)="A" D Q IBIEN
|
---|
| 77 | . S IBIEN=$$CANC(IBIEN)
|
---|
| 78 | . S IBIEN=$$OUT($P(IBIEN(0),"^",2),IBEDT,$P(IBIEN(0),"^",11),$P(IBIEN(0),"^",12),.IBPROC)
|
---|
| 79 | L +^IBAT(351.61,IBIEN):10 I '$T Q "0^Transaction Locked"
|
---|
| 80 | ; first clean out procedures there
|
---|
| 81 | S IBX=0 F S IBX=$O(^IBAT(351.61,IBIEN,3,IBX)) Q:IBX<1 S DIK="^IBAT(351.61,"_IBIEN_",3,",DA(1)=IBIEN,DA=IBX D ^DIK
|
---|
| 82 | S IBIEN=$$PROC(IBIEN,.IBPROC,.IBPRICE) ; file procedures
|
---|
| 83 | I IBIEN<1 L -^IBAT(351.61,IBIEN) Q "0^Unable to file procedures"
|
---|
| 84 | S DIE="^IBAT(351.61,",DA=IBIEN
|
---|
| 85 | S DR=".1////"_IBEDT_";.05////"_$S($G(IBPRICE):"C",1:"P;.13////"_DT)
|
---|
| 86 | D ^DIE,TOTAL^IBATCM(IBIEN) L -^IBAT(351.61,IBIEN)
|
---|
| 87 | Q IBIEN
|
---|
| 88 | RX(DFN,IBEDT,IBPREF,IBSOURCE,IBDRUG,IBQTY,IBCOST) ; - files pharmacy data
|
---|
| 89 | ; DFN=dfn for patient, IBEDT=event date, IBPREF=enrolled facility
|
---|
| 90 | ; IBSOURCE=source (prescription ien;PSRX(;refill #
|
---|
| 91 | ; IBDRUG=ien from drug file
|
---|
| 92 | ; IBQTY=quantity of drug, IBCOST=drug cost
|
---|
| 93 | I '$G(DFN)!('$G(IBEDT))!('$G(IBPREF))!($G(IBSOURCE)="")!('$G(IBDRUG))!('$G(IBQTY)) Q 0
|
---|
| 94 | N IBIEN
|
---|
| 95 | S IBIEN=$$NEW(DFN,IBEDT,IBPREF,IBSOURCE) I 'IBIEN Q IBIEN
|
---|
| 96 | S DIE="^IBAT(351.61,",DA=IBIEN
|
---|
| 97 | S DR=".1////"_+IBEDT_";4.01////"_+IBDRUG_";4.02////"_+IBQTY_";.05////"_$S($G(IBCOST):"P;4.03////"_+IBCOST_";.13////"_DT,1:"C")
|
---|
| 98 | L +^IBAT(351.61,IBIEN):10 I '$T Q "0^Transaction Locked"
|
---|
| 99 | D ^DIE D:$G(IBCOST) TOTAL^IBATCM(IBIEN)
|
---|
| 100 | L -^IBAT(351.61,IBIEN)
|
---|
| 101 | Q IBIEN
|
---|
| 102 | ;
|
---|
| 103 | RMPR(DFN,IBEDT,IBPREF,IBSOURCE,IBPROS,IBCOST) ; - files prost. data
|
---|
| 104 | ; DFN=dfn for patient, IBEDT=event date, IBPREF=enrolled facility
|
---|
| 105 | ; IBSOURCE=source (prost ien;RMPR(660,
|
---|
| 106 | ; IBPROS=ien from file 661
|
---|
| 107 | ; IBCOST=item cost
|
---|
| 108 | I '$G(DFN)!('$G(IBEDT))!('$G(IBPREF))!($G(IBSOURCE)="")!('$G(IBPROS)) Q 0
|
---|
| 109 | N IBIEN
|
---|
| 110 | S IBIEN=$$NEW(DFN,IBEDT,IBPREF,IBSOURCE) I 'IBIEN Q IBIEN
|
---|
| 111 | S DIE="^IBAT(351.61,",DA=IBIEN
|
---|
| 112 | S DR=".1////"_+IBEDT_";4.04////"_+IBPROS_";.05////"_$S($G(IBCOST):"P;4.05////"_+IBCOST_";.13////"_DT,1:"C")
|
---|
| 113 | L +^IBAT(351.61,IBIEN):10 I '$T Q "0^Transaction Locked"
|
---|
| 114 | D ^DIE D:$G(IBCOST) TOTAL^IBATCM(IBIEN)
|
---|
| 115 | L -^IBAT(351.61,IBIEN)
|
---|
| 116 | Q IBIEN
|
---|
| 117 | ;
|
---|
| 118 | CANC(DA) ; - used to cancel any transaction
|
---|
| 119 | N DIE,DR,X,Y Q:'$G(DA)
|
---|
| 120 | S DIE="^IBAT(351.61,",DR=".05///X" D ^DIE
|
---|
| 121 | Q
|
---|
| 122 | DEL(DA) ; - used to delete a transaction (only valid for inpatients or rx)
|
---|
| 123 | N DIK,DR,X,Y,Z Q:'$G(DA)
|
---|
| 124 | S Z=$G(^IBAT(351.61,DA,0)) Q:'Z
|
---|
| 125 | Q:$P(Z,"^",12)["SCE("
|
---|
| 126 | S DIK="^IBAT(351.61," D ^DIK
|
---|
| 127 | Q
|
---|
| 128 | NEW(DFN,IBEDT,IBPREF,IBSOURCE) ; - creates new transaction and returns ien
|
---|
| 129 | N IBIEN,IBSITE,DD,DO,DIC,X,Y,DINUM,DLAYGO,DIE,DA,DR
|
---|
| 130 | S IBSITE=$$SITE^IBATUTL
|
---|
| 131 | L +^IBAT(351.6,DFN):10 I '$T Q "0^Patient file Locked"
|
---|
| 132 | L +^IBAT(351.61,0):10 I '$T Q "0^Transaction File Locked"
|
---|
| 133 | S IBIEN=$P(^IBAT(351.61,0),"^",3)+1
|
---|
| 134 | F IBIEN=IBIEN:1 Q:'$D(^IBAT(351.61,"B",IBSITE_IBIEN))
|
---|
| 135 | S DIC="^IBAT(351.61,",DIC(0)="",X=IBSITE_IBIEN,DINUM=IBIEN,DLAYGO=351.61
|
---|
| 136 | S DIC("DR")=".02////"_+DFN_";.03////"_+DT_";.04////"_+IBEDT_";.05////E;.09////"_+IBEDT_";.11////"_+IBPREF_";.12////^S X=IBSOURCE"
|
---|
| 137 | D FILE^DICN I +Y<1 L -(^IBAT(351.61,0),^IBAT(351.6,DFN)) Q "0^Unable to add new transaction"
|
---|
| 138 | S DIE="^IBAT(351.6,",DA=+DFN
|
---|
| 139 | S DR=$S(IBSOURCE["DGPM":".05",IBSOURCE["SCE":".06",IBSOURCE["RMPR":".11",1:".07")_"////"_+IBEDT
|
---|
| 140 | I $P(^IBAT(351.6,DFN,0),"^",+(DR*100))<IBEDT D ^DIE
|
---|
| 141 | L -(^IBAT(351.61,0),^IBAT(351.6,DFN))
|
---|
| 142 | Q IBIEN
|
---|
| 143 | PROC(IBIEN,IBPROC,IBPRICE) ; files procedures
|
---|
| 144 | N X,Y
|
---|
| 145 | S Y=1,IBX=0 F S IBX=$O(IBPROC(IBX)) Q:IBX=""!(+Y<1) D
|
---|
| 146 | . N DIC,X,DA,DD,DO
|
---|
| 147 | . S DIC="^IBAT(351.61,"_IBIEN_",3,",DIC(0)="L"
|
---|
| 148 | . S X=IBX,DA(1)=IBIEN
|
---|
| 149 | . ;S DIC("P")=$P(^DD(351.61,3,0),"^",2) ; no longer required with fm22
|
---|
| 150 | . S DIC("DR")=".02////"_$P(IBPROC(IBX),"^")
|
---|
| 151 | . I $P(IBPROC(IBX),"^",2) S DIC("DR")=DIC("DR")_";.03////"_$P(IBPROC(IBX),"^",2)
|
---|
| 152 | . E S IBPRICE=1
|
---|
| 153 | . D FILE^DICN
|
---|
| 154 | I +Y<1 L -^IBAT(351.61,IBIEN) Q "0^Unable to file procedures"
|
---|
| 155 | Q IBIEN
|
---|
| 156 | DX(IBIEN,IBPTF) ; - files dx info
|
---|
| 157 | Q IBIEN
|
---|
| 158 | N IBX,Y S Y=1,IBX="" F S IBX=$O(IBDX(IBX)) Q:IBX=""!(+Y<1) D
|
---|
| 159 | . N DD,DO,DIC,DINUM,X
|
---|
| 160 | . S DIC="^IBAT(351.61,"_IBIEN_",2,",DIC(0)="",X=$P(IBDX(IBX),"^")
|
---|
| 161 | . ;S DA(1)=IBIEN,DIC("P")=$P(^DD(351.61,2,0),"^",2) D FILE^DICN
|
---|
| 162 | . ; no longer required with fm22
|
---|
| 163 | . S DA(1)=IBIEN D FILE^DICN
|
---|
| 164 | Q $S(+Y<1:"0^Unable to file diagnosis's",1:IBIEN)
|
---|
| 165 | ;
|
---|
| 166 | INIT ; called to possibly initialize the 351.6 file if not done
|
---|
| 167 | N IBS,ZTRTN,ZTDESC,ZTIO,ZTSK,X,Y
|
---|
| 168 | ;
|
---|
| 169 | Q:$O(^IBAT(351.6,0)) ; already populated
|
---|
| 170 | ;
|
---|
| 171 | ; is Transfer Pricing active or not for any
|
---|
| 172 | S IBS=$G(^IBE(350.9,1,10))
|
---|
| 173 | I '$P(IBS,"^",2),'$P(IBS,"^",3),'$P(IBS,"^",4),'$P(IBS,"^",5) Q
|
---|
| 174 | ;
|
---|
| 175 | ; queue off job
|
---|
| 176 | W !!,"It appears you have never used Transfer Pricing before. I need to populate",!,"the Transfer Pricing patient file. Please select a date/time to do this.",!
|
---|
| 177 | S ZTRTN="ADDTP^IBATFILE",ZTDESC="Initializing Transfer Pricing Patient File",ZTIO="" D ^%ZTLOAD
|
---|
| 178 | I $G(ZTSK) W !,"Task Queued #",ZTSK
|
---|
| 179 | ;
|
---|
| 180 | Q
|
---|
| 181 | ADDTP ; Add Transfer Pricing patients to file #351.6
|
---|
| 182 | ;
|
---|
| 183 | N DFN,IBADM,IBDFN,IBPREF,IBADMDT,IBX
|
---|
| 184 | ;
|
---|
| 185 | S DFN=0 F S DFN=$O(^DPT(DFN)) Q:'DFN D
|
---|
| 186 | .;
|
---|
| 187 | .S IBDFN=$$TPP^IBATUTL(DFN)
|
---|
| 188 | .Q:'IBDFN
|
---|
| 189 | .;
|
---|
| 190 | .; - see if they are admitted
|
---|
| 191 | .S IBADM=$G(^DPT(DFN,.105))
|
---|
| 192 | .I IBADM D
|
---|
| 193 | ..S IBPREF=+$P($G(^IBAT(351.6,DFN,0)),"^",3)
|
---|
| 194 | ..S IBADMDT=+$G(^DGPM(IBADM,0))
|
---|
| 195 | ..S IBX=$$ADM(DFN,IBADMDT,IBPREF,IBADM_";DGPM(")
|
---|
| 196 | ;
|
---|
| 197 | Q
|
---|