1 | IBDFU2B ;ALB/CJM - ENCOUNTER FORM - BUILD FORM(copying blocks - continued from IBDFU2) ; 08-JAN-1993
|
---|
2 | ;;3.0;AUTOMATED INFO COLLECTION SYS;**38**;APR 24, 1997
|
---|
3 | ;
|
---|
4 | CPYSLCTN(SLCTN,GRP,NEWGRP,LIST,NEWLIST,FROMFILE,TOFILE) ;
|
---|
5 | Q:('$G(SLCTN))!('$G(GRP))!('$G(NEWGRP))!('$G(LIST))!('$G(NEWLIST))!('$G(FROMFILE))!('$G(TOFILE))
|
---|
6 | Q:(FROMFILE'=357.3)&(FROMFILE'=358.3)
|
---|
7 | Q:(TOFILE'=357.3)&(TOFILE'=358.3)
|
---|
8 | N NODE,NAME,NEWSLCTN,SC,CNT,I
|
---|
9 | S NEWSLCTN=""
|
---|
10 | S NODE=$G(^IBE(FROMFILE,SLCTN,0)) Q:NODE=""
|
---|
11 | I ($P(NODE,"^",3)'=LIST)!($P(NODE,"^",4)'=GRP) K DA S DA=SLCTN,DIK="^IBE("_FROMFILE_"," D IX^DIK K DIK Q
|
---|
12 | S NAME=$P(NODE,"^",1),$P(NODE,"^",3)=NEWLIST,$P(NODE,"^",4)=NEWGRP
|
---|
13 | Q:NAME=""
|
---|
14 | K DIC,DD,DINUM,DO S DIC="^IBE("_TOFILE_",",X=NAME,DIC(0)=""
|
---|
15 | D FILE^DICN K DIC,DIE,DA
|
---|
16 | S NEWSLCTN=$S(+Y<0:"",1:+Y)
|
---|
17 | Q:'NEWSLCTN
|
---|
18 | S ^IBE(TOFILE,NEWSLCTN,0)=NODE
|
---|
19 | ;
|
---|
20 | ; -- now copy the subcolumn value multiple
|
---|
21 | ; -- When copying selections but not same list definition (i.e.
|
---|
22 | ; when copying selections from one list to another)
|
---|
23 | ; find old sub columns, in 357.2 for list
|
---|
24 | ; find and match to new sub columns in 357.2 for new list
|
---|
25 | ;
|
---|
26 | S (SC,CNT,LAST)=0
|
---|
27 | ;S NODE=$G(^IBE(FROMFILE,SLCTN,1,0)) I NODE'="" S ^IBE(TOFILE,NEWSLCTN,1,0)=NODE
|
---|
28 | F S SC=$O(^IBE(FROMFILE,SLCTN,1,SC)) Q:'SC S NODE=$G(^IBE(FROMFILE,SLCTN,1,SC,0)) D:$D(IBDFCPYF) S:NODE'="" ^IBE(TOFILE,NEWSLCTN,1,+NODE,0)=NODE,CNT=CNT+1,LAST=+NODE
|
---|
29 | .N K,IBDFI
|
---|
30 | .S K=0,IBDFI=+NODE
|
---|
31 | .Q:$G(IBDFNEW(IBDFI))=$G(IBDFOLD(IBDFI))
|
---|
32 | .F S K=$O(IBDFNEW(K)) Q:K="" I IBDFNEW(K)=$G(IBDFOLD(+IBDFI)) S $P(NODE,"^",1)=K,NODE=NODE Q
|
---|
33 | .Q
|
---|
34 | S ^IBE(TOFILE,NEWSLCTN,1,0)=$S(TOFILE=357.3:"^357.31IA^",1:"^358.31IA^")_$G(LAST)_"^"_CNT
|
---|
35 | ; -- now copy 2 node if it exists
|
---|
36 | S NODE=$G(^IBE(FROMFILE,SLCTN,2))
|
---|
37 | I NODE'="" S ^IBE(TOFILE,NEWSLCTN,2)=NODE
|
---|
38 | ;
|
---|
39 | ; -- now copy 3 node if it exists (CPT MODIFIERS)
|
---|
40 | ;
|
---|
41 | I $D(^IBE(FROMFILE,SLCTN,3)) D
|
---|
42 | . S ^IBE(TOFILE,NEWSLCTN,3,0)=^IBE(FROMFILE,SLCTN,3,0)
|
---|
43 | . F I=0:0 S I=$O(^IBE(FROMFILE,SLCTN,3,I)) Q:'I D
|
---|
44 | .. S:$D(^IBE(FROMFILE,SLCTN,3,I,0)) ^IBE(TOFILE,NEWSLCTN,3,I,0)=^(0)
|
---|
45 | ;
|
---|
46 | ; -- now re-index file entry
|
---|
47 | ;
|
---|
48 | K DIK,DA S DIK="^IBE("_TOFILE_",",DA=NEWSLCTN
|
---|
49 | D IX1^DIK
|
---|
50 | K DIK,DA
|
---|
51 | Q
|
---|
52 | ;
|
---|
53 | GETMA(MA,FROMFILE,TOFILE) ;copys marking area=ma from file=FROMFILE to file=TOFILE if it does not already exist
|
---|
54 | ;returns the ien of the marking area existing in TOFILE
|
---|
55 | Q:($G(FROMFILE)'=357.91)&($G(FROMFILE)'=358.91) ""
|
---|
56 | Q:($G(TOFILE)'=357.91)&($G(TOFILE)'=358.91) ""
|
---|
57 | Q:'$G(MA) ""
|
---|
58 | Q:FROMFILE=TOFILE MA ;files are the same!
|
---|
59 | N NODE,NAME,NEWMA
|
---|
60 | S NEWMA=""
|
---|
61 | S NODE=$G(^IBE(FROMFILE,MA,0)) Q:NODE="" ""
|
---|
62 | S NAME=$P(NODE,"^",1)
|
---|
63 | Q:NAME="" ""
|
---|
64 | S NEWMA=$O(^IBE(TOFILE,"B",NAME,0)) Q:NEWMA NEWMA ;quit if it already exists
|
---|
65 | K DIC,DO,DINUM,DD S DIC="^IBE("_TOFILE_",",X=NAME,DIC(0)=""
|
---|
66 | D FILE^DICN K DIC,DIE,DA
|
---|
67 | S NEWMA=$S(+Y<0:"",1:+Y)
|
---|
68 | Q:'NEWMA ""
|
---|
69 | S ^IBE(TOFILE,NEWMA,0)=NODE
|
---|
70 | K DIK,DA S DIK="^IBE("_TOFILE_",",DA=NEWMA
|
---|
71 | D IX1^DIK K DIK,DA
|
---|
72 | Q NEWMA
|
---|
73 | ;
|
---|
74 | GETPI(PI,FROMFILE,TOFILE) ;copies the package interface=PI from file=FROMFILE to file=TOFILE if it doesn't already exist
|
---|
75 | ;returns the ien of the package interface in the TOFILE
|
---|
76 | Q:($G(FROMFILE)'=357.6)&($G(FROMFILE)'=358.6) ""
|
---|
77 | Q:($G(TOFILE)'=357.6)&($G(TOFILE)'=358.6) ""
|
---|
78 | Q:'$G(PI) ""
|
---|
79 | Q:FROMFILE=TOFILE PI
|
---|
80 | N NODE,NEWPI,SUB1,SUB2,RTN,ENTRYPT,TYPE
|
---|
81 | S NEWPI=""
|
---|
82 | S NODE=$G(^IBE(FROMFILE,PI,0)) Q:NODE="" ""
|
---|
83 | S NAME=$P(NODE,"^"),ENTRYPT=$P(NODE,"^",2),RTN=$P(NODE,"^",3),TYPE=$P(NODE,"^",6)
|
---|
84 | S NEWPI=$$LOOKUP(NAME,RTN,ENTRYPT,TOFILE,TYPE)
|
---|
85 | Q:NEWPI NEWPI ;quit if copy is not needed
|
---|
86 | K DIC,DO,DINUM,DD S DIC="^IBE("_TOFILE_",",X=$P(NODE,"^"),DIC(0)=""
|
---|
87 | Q:X="" "" ;corrupted data!
|
---|
88 | D FILE^DICN K DIC,DIE,DA
|
---|
89 | S NEWPI=$S(+Y<0:"",1:+Y)
|
---|
90 | Q:'NEWPI ""
|
---|
91 | ;
|
---|
92 | ;for display or selection interfaces, if the entry point does not exist the new package interface should be marked as unavailable
|
---|
93 | I (TYPE=2)!(TYPE=3) D
|
---|
94 | .I RTN="" S $P(NODE,"^",9)=0 Q
|
---|
95 | .I RTN'="" D
|
---|
96 | ..I ENTRYPT]"" I '$L($T(@ENTRYPT^@RTN)) S $P(NODE,"^",9)=0
|
---|
97 | ..I ENTRYPT="" I '$L($T(^@RTN)) S $P(NODE,"^",9)=0
|
---|
98 | ;
|
---|
99 | S ^IBE(TOFILE,NEWPI,0)=NODE
|
---|
100 | S:$P(NODE,"^",13) $P(NODE,"^",13)=$$GETPI($P(NODE,"^",13),$S(FROMFILE[358:358.6,1:357.6),$S(TOFILE[358:358.6,1:357.6))
|
---|
101 | S ^IBE(TOFILE,NEWPI,0)=NODE
|
---|
102 | F SUB1=2,3,4,5,8,9,10,11,12,14,17,18,19,20,21 S NODE=$G(^IBE(FROMFILE,PI,SUB1)) I NODE'="" S ^IBE(TOFILE,NEWPI,SUB1)=NODE
|
---|
103 | S NODE=$G(^IBE(FROMFILE,PI,16)) I NODE'="" D
|
---|
104 | .N TYPEDATA
|
---|
105 | .S TYPEDATA=$P(NODE,"^",2)
|
---|
106 | .I TYPEDATA S $P(NODE,"^",2)=$$GETADE(TYPEDATA,$S(FROMFILE[358:358.99,1:359.1),$S(TOFILE[358:358.99,1:359.1))
|
---|
107 | .S TYPEDATA=$P(NODE,"^",6)
|
---|
108 | .I TYPEDATA S $P(NODE,"^",6)=$$GETADE(TYPEDATA,$S(FROMFILE[358:358.99,1:359.1),$S(TOFILE[358:358.99,1:359.1))
|
---|
109 | .S ^IBE(TOFILE,NEWPI,16)=NODE
|
---|
110 | F SUB1=1,6,7,15 S NODE=$G(^IBE(FROMFILE,PI,SUB1,0)) D
|
---|
111 | .I NODE'="" S ^IBE(TOFILE,NEWPI,SUB1,0)=NODE S SUB2=0 F S SUB2=$O(^IBE(FROMFILE,PI,SUB1,SUB2)) Q:'SUB2 S NODE=$G(^IBE(FROMFILE,PI,SUB1,SUB2,0)) I NODE'="" S ^IBE(TOFILE,NEWPI,SUB1,SUB2,0)=NODE
|
---|
112 | ;
|
---|
113 | D CPYQLFRS(FROMFILE,PI,TOFILE,NEWPI)
|
---|
114 | ;
|
---|
115 | K DIK,DA S DIK="^IBE("_TOFILE_",",DA=NEWPI
|
---|
116 | D IX1^DIK K DIK,DA
|
---|
117 | Q NEWPI
|
---|
118 | ;
|
---|
119 | CPYQLFRS(FROMFILE,PI,TOFILE,NEWPI) ;copy allowable qualifiers from the package interface=PI in NEWPI to the package interface=NEWPI in TOFILE
|
---|
120 | ;
|
---|
121 | N NODE,SUB,VARPTR
|
---|
122 | K ^IBE(TOFILE,NEWPI,13)
|
---|
123 | S NODE=$G(^IBE(FROMFILE,PI,13,0)) I NODE'="" S ^IBE(TOFILE,NEWPI,13,0)=NODE S SUB=0 F S SUB=$O(^IBE(FROMFILE,PI,13,SUB)) Q:'SUB D
|
---|
124 | .S NODE=$G(^IBE(FROMFILE,PI,13,SUB,0)),VARPTR=$P(NODE,"^") I +VARPTR D I +VARPTR S $P(NODE,"^")=VARPTR,^IBE(TOFILE,NEWPI,13,SUB,0)=NODE
|
---|
125 | ..I VARPTR["IBE" S $P(VARPTR,";")=$$GETADE(+VARPTR,$S(FROMFILE[358:358.99,1:359.1),$S(TOFILE[358:358.99,1:359.1)),$P(VARPTR,"(",2)=$S(TOFILE[358:358.99,1:359.1)_"," Q
|
---|
126 | ..I VARPTR["IBD" S $P(VARPTR,";")=$$GETQLFR(+VARPTR,$S(FROMFILE[358:358.98,1:357.98),$S(TOFILE[358:358.98,1:357.98)),$P(VARPTR,"(",2)=$S(TOFILE[358:358.98,1:357.98)_","
|
---|
127 | Q
|
---|
128 | ;
|
---|
129 | LOOKUP(NAME,RTN,ENTRYPT,TOFILE,TYPE) ;return 1 if the package interface already exists in TOFILE, 0 otherwise
|
---|
130 | N PI,LOOKNODE,QUIT
|
---|
131 | Q:NAME="" ""
|
---|
132 | S (QUIT,PI)=0 F S PI=$O(^IBE(TOFILE,"B",$E(NAME,1,30),PI)) Q:'PI S LOOKNODE=$G(^IBE(TOFILE,PI,0)) I LOOKNODE'="" D Q:QUIT
|
---|
133 | .I NAME=$P(LOOKNODE,"^"),RTN=$P(LOOKNODE,"^",3),ENTRYPT=$P(LOOKNODE,"^",2),TYPE=$P(LOOKNODE,"^",6) S QUIT=1 Q ;matches!
|
---|
134 | Q PI
|
---|
135 | ;
|
---|
136 | GETQLFR(QLFR,FROMFILE,TOFILE) ;copys qualifier=QLFR from file=FROMFILE to file=TOFILE if it does not already exist
|
---|
137 | ;returns the ien of the qualifier existing in TOFILE
|
---|
138 | Q:($G(FROMFILE)'=357.98)&($G(FROMFILE)'=358.98) ""
|
---|
139 | Q:($G(TOFILE)'=357.98)&($G(TOFILE)'=358.98) ""
|
---|
140 | Q:'$G(QLFR) ""
|
---|
141 | Q:FROMFILE=TOFILE QLFR ;files are the same!
|
---|
142 | N NODE,NAME,NEWQLFR
|
---|
143 | S NEWQLFR=""
|
---|
144 | S NODE=$G(^IBD(FROMFILE,QLFR,0)) Q:NODE="" ""
|
---|
145 | S NAME=$P(NODE,"^",1)
|
---|
146 | Q:NAME="" ""
|
---|
147 | ;does it already exist?
|
---|
148 | S NEWQLFR=0 F S NEWQLFR=$O(^IBD(TOFILE,"B",$E(NAME,1,30),NEWQLFR)) Q:'NEWQLFR Q:$P($G(^IBD(TOFILE,NEWQLFR,0)),"^")=NAME
|
---|
149 | Q:NEWQLFR NEWQLFR ;quit if it already exists
|
---|
150 | K DIC,DO,DINUM,DD S DIC="^IBD("_TOFILE_",",X=NAME,DIC(0)=""
|
---|
151 | D FILE^DICN K DIC,DIE,DA
|
---|
152 | S NEWQLFR=$S(+Y<0:"",1:+Y)
|
---|
153 | Q:'NEWQLFR ""
|
---|
154 | S ^IBD(TOFILE,NEWQLFR,0)=NODE
|
---|
155 | K DIK,DA S DIK="^IBD("_TOFILE_",",DA=NEWQLFR
|
---|
156 | D IX1^DIK K DIK,DA
|
---|
157 | Q NEWQLFR
|
---|
158 | ;
|
---|
159 | GETADE(ADE,FROMFILE,TOFILE) ;copys AICS Data Element=ADE from file=FROMFILE to file=TOFILE if it does not already exist
|
---|
160 | ;returns the ien of the qualifier existing in TOFILE
|
---|
161 | Q:($G(FROMFILE)'=359.1)&($G(FROMFILE)'=358.99) ""
|
---|
162 | Q:($G(TOFILE)'=359.1)&($G(TOFILE)'=358.99) ""
|
---|
163 | Q:'$G(ADE) ""
|
---|
164 | Q:FROMFILE=TOFILE ADE ;files are the same!
|
---|
165 | N NODE,NAME,NEWADE,SUB
|
---|
166 | S NEWADE=""
|
---|
167 | S NODE=$G(^IBE(FROMFILE,ADE,0)) Q:NODE="" ""
|
---|
168 | S NAME=$P(NODE,"^",1)
|
---|
169 | Q:NAME="" ""
|
---|
170 | S NEWADE=$O(^IBE(TOFILE,"B",NAME,0)) Q:NEWADE NEWADE ;quit if it already exists
|
---|
171 | K DIC,DO,DINUM,DD S DIC="^IBE("_TOFILE_",",X=NAME,DIC(0)=""
|
---|
172 | D FILE^DICN K DIC,DIE,DA
|
---|
173 | S NEWADE=$S(+Y<0:"",1:+Y)
|
---|
174 | Q:'NEWADE ""
|
---|
175 | S ^IBE(TOFILE,NEWADE,0)=NODE
|
---|
176 | ;
|
---|
177 | ; -- 9/28/95 add 10 node to be moved for moved fields
|
---|
178 | F SUB=1,2,3,10 S NODE=$G(^IBE(FROMFILE,ADE,SUB)) I NODE'="" S ^IBE(TOFILE,NEWADE,SUB)=NODE
|
---|
179 | K DIK,DA S DIK="^IBE("_TOFILE_",",DA=NEWADE
|
---|
180 | D IX1^DIK K DIK,DA
|
---|
181 | Q NEWADE
|
---|