| [613] | 1 | IBCU7U ;ALB/ARH - BILL PROCEDURE UTILITIES ; 10-OCT-03 | 
|---|
|  | 2 | ;;2.0;INTEGRATED BILLING;**245**;21-MAR-94 | 
|---|
|  | 3 | ;;Per VHA Directive 10-93-142, this routine should not be modified. | 
|---|
|  | 4 | ; | 
|---|
|  | 5 | ; basic bill procedure utilities | 
|---|
|  | 6 | ; | 
|---|
|  | 7 | DELCPT(IBIFN,OLDDA) ; delete a CPT code from a bill | 
|---|
|  | 8 | ; Input: OLDDA  = ifn of cpt in bill cpt multiple to be deleted | 
|---|
|  | 9 | N DA,DIK,DIC,DIE,X,Y,IBFND S IBFND=0,DA(1)=+$G(IBIFN),DA=+$G(OLDDA) | 
|---|
|  | 10 | I $D(^DGCR(399,DA(1),"CP",DA,0)) S DIK="^DGCR(399,"_DA(1)_",""CP""," D ^DIK S IBFND=1 | 
|---|
|  | 11 | Q IBFND | 
|---|
|  | 12 | ; | 
|---|
|  | 13 | EDITCPT(IBIFN,OLDDA,NEWCPT) ; replace a CPT code on the bill with another CPT code | 
|---|
|  | 14 | ; Input: OLDDA  = ifn of cpt in bill cpt multiple to be replaced | 
|---|
|  | 15 | ;        NEWCPT = ifn of cpt code to be added | 
|---|
|  | 16 | N DA,DR,DIE,DIC,IBFND,X,Y S IBFND=0,DA(1)=+$G(IBIFN),DA=+$G(OLDDA),NEWCPT=+$G(NEWCPT) | 
|---|
|  | 17 | I NEWCPT,$D(^DGCR(399,DA(1),"CP",DA,0)) S DIE="^DGCR(399,"_DA(1)_",""CP"",",DR=".01///`"_NEWCPT D ^DIE S IBFND=1 | 
|---|
|  | 18 | Q IBFND | 
|---|
|  | 19 | ; | 
|---|
|  | 20 | COPYCPT(IBIFN,OLDDA,NEWCPT) ; add a new CPT and populate date fields with data from an existing bill cpt | 
|---|
|  | 21 | ; Input: OLDDA  = ifn of cpt in bill cpt multiple to be copied | 
|---|
|  | 22 | ;        NEWCPT = ifn of cpt code to be added | 
|---|
|  | 23 | N DLAYGO,DIC,DIE,DA,DR,DD,DO,IBNEWDA,IBODA,IBNDA,IBXDA,IBSFILE,IBX,IBY,IBOLD,IBNEW,IBFND,X,Y S IBFND=0 | 
|---|
|  | 24 | ; | 
|---|
|  | 25 | I '$D(^DGCR(399,+$G(IBIFN),"CP",+$G(OLDDA),0)) G COPYCPQ | 
|---|
|  | 26 | I '$G(NEWCPT) G COPYCPQ | 
|---|
|  | 27 | ; | 
|---|
|  | 28 | ; add new procedure entry to bill | 
|---|
|  | 29 | S DLAYGO=399,DA(1)=IBIFN,DIC="^DGCR(399,"_DA(1)_",""CP"",",DIC(0)="L",X=+NEWCPT_";ICPT(" K DD,DO D FILE^DICN K DO,DD,DIC,DIE | 
|---|
|  | 30 | S (DA,IBNEWDA,IBFND)=+Y I IBNEWDA<1 S IBFND=0 G COPYCPQ | 
|---|
|  | 31 | ; | 
|---|
|  | 32 | ; copy data from existing procedure to new procedure on bill | 
|---|
|  | 33 | S IBODA=OLDDA_","_IBIFN_"," | 
|---|
|  | 34 | S IBNDA=IBNEWDA_","_IBIFN_"," | 
|---|
|  | 35 | D GETS^DIQ(399.0304,IBODA,"*","IN","IBOLD") | 
|---|
|  | 36 | S IBSFILE=0 F  S IBSFILE=$O(IBOLD(IBSFILE)) Q:'IBSFILE  D | 
|---|
|  | 37 | . S IBXDA="" F  S IBXDA=$O(IBOLD(IBSFILE,IBXDA)) Q:IBXDA=""  D | 
|---|
|  | 38 | .. S IBX=0 F  S IBX=$O(IBOLD(IBSFILE,IBXDA,IBX)) Q:'IBX  D | 
|---|
|  | 39 | ... I IBXDA=IBODA,",.01,2,3,4,7,14,20,"[(","_IBX_",") Q | 
|---|
|  | 40 | ... S IBNEW(IBSFILE,IBNDA,IBX)=IBOLD(IBSFILE,IBXDA,IBX,"I") | 
|---|
|  | 41 | I $O(IBNEW(0)) D FILE^DIE("","IBNEW") K DA,DR,DA,DO,DIE,DIC | 
|---|
|  | 42 | ; | 
|---|
|  | 43 | ; copy modifiers from existing procedure to new procedure on bill | 
|---|
|  | 44 | S IBX=0 F  S IBX=$O(^DGCR(399,IBIFN,"CP",OLDDA,"MOD",IBX)) Q:'IBX  D | 
|---|
|  | 45 | . S IBY=$G(^DGCR(399,IBIFN,"CP",OLDDA,"MOD",IBX,0)) Q:IBY="" | 
|---|
|  | 46 | . S:'$D(^DGCR(399,IBIFN,"CP",IBNEWDA,"MOD")) DIC("P")=$$GETSPEC^IBEFUNC(399.0304,16) | 
|---|
|  | 47 | . S DIC(0)="L",DIC="^DGCR(399,"_IBIFN_",""CP"","_+IBNEWDA_",""MOD"",",DLAYGO=399.30416 | 
|---|
|  | 48 | . S DA(2)=IBIFN,DA(1)=IBNEWDA,X=+IBY,DIC("DR")=".02////"_$P(IBY,U,2) D FILE^DICN K DIC,DO,DD | 
|---|
|  | 49 | ; | 
|---|
|  | 50 | COPYCPQ Q IBFND | 
|---|
|  | 51 | ; | 
|---|
|  | 52 | ADDCPT(IBIFN,SDLN) ; add a new CPT code to a bill and populate it's data based on clinical data | 
|---|
|  | 53 | ; Input: SDLN - data line from ^UTILITY($J,"CPT-CNT" created in VST^IBCCPT | 
|---|
|  | 54 | ; ^utility($j,cpt-cnt,count)=code^date^on bill^is BASC^divis^nb^nb mess^provider^clinic^mod,mod^Opt Enc Ptr | 
|---|
|  | 55 | N DLAYGO,DIC,DIE,DA,DR,DD,DO,DINUM,IBNEWDA,IBFND,X,Y S IBFND=0 | 
|---|
|  | 56 | ; | 
|---|
|  | 57 | I '$D(^DGCR(399,+$G(IBIFN),0)) G ADDCPTQ | 
|---|
|  | 58 | I '$G(SDLN) G ADDCPTQ | 
|---|
|  | 59 | I +$P(SDLN,U,6) G ADDCPTQ | 
|---|
|  | 60 | ; | 
|---|
|  | 61 | I '$D(^DGCR(399,IBIFN,"CP")) S DIC("P")=$$GETSPEC^IBEFUNC(399,304) | 
|---|
|  | 62 | S DLAYGO=399,DA(1)=IBIFN,DIC="^DGCR(399,"_DA(1)_",""CP"",",DIC(0)="L",X=+SDLN_";ICPT(" K DD,DO D FILE^DICN K DO,DD,DIC("P") | 
|---|
|  | 63 | S (DA,IBNEWDA,IBFND)=+Y I IBNEWDA<1 S IBFND=0 G ADDCPTQ | 
|---|
|  | 64 | ; | 
|---|
|  | 65 | S DR="1////"_$P(SDLN,U,2)_$S(+$P(SDLN,U,8):";18////"_+$P(SDLN,U,8),1:"") | 
|---|
|  | 66 | S DR=DR_$S(+$P(SDLN,U,9):";6////"_+$P(SDLN,U,9),1:"")_$S(+$P(SDLN,U,5):";5////"_+$P(SDLN,U,5),1:"") | 
|---|
|  | 67 | S DR=DR_$S(+$P(SDLN,U,11):";20////"_+$P(SDLN,U,11),1:"") | 
|---|
|  | 68 | S DIE=DIC,DA=+IBNEWDA D ^DIE K DIE,DIC,DA,DINUM,DO,DD | 
|---|
|  | 69 | ; | 
|---|
|  | 70 | I $P(SDLN,U,10) D ADDMOD^IBCCPT(IBIFN,IBNEWDA,$P(SDLN,U,10)) ;Modifiers | 
|---|
|  | 71 | ; | 
|---|
|  | 72 | ADDCPTQ Q IBFND | 
|---|
|  | 73 | ; | 
|---|
|  | 74 | GETSD(IBIFN) ; get the procedures from the clinical data covered by the bill | 
|---|
|  | 75 | ; Output: ^UTILITY($J,"CPT-CNT",X)= ... (from VST^IBCCPT) | 
|---|
|  | 76 | ;         ^UTILITY($J,"CPT-CLN",CPT,EVDT)= ... | 
|---|
|  | 77 | N SDCNT,SDQDATA,SDQUERY,V,X,IBQUERY,IBOPV1,IBOPV2,DGCNT,DFN,IBX,IBY K ^UTILITY($J) | 
|---|
|  | 78 | S DFN=$P($G(^DGCR(399,+$G(IBIFN),0)),U,2) Q:'DFN | 
|---|
|  | 79 | D VST^IBCCPT(.IBQUERY) | 
|---|
|  | 80 | S IBX=0 F  S IBX=$O(^UTILITY($J,"CPT-CNT",IBX)) Q:'IBX  D | 
|---|
|  | 81 | . S IBY=^UTILITY($J,"CPT-CNT",IBX) | 
|---|
|  | 82 | . S ^UTILITY($J,"CPT-CLN",$P(IBY,U,1),$P(IBY,U,2))=IBY | 
|---|
|  | 83 | Q | 
|---|