| 1 | RCDPEWLB ;ALB/TMK - EEOB WORKLIST BATCH PROCESSING ;10-FEB-2004
 | 
|---|
| 2 |  ;;4.5;Accounts Receivable;**208**;Mar 20, 1995
 | 
|---|
| 3 |  ;;Per VHA Directive 10-93-142, this routine should not be modified.
 | 
|---|
| 4 |  ;
 | 
|---|
| 5 | SETBATCH(RCERA) ; Set up batches for a worklist entry RCERA
 | 
|---|
| 6 |  ; Returns ^TMP($J,"BATCHES",batch criteria code,start param data)=
 | 
|---|
| 7 |  ;              batch #^end param data
 | 
|---|
| 8 |  ; Ask to split the ERA
 | 
|---|
| 9 |  N DIR,DUOUT,DTOUT,X,Y,Z,Z0,RCNUM,RCY,RCBAT,RCSEL,RCZ,RCNAMES,RCS
 | 
|---|
| 10 |  K ^TMP($J,"BATCHES")
 | 
|---|
| 11 |  S RCNUM=+$$CTEEOB(RCERA)
 | 
|---|
| 12 |  Q:RCNUM'>1
 | 
|---|
| 13 |  S DIR("A",1)="THERE ARE APPROXIMATELY "_RCNUM_" EEOBS IN THIS ERA",DIR("A")="DO YOU WANT TO SPLIT THIS ERA INTO BATCHES?: ",DIR(0)="YA",DIR("B")=$S(RCNUM>30:"YES",1:"NO") W ! D ^DIR K DIR
 | 
|---|
| 14 |  I Y'=1 Q
 | 
|---|
| 15 |  ;
 | 
|---|
| 16 |  S DIR("A",1)="YOU MAY USE ANY ONE OF THE FOLLOWING CRITERIA TO SPLIT THE ERA INTO BATCHES: ",DIR("A",2)=" ",DIR("A",3)=$J("",10)_"1 - BY MAX # OF EEOBs TO INCLUDE IN A BATCH"
 | 
|---|
| 17 |  S DIR("A",4)=$J("",10)_"2 - BY RANGES OF PATIENT LAST NAME",DIR("A",5)=$J("",10)_"3 - BY EEOB PAYMENT STATUS (FULL/PARTIAL/NO PAY)"
 | 
|---|
| 18 |  S DIR("A",6)=$J("",10)_"4 - BY CO-PAY AND NON-COPAY FOR THE DATE OF SERVICE",DIR("A",7)=" "
 | 
|---|
| 19 |  S DIR(0)="SAO^1:MAX #;2:LAST NAME;3:PAY STATUS;4:CO-PAY STATUS",DIR("A")="CRITERIA SELECTION: "
 | 
|---|
| 20 |  W !! D ^DIR K DIR
 | 
|---|
| 21 |  Q:$D(DUOUT)!$D(DTOUT)!(Y="")
 | 
|---|
| 22 |  S RCBAT=0,RCSEL=Y,^TMP($J,"BATCHES")=RCSEL
 | 
|---|
| 23 |  S DIR(0)="YA",DIR("A")="DO YOU WANT TO NAME YOUR OWN BATCHES?: ",DIR("B")="NO" W ! D ^DIR K DIR
 | 
|---|
| 24 |  Q:$D(DUOUT)!$D(DTOUT)
 | 
|---|
| 25 |  S RCNAMES=+Y
 | 
|---|
| 26 |  I RCSEL=1 D
 | 
|---|
| 27 |  . W ! S DIR(0)="NA^1:"_RCNUM,DIR("A")="MAX # OF EEOBS TO INCLUDE IN A BATCH: ",DIR("?")="ENTER A NUMBER FROM 1 TO "_RCNUM D ^DIR K DIR
 | 
|---|
| 28 |  . I $D(DTOUT)!$D(DUOUT) Q
 | 
