1 | IBDF9B1 ;ALB/CJM - ENCOUNTER FORM - (report data fields) ;APRIL 22,1993
|
---|
2 | ;;3.0;AUTOMATED INFO COLLECTION SYS;;APR 24, 1997
|
---|
3 | ;
|
---|
4 | REPORT ;
|
---|
5 | N TOP,BOTTOM,LEFT,RIGHT,QUIT,SCRNSIZE
|
---|
6 | S QUIT=0,SCRNSIZE=4
|
---|
7 | D RANGE
|
---|
8 | D:'QUIT SEARCH(TOP,BOTTOM,LEFT,RIGHT)
|
---|
9 | Q
|
---|
10 | RANGE ;asks the user for the range - returns TOP,BOTTOM,LEFT,RIGHT
|
---|
11 | N I,HT,WIDTH
|
---|
12 | S HT=IBBLK("H"),WIDTH=IBBLK("W")
|
---|
13 | K DIR
|
---|
14 | ;get TOP
|
---|
15 | S DIR("A")="What is the top-most row to report on?"
|
---|
16 | S DIR(0)="N^1:"_HT_":0",DIR("B")=1
|
---|
17 | D ^DIR K DIR I (Y=-1)!$D(DIRUT) S QUIT=1 Q
|
---|
18 | S TOP=Y
|
---|
19 | ;now get BOTTOM
|
---|
20 | S DIR("A")="What is the bottom-most row to report on? (optional)",DIR("?",1)="Enter the lowest row that you want to report on.",DIR("?")="Enter nothing to report all data fields below the highest row that you specified."
|
---|
21 | K DIR("B") ;S DIR("B")=HT
|
---|
22 | S DIR(0)="NO^"_TOP_":"_HT_":0"
|
---|
23 | D ^DIR K DIR I (Y=-1)!$D(DTOUT)!$D(DUOUT) S QUIT=1 Q
|
---|
24 | S BOTTOM=Y
|
---|
25 | ;get LEFT
|
---|
26 | S DIR("A")="What is the left-most column to report on?"
|
---|
27 | S DIR(0)="N^1:"_WIDTH_":0",DIR("B")=1
|
---|
28 | D ^DIR K DIR I (Y=-1)!$D(DIRUT) S QUIT=1 Q
|
---|
29 | S LEFT=Y
|
---|
30 | ;now get RIGHT
|
---|
31 | S DIR("A")="What is the right-most column to report on? (optional)"
|
---|
32 | S DIR("?",1)="Enter the right-most column that you want to report on.",DIR("?")="Enter nothing to report all data fields to the right of the left-most column that you specified."
|
---|
33 | K DIR("B") ;S DIR("B")=WIDTH
|
---|
34 | S DIR(0)="NO^"_LEFT_":"_WIDTH_":0"
|
---|
35 | D ^DIR K DIR I (Y=-1)!$D(DTOUT)!$D(DUOUT) S QUIT=1 Q
|
---|
36 | S RIGHT=Y
|
---|
37 | ;now change TOP,BOTTOM,LEFT,RIGHT to their internal values
|
---|
38 | ;(BOTTOM or RIGHT)="" has special meaning - means shift without limit
|
---|
39 | S TOP=TOP-1,LEFT=LEFT-1
|
---|
40 | S:BOTTOM>0 BOTTOM=BOTTOM-1
|
---|
41 | S:RIGHT>0 RIGHT=RIGHT-1
|
---|
42 | Q
|
---|
43 | SEARCH(TOP,BOTTOM,LEFT,RIGHT) ;searches for data fields in IBBLK falling within the rectangle defined by TOP,BOTTOM,LEFT,RIGHT and reports on them
|
---|
44 | N SUBFLD,IBX,IBY,FLD,QUIT,ARY,RTN,WP,LIST,CNT,NODE,COUNT
|
---|
45 | S ARY="^TMP(""IBDF"",$J,""LIST OF DATA FIELDS"")"
|
---|
46 | K @ARY
|
---|
47 | S (COUNT,QUIT)=0
|
---|
48 | S FLD="" F S FLD=$O(^IBE(357.5,"C",IBBLK,FLD)) Q:QUIT!('FLD) D
|
---|
49 | .S FLD("NODE0")=$G(^IBE(357.5,FLD,0))
|
---|
50 | .Q:FLD("NODE0")=""
|
---|
51 | .S FLD("NAME")=$P(FLD("NODE0"),"^")
|
---|
52 | .S FLD("MULTIPLE SF")="NO"
|
---|
53 | .S (SUBFLD,CNT)=0 F S SUBFLD=$O(^IBE(357.5,FLD,2,SUBFLD)) Q:'SUBFLD S NODE=$G(^IBE(357.5,FLD,2,SUBFLD,0)) I $P(NODE,"^",9),$P(NODE,"^",8) S CNT=CNT+1 I CNT>1 S FLD("MULTIPLE SF")="YES" Q
|
---|
54 | .Q:$P(FLD("NODE0"),"^",2)'=IBBLK
|
---|
55 | .D RTNDESCR
|
---|
56 | .I WP S IBX=+$P(FLD("NODE0"),"^",10),IBY=+$P(FLD("NODE0"),"^",11) D:$$INRANGE^IBDF10A(IBX,IBY,TOP,BOTTOM,LEFT,RIGHT) Q
|
---|
57 | ..S FLD("MULTIPLE SF")="NO"
|
---|
58 | ..D SETARY
|
---|
59 | .S SUBFLD=0 F S SUBFLD=$O(^IBE(357.5,FLD,2,SUBFLD)) Q:QUIT!('SUBFLD) D
|
---|
60 | ..S SUBFLD("NODE0")=$G(^IBE(357.5,FLD,2,SUBFLD,0)) Q:SUBFLD("NODE0")=""
|
---|
61 | ..S IBX=$P(SUBFLD("NODE0"),"^",7),IBY=$P(SUBFLD("NODE0"),"^",6) I IBX]"",IBY]"" I $$INRANGE^IBDF10A(IBX,IBY,TOP,BOTTOM,LEFT,RIGHT) D SETARY
|
---|
62 | D PRINT
|
---|
63 | K @ARY
|
---|
64 | Q
|
---|
65 | RTNDESCR ;sets RTN=package interface and gets fields needed from the 0 node, sets the flags LIST, & WP
|
---|
66 | S RTN=$P(FLD("NODE0"),"^",3)
|
---|
67 | I 'RTN S (WP,RTN("INTERFACE"),RTN("PRINT COMPLETE"),LIST,RTN("NODE0"))=0 Q
|
---|
68 | S RTN("NODE0")=$G(^IBE(357.6,RTN,0))
|
---|
69 | S LIST=$S("34"[$P(RTN("NODE0"),"^",7):1,1:0)
|
---|
70 | S WP=$S($P(RTN("NODE0"),"^",7)=5:1,1:0)
|
---|
71 | S RTN("INTERFACE")=$P(RTN("NODE0"),"^"),RTN("INTERFACE")=$E(RTN("INTERFACE"),$F(RTN("INTERFACE")," "),40)
|
---|
72 | S RTN("PRINT COMPLETE")=$S($P(RTN("NODE0"),"^",8):"Y",1:"N")
|
---|
73 | Q
|
---|
74 | PRINT ;prints @ARY
|
---|
75 | N CNT,LINE S (QUIT,CNT)=0
|
---|
76 | S COUNT=0 F S COUNT=$O(@ARY@(COUNT)) Q:QUIT!('COUNT) S IBY="" F S IBY=$O(@ARY@(COUNT,IBY)) Q:QUIT!(IBY="") D
|
---|
77 | .S IBX="" F S IBX=$O(@ARY@(COUNT,IBY,IBX)) Q:QUIT!(IBX="") D
|
---|
78 | ..S LINE=0 F S LINE=$O(@ARY@(COUNT,IBY,IBX,LINE)) Q:'LINE W !,$E($G(@ARY@(COUNT,IBY,IBX,LINE)),1,IOM) S CNT=LINE
|
---|
79 | ..F Q:(CNT>SCRNSIZE) W ! S CNT=CNT+1
|
---|
80 | ..S QUIT=$$PAUSE
|
---|
81 | Q
|
---|
82 | PAUSE() ;pauses after each field discription is displayed
|
---|
83 | N ANS
|
---|
84 | R ANS:DTIME
|
---|
85 | Q $S('$T:1,ANS["^":1,1:0)
|
---|
86 | SETARY ;writes data field description to @ARY
|
---|
87 | N PIECE,DATA,LINE
|
---|
88 | S COUNT=COUNT+1
|
---|
89 | S @ARY@(COUNT,IBY,IBX,1)="Name of Data Field: "_FLD("NAME")_" Multiple Subfields With Data: "_FLD("MULTIPLE SF")
|
---|
90 | S LINE="Row: "_(IBY+1)_" Column: "_(IBX+1)_" Length: "_$S(WP:$P(FLD("NODE0"),"^",14)_" Lines Allocated On Form: "_$P(FLD("NODE0"),"^",12),1:$P(SUBFLD("NODE0"),"^",8))
|
---|
91 | S @ARY@(COUNT,IBY,IBX,2)=LINE_$S(LIST:" Number On List: "_$P(FLD("NODE0"),"^",5)_" Last On List To Print?: "_$S($P(FLD("NODE0"),"^",4):"Y",1:"N"),1:"")
|
---|
92 | S @ARY@(COUNT,IBY,IBX,3)="Package Interface: "_RTN("INTERFACE")_" Print Overflowed Data?: "_RTN("PRINT COMPLETE")
|
---|
93 | I 'WP S DATA="",PIECE=$P(SUBFLD("NODE0"),"^",9) S:'PIECE PIECE=1 S:RTN DATA=$$DATANAME^IBDFU1B(RTN,PIECE) D
|
---|
94 | .S @ARY@(COUNT,IBY,IBX,4)="Label"_$S($P(SUBFLD("NODE0"),"^",3)["I":" (not displayed): ",1:": ")_$P(SUBFLD("NODE0"),"^")_" Data: "_DATA
|
---|
95 | I WP,RTN S @ARY@(COUNT,IBY,IBX,4)=$G(^IBE(357.6,RTN,1,1,0)),@ARY@(COUNT,IBY,IBX,5)=$G(^IBE(357.6,RTN,1,2,0))
|
---|
96 | Q
|
---|