[613] | 1 | IBCNBLA2 ;DAOU/ESG - Ins Buffer, Multiple Selection ;09-SEP-2002
|
---|
| 2 | ;;2.0;INTEGRATED BILLING;**184**;21-MAR-94
|
---|
| 3 | ;;Per VHA Directive 10-93-142, this routine should not be modified.
|
---|
| 4 | ;
|
---|
| 5 | ; Can't be called from the top
|
---|
| 6 | Q
|
---|
| 7 | ;
|
---|
| 8 | ;
|
---|
| 9 | MULSEL(TMPARR,IBCNELST,GCNT) ; Multiple entry selection
|
---|
| 10 | ; This procedure is responsible for receiving multiple buffer entries
|
---|
| 11 | ; from the user. It also validates and locks the selected buffer
|
---|
| 12 | ; entries. It also reports any buffer entries that could not be
|
---|
| 13 | ; allocated and the reason why not.
|
---|
| 14 | ;
|
---|
| 15 | ; Parameters:
|
---|
| 16 | ; TMPARR - scratch global input parameter
|
---|
| 17 | ; IBCNELST - output array of entries
|
---|
| 18 | ; IBCNELST(entry#) = (OK? 0/1)^(error reason)^(buffer ien)
|
---|
| 19 | ; GCNT - output; number of buffer entries the user got OK
|
---|
| 20 | ;
|
---|
| 21 | NEW OK,ERR,VALMY,IBSELN,IBBUFDA,IBY,TCNT
|
---|
| 22 | NEW DIR,X,Y,DTOUT,DUOUT,DIRUT,DIROUT
|
---|
| 23 | KILL IBCNELST
|
---|
| 24 | S (TCNT,GCNT)=0
|
---|
| 25 | I $G(TMPARR)="" G MULSELX
|
---|
| 26 | D EN^VALM2($G(XQORNOD(0)),"O") ; ListMan generic selector
|
---|
| 27 | I '$D(VALMY) G MULSELX
|
---|
| 28 | S IBSELN=0
|
---|
| 29 | F S IBSELN=$O(VALMY(IBSELN)) Q:'IBSELN D S IBCNELST(IBSELN)=OK_U_ERR_U_IBBUFDA
|
---|
| 30 | . S TCNT=TCNT+1
|
---|
| 31 | . S OK=0,ERR="This entry is not valid or available."
|
---|
| 32 | . S IBBUFDA=$P($G(^TMP(TMPARR,$J,IBSELN)),U,2,99) Q:'IBBUFDA
|
---|
| 33 | . S IBY=$P($G(^IBA(355.33,IBBUFDA,0)),U,4) ; buffer status
|
---|
| 34 | . ;
|
---|
| 35 | . ; make sure buffer entry is still in an entered status
|
---|
| 36 | . I IBY'="E" S ERR="This entry has a status of "_$S(IBY="A":"ACCEPTED",IBY="R":"REJECTED",1:"UNKNOWN")_" and cannot be modified." Q
|
---|
| 37 | . ;
|
---|
| 38 | . ; attempt to lock the buffer entry
|
---|
| 39 | . I '$$LOCK^IBCNBU1(IBBUFDA,0,0) S ERR="Another user is currently editing this entry." Q
|
---|
| 40 | . ;
|
---|
| 41 | . ; at this point this entry is OK for processing
|
---|
| 42 | . S OK=1,ERR="",GCNT=GCNT+1
|
---|
| 43 | . Q
|
---|
| 44 | ;
|
---|
| 45 | ; Exit procedure if the user was able to get all entries
|
---|
| 46 | ; total requested = total allocated
|
---|
| 47 | I TCNT=GCNT G MULSELX
|
---|
| 48 | ;
|
---|
| 49 | ; At this point, some or all of the user selected entries are not
|
---|
| 50 | ; available; build and display a message.
|
---|
| 51 | W !!?3,$$MSG(TCNT,GCNT)
|
---|
| 52 | W !?3,"available for editing at this time:"
|
---|
| 53 | S IBSELN=0
|
---|
| 54 | F S IBSELN=$O(IBCNELST(IBSELN)) Q:'IBSELN I 'IBCNELST(IBSELN) D
|
---|
| 55 | . W !?6,"Entry ",IBSELN,": ",$P(IBCNELST(IBSELN),U,2)
|
---|
| 56 | . Q
|
---|
| 57 | ;
|
---|
| 58 | ; If the user was not able to get any entries, then kill the array
|
---|
| 59 | ; and get out
|
---|
| 60 | I 'GCNT KILL IBCNELST D PAUSE^VALM1 G MULSELX
|
---|
| 61 | ;
|
---|
| 62 | ; Ask the user if they want to continue
|
---|
| 63 | W !
|
---|
| 64 | S DIR(0)="Y",DIR("A")=" Do you want to continue anyway",DIR("B")="NO"
|
---|
| 65 | D ^DIR K DIR
|
---|
| 66 | I Y G MULSELX ; user said Yes to continue so get out
|
---|
| 67 | ;
|
---|
| 68 | ; At this point the user doesn't want to continue, so we need to
|
---|
| 69 | ; unlock any buffer entries that may have been locked and then kill
|
---|
| 70 | ; the array so no further processing happens
|
---|
| 71 | S IBSELN=0
|
---|
| 72 | F S IBSELN=$O(IBCNELST(IBSELN)) Q:'IBSELN D
|
---|
| 73 | . I 'IBCNELST(IBSELN) Q ; user could not get this one
|
---|
| 74 | . S IBBUFDA=$P(IBCNELST(IBSELN),U,3) ; buffer ien
|
---|
| 75 | . D UNLOCK^IBCNBU1(IBBUFDA) ; unlock it
|
---|
| 76 | . Q
|
---|
| 77 | KILL IBCNELST ; remove the array
|
---|
| 78 | ;
|
---|
| 79 | MULSELX ;
|
---|
| 80 | Q
|
---|
| 81 | ;
|
---|
| 82 | ;
|
---|
| 83 | MSG(TCNT,GCNT) ; build test message
|
---|
| 84 | ; This function builds the first line of the message when not all
|
---|
| 85 | ; selected buffer entries are available.
|
---|
| 86 | ; TCNT - total number selected
|
---|
| 87 | ; GCNT - total number allocated to user successfully
|
---|
| 88 | NEW BCNT,MSG
|
---|
| 89 | S BCNT=TCNT-GCNT ; number not available to the user
|
---|
| 90 | I TCNT=1,GCNT=0 S MSG="You selected one buffer entry, but it is not" G MSGX
|
---|
| 91 | I TCNT>1,GCNT=0 S MSG="You selected "_TCNT_" buffer entries, but none of them are" G MSGX
|
---|
| 92 | I BCNT=1 S MSG="You selected "_TCNT_" buffer entries, but one of them is not" G MSGX
|
---|
| 93 | S MSG="You selected "_TCNT_" buffer entries, but "_BCNT_" of them are not"
|
---|
| 94 | MSGX ;
|
---|
| 95 | Q MSG
|
---|
| 96 | ;
|
---|