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