| [613] | 1 | IBJTU2 ;ALB/ARH - TPI UTILITIES ;6/6/03 1:05pm
 | 
|---|
 | 2 |  ;;2.0;INTEGRATED BILLING;**39,106,199,211,276**;21-MAR-94
 | 
|---|
 | 3 |  ;;Per VHA Directive 10-93-142, this routine should not be modified.
 | 
|---|
 | 4 |  ;
 | 
|---|
 | 5 | PAT() ; select patient, only allows patient's that have bills - returns DFN^NAME if patient selected, 0 otherwise
 | 
|---|
 | 6 |  N X,Y,DFN,DTOUT,DUOUT,DA
 | 
|---|
 | 7 |  N DPTNOFZY S DPTNOFZY=1  ;Suppress PATIENT file fuzzy lookups
 | 
|---|
 | 8 |  S DFN=0,DIC(0)="AEQM",DIC="^DPT(",DIC("S")="I $D(^DGCR(399,""C"",Y))" D ^DIC K DIC I Y'<1 S DFN=Y
 | 
|---|
 | 9 |  Q DFN
 | 
|---|
 | 10 |  ;
 | 
|---|
 | 11 | BILL() ; select bill, returns bill IFN^BILL NUMBER or 0 if none selected
 | 
|---|
 | 12 |  N DPTNOFZY S DPTNOFZY=1  ;Suppress PATIENT file fuzzy lookups
 | 
|---|
 | 13 |  N X,Y,DTOUT,DUOUT,DA,IBY S IBY=0,DIC="^DGCR(399,",DIC(0)="AEMQ" D ^DIC K DIC I Y'<1 S IBY=Y
 | 
|---|
 | 14 |  Q IBY
 | 
|---|
 | 15 |  ;
 | 
|---|
 | 16 | PB() ; select either a patient name (must have a bill) or bill number
 | 
|---|
 | 17 |  ; if patient chosen: returns "1^"_DFN, if bill chosen: returns "2^"_IBIFN, 0 otherwise
 | 
|---|
 | 18 |  N IBX,IBY,DIC,DTOUT,DUOUT,DA,X,Y,DPTNOFZY,IBSTR
 | 
|---|
 | 19 |  S IBY=0
 | 
|---|
 | 20 |  ;
 | 
