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 | ;
|
---|