| [613] | 1 | IBCNBLA1 ;ALB/ARH - Ins Buffer: LM action calls (cont) ;1 Jun 97 | 
|---|
|  | 2 | ;;2.0;INTEGRATED BILLING;**82,133,149,184,252,271**;21-MAR-94 | 
|---|
|  | 3 | ;;Per VHA Directive 10-93-142, this routine should not be modified. | 
|---|
|  | 4 | ; | 
|---|
|  | 5 | ADDBUF ; add a new buffer entry protocol | 
|---|
|  | 6 | N DIC,DIR,DIRUT,DUOUT,X,Y,IBIN,DFN,IBBUFDA,IBDATA,AMLIST,IBHELP | 
|---|
|  | 7 | D FULL^VALM1 S VALMBCK="R" | 
|---|
|  | 8 | ; | 
|---|
|  | 9 | ; Patient lookup | 
|---|
|  | 10 | S DIC(0)="AEQM",DIC="^DPT(" D ^DIC Q:Y'>0  S DFN=+Y W ! | 
|---|
|  | 11 | ; | 
|---|
|  | 12 | INS ; Insurance company lookup | 
|---|
|  | 13 | S DIR("A")="Insurance Company",DIR(0)="FO^1:30" | 
|---|
|  | 14 | S DIR("?",1)="Please enter the name of the insurance company that provides coverage for this" | 
|---|
|  | 15 | S DIR("?",2)="patient.  This response is a free text response, however, a partial insurance" | 
|---|
|  | 16 | S DIR("?")="company name look-up is available here." | 
|---|
|  | 17 | ; BHS - 10/15/03 - Removed quit condition when user enters a caret | 
|---|
|  | 18 | ;                  during the insurance lister and only sets IBIN | 
|---|
|  | 19 | ;                  when a valid selection is made | 
|---|
|  | 20 | D ^DIR K DIR Q:$D(DIRUT)  S IBIN=Y,Y=$$DICINS^IBCNBU1(Y,1,10) I Y'<0,Y'=0 S IBIN=Y | 
|---|
|  | 21 | ; | 
|---|
|  | 22 | ; ESG - 6/17/02 - Usage of Auto Match file when adding a buffer entry | 
|---|
|  | 23 | ;     - SDD 5.1.3 | 
|---|
|  | 24 | ; | 
|---|
|  | 25 | ; BHS - 10/15/03 - Added condition to allow Auto Match lookup when user | 
|---|
|  | 26 | ;                  entered a caret during the insurance lister | 
|---|
|  | 27 | I Y=0!(Y<0),$$AMLOOK^IBCNEUT1(IBIN,1,.AMLIST) S Y=$$AMSEL^IBCNEUT1(.AMLIST) I Y'<0,Y'=0 S IBIN=Y | 
|---|
|  | 28 | I '$$INPTTR(355.33,20.01,$$UP^XLFSTR(IBIN)) D  G INS | 
|---|
|  | 29 | . D FIELD^DID(355.33,20.01,"","HELP-PROMPT","IBHELP") | 
|---|
|  | 30 | . W !?5,IBHELP("HELP-PROMPT") Q | 
|---|
|  | 31 | ; | 
|---|
|  | 32 | S DIR(0)="Y",DIR("A")="Add a new Insurance Buffer entry for this patient and company",DIR("B")="YES" W ! D ^DIR K DIR Q:Y'=1 | 
|---|
|  | 33 | ; | 
|---|
|  | 34 | S IBDATA(20.01)=$$UP^XLFSTR(IBIN),IBDATA(60.01)=DFN | 
|---|
|  | 35 | S IBBUFDA=+$$ADDSTF^IBCNBES(1,DFN,.IBDATA) K IBDATA Q:'IBBUFDA | 
|---|
|  | 36 | ; | 
|---|
|  | 37 | I '$$LOCK^IBCNBU1(IBBUFDA,1) Q | 
|---|
|  | 38 | D INSHELP^IBCNBEE,INS^IBCNBEE(IBBUFDA) | 
|---|
|  | 39 | D GRPHELP^IBCNBEE,GRP^IBCNBEE(IBBUFDA) | 
|---|
|  | 40 | D POLHELP^IBCNBEE,POLICY^IBCNBEE(IBBUFDA) | 
|---|
|  | 41 | D BUFF^IBCNEUT2(IBBUFDA,+$$INSERROR^IBCNEUT3("B",IBBUFDA))   ; symbol | 
|---|
|  | 42 | D UNLOCK^IBCNBU1(IBBUFDA) | 
|---|
|  | 43 | ; | 
|---|
|  | 44 | D INIT^IBCNBLL,HDR^IBCNBLL S VALMBCK="R" | 
|---|
|  | 45 | Q | 
|---|
|  | 46 | ; | 
|---|
|  | 47 | INSEDIT(IBBUFDA) ; edit the Insurance data of a buffer entry | 
|---|
|  | 48 | ; | 
|---|
|  | 49 | Q:'$G(IBBUFDA)  D FULL^VALM1 | 
|---|
|  | 50 | D INSHELP^IBCNBEE,INS^IBCNBEE(IBBUFDA) | 
|---|
|  | 51 | ; | 
|---|
|  | 52 | D CLEAN^VALM10,INIT^IBCNBLE,HDR^IBCNBLE S VALMBCK="R" D UPDLN^IBCNBLL(IBBUFDA,"EDITED") | 
|---|
|  | 53 | Q | 
|---|
|  | 54 | ; | 
|---|
|  | 55 | GRPEDIT(IBBUFDA) ; edit the Group/Plan data of a buffer entry | 
|---|
|  | 56 | ; | 
|---|
|  | 57 | Q:'$G(IBBUFDA)  D FULL^VALM1 | 
|---|
|  | 58 | D GRPHELP^IBCNBEE,GRP^IBCNBEE(IBBUFDA) | 
|---|
|  | 59 | ; | 
|---|
|  | 60 | D CLEAN^VALM10,INIT^IBCNBLE,HDR^IBCNBLE S VALMBCK="R" | 
|---|
|  | 61 | Q | 
|---|
|  | 62 | ; | 
|---|
|  | 63 | POLEDIT(IBBUFDA) ; edit the Subscriber Policy data of a buffer entry | 
|---|
|  | 64 | ; | 
|---|
|  | 65 | Q:'$G(IBBUFDA)  D FULL^VALM1 | 
|---|
|  | 66 | D POLHELP^IBCNBEE,POLICY^IBCNBEE(IBBUFDA) | 
|---|
|  | 67 | ; | 
|---|
|  | 68 | D CLEAN^VALM10,INIT^IBCNBLE,HDR^IBCNBLE S VALMBCK="R" D UPDLN^IBCNBLL(IBBUFDA,"EDITED") | 
|---|
|  | 69 | Q | 
|---|
|  | 70 | ; | 
|---|
|  | 71 | ALLEDIT(IBBUFDA) ; edit All data of a buffer entry | 
|---|
|  | 72 | ; | 
|---|
|  | 73 | Q:'$G(IBBUFDA)  D FULL^VALM1 | 
|---|
|  | 74 | D INSHELP^IBCNBEE,INS^IBCNBEE(IBBUFDA) | 
|---|
|  | 75 | D GRPHELP^IBCNBEE,GRP^IBCNBEE(IBBUFDA) | 
|---|
|  | 76 | D POLHELP^IBCNBEE,POLICY^IBCNBEE(IBBUFDA) | 
|---|
|  | 77 | ; | 
|---|
|  | 78 | D CLEAN^VALM10,INIT^IBCNBLE,HDR^IBCNBLE S VALMBCK="R" D UPDLN^IBCNBLL(IBBUFDA,"EDITED") | 
|---|
|  | 79 | Q | 
|---|
|  | 80 | ; | 
|---|
|  | 81 | CMPEDIT(IBBUFDA) ; display a buffer entry and an existing ins entry for comparison, allow edit of buffer data | 
|---|
|  | 82 | Q:'$G(IBBUFDA) | 
|---|
|  | 83 | N IBDA,IBPOLDA,IBGRPDA,IBINSDA,DIR,DIRUT,X,Y | 
|---|
|  | 84 | ; | 
|---|
|  | 85 | D FULL^VALM1 | 
|---|
|  | 86 | ; | 
|---|
|  | 87 | S IBDA=$$SEL^IBCNBLA("IBCNBLPX") I 'IBDA G CMPQ | 
|---|
|  | 88 | I $P(IBDA,U,4)'="",+$G(^IBA(355.33,+IBBUFDA,60))'=$P(IBDA,U,4) W !,"Buffer Patient doesn't match Policy Patient, can't continue." G CMPQ | 
|---|
|  | 89 | S IBINSDA=+IBDA,IBGRPDA=+$P(IBDA,U,2),IBPOLDA=+$P(IBDA,U,3) | 
|---|
|  | 90 | ; | 
|---|
|  | 91 | CEINS W @IOF | 
|---|
|  | 92 | I 'IBINSDA W !,"No Insurance Company Selected for Comparison." | 
|---|
|  | 93 | W ! D INS^IBCNBCD(IBBUFDA,IBINSDA) | 
|---|
|  | 94 | S DIR("?")="The Buffer entry's Insurance Company data may be edited or Return advances the display to the Group/Plan data.",DIR("??")="^D HELP^IBCNBUH,WAIT^IBCNBUH,INS^IBCNBCD("_IBBUFDA_","_IBINSDA_")" | 
|---|
|  | 95 | W ! S DIR(0)="FO",DIR("A")="Enter 'E' to edit buffer data or Return to continue" | 
|---|
|  | 96 | D ^DIR K DIR I Y'="",$D(DIRUT) G CMPQ | 
|---|
|  | 97 | I Y'="","EEee"[Y D INSHELP^IBCNBEE,INS^IBCNBEE(IBBUFDA) G CEINS | 
|---|
|  | 98 | ; | 
|---|
|  | 99 | CEGRP W @IOF | 
|---|
|  | 100 | I 'IBGRPDA W !,"No Insurance Group/Plan Selected for Comparison." | 
|---|
|  | 101 | I +IBGRPDA W !,?14,"Patient is "_$S(+IBPOLDA:"",1:"NOT ")_"a member of this Insurance Group/Plan",! | 
|---|
|  | 102 | W ! D GRP^IBCNBCD(IBBUFDA,IBGRPDA) | 
|---|
|  | 103 | S DIR("?")="The Buffer entry's Group/Plan data may be edited or Return advances the display to the Patient Policy data.",DIR("??")="^D HELP^IBCNBUH,WAIT^IBCNBUH,GRP^IBCNBCD("_IBBUFDA_","_IBGRPDA_")" | 
|---|
|  | 104 | W ! S DIR(0)="FO",DIR("A")="Enter 'E' to edit buffer data or Return to continue" | 
|---|
|  | 105 | D ^DIR K DIR I Y'="",$D(DIRUT) G CMPQ | 
|---|
|  | 106 | I Y'="","EEee"[Y D GRPHELP^IBCNBEE,GRP^IBCNBEE(IBBUFDA) G CEGRP | 
|---|
|  | 107 | ; | 
|---|
|  | 108 | CEPOL W @IOF | 
|---|
|  | 109 | I 'IBPOLDA W !,"No Patient Policy Selected for Comparison." | 
|---|
|  | 110 | W ! D POLICY^IBCNBCD(IBBUFDA,IBPOLDA) | 
|---|
|  | 111 | S DIR("?")="The Buffer entry's Patient Policy data may be edited or return to the screen display.",DIR("??")="^D HELP^IBCNBUH,WAIT^IBCNBUH,POLICY^IBCNBCD("_IBBUFDA_","_IBPOLDA_")" | 
|---|
|  | 112 | W ! S DIR(0)="FO",DIR("A")="Enter 'E' to edit buffer data or Return to continue" | 
|---|
|  | 113 | D ^DIR K DIR I Y'="",$D(DIRUT) G CMPQ | 
|---|
|  | 114 | I Y'="","EEee"[Y D POLHELP^IBCNBEE,POLICY^IBCNBEE(IBBUFDA) G CEPOL | 
|---|
|  | 115 | ; | 
|---|
|  | 116 | CMPQ D CLEAN^VALM10,INIT^IBCNBLP,HDR^IBCNBLP S VALMBCK="R" D UPDLN^IBCNBLL(IBBUFDA,"EDITED") | 
|---|
|  | 117 | Q | 
|---|
|  | 118 | ; | 
|---|
|  | 119 | VERIFY(IBBUFDA) ; verify a buffer entry | 
|---|
|  | 120 | ; | 
|---|
|  | 121 | N DIR,DIRUT,X,Y,IBX,IBY Q:'$G(IBBUFDA) | 
|---|
|  | 122 | D FULL^VALM1 S VALMBCK="R" | 
|---|
|  | 123 | W ! D DISPBUF^IBCNBU1(IBBUFDA) | 
|---|
|  | 124 | ; | 
|---|
|  | 125 | S IBX=$G(^IBA(355.33,IBBUFDA,0)),IBY="" I +$P(IBX,U,10) S IBY="Re-" W !!,"This entry already verified by ",$$EXPAND^IBTRE(355.33,.11,$P(IBX,U,11))," on ",$$FMTE^XLFDT($P(IBX,U,10)),"." | 
|---|
|  | 126 | ; | 
|---|
|  | 127 | S DIR("?")="Enter Yes if the coverage and information in this Buffer entry has been verified to be accurate." W !! | 
|---|
|  | 128 | S DIR(0)="YO",DIR("B")="N",DIR("A")=IBY_"Verify the coverage in this buffer entry" | 
|---|
|  | 129 | D ^DIR | 
|---|
|  | 130 | I Y=1 D | 
|---|
|  | 131 | . ; WCW - 04/11/2003 Clear out IIV Status when manually verified | 
|---|
|  | 132 | . D CLEAR^IBCNEUT4(IBBUFDA,.IIVERR,1) K IIVERR | 
|---|
|  | 133 | . K IBX S IBX(.1)="NOW",IBX(.11)=DUZ D EDITSTF^IBCNBES(IBBUFDA,.IBX) | 
|---|
|  | 134 | . D INIT^IBCNBLE,HDR^IBCNBLE S VALMBCK="R" D UPDLN^IBCNBLL(IBBUFDA,"EDITED") W "  Coverage Verified ..." H 2 | 
|---|
|  | 135 | ; | 
|---|
|  | 136 | Q | 
|---|
|  | 137 | ; | 
|---|
|  | 138 | REJECT(IBBUFDA,DIRUT) ; process a reject and then delete a buffer entry | 
|---|
|  | 139 | ; Output parameter DIRUT is optional and passed in by reference.  This | 
|---|
|  | 140 | ; variable will be defined if the user enters a leading up-arrow, | 
|---|
|  | 141 | ; times out, or enters a null response.  This is so the calling routine | 
|---|
|  | 142 | ; can detect if the user did something other than say Yes or No to | 
|---|
|  | 143 | ; this question. | 
|---|
|  | 144 | ; | 
|---|
|  | 145 | N DIR,X,Y,IBX Q:'$G(IBBUFDA) | 
|---|
|  | 146 | D FULL^VALM1 S VALMBCK="R" | 
|---|
|  | 147 | W ! D DISPBUF^IBCNBU1(IBBUFDA) | 
|---|
|  | 148 | W !!,"This action will delete all insurance and patient specific data from a buffer ",!,"entry without first saving that data to the insurance files, leaving a stub ",!,"entry for reporting purposes.",! | 
|---|
|  | 149 | ; | 
|---|
|  | 150 | S IBX=$G(^IBA(355.33,IBBUFDA,0)) I +$P(IBX,U,10) W !!,"This entry has been verified by ",$$EXPAND^IBTRE(355.33,.11,$P(IBX,U,11))," on ",$$FMTE^XLFDT($P(IBX,U,10)),".",!! | 
|---|
|  | 151 | ; | 
|---|
|  | 152 | S DIR("?")="Enter Yes to delete this buffer entry without saving any of it's data to the Insurance files." | 
|---|
|  | 153 | S DIR(0)="YO",DIR("B")="N",DIR("A")="Reject this buffer entry (delete without saving to Insurance files)" | 
|---|
|  | 154 | D ^DIR | 
|---|
|  | 155 | I $D(DIRUT) G REJX | 
|---|
|  | 156 | I Y=1 D REJECT^IBCNBAR(IBBUFDA) S VALMBCK="Q" D UPDLN^IBCNBLL(IBBUFDA,"REJECTED") | 
|---|
|  | 157 | REJX ; | 
|---|
|  | 158 | Q | 
|---|
|  | 159 | ; | 
|---|
|  | 160 | ACCEPT(IBBUFDA) ; process a buffer entry for acceptance | 
|---|
|  | 161 | ; | 
|---|
|  | 162 | Q:'$G(IBBUFDA) | 
|---|
|  | 163 | N IBDA,IBINSDA,IBGRPDA,IBPOLDA,IBACCEPT S IBACCEPT=0 | 
|---|
|  | 164 | ; | 
|---|
|  | 165 | D FULL^VALM1 | 
|---|
|  | 166 | ; | 
|---|
|  | 167 | S IBDA=$$SEL^IBCNBLA("IBCNBLPX") | 
|---|
|  | 168 | I $P(IBDA,U,4)'="",+$G(^IBA(355.33,+IBBUFDA,60))'=$P(IBDA,U,4) W !,"Buffer Patient doesn't match Policy Patient, can't continue." G ACCPTQ | 
|---|
|  | 169 | I +$P(IBDA,U,3),'$P(IBDA,U,2) W !!,"Error: the selected policy has no associated plan.  Can not continue." D WAIT^IBCNBUH G ACCPTQ | 
|---|
|  | 170 | ; | 
|---|
|  | 171 | S IBINSDA=+IBDA,IBGRPDA=+$P(IBDA,U,2),IBPOLDA=+$P(IBDA,U,3) | 
|---|
|  | 172 | S:'IBINSDA (IBGRPDA,IBPOLDA)=0 S:'IBGRPDA IBPOLDA=0 | 
|---|
|  | 173 | ; | 
|---|
|  | 174 | I 'IBINSDA,'$D(^XUSEC("IB INSURANCE COMPANY ADD",DUZ)) D  G ACCPTQ | 
|---|
|  | 175 | . W !!,"Sorry, but you do not have the required privileges to add",!,"new Insurance Companies." | 
|---|
|  | 176 | . D WAIT^IBCNBUH | 
|---|
|  | 177 | ; | 
|---|
|  | 178 | S IBACCEPT=$$ACCEPT^IBCNBAA(IBBUFDA,IBINSDA,IBGRPDA,IBPOLDA) | 
|---|
|  | 179 | ; | 
|---|
|  | 180 | ACCPTQ S VALMBCK="R" I +IBACCEPT S VALMBCK="Q" D UPDLN^IBCNBLL(IBBUFDA,"ACCEPTED") | 
|---|
|  | 181 | Q | 
|---|
|  | 182 | ; | 
|---|
|  | 183 | RESP(BUFF) ; List Response Report for Trace # associated with this entry | 
|---|
|  | 184 | ; BUFF = buffer IEN | 
|---|
|  | 185 | N NG,IBRSP,IBSTR,IBTRC,STOP,IBCNERTN,POP,IBCNESPC | 
|---|
|  | 186 | ; Reset to Full Screen Mode | 
|---|
|  | 187 | D FULL^VALM1 | 
|---|
|  | 188 | S NG=0 | 
|---|
|  | 189 | I $G(BUFF)="" S NG=1 | 
|---|
|  | 190 | I 'NG S IBRSP=$O(^IBCN(365,"AF",BUFF,"")) I IBRSP="" S NG=1 | 
|---|
|  | 191 | I 'NG S IBSTR=$G(^IBCN(365,IBRSP,0)),IBTRC=$P(IBSTR,U,9) I IBTRC="" S NG=1 | 
|---|
|  | 192 | I NG W !!,"This entry does not have an associated IIV response." D PAUSE^VALM1 G RESPX | 
|---|
|  | 193 | S STOP=0,IBCNERTN="IBCNERP1",IBCNESPC("TRCN")=IBTRC_U_IBRSP | 
|---|
|  | 194 | D R100^IBCNERP1 | 
|---|
|  | 195 | RESPX S VALMBCK="R" | 
|---|
|  | 196 | Q | 
|---|
|  | 197 | INPTTR(FILE,FLD,X) ; Does value X pass input transform for file, field? | 
|---|
|  | 198 | N XCUTE | 
|---|
|  | 199 | S XCUTE=$$GET1^DID(FILE,FLD,,"INPUT TRANSFORM") | 
|---|
|  | 200 | X XCUTE | 
|---|
|  | 201 | Q $D(X) | 
|---|