[613] | 1 | KMPDUT4 ;OAK/RAK; Multi-Lookup ;2/17/04 10:46
|
---|
| 2 | ;;2.0;CAPACITY MANAGEMENT TOOLS;;Mar 22, 2002
|
---|
| 3 | ;
|
---|
| 4 | SELECT(ARRAY,SORT,MAX,OPTION) ;select one or more entries
|
---|
| 5 | ;--------------------------------------------------------------------
|
---|
| 6 | ; this routine lets user select one or more entries from a file
|
---|
| 7 | ;
|
---|
| 8 | ; ARRAY - the array the data is to be stored in
|
---|
| 9 | ; this may be a local or global array
|
---|
| 10 | ; ARRAY(0) - will contain the number of entries selected
|
---|
| 11 | ;
|
---|
| 12 | ; SORT - determines how the array is set
|
---|
| 13 | ; 0 - internal file number
|
---|
| 14 | ; 1 - first piece of zero node
|
---|
| 15 | ;
|
---|
| 16 | ; if zero then ARRAY(internal_number)=external_format
|
---|
| 17 | ; if one then ARRAY(external_format)=internal_number
|
---|
| 18 | ;
|
---|
| 19 | ; internal_number - the internal file number selected
|
---|
| 20 | ; external_format - the first piece of the zero node or
|
---|
| 21 | ; Y(0,0)
|
---|
| 22 | ;
|
---|
| 23 | ; MAX - if defined this represents the maximum number of entries
|
---|
| 24 | ; to stuff into array
|
---|
| 25 | ; - if '*' is selected and the number of file entries
|
---|
| 26 | ; exceeds this number the array will be killed and
|
---|
| 27 | ; ARRAY(0) will be equal to "*"
|
---|
| 28 | ; - if while selecting one entry at a time the number
|
---|
| 29 | ; of entries is equal to MAX the routine will quit with
|
---|
| 30 | ; the entries stored as usual and ARRAY(0)=MAX
|
---|
| 31 | ; this is to prevent partition store errors with local
|
---|
| 32 | ; arrays or setting a global equal all the patients in
|
---|
| 33 | ; the patient file
|
---|
| 34 | ;
|
---|
| 35 | ; OPTION - selected options
|
---|
| 36 | ; S - suppress asterisk (*) ;'(* for All)' prompt
|
---|
| 37 | ; W - allow selected wildcards
|
---|
| 38 | ; example: A* - will select all entries beginning
|
---|
| 39 | ; with the letter 'A'
|
---|
| 40 | ; SMITH* - will select all entries beginning
|
---|
| 41 | ; with 'SMITH'
|
---|
| 42 | ;
|
---|
| 43 | ; DIC - this variable must be defined in the normal fileman
|
---|
| 44 | ; format
|
---|
| 45 | ; DIC("A") - this variable should be defined
|
---|
| 46 | ; the string " (* for All)" will be concatenated to the end
|
---|
| 47 | ; DIC("S") - may be defined if necessary and will be honored
|
---|
| 48 | ; DIC(0) - *** IMPORTANT ***
|
---|
| 49 | ; this will be set to DIC(0)="EQZ" for the purposes of
|
---|
| 50 | ; this routine
|
---|
| 51 | ;
|
---|
| 52 | ; example: S DIC=4,DIC("A")="Select Institution: "
|
---|
| 53 | ; D SELECT^KMPDUT4("^TMP($J,")
|
---|
| 54 | ; D SELECT^KMPDUT4("LOCAL",1,20)
|
---|
| 55 | ; D SELECT^KMPDUT4("LOCAL($J)",1,0,"W")
|
---|
| 56 | ;
|
---|
| 57 | ; *** It is the programmers responsibility kill ***
|
---|
| 58 | ; *** 'ARRAY' when finished with the data ***
|
---|
| 59 | ;--------------------------------------------------------------------
|
---|
| 60 | I $$CHECK^KMPDUT4A D FTR^KMPDUTL4("Press <RET> to continue") Q
|
---|
| 61 | S OPTION=$$UP^XLFSTR($G(OPTION))
|
---|
| 62 | S SORT=+$G(SORT),MAX=+$G(MAX) S:SORT'=1 SORT=0
|
---|
| 63 | I MAX=1,(OPTION'["S") S OPTION=OPTION_"S"
|
---|
| 64 | S DIC(0)="EMQZ",DTIME=$S($G(DTIME):DTIME,1:600)
|
---|
| 65 | I $G(DIC("A"))'["(* for All): ",(OPTION'["S") D
|
---|
| 66 | .S DIC("A")=$G(DIC("A"))_" (* for All): "
|
---|
| 67 | K @ARRAY F D Q:X=""!(X="^")
|
---|
| 68 | .I MAX,(+$G(@ARRAY@(0))=MAX) S X="" Q
|
---|
| 69 | .W !
|
---|
| 70 | .I '$D(@ARRAY) W DIC("A")
|
---|
| 71 | .E W $J(" ",$L(DIC("A"))-12),"...another: "
|
---|
| 72 | .R X:DTIME Q:X=""!(X="^")
|
---|
| 73 | .I X="*",(MAX=1) D Q
|
---|
| 74 | ..W *7,!!?7,"...you are allowed only one selection...",!
|
---|
| 75 | .I X="*",(OPTION["S") D Q
|
---|
| 76 | ..W *7,!!?7,"...'*' not allowed...",!
|
---|
| 77 | .I X="*" D ALL^KMPDUT4B S X="" Q
|
---|
| 78 | .I $E(X)="-" D MINUS^KMPDUT4C(X) Q
|
---|
| 79 | .;-------------------------------------------------------------------
|
---|
| 80 | .; wildcard selection
|
---|
| 81 | .;-------------------------------------------------------------------
|
---|
| 82 | .I $E(X,2,999)["*",(OPTION["W") D WILDCARD^KMPDUT4B(X) Q
|
---|
| 83 | .I $E(X,1,2)="?D"!($E(X,1,2)="?d") D DISPLAY^KMPDUT4B Q
|
---|
| 84 | .I X="?",(MAX'=1) D HELP^KMPDUT4C
|
---|
| 85 | .D ^DIC I Y>0,('$D(@ARRAY@($S(SORT=1:Y(0,0),1:+Y)))) D
|
---|
| 86 | ..I SORT=1 S @ARRAY@(Y(0,0))=+Y
|
---|
| 87 | ..E S @ARRAY@(+Y)=Y(0,0)
|
---|
| 88 | ..S @ARRAY@(0)=$G(@ARRAY@(0))+1
|
---|
| 89 | EXIT ;
|
---|
| 90 | K X,Y
|
---|
| 91 | Q
|
---|