Home   Package List   Routine Alphabetical List   Global Alphabetical List   FileMan Files List   FileMan Sub-Files List   Package Component Lists   Package-Namespace Mapping  
Routine: IBTUTL1

IBTUTL1.m

Go to the documentation of this file.
  1. IBTUTL1 ;ALB/AAS - CLAIMS TRACKING UTILITY ROUTINE ;21-JUN-93
  1. ;;2.0;INTEGRATED BILLING;**13,223,249,292,384,517**;21-MAR-94;Build 240
  1. ;;Per VA Directive 6402, this routine should not be modified.
  1. ;
  1. OPT(DFN,IBETYP,IBTDT,ENCTR,IBRMARK,IBVSIT) ; -- add outpatient care entries
  1. ; -- input dfn := patient pointer to 2
  1. ; ibetyp := pointer to type entry in 356.6
  1. ; ibtdt := episode date
  1. ; enctr := pointer to opt. encounter file (optional)
  1. ; ibrmark := text of reason not billable (optional)
  1. ; ibvsit := pointer to visit file (optional)
  1. ;
  1. N X,Y,DA,DR,DIE,DIC,IBSCRN
  1. S IBSCRN=0
  1. ;Allow user inter-actions if not queued and IBTALK=1 or not exist.
  1. I '$D(ZTQUEUED) D I IBSCRN G OPTSCRN
  1. . I $D(IBTALK),'$G(IBTALK) Q
  1. . I IBTDT<3060101 Q ;Don't use new code for claims prior to 1/1/2006
  1. . S IBSCRN=1
  1. I $G(IBETYP) S IBETYP=$O(^IBE(356.6,"AC",2,0))
  1. I IBTDT<3060101 S X=$O(^IBT(356,"APTY",DFN,IBETYP,IBTDT,0)) I X S IBTRN=X G OPTQ ;Prevent duplicate date/time claims prior to 1/1/2006
  1. ;Check for encounter already in claims tracking.
  1. I $D(ENCTR),$D(^IBT(356,"AENC",+DFN,+ENCTR)) S IBTRN=$O(^IBT(356,"AENC",+DFN,+ENCTR,0)) G OPTQ
  1. D ADDT^IBTUTL
  1. S DA=IBTRN,DIE="^IBT(356,"
  1. I IBTRN<1 G OPTQ
  1. L +^IBT(356,+IBTRN):10 I '$T G OPTQ
  1. S DR=".02////"_$G(DFN)_";.03////"_$G(IBVSIT)_";.04////"_$G(ENCTR)_";.06////"_+IBTDT_";.18////"_IBETYP_";.2////1;.24////"_$$INSURED^IBCNS1(DFN)_";1.01///NOW;1.02////"_DUZ_";.17////"_$$EABD^IBTUTL(IBETYP)
  1. I $G(IBRMARK)'="" S DR=DR_";.19///"_IBRMARK
  1. D ^DIE K DA,DR,DIE
  1. L -^IBT(356,+IBTRN)
  1. I IBETYP=2 S HCSRIEN=+$$FNDHCSR^IBTUTL(DFN,IBTDT) D:HCSRIEN HCSRCPY^IBTUTL(HCSRIEN,IBTRN,DFN,IBTDT)
  1. OPTQ Q
  1. ;
  1. REFILL(DFN,IBETYP,IBTDT,IBRXN,IBRXN1,IBRMARK,IBEABD,IBSCROI) ; -- add refill
  1. ; -- input dfn := patient pointer to 2
  1. ; ibetyp := pointer to type entry in 356.6
  1. ; ibtdt := episode date (refill date)
  1. ; ibrxn := pointer to 52
  1. ; ibrxn1 := refill multiple entry
  1. ; ibrmark := non billable reason if unsure
  1. ; ibeabd := optional, can specify an earliest auto bill date
  1. ; ibscroi := special consent roi
  1. ;
  1. N X,Y,DA,DR,DIE,DIC
  1. ;S X=$O(^IBT(356,"APTY",DFN,IBETYP,IBTDT,0)) I X S IBTRN=X G REFILLQ
  1. S X=$O(^IBT(356,"ARXFL",IBRXN,IBRXN1,0)) I X S IBTRN=X G REFILLQ
  1. D ADDT^IBTUTL
  1. I IBTRN<1 G REFILLQ
  1. S DA=IBTRN,DIE="^IBT(356,"
  1. L +^IBT(356,+IBTRN):10 I '$T G REFILLQ
  1. S DR=".02////"_$G(DFN)_";.06////"_+IBTDT_";.08////"_IBRXN_";.1////"_IBRXN1_";.18////"_IBETYP_";.2////1;.24////"_$$INSURED^IBCNS1(DFN)_";1.01///NOW;1.02////"_$S($G(IBDUZ):IBDUZ,1:DUZ)_";.17////"_$S($G(IBEABD):IBEABD,1:$$EABD^IBTUTL(IBETYP))
  1. I $G(IBRMARK)'="" S DR=DR_";.19///"_IBRMARK
  1. I $G(IBSCROI)'="" S DR=DR_";.31////"_IBSCROI ;IB*2*384
  1. D ^DIE K DA,DR,DIE
  1. L -^IBT(356,+IBTRN)
  1. REFILLQ Q
  1. ;
  1. PRO(DFN,IBTDT,IBPRO,IBRMARK) ; -- add prosthetic entries
  1. ; -- input dfn := patient pointer to 2
  1. ; ibetyp := pointer to type entry in 356.6
  1. ; ibtdt := episode date
  1. ;
  1. N X,Y,DA,DR,DIE,DIC,IBETYP
  1. ;S IBETYP=$O(^IBE(356.6,"ACODE",4,0))
  1. S IBETYP=$O(^IBE(356.6,"AC",3,0)) ;prosthetics type
  1. S X=$O(^IBT(356,"APRO",IBPRO,0)) I X S IBTRN=X G PROQ
  1. D ADDT^IBTUTL
  1. I IBTRN<1 G PROQ
  1. S DA=IBTRN,DIE="^IBT(356,"
  1. L +^IBT(356,+IBTRN):10 I '$T G PROQ
  1. S DR=".02////"_$G(DFN)_";.06////"_+IBTDT_";.09////"_IBPRO_";.18////"_IBETYP_";.2////1;.24////"_$$INSURED^IBCNS1(DFN)_";1.01///NOW;1.02////"_DUZ_";.17////"_$$EABD^IBTUTL(IBETYP)
  1. I $G(IBRMARK)'="" S DR=DR_";.19///"_IBRMARK
  1. D ^DIE K DA,DR,DIE
  1. L -^IBT(356,+IBTRN)
  1. PROQ Q
  1. ;
  1. PT(DFN) ; -- format patient name - last 4 for output
  1. S Y="" I '$G(DFN) G PTQ
  1. I '$D(VA("PID")) D PID^VADPT
  1. S Y=$E($P($G(^DPT(DFN,0)),"^"),1,20)_" "_$E($G(^(0)),1)_VA("BID")
  1. PTQ Q Y
  1. ;
  1. PRODATA(IBDA) ; -- return data from prosthetics file
  1. N IBDA0,DA,DIC,DIE,DR
  1. K IBRMPR ; only one array at a time
  1. I '$G(IBDA) G PRODAQ
  1. S IBDA0=$G(^RMPR(660,+IBDA,0))
  1. G:IBDA0="" PRODAQ
  1. DIQ S DIC="^RMPR(660,",DR=".01;1:5;7;10;12:17;24"
  1. S DIQ="IBRMPR",DIQ(0)="E",DA=IBDA
  1. D EN^DIQ1
  1. PRODAQ Q
  1. ;
  1. OPTSCRN ; -- add outpatient care entries with user feedback
  1. ; called from OPT^IBTUTL1 which has following inputs
  1. ; -- input dfn := patient pointer to 2
  1. ; ibetyp := pointer to type entry in 356.6
  1. ; ibtdt := episode date
  1. ; enctr := pointer to opt. encounter file (optional)
  1. ; ibrmark := text of reason not billable (optional)
  1. ; ibvsit := pointer to visit file (optional)
  1. ;
  1. N CNT,DIR,DIROUT,DIRUT,DTOUT,DUOUT,IB3560,IBACT,IBDATE,IBENC,IBETYPNM
  1. N IBID,IBPATNM,IBQUIT,LINE,TEMP,TMP
  1. ;If encounter passed in already exists in claims Tracking, remove it.
  1. I $D(ENCTR),$D(^IBT(356,"AENC",+DFN,+ENCTR)) S ENCTR=""
  1. I $G(IBETYP) S IBETYP=$O(^IBE(356.6,"AC",2,0))
  1. S IBQUIT=0
  1. I $O(^IBT(356,"APTY",DFN,IBETYP,IBTDT,0)) D I X S IBTRN=X G OPTSCRNQ
  1. . S (CNT,LINE)=1,(TEMP,TMP,X)=""
  1. . S Y=IBTDT D DD^%DT S IBDATE=$E(Y_" ",1,18) S Y=""
  1. . S TMP("DIMSG",LINE)=" ",LINE=LINE+1
  1. . S TMP("DIMSG",LINE)=" ",LINE=LINE+1
  1. . S TMP("DIMSG",LINE)="There are match(es) for the episode date you have entered:",LINE=LINE+1
  1. . S TMP("DIMSG",LINE)=" ",LINE=LINE+1
  1. . S TMP("DIMSG",LINE)=" EPISODE DATE PATIENT NAME CT ID TYPE ENCOUNTER ACTIVE",LINE=LINE+1
  1. . S TMP("DIMSG",LINE)=" ------------ ------------ ----- ---- --------- ------",LINE=LINE+1
  1. . S TMP("DIMSG",LINE)=" ",LINE=LINE+1
  1. . F S X=$O(^IBT(356,"APTY",DFN,IBETYP,IBTDT,X)) Q:X="" D
  1. .. S IB3560=$G(^IBT(356,X,0)) I IB3560="" Q
  1. .. S IBID=$P($G(IB3560),U,1) S IBID=$S(IBID="":"ID_UNKNOWN",1:$E(IBID_" ",1,10))
  1. .. S IBPATNM=$P($G(^DPT(DFN,0)),U,1) S IBPATNM=$S(IBPATNM="":"PATIENT_UNKNOWN",1:$E(IBPATNM_" ",1,15))
  1. .. S IBENC=$P($G(IB3560),U,4) S IBENC=$S(IBENC="":"NONE ",1:$E(IBENC_" ",1,10))
  1. .. S IBACT=$S($P($G(IB3560),U,20)=1:"YES",1:"NO ")
  1. .. S IBETYPNM=$P($G(^IBE(356.6,IBETYP,0)),U,2) S IBETYPNM=$S(IBETYPNM="":"NONE ",1:$E(IBETYPNM_" ",1,8))
  1. .. S TMP("DIMSG",LINE)=$E(CNT_" ",1,3)_IBDATE_" "_IBPATNM_" "_IBID_" "_IBETYPNM_" "_IBENC_" "_IBACT
  1. .. S TEMP(CNT)=X_"^"_$TR(IBENC," ",""),CNT=CNT+1
  1. .. S LINE=LINE+1
  1. . I CNT>0 D
  1. .. S TMP("DIMSG",LINE+1)=$E(CNT_" ",1,3)_"*** CREATE A NEW CLAIMS TRACKING ENTRY ***"
  1. .. D MSG^DIALOG("WM",,,,"TMP")
  1. .. S DIR(0)="NA^1:"_CNT_":0"
  1. .. S DIR("A")="Select a Claims Tracking entry: "
  1. .. S DIR("?",1)="Choose a Claims Tracking entry from the previous list to continue processing."
  1. .. S DIR("?")="Valid responses are 1 thru "_CNT_" or ^ to exit."
  1. .. D ^DIR
  1. .. I ($G(DTOUT))!($G(DUOUT))!($G(DIRUT))!($G(DIROUT)) S IBQUIT=1
  1. .. I Y>0 S X=+$G(TEMP(Y)) I +$P($G(TEMP(Y)),U,2)>0 S ENCTR=$P($G(TEMP(Y)),U,2)
  1. I IBQUIT Q
  1. I '$G(ENCTR) D
  1. . N CNT,DIR,IBDATA,IBDATA1,IBDATA2,IBERR,IBMSG,IBSCRN,IBTMP,LINE,TMP,X
  1. . N DIOUT,DIROUT,DTOUT,DUOUT
  1. . S X(1)=IBTDT
  1. . S IBSCRN="I $P($G(^(0)),U,2)="_DFN
  1. . S IBMSG="IBTMP(""ENC"")"
  1. . S IBERR="IBTMP(""ERR"")"
  1. . D FIND^DIC(409.68,,,"PQX",.X,,"B",IBSCRN,,IBMSG,IBERR)
  1. . I +IBTMP("ENC","DILIST",0)=0 S ENCTR="" Q
  1. . S CNT=+IBTMP("ENC","DILIST",0)+1
  1. . S (LINE,X)=0
  1. . S TMP("DIMSG",LINE)=" ",LINE=LINE+1
  1. . S TMP("DIMSG",LINE)=" ",LINE=LINE+1
  1. . S TMP("DIMSG",LINE)=" ",LINE=LINE+1
  1. . S TMP("DIMSG",LINE)="There are encounters for the episode date you have selected:",LINE=LINE+1
  1. . S TMP("DIMSG",LINE)=" ",LINE=LINE+1
  1. . F S X=$O(IBTMP("ENC","DILIST",X)) Q:X="" D
  1. .. S LINE=LINE+1
  1. .. S IBDATA1=$P($G(IBTMP("ENC","DILIST",X,0)),"^"_IBTDT,1)
  1. .. S IBDATA2=$P($G(IBTMP("ENC","DILIST",X,0)),"^"_IBTDT,2)
  1. .. S IBDATA=$TR(IBDATA1_IBDATA2,"^"," ")
  1. .. S TMP("DIMSG",LINE)=$E(X_" ",1,4)_IBDATA
  1. . S TMP("DIMSG",LINE+1)=$E(+IBTMP("ENC","DILIST",0)+1_" ",1,4)_"*** CREATE A NEW CLAIMS TRACKING ENTRY WITHOUT AN ENCOUNTER ***"
  1. . D MSG^DIALOG("WM",,,,"TMP")
  1. . S DIR(0)="NA^1:"_CNT_":0"
  1. . S DIR("A")="Select an Encounter for the Claims Tracking entry: "
  1. . S DIR("?",1)="Choose an Encounter from the previous list to continue processing."
  1. . S DIR("?")="Valid responses are 1 thru "_CNT_" or ^ to exit."
  1. . D ^DIR
  1. . I ($G(DTOUT))!($G(DUOUT))!($G(DIRUT))!($G(DIROUT)) S IBQUIT=1
  1. . I +$G(Y)<1 Q
  1. . S ENCTR=+$G(IBTMP("ENC","DILIST",+Y,0)) I 'ENCTR Q
  1. . I $D(^IBT(356,"AENC",+DFN,ENCTR)) S IBTRN=$O(^IBT(356,"AENC",+DFN,ENCTR,0)) Q
  1. I IBQUIT Q
  1. G:$G(IBTRN)'="" OPTSCRNQ
  1. D ADDT^IBTUTL
  1. S DA=IBTRN,DIE="^IBT(356,"
  1. I IBTRN<1 G OPTSCRNQ
  1. L +^IBT(356,+IBTRN):10 I '$T G OPTSCRNQ
  1. S DR=".02////"_$G(DFN)_";.03////"_$G(IBVSIT)_";.04////"_$G(ENCTR)_";.06////"_+IBTDT_";.18////"_IBETYP_";.2////1;.24////"_$$INSURED^IBCNS1(DFN)_";1.01///NOW;1.02////"_DUZ_";.17////"_$$EABD^IBTUTL(IBETYP)
  1. I $G(IBRMARK)'="" S DR=DR_";.19///"_IBRMARK
  1. D ^DIE K DA,DR,DIE
  1. L -^IBT(356,+IBTRN)
  1. OPTSCRNQ Q