| [613] | 1 | IBCNBLL ;ALB/ARH - Ins Buffer: LM main screen, list buffer entries ;1 Jun 97 | 
|---|
|  | 2 | ;;2.0;INTEGRATED BILLING;**82,149,153,183,184,271,345**;21-MAR-94;Build 28 | 
|---|
|  | 3 | ;;Per VHA Directive 2004-038, this routine should not be modified. | 
|---|
|  | 4 | ; | 
|---|
|  | 5 | EN ; - main entry point for screen | 
|---|
|  | 6 | D EN^VALM("IBCNB INSURANCE BUFFER LIST") | 
|---|
|  | 7 | Q | 
|---|
|  | 8 | ; | 
|---|
|  | 9 | HDR ;  header code for list manager display | 
|---|
|  | 10 | S VALMHDR(1)="Buffer File entries not yet processed." | 
|---|
|  | 11 | S VALMHDR(1)=VALMHDR(1)_"   (sorted by "_$P(IBCNSORT,U,2) | 
|---|
|  | 12 | I $P(IBCNSORT,U,3)="" S VALMHDR(1)=VALMHDR(1)_")" | 
|---|
|  | 13 | E  S VALMHDR(1)=VALMHDR(1)_", """_$P(IBCNSORT,U,3)_""" first)" | 
|---|
|  | 14 | Q | 
|---|
|  | 15 | ; | 
|---|
|  | 16 | INIT ;  initialization for list manager list | 
|---|
|  | 17 | K ^TMP("IBCNBLL",$J),^TMP("IBCNBLLX",$J),^TMP("IBCNBLLY",$J),^TMP($J,"IBCNBLLS") | 
|---|
|  | 18 | I '$G(IBCNSORT) S IBCNSORT="1^Patient Name" | 
|---|
|  | 19 | D BLD | 
|---|
|  | 20 | Q | 
|---|
|  | 21 | ; | 
|---|
|  | 22 | HELP ;  list manager help | 
|---|
|  | 23 | D FULL^VALM1 | 
|---|
|  | 24 | W @IOF | 
|---|
|  | 25 | W !,"This screen lists all Insurance plans and policies in the Insurance Buffer",!,"that have not yet been processed (accepted or rejected).",! | 
|---|
|  | 26 | W !,"Flags displayed on screen if they apply to the Buffer entry:",!,"   i - Patient has other currently effective Insurance",!,"   I - Patient is currently admitted as an Inpatient" | 
|---|
|  | 27 | W !,"   E - Patient has Expired",!,"   Y - Means Test Copay Patient",!,"   H - Patient has Bills On Hold",!,"   * - Buffer entry Verified by User" | 
|---|
|  | 28 | ; | 
|---|
|  | 29 | ; ESG - 6/7/02 - SDD 5.1.9 | 
|---|
|  | 30 | ; Help screen description of new symbols | 
|---|
|  | 31 | ; | 
|---|
|  | 32 | D PAUSE^VALM1 | 
|---|
|  | 33 | W !!,"IIV Electronic Insurance Verification Status" | 
|---|
|  | 34 | W !,"  The following IIV Status indicators may appear to the left of the" | 
|---|
|  | 35 | W !,"  patient name:" | 
|---|
|  | 36 | W !,"   + - The IIV payer indicated that this is an active policy via" | 
|---|
|  | 37 | W !,"           electronic inquiry/response." | 
|---|
|  | 38 | W !,"   ? - IIV inquiry was sent; awaiting reply from Payer." | 
|---|
|  | 39 | W !,"   # - IIV received an electronic response from the Payer, but was not able to" | 
|---|
|  | 40 | W !,"           determine whether or not the Payer is indicating active coverage.  " | 
|---|
|  | 41 | W !,"           Carefully review the associated IIV Response Report, specifically " | 
|---|
|  | 42 | W !,"           focusing on the Eligibility/Benefits section, if present." | 
|---|
|  | 43 | W !,"           Manual confirmation is required." | 
|---|
|  | 44 | W !,"   ! - IIV was unable to send an electronic inquiry for this insurance " | 
|---|
|  | 45 | W !,"           information. User correction may be required to allow IIV to send " | 
|---|
|  | 46 | W !,"           this inquiry." | 
|---|
|  | 47 | W !,"           Please use the Expand Entry option to see more information." | 
|---|
|  | 48 | W !,"   - - The IIV payer indicated that this is NOT an active policy via " | 
|---|
|  | 49 | W !,"           electronic inquiry/response." | 
|---|
|  | 50 | D PAUSE^VALM1 | 
|---|
|  | 51 | W !!,"When an entry is Processed it is either:" | 
|---|
|  | 52 | W !,?3,"Accepted - the Buffer entry's data is stored in the main Insurance files.",!,?12,"- the modified Insurance entry is flagged as Verified.",!,?3,"Rejected - the Buffer entry's data is not stored in the main Insurance files." | 
|---|
|  | 53 | W !!,"Once an entry is processed (either accepted or rejected) most of the data in ",!,"the Buffer File entry is deleted leaving only a stub entry for tracking ",!,"and reporting purposes." | 
|---|
|  | 54 | W !!,"The IB INSURANCE SUPERVISOR key is required to either Accept or Reject an entry." | 
|---|
|  | 55 | D PAUSE^VALM1 S VALMBCK="R" | 
|---|
|  | 56 | Q | 
|---|
|  | 57 | ; | 
|---|
|  | 58 | EXIT ;  exit list manager option and clean up | 
|---|
|  | 59 | K ^TMP("IBCNBLL",$J),^TMP("IBCNBLLX",$J),^TMP("IBCNBLLY",$J),^TMP($J,"IBCNBLLS"),IBCNSORT,IBCNSCRN,DFN,IBINSDA,IBFASTXT,IBBUFDA | 
|---|
|  | 60 | D CLEAR^VALM1 | 
|---|
|  | 61 | Q | 
|---|
|  | 62 | ; | 
|---|
|  | 63 | BLD ;  build screen display | 
|---|
|  | 64 | N IBCNT,IBCNS1,IBCNS2,IBBUFDA,IBLINE | 
|---|
|  | 65 | ; | 
|---|
|  | 66 | D SORT S IBCNT=0,VALMCNT=0,IBBUFDA=0 | 
|---|
|  | 67 | ; | 
|---|
|  | 68 | S IBCNS1="" F  S IBCNS1=$O(^TMP($J,"IBCNBLLS",IBCNS1)) Q:IBCNS1=""  D | 
|---|
|  | 69 | . S IBCNS2="" F  S IBCNS2=$O(^TMP($J,"IBCNBLLS",IBCNS1,IBCNS2)) Q:IBCNS2=""  D | 
|---|
|  | 70 | ..  S IBBUFDA=0 F  S IBBUFDA=$O(^TMP($J,"IBCNBLLS",IBCNS1,IBCNS2,IBBUFDA)) Q:'IBBUFDA  D | 
|---|
|  | 71 | ...  ; | 
|---|
|  | 72 | ...  S IBCNT=IBCNT+1 I '$D(ZTQUEUED),'(IBCNT#15) W "." | 
|---|
|  | 73 | ...  S IBLINE=$$BLDLN(IBBUFDA,IBCNT) | 
|---|
|  | 74 | ...  D SET(IBLINE,IBCNT) | 
|---|
|  | 75 | ; | 
|---|
|  | 76 | I VALMCNT=0 D SET("",0),SET("There are no Buffer entries that have not been processed.",0) | 
|---|
|  | 77 | Q | 
|---|
|  | 78 | ; | 
|---|
|  | 79 | BLDLN(IBBUFDA,IBCNT) ; build line to display on List screen for one Buffer entry | 
|---|
|  | 80 | N DFN,IB0,IB20,IB60,IBLINE,IBY,VAIN,VADM,VA,VAERR,X,Y,IBMTS S IBLINE="",IBBUFDA=+$G(IBBUFDA) | 
|---|
|  | 81 | S IB0=$G(^IBA(355.33,IBBUFDA,0)),IB20=$G(^IBA(355.33,IBBUFDA,20)),IB60=$G(^IBA(355.33,IBBUFDA,60)) | 
|---|
|  | 82 | S DFN=+IB60 I +DFN D DEM^VADPT,INP^VADPT | 
|---|
|  | 83 | ; | 
|---|
|  | 84 | S IBY=$G(IBCNT),IBLINE=$$SETSTR^VALM1(IBY,"",1,4) | 
|---|
|  | 85 | ; | 
|---|
|  | 86 | ; ESG - 6/6/02 - SDD 5.1.8 | 
|---|
|  | 87 | ; pull the symbol from the symbol function | 
|---|
|  | 88 | ; | 
|---|
|  | 89 | S IBY=$$SYMBOL(IBBUFDA) | 
|---|
|  | 90 | S IBY=IBY_$P($G(^DPT(+DFN,0)),U,1),IBLINE=$$SETSTR^VALM1(IBY,IBLINE,5,16) | 
|---|
|  | 91 | S IBY=$G(VA("BID")),IBLINE=$$SETSTR^VALM1(IBY,IBLINE,23,4) | 
|---|
|  | 92 | S IBY=$P(IB20,U,1),IBLINE=$$SETSTR^VALM1(IBY,IBLINE,29,17) | 
|---|
|  | 93 | S IBY=$P(IB60,U,4),IBLINE=$$SETSTR^VALM1(IBY,IBLINE,48,10) | 
|---|
|  | 94 | S IBY=$$GET1^DIQ(355.12,$P(IB0,U,3),.03),IBLINE=$$SETSTR^VALM1(IBY,IBLINE,60,5) | 
|---|
|  | 95 | S IBY=$$DATE(+IB0),IBLINE=$$SETSTR^VALM1(IBY,IBLINE,66,8) | 
|---|
|  | 96 | S IBY="" D  S IBLINE=$$SETSTR^VALM1(IBY,IBLINE,76,5) | 
|---|
|  | 97 | . S IBY=IBY_$S(+$$INSURED^IBCNS1(DFN,DT):"i",1:" ") | 
|---|
|  | 98 | . S IBY=IBY_$S(+$G(VAIN(1)):"I",1:" ") | 
|---|
|  | 99 | . S IBY=IBY_$S(+$G(VADM(6)):"E",1:" ") | 
|---|
|  | 100 | . S IBMTS=$P($$LST^DGMTU(DFN),U,4) | 
|---|
|  | 101 | . S IBY=IBY_$S(IBMTS="C":"Y",IBMTS="G":"Y",1:" ") | 
|---|
|  | 102 | . S IBY=IBY_$S(+$$HOLD(DFN):"H",1:" ") | 
|---|
|  | 103 | Q IBLINE | 
|---|
|  | 104 | ; | 
|---|
|  | 105 | SET(LINE,CNT) ;  set up list manager screen display array | 
|---|
|  | 106 | S VALMCNT=VALMCNT+1 | 
|---|
|  | 107 | S ^TMP("IBCNBLL",$J,VALMCNT,0)=LINE Q:'CNT | 
|---|
|  | 108 | S ^TMP("IBCNBLL",$J,"IDX",VALMCNT,+CNT)="" | 
|---|
|  | 109 | S ^TMP("IBCNBLLX",$J,CNT)=VALMCNT_U_IBBUFDA | 
|---|
|  | 110 | S ^TMP("IBCNBLLY",$J,IBBUFDA)=VALMCNT_U_+CNT | 
|---|
|  | 111 | Q | 
|---|
|  | 112 | ; | 
|---|
|  | 113 | SORT ;  set up sort for list screen | 
|---|
|  | 114 | ;  1^PATIENT NAME, 2^INS NAME, 3^SOURCE OF INFO, 4^DATE ENTERED, 5^INPATIENT (Y/N), 6^MEANS TEST (Y/N), 7^ON HOLD, 8^VERIFIED, 9^IIV STATUS | 
|---|
|  | 115 | N IBCNDT,IBBUFDA,IBCNDFN,IBCNPAT,IBCSORT1,IBCSORT2,DFN,VAIN,VA,VAERR,IBX,IBCNT,X,Y S IBCNT=0 | 
|---|
|  | 116 | ; | 
|---|
|  | 117 | K ^TMP($J,"IBCNBLLS") I '$G(IBCNSORT) S IBCNSORT="1^Patient Name" | 
|---|
|  | 118 | ; | 
|---|
|  | 119 | S IBCNDT=0 F  S IBCNDT=$O(^IBA(355.33,"AEST","E",IBCNDT)) Q:'IBCNDT  D | 
|---|
|  | 120 | .  S IBBUFDA=0 F  S IBBUFDA=$O(^IBA(355.33,"AEST","E",IBCNDT,IBBUFDA)) Q:'IBBUFDA  D | 
|---|
|  | 121 | ..   S IBCNT=IBCNT+1 I '$D(ZTQUEUED),'(IBCNT#15) W "." | 
|---|
|  | 122 | ..   ; | 
|---|
|  | 123 | ..   S IBCNDFN=+$G(^IBA(355.33,IBBUFDA,60)),IBCNPAT="" I +IBCNDFN S IBCNPAT=$P($G(^DPT(IBCNDFN,0)),U,1) | 
|---|
|  | 124 | ..   ; | 
|---|
|  | 125 | ..   I +IBCNSORT=1 S IBCSORT1=IBCNPAT | 
|---|
|  | 126 | ..   I +IBCNSORT=2 S IBCSORT1=$P($G(^IBA(355.33,IBBUFDA,20)),U,1) | 
|---|
|  | 127 | ..   I +IBCNSORT=3 S IBCSORT1=$P($G(^IBA(355.33,IBBUFDA,0)),U,3) | 
|---|
|  | 128 | ..   I +IBCNSORT=4 S IBCSORT1=$P(+$G(^IBA(355.33,IBBUFDA,0)),".",1) | 
|---|
|  | 129 | ..   I +IBCNSORT=5 I +IBCNDFN S DFN=+IBCNDFN D INP^VADPT S IBCSORT1=$S($G(VAIN(1)):1,1:2) | 
|---|
|  | 130 | ..   I +IBCNSORT=6 I +IBCNDFN S IBX=$P($$LST^DGMTU(IBCNDFN),U,4) S IBCSORT1=$S(IBX="C":1,IBX="G":1,1:2) | 
|---|
|  | 131 | ..   I +IBCNSORT=7 I +IBCNDFN S IBX=$$HOLD(IBCNDFN) S IBCSORT1=$S(+IBX:1,1:2) | 
|---|
|  | 132 | ..   I +IBCNSORT=8 S IBCSORT1=$S(+$P($G(^IBA(355.33,IBBUFDA,0)),U,10):1,1:2) | 
|---|
|  | 133 | ..   ; Sort by symbol and then within the symbol, sort by date entered | 
|---|
|  | 134 | ..   ; Build a numerical subscript with format ##.FM date | 
|---|
|  | 135 | ..   I +IBCNSORT=9 S IBCSORT1=$G(IBCNSORT(1,$$SYMBOL(IBBUFDA)))_"."_$P(+$G(^IBA(355.33,IBBUFDA,0)),".",1),IBCSORT1=+IBCSORT1 | 
|---|
|  | 136 | ..   ; | 
|---|
|  | 137 | ..   S IBCSORT1=$S($G(IBCSORT1)="":"~UNKNOWN",1:IBCSORT1),IBCSORT2=$S(IBCNPAT="":"~UNKNOWN",1:IBCNPAT) | 
|---|
|  | 138 | ..   ; | 
|---|
|  | 139 | ..   S ^TMP($J,"IBCNBLLS",IBCSORT1,IBCSORT2,IBBUFDA)="" K VAIN,IBCSORT1 | 
|---|
|  | 140 | I IBCNT,'$D(ZTQUEUED) W "|" | 
|---|
|  | 141 | Q | 
|---|
|  | 142 | ; | 
|---|
|  | 143 | DATE(X) ; | 
|---|
|  | 144 | Q $E(X,4,5)_"/"_$E(X,6,7)_"/"_$E(X,2,3) | 
|---|
|  | 145 | HOLD(DFN) ; returns true if patient has bills On Hold | 
|---|
|  | 146 | Q $D(^IB("AH",+$G(DFN))) | 
|---|
|  | 147 | ; | 
|---|
|  | 148 | SYMBOL(IBBUFDA) ; Returns the symbol for this buffer entry | 
|---|
|  | 149 | NEW IB0,SYM | 
|---|
|  | 150 | S IB0=$G(^IBA(355.33,IBBUFDA,0)),SYM="" | 
|---|
|  | 151 | I +$P(IB0,U,12) S SYM=$C($P($G(^IBE(365.15,+$P(IB0,U,12),0)),U,2)) | 
|---|
|  | 152 | ; If the entry has been manually verified, override the symbol displayed | 
|---|
|  | 153 | I $P(IB0,U,10)'="",'+$P(IB0,U,12) S SYM="*" | 
|---|
|  | 154 | I SYM="" S SYM=" " | 
|---|
|  | 155 | Q SYM | 
|---|
|  | 156 | ; | 
|---|
|  | 157 | ; | 
|---|
|  | 158 | UPDLN(IBBUFDA,ACTION) ; *** called by any action that modifies a buffer entry, so list screen can be updated if screen not recompiled | 
|---|
|  | 159 | ; modifies a single line in the display array for a buffer entry that has been modified in some way | 
|---|
|  | 160 | ; ACTION = REJECTED, ACCEPTED, EDITED | 
|---|
|  | 161 | N IBARRN,IBOLD,IBNEW,IBO,IBN S IBO="0123456789",IBN="----------" | 
|---|
|  | 162 | ; | 
|---|
|  | 163 | S IBARRN=$G(^TMP("IBCNBLLY",$J,+$G(IBBUFDA))) Q:'IBARRN | 
|---|
|  | 164 | S IBOLD=$G(^TMP("IBCNBLL",$J,+IBARRN,0)) Q:IBOLD="" | 
|---|
|  | 165 | ; | 
|---|
|  | 166 | ; if action is REJECTED or ACCEPTED then the patient name is replaced by the Action in the display array | 
|---|
|  | 167 | ; and the buffer entry is removed from the list of entries that can be selected | 
|---|
|  | 168 | I (ACTION="REJECTED")!(ACTION="ACCEPTED") D | 
|---|
|  | 169 | . S IBNEW=$TR($E(IBOLD,1,5),IBO,IBN)_ACTION_$J("",7)_$E(IBOLD,21,999) | 
|---|
|  | 170 | . S ^TMP("IBCNBLL",$J,+IBARRN,0)=IBNEW | 
|---|
|  | 171 | ; | 
|---|
|  | 172 | ; if the action is EDITED then the line for the buffer entry is recomplied and the updated line is set into | 
|---|
|  | 173 | ; the display array | 
|---|
|  | 174 | I ACTION="EDITED" D | 
|---|
|  | 175 | . S IBNEW=$$BLDLN(IBBUFDA,+$P(IBARRN,U,2)) | 
|---|
|  | 176 | . S ^TMP("IBCNBLL",$J,+IBARRN,0)=IBNEW | 
|---|
|  | 177 | Q | 
|---|