| 1 | RMPOPST0 ;EDS/JAM - HOME OXYGEN BILLING TRANSACTIONS/POSTING,Part 1 ;7/24/98 | 
|---|
| 2 | ;;3.0;PROSTHETICS;**29,44,47,55**;Feb 09, 1996 | 
|---|
| 3 | ; | 
|---|
| 4 | ;This subroutine is part of the billing module.  Patient records are | 
|---|
| 5 | ;sorted by fund control point (FCP) and then posted to a 1358 service | 
|---|
| 6 | ;order or Purchase Card order. It calls IFCAP modules to post | 
|---|
| 7 | ; transactions. | 
|---|
| 8 | Q | 
|---|
| 9 | ; | 
|---|
| 10 | POST ;main module to post billing transactions to IFCAP | 
|---|
| 11 | N SITE,RVDT,VDR,FIL K ^TMP($J) | 
|---|
| 12 | S FIL=665.72,SITE=RMPOXITE,RVDT=RMPODATE,VDR=RMPOVDR,QUIT=0 | 
|---|
| 13 | ; | 
|---|
| 14 | ; P55 see if user wants to post $0 amounts to 2319 or ignore them | 
|---|
| 15 | K DIR | 
|---|
| 16 | S RMPRPZAM=$$ANY2319() | 
|---|
| 17 | I RMPRPZAM="^" W !!,"Posting Cancelled..." D EXIT Q | 
|---|
| 18 | ; | 
|---|
| 19 | D BUILD | 
|---|
| 20 | ;I $O(IFCAP(""))="" W !!,"Nothing to Post..." Q | 
|---|
| 21 | I $O(^TMP($J,""))="" W !!,"Nothing to Post..." Q | 
|---|
| 22 | ; | 
|---|
| 23 | ;Give user last chance to cancell posting | 
|---|
| 24 | W ! | 
|---|
| 25 | K DIR S DIR(0)="Y",DIR("A")="Are you Sure you Want to Post Transactions" | 
|---|
| 26 | S DIR("B")="NO",DIR("?")="NO to Cancel Posting or YES to Proceed" | 
|---|
| 27 | W ! D ^DIR | 
|---|
| 28 | I Y'=1!($D(DIRUT)) W !!,"Posting Cancelled..." D EXIT Q | 
|---|
| 29 | K DIR | 
|---|
| 30 | D PROCESS | 
|---|
| 31 | ; | 
|---|
| 32 | EXIT D CLEANUP | 
|---|
| 33 | K ^TMP($J),VADM,A,Y,DIRUT,QUIT | 
|---|
| 34 | Q  ;EXIT | 
|---|
| 35 | ; | 
|---|
| 36 | ; p55 - prompt if user wants option to post $0 to 2319 | 
|---|
| 37 | ;     - returns | 
|---|
| 38 | ;       0 if user doesn't want 'the post to 2319' prompt | 
|---|
| 39 | ;       "^" on 'time out' or '^' | 
|---|
| 40 | ;       1 if user wants prompting | 
|---|
| 41 | ANY2319() ; | 
|---|
| 42 | N DIR,X,Y,RMPRPAM0 | 
|---|
| 43 | S RMPRPAM0=0 | 
|---|
| 44 | W ! | 
|---|
| 45 | S DIR(0)="Y" | 
|---|
| 46 | S DIR("A",1)="If any transactions with $0.00 amounts exist, do you want " | 
|---|
| 47 | S DIR("A")="to be able to post any of them to the 2319" | 
|---|
| 48 | S DIR("B")="NO" | 
|---|
| 49 | S DIR("?")="Enter 'Y' to be prompted to create a 2319 record at each $0 tranasction." | 
|---|
| 50 | S DIR("?",1)="If you don't want ANY $0 transactions to be posted to the 2319" | 
|---|
| 51 | S DIR("?",2)="then enter 'N'" | 
|---|
| 52 | D ^DIR | 
|---|
| 53 | S RMPRPAM0=$S(Y=1:1,Y=0:0,1:"^") | 
|---|
| 54 | W ! | 
|---|
| 55 | Q RMPRPAM0 | 
|---|
| 56 | ; | 
|---|
| 57 | BUILD ;Build array IFCAP with patient transactions to post | 
|---|
| 58 | ;Separate patient individual items by fund control point | 
|---|
| 59 | ;^TMP($J) array | 
|---|
| 60 | ;   ^TMP($J,FCP)=FCP total^Post flag^error message^purchase card total | 
|---|
| 61 | ;   ^TMP($J,FCP,DFN)=patient tot^pat last name_" "_4 digit SSN^post flag^ | 
|---|
| 62 | ;                  IFCAP error message^pat name | 
|---|
| 63 | ;  ^TMP($J,FCP,DFN,ITEM)=item tot | 
|---|
| 64 | N DFN,ITM,ITDT,ITNO,PATNAM,PATSSN,LNAM,PATFLG,ITSTR,FCP,LCK,ITOT | 
|---|
| 65 | S DFN="" F  S DFN=$O(DFNS(DFN)) Q:DFN=""  D | 
|---|
| 66 | . S PATFLG=^RMPO(FIL,SITE,1,RVDT,1,VDR,"V",DFN,0) | 
|---|
| 67 | . ;check patient accept flag | 
|---|
| 68 | . I $P(PATFLG,U,2)'="Y" Q | 
|---|
| 69 | . ;check patient post flag | 
|---|
| 70 | . I $P(PATFLG,U,3)="Y" Q | 
|---|
| 71 | . D DEM^VADPT S PATNAM=VADM(1),PATSSN=VA("BID") ;patient name & ssn | 
|---|
| 72 | . ;lock patient record | 
|---|
| 73 | . S LCK=$$PATLCK() I 'LCK W !,PATNAM," record locked by another user" Q | 
|---|
| 74 | . ;get items not posted for each patient | 
|---|
| 75 | . S ITM=0 | 
|---|
| 76 | . F  S ITM=$O(^RMPO(FIL,SITE,1,RVDT,1,VDR,"V",DFN,1,ITM)) Q:'ITM  D | 
|---|
| 77 | . . S ITDT=^RMPO(FIL,SITE,1,RVDT,1,VDR,"V",DFN,1,ITM,0) | 
|---|
| 78 | . . K R2319F | 
|---|
| 79 | . . ;check if item posted | 
|---|
| 80 | . . I $P(ITDT,U,10)="Y" Q | 
|---|
| 81 | . . S ITNO=$P(ITDT,U),FCP=$P(ITDT,U,3),ITOT=$P(ITDT,U,6) | 
|---|
| 82 | . .; I ITOT'>0 Q  ;no amount to post | 
|---|
| 83 | . . I ITOT'>0 D | 
|---|
| 84 | . . .S RMITEM=$P($G(^RMPR(661,ITNO,0)),U,1) | 
|---|
| 85 | . . .I RMPRPZAM D | 
|---|
| 86 | . . . .W !,"*** Patient: ",$E(PATNAM,1,7)," - Line Item: ",$P($G(^PRC(441,RMITEM,0)),U,2)," has a ZERO DOLLAR amount ***" | 
|---|
| 87 | . . . .S DIR("??")="This is a required field, you must enter Y/N" | 
|---|
| 88 | . . . .S DIR(0)="Y",DIR("A")="Would You like to Post to 2319 (Y/N) " | 
|---|
| 89 | . . . .F  D ^DIR I Y=1!(Y=0) S R2319F=Y K DIR Q | 
|---|
| 90 | . . .E  D | 
|---|
| 91 | . . . .S R2319F=0 | 
|---|
| 92 | . . .I $D(R2319F),(R2319F=0) D | 
|---|
| 93 | . . . .K DIE,DA,DR S DA(4)=RMPOXITE,DA(3)=RMPODATE,DA(2)=RMPOVDR | 
|---|
| 94 | . . . .S DA(1)=DFN,DIK="^RMPO(665.72,"_DA(4)_",1,"_DA(3)_",1,"_DA(2)_",""V"","_DA(1) | 
|---|
| 95 | . . . .S DIK=DIK_",1,",DA=ITM D ^DIK K DIK,DA | 
|---|
| 96 | . . . .S RNEXITEM=$O(^RMPO(665.72,RMPOXITE,1,RMPODATE,1,RMPOVDR,"V",DFN,1,0)) | 
|---|
| 97 | . . . .I 'RNEXITEM S DA(3)=RMPOXITE,DA(2)=RMPODATE,DA(1)=RMPOVDR,DA=DFN D | 
|---|
| 98 | . . . . .S DIK="^RMPO(665.72,"_DA(3)_",1,"_DA(2)_",1,"_DA(1)_",""V""," D ^DIK K DIK,DA | 
|---|
| 99 | . . I $D(R2319F),(R2319F=0) Q | 
|---|
| 100 | . . I FCP="" Q  ;no fund control point | 
|---|
| 101 | . . ;set ^TMP($J) array | 
|---|
| 102 | . . S ^TMP($J,FCP)=$S('$D(^TMP($J,FCP)):0.00,1:^TMP($J,FCP))+ITOT | 
|---|
| 103 | . . I $G(^TMP($J,FCP,DFN))="" D | 
|---|
| 104 | . . . S LNAM=$E($P(PATNAM,",")_"       ",1,7) ;pad/truncate last name | 
|---|
| 105 | . . . S ^TMP($J,FCP,DFN)="^"_LNAM_" "_PATSSN_"^^^"_$E(PATNAM,1,18) | 
|---|
| 106 | . . S $P(^TMP($J,FCP,DFN),U)=+^TMP($J,FCP,DFN)+ITOT,^TMP($J,FCP,DFN,ITM)=ITOT | 
|---|
| 107 | . D UNLKPAT | 
|---|
| 108 | Q  ;BUILD | 
|---|
| 109 | ; | 
|---|
| 110 | PROCESS ;process FCP data - ask for method of payment | 
|---|
| 111 | N FCP,PAYINF,FCPTOT,IEN442,SRVORD,PCTOT,IENFCP,LCK | 
|---|
| 112 | S FCP="" F  S FCP=$O(^TMP($J,FCP)) Q:FCP=""  D  I QUIT Q | 
|---|
| 113 | . ;PAYINF=payment type^IEN of file 442^service order number^purchase | 
|---|
| 114 | . ;card total^IEN of fund control point transaction | 
|---|
| 115 | . S FCPTOT=+^TMP($J,FCP) W !!,"Fund Control Point: ",FCP | 
|---|
| 116 | . S PAYINF=$$FCP^RMPOBILU(FCP) | 
|---|
| 117 | . I PAYINF="" S $P(^TMP($J,FCP),U,3)="Posting aborted" | 
|---|
| 118 | . Q:QUIT!(PAYINF="")  I PAYINF=-1 D  Q | 
|---|
| 119 | . . S $P(^TMP($J,FCP),U,2)=0,$P(^TMP($J,FCP),U,3)="Payment type not given" | 
|---|
| 120 | . . ;W "  ",$P^TMP($J,FCP),U,3) | 
|---|
| 121 | . S IEN442=$P(PAYINF,U,2),SRVORD=$P(PAYINF,U,3) | 
|---|
| 122 | . S PCTOT=$P(PAYINF,U,4),IENFCP=$P(PAYINF,U,5) | 
|---|
| 123 | . ;W !,"Service Order Number: ",SRVORD | 
|---|
| 124 | . ;check lock on FCP | 
|---|
| 125 | . S LCK=$$FCPLCK() I 'LCK D  Q | 
|---|
| 126 | . . S $P(^TMP($J,FCP),U,2)=0,$P(^TMP($J,FCP),U,3)="Locked by another user" | 
|---|
| 127 | . . W "  ",$P(^TMP($J,FCP),U,3) | 
|---|
| 128 | . D IFCAP^RMPOPST1  ;process payment to IFCAP | 
|---|
| 129 | . D UNLKFCP  ;unlock FCP level | 
|---|
| 130 | Q  ;PROCESS | 
|---|
| 131 | ; | 
|---|
| 132 | PATLCK() ;Lock patient level in ^RMPO(665.72 | 
|---|
| 133 | L +^RMPO(FIL,SITE,1,RVDT,1,VDR,"V",DFN,0):5 | 
|---|
| 134 | Q $T   ;PATLCK | 
|---|
| 135 | ; | 
|---|
| 136 | FCPLCK() ;Lock fund control level in ^RPO(665.72 | 
|---|
| 137 | L +^RMPO(FIL,SITE,1,RVDT,2,IENFCP,0):5 | 
|---|
| 138 | Q $T  ;FCPLCK | 
|---|
| 139 | ; | 
|---|
| 140 | UNLKPAT ;Unlock patient level in ^RMPO(665.72 | 
|---|
| 141 | L -^RMPO(FIL,SITE,1,RVDT,1,VDR,"V",DFN,0) | 
|---|
| 142 | Q  ;UNLKPAT | 
|---|
| 143 | ; | 
|---|
| 144 | UNLKFCP ;Unlock fund contrl point level in ^RMPO(665.72 | 
|---|
| 145 | L -^RMPO(FIL,SITE,1,RVDT,2,IENFCP,0) | 
|---|
| 146 | Q  ;UNLKFCP | 
|---|
| 147 | ; | 
|---|
| 148 | CLEANUP ;Display post messages for FCP | 
|---|
| 149 | ;Call line tag to unlock ^RMPO at patient level | 
|---|
| 150 | N DFN,UNLCK,FLG | 
|---|
| 151 | S FCP="",FLG=1 | 
|---|
| 152 | F  S FCP=$O(^TMP($J,FCP)) Q:FCP=""  D | 
|---|
| 153 | . I '$P(^TMP($J,FCP),U,2) D | 
|---|
| 154 | . . I FLG W !!,"FCP Not Posted",?40,"Message" D | 
|---|
| 155 | . . . W !,"---------------",?40,"-------" | 
|---|
| 156 | . . W !,FCP,?40,$P(^TMP($J,FCP),U,3) S FLG=0 | 
|---|
| 157 | . S DFN="" F DFN=$O(^TMP($J,FCP,DFN)) Q:DFN=""  D | 
|---|
| 158 | . . I '$D(UNLCK(DFN)) D UNLKPAT S UNLCK(DFN)="" | 
|---|
| 159 | W !! I FLG W "All Fund Control Points posted successfully" | 
|---|
| 160 | K DIR S DIR(0)="FO",DIR("A")="Press any Key to Continue" D ^DIR | 
|---|
| 161 | Q  ;CLEANUP | 
|---|