|---|
| 29 |  . S RCY=Y
 | 
|---|
| 30 |  . F RCZ=1:1:RCNUM\RCY+$S(RCNUM#RCY:1,1:0) S RCS=((RCZ-1)*RCY)+1 D NEWBAT(RCERA,1,"",RCS_U_(RCS+RCY-1),.RCBAT,RCNAMES) S ^TMP($J,"BATCHES",1,RCS)=RCBAT_U_(RCS+RCY-1)
 | 
|---|
| 31 |  ;
 | 
|---|
| 32 |  I RCSEL=2 D
 | 
|---|
| 33 |  . N RCNMF,RCQUIT,RCDONE
 | 
|---|
| 34 |  . S RCNMF="A",(RCQUIT,RCDONE)=0
 | 
|---|
| 35 |  . F  D  Q:RCQUIT!RCDONE
 | 
|---|
| 36 |  .. W !!,"START FROM LAST NAME BEGINNING WITH: ",RCNMF
 | 
|---|
| 37 |  .. S DIR("?")="ENTER A LETTER IN UPPERCASE"
 | 
|---|
| 38 |  .. S DIR(0)="FA^1:1^K:X'?.U X",DIR("A")="INCLUDE THROUGH LAST NAME BEGINNING WITH: " D ^DIR K DIR
 | 
|---|
| 39 |  .. I $D(DTOUT)!$D(DUOUT) S RCQUIT=1 Q
 | 
|---|
| 40 |  .. S RCY=Y,RCSEL("NAME",RCNMF)=Y_"ZZZ"
 | 
|---|
| 41 |  .. I $A(RCY)=90 S RCDONE=1 Q
 | 
|---|
| 42 |  .. S RCNMF=$A(RCY)+1,RCNMF=$C(RCNMF)
 | 
|---|
| 43 |  . Q:RCQUIT
 | 
|---|
| 44 |  . S Z="" F  S Z=$O(RCSEL("NAME",Z)) Q:Z=""  D NEWBAT(RCERA,2,"",Z_U_RCSEL("NAME",Z),.RCBAT,RCNAMES) S ^TMP($J,"BATCHES",2,Z)=RCBAT_U_RCSEL("NAME",Z)
 | 
|---|
| 45 |  ;
 | 
|---|
| 46 |  I RCSEL=3 D
 | 
|---|
| 47 |  . F Y=1:1:3 D NEWBAT(RCERA,3,$P("FULL PAYMENT^PARTIAL PAYMENT^NO PAYMENT",U,Y),Y,.RCBAT,RCNAMES) S ^TMP($J,"BATCHES",3,Y)=RCBAT
 | 
|---|
| 48 |  ;
 | 
|---|
| 49 |  I RCSEL=4 D
 | 
|---|
| 50 |  . F Y=1,2 D NEWBAT(RCERA,RCSEL,$P("CO-PAY EXISTS^NO CO-PAY EXISTS",U,Y),Y,.RCBAT,RCNAMES) S ^TMP($J,"BATCHES",4,Y)=RCBAT
 | 
|---|
| 51 |  ;
 | 
|---|
| 52 |  S DIR(0)="EA",DIR("A")=RCBAT_" BATCHES CREATED.  PRESS RETURN TO CONTINUE " W ! D ^DIR K DIR
 | 
|---|
| 53 |  Q
 | 
|---|
| 54 |  ;
 | 
|---|
| 55 | NEWBAT(RCERA,RCSEL,RCDAT,RCVAL,RCBAT,RCNAMES) ; Add a new batch at the top level entry
 | 
|---|
| 56 |  ; RCERA = the ien of the entry in file 344.49
 | 
|---|
| 57 |  ; RCSEL = the # of the selection criteria selected
 | 
|---|
| 58 |  ; RCDAT = the default 'name' of the batch based on the criteria used
 | 
|---|
| 59 |  ; RCVAL = the start value^the end value
 | 
|---|
| 60 |  ; RCBAT = if passed by reference, returned as the next batch #
 | 
|---|
| 61 |  ; RCNAMES = 1 if user wants to name each batch, 0 to accept default
 | 
|---|
| 62 |  ;
 | 
|---|
| 63 |  N DA,DR,DIC,X,Y,DLAYGO,DD,DO
 | 
|---|
| 64 |  S RCBAT=RCBAT+1
 | 
|---|
| 65 |  S DA(1)=RCERA,DIC="^RCY(344.49,"_DA(1)_",3,",DLAYGO=344.493,DIC(0)="L",X=RCBAT
 | 
|---|
| 66 |  I $G(RCNAMES) W !!,"**BATCH #: "_RCBAT
 | 
|---|
| 67 |  S DIC("DR")=".03////0;.04////"_DUZ_";.05////0;.06////"_RCSEL_";.07////"_$P(RCVAL,U)_$S($P(RCVAL,U,2)'="":";.08////"_$P(RCVAL,U,2),1:"")
 | 
|---|
| 68 |  S DIC("DR")=DIC("DR")_";.02R//"_$S(RCNAMES:"",1:"//")_$S(RCSEL=1:"BATCH #: "_RCBAT,RCSEL=2:"LAST NAME FROM "_$P(RCVAL,U)_" - "_$P(RCVAL,U,2),1:RCDAT)
 | 
|---|
| 69 |  D FILE^DICN K DLAYGO,DIC,DD,DO W !
 | 
|---|
| 70 |  Q
 | 
|---|
| 71 |  ;
 | 
|---|
| 72 | GETBATCH(RCZ0) ; Returns the batch # to be assigned to the data in RCZ0
 | 
|---|
| 73 |  ; RCZ0 = 0-node of the entry in file 344.41 to be assigned to a batch
 | 
|---|
| 74 |  N BNUM,Z,Z0
 | 
|---|
| 75 |  S BNUM=""
 | 
|---|
| 76 |  I $G(^TMP($J,"BATCHES"))=1 D  ; Max #
 | 
|---|
| 77 |  . N CT
 | 
|---|
| 78 |  . S CT=+$G(^TMP($J,"BATCHES","CT"))+1
 | 
|---|
| 79 |  . S ^TMP($J,"BATCHES","CT")=CT
 | 
|---|
| 80 |  . S Z=+$O(^TMP($J,"BATCHES",1,CT+1),-1),BNUM=+$G(^TMP($J,"BATCHES",1,Z)) S:'BNUM BNUM=1
 | 
|---|
| 81 |  ;
 | 
|---|
| 82 |  I $G(^TMP($J,"BATCHES"))=2 D  ; last name
 | 
|---|
| 83 |  . S Z=$P(RCZ0,U,15)
 | 
|---|
| 84 |  . I $P(RCZ0,U,2) S Z0=$P($G(^DGCR(399,+$G(^IBM(361.1,+$P(RCZ0,U,2),0)),0)),U,2),Z0=$P($G(^DPT(Z0,0)),U) I Z0'="" S Z=Z0
 | 
|---|
| 85 |  . S Z0=$A($E(Z))-1,Z0=$C(Z0),Z0=$O(^TMP($J,"BATCHES",2,Z0),-1)
 | 
|---|
| 86 |  . S BNUM=$S(Z0="":1,1:+$G(^TMP($J,"BATCHES",2,Z0))) S:'BNUM BNUM=1
 | 
|---|
| 87 |  ;
 | 
|---|
| 88 |  I $G(^TMP($J,"BATCHES"))=3 D  ; payment amount
 | 
|---|
| 89 |  . S Z=+$P(RCZ0,U,3)
 | 
|---|
| 90 |  . I Z'>0!'$P(RCZ0,U,2) S BNUM=3 Q  ; 0-PAY/ADJUSTMENT/UNKNOWN CLAIM
 | 
|---|
| 91 |  . I +$P($G(^IBM(361.1,+$P(RCZ0,U,2))),U,4)'>+Z S BNUM=1 Q  ; FULL PAY
 | 
|---|
| 92 |  . S BNUM=2 ; PARTIAL PAY
 | 
|---|
| 93 |  ;
 | 
|---|
| 94 |  I $G(^TMP($J,"BATCHES"))=4 D  ; Co-pay/not
 | 
|---|
| 95 |  . S BNUM=2
 | 
|---|
| 96 |  . Q:'$P(RCZ0,U,2)
 | 
|---|
| 97 |  . I $$COPAY^RCDPEWL1(+$G(^IBM(361.1,+$P(RCZ0,U,2),0))) S BNUM=1
 | 
|---|
| 98 |  ;
 | 
|---|
| 99 |  Q BNUM
 | 
|---|
| 100 |  ;
 | 
|---|
| 101 | EDIT(RCERA,RCB,ABORT) ; Edit name and posting status of an existing batch
 | 
|---|
| 102 |  ; RCERA = the ien of the worklist entry
 | 
|---|
| 103 |  ; RCB = the ien of the current batch
 | 
|---|
| 104 |  ; RCABORT = if passed by reference, returned as 1 if user aborts
 | 
|---|
| 105 |  N DA,DIE,DR,X,Y
 | 
|---|
| 106 |  D FULL^VALM1
 | 
|---|
| 107 |  S ABORT=0
 | 
|---|
| 108 |  S DA(1)=RCERA,DA=RCB,DIE="^RCY(344.49,"_DA(1)_",3,",DR=".02;.03" D ^DIE I $D(Y) S ABORT=1
 | 
|---|
| 109 |  K VALMHDR ; Used to rebuild the header
 | 
|---|
| 110 |  S VALMBCK="R"
 | 
|---|
| 111 |  Q
 | 
|---|
| 112 |  ;
 | 
|---|
| 113 | MARKALL(RCERA) ; Mark all batches as ready to post
 | 
|---|
| 114 |  N DIR,X,Y,Z,RCT,DA,DIE,DR
 | 
|---|
| 115 |  D FULL^VALM1
 | 
|---|
| 116 |  S VALMBCK="R"
 | 
|---|
| 117 |  I $G(^TMP("RCBATCH_SELECTED",$J)) D NOBATCH^RCDPEWL S VALMBCK="R" Q
 | 
|---|
| 118 |  I '$O(^RCY(344.49,RCERA,3,0)) D NOTSET^RCDPEWLC Q
 | 
|---|
| 119 |  S DIR(0)="YA",DIR("A",1)="THIS ACTION WILL MARK ALL BATCHES FOR THIS ERA AS READY TO POST",DIR("A")="ARE YOU SURE YOU WANT TO DO THIS?: ",DIR("B")="NO" W ! D ^DIR K DIR
 | 
|---|
| 120 |  S RCT=0
 | 
|---|
| 121 |  I Y D
 | 
|---|
| 122 |  . S Z=0 F  S Z=$O(^RCY(344.49,RCERA,3,Z)) Q:'Z  I '$P($G(^(Z,0)),U,3) S RCT=RCT+1,DA(1)=RCERA,DA=Z,DIE="^RCY(344.49,"_DA(1)_",3,",DR=".03////1" D ^DIE
 | 
|---|
| 123 |  . W !!,RCT," BATCHES CHANGED TO READY TO POST",!,"ALL BATCHES ARE NOW READY TO POST"
 | 
|---|
| 124 |  . S DIR(0)="EA",DIR("A")="PRESS RETURN TO CONTINUE " W ! D ^DIR K DIR
 | 
|---|
| 125 |  . K VALMHDR
 | 
|---|
| 126 |  Q
 | 
|---|
| 127 |  ;
 | 
|---|
| 128 | EDITALL(RCERA) ; Edit all batches
 | 
|---|
| 129 |  N Z,RCQUIT
 | 
|---|
| 130 |  D FULL^VALM1
 | 
|---|
| 131 |  S VALMBCK="R"
 | 
|---|
| 132 |  W !
 | 
|---|
| 133 |  I '$O(^RCY(344.49,RCERA,3,0)) D NOTSET^RCDPEWLC Q
 | 
|---|
| 134 |  S (RCQUIT,Z)=0 F  S Z=$O(^RCY(344.49,RCERA,3,Z)) Q:'Z  W !!,"BATCH #: "_+$G(^(Z,0)) D EDIT(RCERA,Z,.RCQUIT) Q:RCQUIT
 | 
|---|
| 135 |  Q
 | 
|---|
| 136 |  ;
 | 
|---|
| 137 | REBATCH(RCERA) ; Allow to recreate batches
 | 
|---|
| 138 |  N DIR,X,Y,Z,Z0,RCQUIT,DA,DR,DIE,DIK,RCLINE
 | 
|---|
| 139 |  D FULL^VALM1
 | 
|---|
| 140 |  I $G(^TMP("RCBATCH_SELECTED",$J)) D NOBATCH^RCDPEWL G REBQ
 | 
|---|
| 141 |  ;
 | 
|---|
| 142 |  I '$O(^RCY(344.49,RCERA,3,0)) W !!," ***** THIS ERA CURRENTLY HAS NO BATCHES DEFINED *****"
 | 
|---|
| 143 |  ;
 | 
|---|
| 144 |  S RCQUIT=0
 | 
|---|
| 145 |  I $O(^RCY(344.49,RCERA,3,0)) D  G:RCQUIT REBQ
 | 
|---|
| 146 |  . S DIR(0)="YA",DIR("B")="NO",DIR("A",1)="THIS ACTION REMOVES ALL BATCH REFERENCES.  THE BATCHES CAN THEN BE REBUILT.",DIR("A")="ARE YOU SURE YOU WANT TO CONTINUE?: " W ! D ^DIR K DIR
 | 
|---|
| 147 |  . I Y'=1 S RCQUIT=1 Q
 | 
|---|
| 148 |  . S Z=0 F  S Z=$O(^RCY(344.49,RCERA,3,Z)) Q:'Z  S DA(1)=RCERA,DIK="^RCY(344.49,"_DA(1)_",3,",DA=Z D ^DIK
 | 
|---|
| 149 |  ;
 | 
|---|
| 150 |  K ^TMP($J,"BATCHES")
 | 
|---|
| 151 |  D SETBATCH(RCERA)
 | 
|---|
| 152 |  S Z=0 F  S Z=$O(^RCY(344.49,RCERA,1,Z)) Q:'Z  S Z0=$G(^(Z,0)) I +Z0'["." D
 | 
|---|
| 153 |  . S RCLINE=$G(^RCY(344.4,RCERA,1,+$P(Z0,U,9),0)),DA(1)=RCERA,DIE="^RCY(344.49,"_DA(1)_",1,",DA=Z,DR=".14///"_$S(RCLINE="":"@",1:"/"_$$GETBATCH^RCDPEWLB(RCLINE)) D ^DIE
 | 
|---|
| 154 |  K ^TMP($J,"BATCHES")
 | 
|---|
| 155 | REBQ S VALMBCK="R"
 | 
|---|
| 156 |  Q
 | 
|---|
| 157 |  ;
 | 
|---|
| 158 | CTEEOB(RCERA) ; Returns the approx # of EEOBs in ERA ien RCERA (file 344.4)
 | 
|---|
| 159 |  N RCNUM,Z
 | 
|---|
| 160 |  S (RCNUM,Z)=0 F  S Z=$O(^RCY(344.4,RCERA,1,Z)) Q:'Z  I $P($G(^(Z,0)),U,3)'<0 S RCNUM=RCNUM+1
 | 
|---|
| 161 |  Q RCNUM
 | 
|---|
| 162 |  ;
 | 
|---|