| 1 | RMPOPST1 ;EDS/JAM,RVD - HOME OXYGEN BILLING TRANSACTIONS/POSTING,Part 2 ;7/24/98 | 
|---|
| 2 | ;;3.0;PROSTHETICS;**29,44,55**;Feb 09, 1996 | 
|---|
| 3 | ; RVD #55  - corrected the typo (missing '^' on TMP global). | 
|---|
| 4 | ; | 
|---|
| 5 | ;Processing of 1358 and Purchase Cards to IFCAP | 
|---|
| 6 | Q | 
|---|
| 7 | IFCAP ;process payment type - Purchase Card or 1358 | 
|---|
| 8 | D @$S($P(PAYINF,U)="P":"PRHCARD",1:"1358") | 
|---|
| 9 | I $P(^TMP($J,FCP),U,2) D | 
|---|
| 10 | . W !!,FCP,"   ...Posted" D FCPUPD ;update global ^RMPO(665.72 | 
|---|
| 11 | K A | 
|---|
| 12 | Q  ;IFCAP | 
|---|
| 13 | ; | 
|---|
| 14 | PRHCARD ;Processing IFCAP Purchase Card | 
|---|
| 15 | N DFN,PRCA,PRCB,PRCC,INDVITM,ITMSTR,RMPOA,X,CNT,CURDT | 
|---|
| 16 | S PRCA=PCTOT+FCPTOT,PRCB=IEN442,PRCC="RMPOA" | 
|---|
| 17 | ;Store individual patient in array RMPOA for posting | 
|---|
| 18 | S DFN=""  F CNT=1:1 S DFN=$O(^TMP($J,FCP,DFN)) Q:DFN=""  D | 
|---|
| 19 | . S ITMSTR=^TMP($J,FCP,DFN) | 
|---|
| 20 | . S RMPOA(CNT)=$TR($P(ITMSTR,U,5),","," ")_"  "_$P(ITMSTR,U) ;pat name & total | 
|---|
| 21 | D EDITIC^PRCH7D(PRCA,PRCB,PRCC) | 
|---|
| 22 | I X="^" D  Q  ;PRHCARD | 
|---|
| 23 | . S $P(^TMP($J,FCP),U,2)=0,$P(^TMP($J,FCP),U,3)="Posting of PC aborted" | 
|---|
| 24 | . ;W "  ",$P(^TMP($J,FCP),U,3) | 
|---|
| 25 | S $P(^TMP($J,FCP),U,2)=1,$P(^TMP($J,FCP),U,4)=PRCA | 
|---|
| 26 | D NOW^%DTC S CURDT=% | 
|---|
| 27 | ;Update file 660 and ^RMPO(665.72 | 
|---|
| 28 | S DFN="" F  S DFN=$O(^TMP($J,FCP,DFN)) Q:DFN=""  D | 
|---|
| 29 | . S $P(^TMP($J,FCP,DFN),U,3)=1 | 
|---|
| 30 | . D GBLUPD | 
|---|
| 31 | Q  ;PRHCARD | 
|---|
| 32 | ; | 
|---|
| 33 | 1358 ;processing IFCAP 1358 | 
|---|
| 34 | N DFN,IEN424,BAL,CURDT,Y,PATOT,PATINF,PSTFLG,PRCSX | 
|---|
| 35 | ;Check balance on 1358 | 
|---|
| 36 | S BAL=$$BAL(IEN442) I BAL<FCPTOT D  Q | 
|---|
| 37 | . S $P(^TMP($J,FCP),U,2)=0,$P(^TMP($J,FCP),U,3)="Insufficient balance" | 
|---|
| 38 | . ;W "  ",$P(^TMP($J,FCP),U,3) | 
|---|
| 39 | S PSTFLG=0,DFN="" | 
|---|
| 40 | F  S DFN=$O(^TMP($J,FCP,DFN)) Q:DFN=""  D | 
|---|
| 41 | . S PATOT=+^TMP($J,FCP,DFN),PATINF=$P(^TMP($J,FCP,DFN),U,2) | 
|---|
| 42 | . ;authorize amount to be posted | 
|---|
| 43 | . D NOW^%DTC S CURDT=% | 
|---|
| 44 | . S X=SRVORD_"^"_CURDT_"^"_PATOT_"^^"_PATINF,Y=$$AUTH(X) | 
|---|
| 45 | . I '+Y D  Q | 
|---|
| 46 | . . S $P(^TMP($J,FCP,DFN),U,3)=0,$P(^TMP($J,FCP,DFN),U,4)=$P(Y,U)_$P(Y,U,2) | 
|---|
| 47 | . . W !!,"Authorization failed for: ",PATINF,! | 
|---|
| 48 | . . W "IFCAP reason: ",$S($P(Y,U,2)'="":$P(Y,U,2),1:$P(Y,U)) | 
|---|
| 49 | . S IEN424=$P(Y,U,2) | 
|---|
| 50 | . ;post patient total to authorized IEN 424 and closeout posting | 
|---|
| 51 | . S PRCSX=IEN424_U_CURDT_U_PATOT_U_"HOME OXYGEN COMPLETED" | 
|---|
| 52 | . S Y=$$COMPST(PRCSX) | 
|---|
| 53 | . I '+Y D  Q | 
|---|
| 54 | . . S $P(^TMP($J,FCP,DFN),U,3)=0,$P(^TMP($J,FCP,DFN),U,4)=$P(Y,U,2) | 
|---|
| 55 | . . W !!,"Post Completion failed for: "_PATINF,! | 
|---|
| 56 | . . W "IFCAP reason: "_$P(Y,U,2) | 
|---|
| 57 | . . W "Patient IEN(424): ",IEN424 | 
|---|
| 58 | . S $P(^TMP($J,FCP,DFN),U,3)=1,PSTFLG=1 | 
|---|
| 59 | . ;update file 660 for form 2319 and file ^RMPO(665.72 | 
|---|
| 60 | . D GBLUPD | 
|---|
| 61 | S $P(^TMP($J,FCP),U,2)=PSTFLG | 
|---|
| 62 | Q  ;1358 | 
|---|
| 63 | ; | 
|---|
| 64 | BAL(A) ;check balance on 1358 Service Order before posting | 
|---|
| 65 | N TOT442 | 
|---|
| 66 | S TOT442=$$BAL^PRCH58(A) | 
|---|
| 67 | Q +TOT442-$P(TOT442,U,3)  ;BAL | 
|---|
| 68 | ; | 
|---|
| 69 | AUTH(X) ;create one authorization per patient to be posted | 
|---|
| 70 | ;return IEN of 424 if successful in Y | 
|---|
| 71 | N PRCS | 
|---|
| 72 | S PRCS("TYPE")="COUNTER" | 
|---|
| 73 | D EN2^PRCS58 | 
|---|
| 74 | Q Y   ;AUTH | 
|---|
| 75 | ; | 
|---|
| 76 | COMPST(PRCSX) ;Post patient transactions as complete to IEN of file 424 | 
|---|
| 77 | D ^PRCS58CC | 
|---|
| 78 | Q Y  ;COMPST | 
|---|
| 79 | ; | 
|---|
| 80 | GBLUPD ;Update file ^RMPO(665.72 and 660 | 
|---|
| 81 | ;update file 660 for form 2319 | 
|---|
| 82 | D F660^RMPOPST3 | 
|---|
| 83 | ;update ^RMPO(665.72 with post flag | 
|---|
| 84 | D ITMUPD | 
|---|
| 85 | Q | 
|---|
| 86 | ; | 
|---|
| 87 | ITMUPD ;Update global ^RMPO(665.72 with post flag for individual item | 
|---|
| 88 | N ITM,DASTR | 
|---|
| 89 | ;check if FCP was posted for patient | 
|---|
| 90 | I '$P(^TMP($J,FCP,DFN),U,3) Q | 
|---|
| 91 | K DIE,DA,DR | 
|---|
| 92 | S DA(2)=VDR,DA(3)=RVDT,DA(4)=SITE | 
|---|
| 93 | S DASTR=DA(4)_",1,"_DA(3)_",1,"_DA(2)_",""V""," | 
|---|
| 94 | S ITM="" F  S ITM=$O(^TMP($J,FCP,DFN,ITM)) Q:ITM=""  D | 
|---|
| 95 | . S DA(1)=DFN,DIE="^RMPO(665.72,"_DASTR_DA(1)_",1,",DR="8///Y",DA=ITM | 
|---|
| 96 | . D ^DIE | 
|---|
| 97 | D PATUPD | 
|---|
| 98 | Q  ;ITMUPD | 
|---|
| 99 | ; | 
|---|
| 100 | PATUPD ;Update global ^RMPO(665.72 with post flag for patient | 
|---|
| 101 | N FLG,IT,X,PFLG,ISTR,DASTR | 
|---|
| 102 | K DIE,DA,DR | 
|---|
| 103 | S DA(1)=DFN,DA(2)=VDR,DA(3)=RVDT,DA(4)=SITE | 
|---|
| 104 | S IT=0,X=0,FLG="Y" | 
|---|
| 105 | F  S IT=$O(^RMPO(FIL,SITE,1,RVDT,1,VDR,"V",DFN,1,IT)) Q:'IT  D  I X Q | 
|---|
| 106 | . S PFLG=$P(^RMPO(FIL,SITE,1,RVDT,1,VDR,"V",DFN,1,IT,0),U,10) | 
|---|
| 107 | . S RP660=$P(^RMPO(FIL,SITE,1,RVDT,1,VDR,"V",DFN,1,IT,0),U,16) | 
|---|
| 108 | . I '$G(RP660) S FLG="" | 
|---|
| 109 | . I PFLG=""!(PFLG="N") D  Q | 
|---|
| 110 | . . I PFLG="" D | 
|---|
| 111 | . . . S DASTR=DA(4)_",1,"_DA(3)_",1,"_DA(2)_",""V"","_DA(1)_",1," | 
|---|
| 112 | . . . S DIE="^RMPO(665.72,"_DASTR,DR="8///N",DA=IT D ^DIE | 
|---|
| 113 | . . S X=1,FLG="P" | 
|---|
| 114 | K DIE,DA,DR | 
|---|
| 115 | S DA(1)=VDR,DA(2)=RVDT,DA(3)=SITE,DA=DFN,DR="3///"_FLG | 
|---|
| 116 | S DIE="^RMPO(665.72,"_DA(3)_",1,"_DA(2)_",1,"_DA(1)_",""V""," | 
|---|
| 117 | D ^DIE | 
|---|
| 118 | Q  ;PATUPD | 
|---|
| 119 | ; | 
|---|
| 120 | FCPUPD ;Update global ^RMPO(665.72 with totals for Purchase Card | 
|---|
| 121 | K DIE,DA,DR | 
|---|
| 122 | S DA=IENFCP,DA(1)=RVDT,DA(2)=SITE | 
|---|
| 123 | S DIE="^RMPO(665.72,"_DA(2)_",1,"_DA(1)_",2," | 
|---|
| 124 | S DR=$S($P(PAYINF,U)="P":"6///"_(FCPTOT+PCTOT)_";",1:"") | 
|---|
| 125 | S DR=DR_"4////"_DUZ_";"_"5///"_VDR | 
|---|
| 126 | D ^DIE | 
|---|
| 127 | Q  ;FCPUPD | 
|---|
| 128 | ; | 
|---|