|---|
 | 21 | PB1 R !!,"Enter BILL NUMBER or PATIENT NAME: ",IBX:DTIME I IBX["^"!(IBX="") G PBQ
 | 
|---|
 | 22 |  ;
 | 
|---|
 | 23 |  I $E(IBX)="?" D  G PB1
 | 
|---|
 | 24 |  . W !
 | 
|---|
 | 25 |  . W !,"   Enter one of following: Patient Name, Bill Number,"
 | 
|---|
 | 26 |  . W !,"   ECME Number or Prescription Number."
 | 
|---|
 | 27 |  . W !,"   You may also use prefixes: 'E.' for ECME# or 'R.' for Prescription."
 | 
|---|
 | 28 |  . W !
 | 
|---|
 | 29 |  ;
 | 
|---|
 | 30 |  ; search for patient name
 | 
|---|
 | 31 |  I IBX?1A4N!(IBX?2A.AP)!(IBX?2.A1",".AP)!(IBX?1A1P.AP) D  I IBY G PBQ
 | 
|---|
 | 32 |  . S DPTNOFZY=1  ;Suppress PATIENT file fuzzy lookups
 | 
|---|
 | 33 |  . S DIC="^DPT(",DIC(0)="EQM",DIC("S")="I $D(^DGCR(399,""C"",Y))",X=IBX D ^DIC K DIC I Y'<1 S IBY="1^"_+Y
 | 
|---|
 | 34 |  ;
 | 
|---|
 | 35 |  ; search for bill number
 | 
|---|
 | 36 |  I (IBX?1A1.7AN)!(IBX?3N1"-"1A1.7AN)!(IBX?1"`"1.15N)!(IBX=" ") D  I IBY G PBQ
 | 
|---|
 | 37 |  . S DPTNOFZY=1  ;Suppress PATIENT file fuzzy lookups
 | 
|---|
 | 38 |  . S IBSTR=IBX
 | 
|---|
 | 39 |  . I $L(IBSTR,"-")=2,$P(IBSTR,"-")?3N S IBSTR=$P(IBX,"-",2,255)
 | 
|---|
 | 40 |  . S DIC="^DGCR(399,",DIC(0)="EQ",X=IBSTR D ^DIC K DIC I Y'<1 S IBY="2^"_+Y
 | 
|---|
 | 41 |  ;
 | 
|---|
 | 42 |  ; search for ECME number REC^IBRFN()
 | 
|---|
 | 43 |  S IBSTR=IBX
 | 
|---|
 | 44 |  I IBSTR?1.7N S IBSTR="E."_IBSTR
 | 
|---|
 | 45 |  I IBSTR?1"E."1.7N S Y=$$REC^IBRFN(IBSTR) I Y>0 S IBY="2^"_+Y G PBQ
 | 
|---|
 | 46 |  ;
 | 
|---|
 | 47 |  ; search for RX number REC^IBRFN()
 | 
|---|
 | 48 |  S IBSTR=IBX
 | 
|---|
 | 49 |  I IBSTR?1N1.10AN S IBSTR="R."_IBSTR
 | 
|---|
 | 50 |  I IBSTR?1"R."1N1.10AN S Y=$$REC^IBRFN(IBSTR) I Y>0 S IBY="2^"_+Y G PBQ
 | 
|---|
 | 51 |  ;
 | 
|---|
 | 52 |  W "??"
 | 
|---|
 | 53 |  G PB1
 | 
|---|
 | 54 | PBQ Q IBY
 | 
|---|
 | 55 |  ;
 | 
|---|
 | 56 | RCANC(IBIFN,ARR,WDTH) ; if bill cancelled returns ARR = IBIFN ^ PTR TO 200 ^ INITIALS OF WHO CANCELLED IN IB
 | 
|---|
 | 57 |  ;                                        ARR(X) = REASON CANCELLED   with line width passed in
 | 
|---|
 | 58 |  N X,DIWL,DIWR,DIWF,IBDS,IBCNT,IBI,IBD K ARR
 | 
|---|
 | 59 |  S ARR=0,IBIFN=+$G(IBIFN),IBDS=$G(^DGCR(399,IBIFN,"S"))
 | 
|---|
 | 60 |  S X=$P(IBDS,U,18) G:'X RCANCQ
 | 
|---|
 | 61 |  S ARR=IBIFN_U_X_U_$P($G(^VA(200,+X,0)),U,2)
 | 
|---|
 | 62 |  S X=$P(IBDS,U,19) G:X="" RCANCQ
 | 
|---|
 | 63 |  S DIWL=1,DIWR=$G(WDTH),DIWF="" D ^DIWP
 | 
|---|
 | 64 |  S (IBCNT,IBI)=0,DIWL=1 F  S IBI=$O(^UTILITY($J,"W",DIWL,IBI)) Q:'IBI  D
 | 
|---|
 | 65 |  . S IBD=$G(^UTILITY($J,"W",DIWL,IBI,0)) I IBD'="" S IBCNT=IBCNT+1,ARR(IBCNT)=IBD
 | 
|---|
 | 66 |  K ^UTILITY($J,"W")
 | 
|---|
 | 67 | RCANCQ Q
 | 
|---|
 | 68 |  ;
 | 
|---|
 | 69 | DR(DB,DE) ; get a date range from the user, DB is default begin date (FM), DE is default end date
 | 
|---|
 | 70 |  ; returns "begin dt ^ end dt" in FM format, or "" if two valid dates are not entered
 | 
|---|
 | 71 |  N IBY,IBX,%DT,X,Y S (IBX,IBY)="" I $G(DB)?7N S %DT("B")=$$FMTE^XLFDT(DB,2)
 | 
|---|
 | 72 |  S %DT="AEX",%DT("A")="Start Date: " D ^%DT K %DT G:Y<0 DRQ S IBX=Y
 | 
|---|
 | 73 |  S %DT(0)=IBX,%DT("B")=$$FMTE^XLFDT($S(IBX>$G(DE):IBX,1:DE),2)
 | 
|---|
 | 74 |  S %DT="AEX",%DT("A")="End Date: " D ^%DT K %DT G:Y<0 DRQ S IBY=IBX_U_Y
 | 
|---|
 | 75 | DRQ Q IBY
 | 
|---|