| [623] | 1 | IBATLM1B ;LL/ELZ - TRANSFER PRICING TRANSACTION LIST MENU ; 15-SEP-1998 | 
|---|
|  | 2 | ;;2.0;INTEGRATED BILLING;**115,261**;21-MAR-94 | 
|---|
|  | 3 | ;;Per VHA Directive 10-93-142, this routine should not be modified. | 
|---|
|  | 4 | ; | 
|---|
|  | 5 | CF ; -- change facility from patient level | 
|---|
|  | 6 | D LMOPT^IBATUTL,CFP^IBATLM0A(DFN),HDR^IBATLM1 | 
|---|
|  | 7 | Q | 
|---|
|  | 8 | CS ; -- change status of patient from patient level | 
|---|
|  | 9 | D LMOPT^IBATUTL,CSP^IBATLM0A(DFN),HDR^IBATLM1 | 
|---|
|  | 10 | Q | 
|---|
|  | 11 | CT ; -- cancel a transaction | 
|---|
|  | 12 | N IBVAL,DIE,DA,DR,DTOUT,% | 
|---|
|  | 13 | D LMOPT^IBATUTL,EN^VALM2($G(XQORNOD(0))) | 
|---|
|  | 14 | S (DA,IBVAL)=0,IBVAL=$O(VALMY(IBVAL)) Q:'IBVAL | 
|---|
|  | 15 | S DA=$O(@VALMAR@("INDEX",IBVAL,DA)) | 
|---|
|  | 16 | I $P(^IBAT(351.61,DA,0),U,5)="X" W !!,"Transaction already cancelled!" D H Q | 
|---|
|  | 17 | W !!,"Are you sure you want to cancel this transaction" | 
|---|
|  | 18 | S %=2 D YN^DICN Q:%'=1 | 
|---|
|  | 19 | D CANC^IBATFILE(DA),ARRAY^IBATLM1A(VALMAR) | 
|---|
|  | 20 | Q | 
|---|
|  | 21 | CD ; -- change the current date range for transactions displayed | 
|---|
|  | 22 | N IBSAVE S IBSAVE=IBBDT_"^"_IBEDT | 
|---|
|  | 23 | D LMOPT^IBATUTL | 
|---|
|  | 24 | I $$SLDR^IBATUTL S IBBDT=$P(IBSAVE,"^"),IBEDT=$P(IBSAVE,"^",2) | 
|---|
|  | 25 | D ARRAY^IBATLM1A(VALMAR),HDR^IBATLM1 | 
|---|
|  | 26 | Q | 
|---|
|  | 27 | CP ; -- change the currently selected patient | 
|---|
|  | 28 | N IBDFN | 
|---|
|  | 29 | D LMOPT^IBATUTL | 
|---|
|  | 30 | S IBDFN=$$SLPT^IBATUTL I 'IBDFN Q | 
|---|
|  | 31 | I $$SLDR^IBATUTL Q | 
|---|
|  | 32 | S DFN=IBDFN K ^TMP("VALM DATA",$J),^TMP("VALMAR",$J) | 
|---|
|  | 33 | D HDR^IBATLM1,ARRAY^IBATLM1A(VALMAR) | 
|---|
|  | 34 | Q | 
|---|
|  | 35 | AT ; -- add a transaction | 
|---|
|  | 36 | N X,Y,DTOUT,DUOUT,DIRUT,DIROUT | 
|---|
|  | 37 | D LMOPT^IBATUTL | 
|---|
|  | 38 | S DIR(0)="SMBA^I:Inpatient;O:Outpatient;P:Prescription;R:Prosthetic" | 
|---|
|  | 39 | S DIR("A")="Select type of Transaction to add: " D ^DIR Q:$D(DIRUT) | 
|---|
|  | 40 | D @Y K ^TMP("VALM DATA",$J),^TMP("VALMAR",$J) | 
|---|
|  | 41 | D HDR^IBATLM1,ARRAY^IBATLM1A(VALMAR) | 
|---|
|  | 42 | Q | 
|---|
|  | 43 | I ; -- select an inpatient stay and add | 
|---|
|  | 44 | N IBXA,IBADM,DIRUT,IBIEN,VAIP,IBCHARGE,IBPPF,IBRES | 
|---|
|  | 45 | S IBXA=7,IBADM=+$$ADSEL^IBECEA31(DFN) Q:IBADM<0 | 
|---|
|  | 46 | I IBADM=0 W !!,"Patient has no admissions on file." D H Q | 
|---|
|  | 47 | D DUP(IBADM_";DGPM(",.DIRUT) | 
|---|
|  | 48 | I $D(DIRUT) D H Q | 
|---|
|  | 49 | S VAIP("E")=IBADM D IN5^VADPT S IBPPF=$$PPF^IBATUTL(DFN) | 
|---|
|  | 50 | S IBIEN=$$ADM^IBATFILE(DFN,+VAIP(13,1),IBPPF,(+IBADM)_";DGPM(") | 
|---|
|  | 51 | I 'IBIEN D M(,$P(IBIEN,"^",2)) Q | 
|---|
|  | 52 | I '$G(VAIP(17)) D M(IBIEN,"missing discharge information") Q | 
|---|
|  | 53 | S IBRES=$$DIS^IBATFILE(IBIEN,+VAIP(17,1),VAIP(12),VAIP(17)) | 
|---|
|  | 54 | I 'IBRES D M(IBIEN,$P(IBRES,"^",2)) Q | 
|---|
|  | 55 | S IBFINDRT=$$FINDRT^IBATEI(VAIP(12),VAIP(13),DFN) | 
|---|
|  | 56 | I '+IBFINDRT D M(IBIEN,"Cannot price transaction") Q | 
|---|
|  | 57 | I $P(IBFINDRT,"^",3)="B" S IBRES=$$INPT^IBATFILE(IBIEN,0,0,$P(IBFINDRT,"^",4),0,$P(IBFINDRT,"^",4),$P(IBFINDRT,"^",7)) | 
|---|
|  | 58 | E  S IBRES=$$INPT^IBATFILE(IBIEN,$P(IBFINDRT,"^",3),$P(IBFINDRT,"^",2),$P(IBFINDRT,"^",4),$P(IBFINDRT,"^",5),$P(IBFINDRT,"^",6),$P(IBFINDRT,"^",7)) | 
|---|
|  | 59 | I 'IBRES D M(IBIEN,"Error in filling pricing information") Q | 
|---|
|  | 60 | D M(IBIEN) | 
|---|
|  | 61 | Q | 
|---|
|  | 62 | M(X,Y) ; Prints message and hangs | 
|---|
|  | 63 | N IBSITE S IBSITE=$$SITE^IBATUTL | 
|---|
|  | 64 | I $D(X) W !,"Transaction #",IBSITE,X," Added" | 
|---|
|  | 65 | I $D(Y) W !,"Cannot complete, ",Y | 
|---|
|  | 66 | D H | 
|---|
|  | 67 | Q | 
|---|
|  | 68 | O ; -- select an outpatient stay | 
|---|
|  | 69 | N X,Y,DIR,DTOUT,DUOUT,DIRUT,DIROUT,IBDATA,IBX,IBC,CPTLIST,IBIEN,IBFAC | 
|---|
|  | 70 | K ^TMP("IBAT",$J) | 
|---|
|  | 71 | S DIR(0)="D^::AEPX",DIR("A")="Visit Date" D ^DIR Q:$D(DIRUT) | 
|---|
|  | 72 | S IBDATA("DFN")=DFN,IBDATA("BDT")=Y,IBDATA("EDT")=Y+.99999 | 
|---|
|  | 73 | ; | 
|---|
|  | 74 | ; scan for the appointments and set up tmp global | 
|---|
|  | 75 | ; screen to eliminate children and inpatient appointments | 
|---|
|  | 76 | D SCAN^IBSDU("PATIENT/DATE",.IBDATA,"I '$P(Y0,""^"",6),$P(Y0,""^"",12)'=8","S ^TMP(""IBAT"",$J,Y)=Y0","") | 
|---|
|  | 77 | ; | 
|---|
|  | 78 | I '$D(^TMP("IBAT",$J)) W !!,"No appointments exist for the date!" D H Q | 
|---|
|  | 79 | W !,?10,"Choose which Visit:" S IBX=0 | 
|---|
|  | 80 | F IBC=1:1 S IBX=$O(^TMP("IBAT",$J,IBX)) Q:IBX<1  S IBDATA=^(IBX) D | 
|---|
|  | 81 | . W !,?4,IBC,?10,$$FMTE^XLFDT($P(IBDATA,"^"),"1P") | 
|---|
|  | 82 | . W ?35,$$EX^IBATUTL(409.68,.04,$P(IBDATA,"^",4)) | 
|---|
|  | 83 | . W ?55,$$EX^IBATUTL(409.68,.12,$P(IBDATA,"^",12)) | 
|---|
|  | 84 | S DIR(0)="N^1:"_(IBC-1),DIR("A")="Select" D ^DIR Q:$D(DIRUT) | 
|---|
|  | 85 | S IBX=0 F IBC=1:1:Y S IBX=$O(^TMP("IBAT",$J,IBX)) | 
|---|
|  | 86 | ; check for duplicates | 
|---|
|  | 87 | D DUP(IBX_";SCE(",.DIRUT) I $D(DIRUT) D H Q | 
|---|
|  | 88 | ; setup visit info | 
|---|
|  | 89 | S IBX(0)=^TMP("IBAT",$J,IBX) | 
|---|
|  | 90 | D GETCPT^SDOE(IBX,"CPTLIST") ;GETDX^SDOE(IBX,"DXLIST") | 
|---|
|  | 91 | S IBFAC=$$PPF^IBATUTL(DFN) | 
|---|
|  | 92 | ; ok now lets format cpts and price | 
|---|
|  | 93 | S IBIEN=0 F  S IBIEN=$O(CPTLIST(IBIEN)) Q:IBIEN<1  D | 
|---|
|  | 94 | . N IBCPT,IBQTY,IBPRICE | 
|---|
|  | 95 | . S IBCPT=$P(CPTLIST(IBIEN),"^"),IBQTY=$P(CPTLIST(IBIEN),"^",16) | 
|---|
|  | 96 | . S IBPRICE=$$OPT^IBATCM(IBCPT,$P(IBX(0),"^"),IBFAC) | 
|---|
|  | 97 | . S IBIEN(IBCPT)=IBQTY_"^"_$S(IBPRICE:$P(IBPRICE,"^",4),1:0) | 
|---|
|  | 98 | S IBIEN=$$OUT^IBATFILE(DFN,$P(IBX(0),"^"),IBFAC,IBX_";SCE(",.IBIEN) | 
|---|
|  | 99 | W !!,"Transaction Number ",$P(^IBAT(351.61,IBIEN,0),"^")," Added!" D H | 
|---|
|  | 100 | K ^TMP("IBAT",$J) | 
|---|
|  | 101 | Q | 
|---|
|  | 102 | P ; -- select an rx | 
|---|
|  | 103 | N IBRX,IBPSRX,IBOUT,IBCOUNT,DIRUT,DIR,IBP,IBNUM,IBSITE,IBQUIT,IBBDT,IBEDT | 
|---|
|  | 104 | S (IBCOUNT,IBOUT)=0 | 
|---|
|  | 105 | Q:$$SLDR^IBATUTL | 
|---|
|  | 106 | D RX^IBATRX(DFN,IBBDT,IBEDT,.IBRX) | 
|---|
|  | 107 | I '$D(IBRX) W !!,"No Rx's on file for date range selected." D H Q | 
|---|
|  | 108 | W @IOF,!,"Prescriptions Issued:",! | 
|---|
|  | 109 | S IBPSRX=0 F  S IBPSRX=$O(IBRX(IBPSRX)) Q:IBPSRX=""!(IBOUT)  D | 
|---|
|  | 110 | . S IBDT=0 F  S IBDT=$O(IBRX(IBPSRX,IBDT)) Q:IBDT<1!(IBOUT)  D | 
|---|
|  | 111 | .. S IBDAT=IBRX(IBPSRX,IBDT),IBCOUNT=IBCOUNT+1 | 
|---|
|  | 112 | .. W !,IBCOUNT,?4,$$FMTE^XLFDT(IBDT,"5D"),?18,$P(IBDAT,"^") | 
|---|
|  | 113 | .. W "(",$P(IBDAT,"^",2),")",?35,$E($P(IBDAT,"^",4),1,27) | 
|---|
|  | 114 | .. W ?65,$J($FN($P(IBDAT,"^",5)*$P(IBDAT,"^",6),",",2),12) | 
|---|
|  | 115 | .. ;I $Y+4>IOSL D H X:'$D(DIRUT) "W @IOF,!" I $D(DIRUT) S IBOUT=1 Q | 
|---|
|  | 116 | .. S IBNUM(IBCOUNT)=IBPSRX_"^"_IBDT | 
|---|
|  | 117 | W ! K DIRUT S DIR(0)="L^1:"_IBCOUNT,DIR("A")="Which Prescriptions" | 
|---|
|  | 118 | D ^DIR Q:$D(DIRUT)  W !!,"Selected number(s): "_Y S IBNUM=Y | 
|---|
|  | 119 | W !,"Ok to add: " S %=1 D YN^DICN I %'=1 D H Q | 
|---|
|  | 120 | S IBFAC=$$PPF^IBATUTL(DFN),IBSITE=$$SITE^IBATUTL | 
|---|
|  | 121 | F IBP=1:1 S IBRX=$P(IBNUM,",",IBP) Q:'IBRX  D | 
|---|
|  | 122 | . S IBRX(0)=IBRX($P(IBNUM(IBRX),"^"),$P(IBNUM(IBRX),"^",2)) | 
|---|
|  | 123 | . D DUP($P(IBRX(0),"^")_";PSRX(;"_$P(IBRX(0),"^",2),.IBQUIT) | 
|---|
|  | 124 | . I $G(IBQUIT) K IBQUIT Q | 
|---|
|  | 125 | . W !!,"Adding Transaction number ",IBSITE | 
|---|
|  | 126 | . W $$RX^IBATFILE(DFN,$P(IBNUM(IBRX),"^",2),IBFAC,$P(IBRX(0),"^")_";PSRX(;"_$P(IBRX(0),"^",2),$P(IBRX(0),"^",3),$P(IBRX(0),"^",5),$P(IBRX(0),"^",6)) | 
|---|
|  | 127 | . W "!" H 1 | 
|---|
|  | 128 | D H | 
|---|
|  | 129 | Q | 
|---|
|  | 130 | R ; -- select an prosthetic | 
|---|
|  | 131 | N IBBDT,IBEDT,IBCOUNT,IBOUT,IBDA,IBDATA,IBP,IBC,IBCOUNT,%,DIRUT | 
|---|
|  | 132 | ; | 
|---|
|  | 133 | S (IBCOUNT,IBOUT)=0 | 
|---|
|  | 134 | Q:$$SLDR^IBATUTL | 
|---|
|  | 135 | ; | 
|---|
|  | 136 | ; look up prosthetic devices issued | 
|---|
|  | 137 | S IBDA="" F  S IBDA=$O(^RMPR(660,"C",DFN,IBDA)) Q:'IBDA  D | 
|---|
|  | 138 | . ; | 
|---|
|  | 139 | . ; valid data | 
|---|
|  | 140 | . S IBDATA=$G(^RMPR(660,+IBDA,0)) Q:IBDATA="" | 
|---|
|  | 141 | . ; | 
|---|
|  | 142 | . ; valid date range | 
|---|
|  | 143 | . I $P(IBDATA,"^",12)<IBBDT!($P(IBDATA,"^",12)>IBEDT) Q | 
|---|
|  | 144 | . ; | 
|---|
|  | 145 | . ; checks from RMPRBIL copied 4/7/2000 with mod for AM node patients | 
|---|
|  | 146 | . I $S('$D(^RMPR(660,IBDA,"AM")):1,$P(IBDATA,"^",9)="":1,$P(IBDATA,"^",12)="":1,$P(IBDATA,"^",6)="":1,$P(IBDATA,"^",14)="V":1,$P(IBDATA,"^",15)="*":1,1:0) Q | 
|---|
|  | 147 | . ; | 
|---|
|  | 148 | . ; set array | 
|---|
|  | 149 | . S IBCOUNT=IBCOUNT+1,IBP(IBCOUNT,IBDA)=IBDATA | 
|---|
|  | 150 | ; | 
|---|
|  | 151 | I 'IBCOUNT W !!,"No Prosthetic Devices on file for date range selected." D H Q | 
|---|
|  | 152 | ; | 
|---|
|  | 153 | W @IOF,!,"Prosthetic Devices Issued:",! | 
|---|
|  | 154 | F IBC=1:1:IBCOUNT Q:IBOUT  D | 
|---|
|  | 155 | . S IBDATA=IBP(IBC,$O(IBP(IBC,0))) | 
|---|
|  | 156 | . W !,IBC,?4,$$FMTE^XLFDT($P(IBDATA,"^",12),"5D") | 
|---|
|  | 157 | . W ?20,$$EX^IBATUTL(660,4,$P(IBDATA,"^",6)),?40,"(" | 
|---|
|  | 158 | . W $$EX^IBATUTL(660,62,$P(^RMPR(660,$O(IBP(IBC,0)),"AM"),"^",3)),")" | 
|---|
|  | 159 | . W ?65,$J($FN($P(IBDATA,"^",16),",",2),12) | 
|---|
|  | 160 | ; | 
|---|
|  | 161 | W ! K DIRUT S DIR(0)="N^1:"_IBCOUNT_":0" | 
|---|
|  | 162 | S DIR("A")="Which Prosthetic Device" D ^DIR Q:$D(DIRUT)  S IBC=+Y | 
|---|
|  | 163 | W !,"Ok to add: " S %=1 D YN^DICN I %'=1 D H Q | 
|---|
|  | 164 | S IBDA=$O(IBP(IBC,0)),IBDATA=IBP(IBC,IBDA) | 
|---|
|  | 165 | D DUP(IBDA_";RMPR(660,",.DIRUT) | 
|---|
|  | 166 | I $D(DIRUT) D H Q | 
|---|
|  | 167 | W !!,"Adding Transaction number ",$$SITE^IBATUTL | 
|---|
|  | 168 | W $$RMPR^IBATFILE(DFN,$P(IBDATA,"^",12),$$PPF^IBATUTL(DFN),(IBDA_";RMPR(660,"),$P(IBDATA,"^",6),$P(IBDATA,"^",16)) | 
|---|
|  | 169 | W "!" H 1 | 
|---|
|  | 170 | D H | 
|---|
|  | 171 | Q | 
|---|
|  | 172 | H ; -- page reader | 
|---|
|  | 173 | N DIR,X,Y,DTOUT,DUOUT,DIROUT | 
|---|
|  | 174 | W !! S DIR(0)="E" D ^DIR | 
|---|
|  | 175 | Q | 
|---|
|  | 176 | DUP(IBSOURCE,IBQUIT) ; -- checks for dups that are not cancelled | 
|---|
|  | 177 | N IBT S IBT=0 | 
|---|
|  | 178 | F  S IBT=$O(^IBAT(351.61,"AD",IBSOURCE,IBT)) Q:IBT<1!($D(IBQUIT))  D | 
|---|
|  | 179 | . Q:$P(^IBAT(351.61,IBT,0),"^",5)="X" | 
|---|
|  | 180 | . W !,$S(IBSOURCE["SCE(":"Visit",IBSOURCE["DGPM(":"Admission",IBSOURCE["RMPR(":"Prosthetic",1:"Prescription")," exists already!" S IBQUIT=1 | 
|---|
|  | 181 | Q | 
|---|