| [613] | 1 | IBDF10 ;ALB/CJM - ENCOUNTER FORM - (shift block contents) ;APRIL 22,1993 | 
|---|
|  | 2 | ;;3.0;AUTOMATED INFO COLLECTION SYS;;APR 24, 1997 | 
|---|
|  | 3 | ; | 
|---|
|  | 4 | SHIFT(TYPE) ;shifts contents of blocks - prompts user for what to shift (unless TYPE is defined), and how much to shift | 
|---|
|  | 5 | ;assumes IBBLK is defined unless TYPE="B" | 
|---|
|  | 6 | N AMOUNT,WAY,QUIT,TOP,BOTTOM,LEFT,RIGHT,HT,WIDTH,MAX | 
|---|
|  | 7 | S QUIT=0,VALMBCK="R" | 
|---|
|  | 8 | I '$D(TYPE) N TYPE D TYPE | 
|---|
|  | 9 | I $D(TYPE),"EDSLTMH"[TYPE S HT=IBBLK("H"),WIDTH=IBBLK("W") | 
|---|
|  | 10 | I $G(TYPE)="B" S HT=IBFORM("HT"),WIDTH=IBFORM("WIDTH") | 
|---|
|  | 11 | D:'QUIT DIRECTN | 
|---|
|  | 12 | D RE^VALM4 | 
|---|
|  | 13 | D:'QUIT RANGE(HT,WIDTH) | 
|---|
|  | 14 | S:'QUIT MAX=$S(WAY="U":$S(BOTTOM:BOTTOM,1:HT),WAY="D":HT-TOP-1,WAY="L":$S(RIGHT:RIGHT,1:WIDTH),1:WIDTH-LEFT-1) | 
|---|
|  | 15 | S:'QUIT MAX=$$MAX^IBDF10C(TYPE,WAY,MAX,TOP,BOTTOM,LEFT,RIGHT) | 
|---|
|  | 16 | D:'QUIT AMOUNT(MAX) | 
|---|
|  | 17 | D:('QUIT)&($G(AMOUNT)>0) @TYPE | 
|---|
|  | 18 | S VALMBCK="R" | 
|---|
|  | 19 | Q | 
|---|
|  | 20 | TYPE ;asks user for what should be shifted | 
|---|
|  | 21 | D TYPEHELP | 
|---|
|  | 22 | K DIR S DIR(0)="SB^E:Everything;D:Display Fields;S:Selection Lists;L:Lines;T:Text Areas;M:Multiple Choice Fields;H:Hand Print Fields",DIR("A")="What should be shifted?",DIR("B")="Everything" | 
|---|
|  | 23 | S DIR("?")="^D TYPEHELP^IBDF10" | 
|---|
|  | 24 | D ^DIR K DIR I (Y=-1)!$D(DIRUT) S QUIT=1 Q | 
|---|
|  | 25 | S TYPE=Y | 
|---|
|  | 26 | Q | 
|---|
|  | 27 | TYPEHELP ;help for TYPE | 
|---|
|  | 28 | W !!,"You can choose what should be shifted. Select one of the following:",!," [E]verything, [D]isplay fields, [S]election lists, [L]ines, [T]ext areas,",!," [M]ultiple choice fields, [H]and print fields" | 
|---|
|  | 29 | Q | 
|---|
|  | 30 | DIRECTN ;asks user for direction of shift - returns WAY | 
|---|
|  | 31 | S DIR(0)="SB^U:UP;D:DOWN;L:LEFT;R:RIGHT",DIR("A")="Shift UP, DOWN, LEFT, or RIGHT?",DIR("B")="DOWN",DIR("?")="Which direction should the shift be in?" | 
|---|
|  | 32 | D ^DIR K DIR I (Y=-1)!$D(DIRUT) S QUIT=1 Q | 
|---|
|  | 33 | S WAY=Y | 
|---|
|  | 34 | Q | 
|---|
|  | 35 | AMOUNT(MAX) ;now ask user how far to shift - returns AMOUNT | 
|---|
|  | 36 | ;MAX is the maxium shift allowed | 
|---|
|  | 37 | S DIR(0)="N^0:"_MAX_":0" | 
|---|
|  | 38 | S DIR("A")="Shift how far "_$S(WAY="U":"up in rows",WAY="D":"down in rows",WAY="R":"to the right in columns",1:"to the left in columns")_"?" | 
|---|
|  | 39 | D ^DIR K DIR I (Y=-1)!$D(DIRUT) S QUIT=1 Q | 
|---|
|  | 40 | S AMOUNT=Y | 
|---|
|  | 41 | Q | 
|---|
|  | 42 | RANGE(HT,WIDTH) ;asks the user for the range - returns TOP,BOTTOM,LEFT,RIGHT | 
|---|
|  | 43 | N I | 
|---|
|  | 44 | K DIR | 
|---|
|  | 45 | ;get TOP | 
|---|
|  | 46 | S DIR("A")="What is the top-most row to shift?" | 
|---|
|  | 47 | S DIR(0)="N^1:"_HT_":0",DIR("B")=1 | 
|---|
|  | 48 | D ^DIR K DIR I (Y=-1)!$D(DIRUT) S QUIT=1 Q | 
|---|
|  | 49 | S TOP=Y | 
|---|
|  | 50 | ;now get BOTTOM | 
|---|
|  | 51 | S DIR("A")="What is the bottom-most row to shift? (optional)",DIR("?",1)="Enter the lowest row that the shift should effect.",DIR("?")="Enter nothing to shift everything below the top-most row that you specified." | 
|---|
|  | 52 | K DIR("B") | 
|---|
|  | 53 | S DIR(0)="NO^"_TOP_":"_HT_":0" | 
|---|
|  | 54 | D ^DIR K DIR I (Y=-1)!$D(DTOUT)!$D(DUOUT) S QUIT=1 Q | 
|---|
|  | 55 | S BOTTOM=Y | 
|---|
|  | 56 | ;get LEFT | 
|---|
|  | 57 | S DIR("A")="What is the left-most column to shift?" | 
|---|
|  | 58 | S DIR(0)="N^1:"_WIDTH_":0",DIR("B")=1 | 
|---|
|  | 59 | D ^DIR K DIR I (Y=-1)!$D(DIRUT) S QUIT=1 Q | 
|---|
|  | 60 | S LEFT=Y | 
|---|
|  | 61 | ;now get RIGHT | 
|---|
|  | 62 | S DIR("A")="What is the right-most column to shift? (optional)" | 
|---|
|  | 63 | S DIR("?",1)="Enter the right-most column that the shift should effect.",DIR("?")="Enter nothing to shift everything to the right of the left-most column that you specified." | 
|---|
|  | 64 | K DIR("B") | 
|---|
|  | 65 | S DIR(0)="NO^"_LEFT_":"_WIDTH_":0" | 
|---|
|  | 66 | D ^DIR K DIR I (Y=-1)!$D(DTOUT)!$D(DUOUT) S QUIT=1 Q | 
|---|
|  | 67 | S RIGHT=Y | 
|---|
|  | 68 | ;now change TOP,BOTTOM,LEFT,RIGHT to their internal values | 
|---|
|  | 69 | ;(BOTTOM or RIGHT)="" has special meaning - means shift without limit | 
|---|
|  | 70 | S TOP=TOP-1,LEFT=LEFT-1 | 
|---|
|  | 71 | S:BOTTOM>0 BOTTOM=BOTTOM-1 | 
|---|
|  | 72 | S:RIGHT>0 RIGHT=RIGHT-1 | 
|---|
|  | 73 | Q | 
|---|
|  | 74 | E ;shift everything | 
|---|
|  | 75 | D FLDS^IBDF10A(WAY,AMOUNT,TOP,BOTTOM,LEFT,RIGHT) | 
|---|
|  | 76 | D LSTS^IBDF10B(WAY,AMOUNT,TOP,BOTTOM,LEFT,RIGHT) | 
|---|
|  | 77 | D TXT^IBDF10A(WAY,AMOUNT,TOP,BOTTOM,LEFT,RIGHT) | 
|---|
|  | 78 | D LINES^IBDF10A(WAY,AMOUNT,TOP,BOTTOM,LEFT,RIGHT) | 
|---|
|  | 79 | D MFLDS^IBDF10A(WAY,AMOUNT,TOP,BOTTOM,LEFT,RIGHT) | 
|---|
|  | 80 | D HFLDS^IBDF10A(WAY,AMOUNT,TOP,BOTTOM,LEFT,RIGHT) | 
|---|
|  | 81 | Q | 
|---|
|  | 82 | D ;shift data fields | 
|---|
|  | 83 | D FLDS^IBDF10A(WAY,AMOUNT,TOP,BOTTOM,LEFT,RIGHT) | 
|---|
|  | 84 | Q | 
|---|
|  | 85 | M ;shift multiple choice fields | 
|---|
|  | 86 | D MFLDS^IBDF10A(WAY,AMOUNT,TOP,BOTTOM,LEFT,RIGHT) | 
|---|
|  | 87 | Q | 
|---|
|  | 88 | H ;shift hand print fields | 
|---|
|  | 89 | D HFLDS^IBDF10A(WAY,AMOUNT,TOP,BOTTOM,LEFT,RIGHT) | 
|---|
|  | 90 | Q | 
|---|
|  | 91 | S ;shift selection lists | 
|---|
|  | 92 | D LSTS^IBDF10B(WAY,AMOUNT,TOP,BOTTOM,LEFT,RIGHT) | 
|---|
|  | 93 | Q | 
|---|
|  | 94 | T ;shift text areas | 
|---|
|  | 95 | D TXT^IBDF10A(WAY,AMOUNT,TOP,BOTTOM,LEFT,RIGHT) | 
|---|
|  | 96 | Q | 
|---|
|  | 97 | L ;shift lines | 
|---|
|  | 98 | D LINES^IBDF10A(WAY,AMOUNT,TOP,BOTTOM,LEFT,RIGHT) | 
|---|
|  | 99 | Q | 
|---|
|  | 100 | B ;shift blocks | 
|---|
|  | 101 | D BLOCKS^IBDF10A(WAY,AMOUNT,TOP,BOTTOM,LEFT,RIGHT) | 
|---|
|  | 102 | Q | 
|---|