1 | VAFCDD01 ;ALB/JRP,LTL-DATA DICTIONARY UTILITIES ;05-SEP-1996
|
---|
2 | ;;5.3;Registration;**91,149**;Jun 06, 1996
|
---|
3 | AVAFC(DFN) ;AVAFC* cross reference for PATIENT file (#2)
|
---|
4 | ;
|
---|
5 | ;Input : IFN - Pointer to entry in PATIENT file (#2)
|
---|
6 | ;Output : None
|
---|
7 | ; VAFCFLG will be set to 1 if the cross reference is
|
---|
8 | ; not executed because the change is being made from
|
---|
9 | ; within the Registration process. This notifies
|
---|
10 | ; Registration that a change was made and that this
|
---|
11 | ; cross reference should be executed if the Registration
|
---|
12 | ; process is aborted.
|
---|
13 | ;
|
---|
14 | ;Notes : The AVAFC* cross references are used to remember that
|
---|
15 | ; changes were made to the PATIENT file (#2) outside of
|
---|
16 | ; the Registration process. Execution of this cross
|
---|
17 | ; reference will create an entry in the ADT/HL7 PIVOT
|
---|
18 | ; file (#391.71) and mark it as requiring transmission
|
---|
19 | ; of an HL7 ADT-A08 message.
|
---|
20 | ;
|
---|
21 | ; : Execution of this cross reference can be prevented by
|
---|
22 | ; setting the local variables: VAFCA08 equal to 1
|
---|
23 | ; VAFHCA08 equal to 1
|
---|
24 | ;
|
---|
25 | ; : If only one of the CA08 variables is set to 1 an entry
|
---|
26 | ; will be made in the pivot file (#391.71) but the
|
---|
27 | ; corresponding transmission flag will not be set. In this
|
---|
28 | ; case setting VAFCA08=1 will prevent the REQUIRES TRANSMISSION
|
---|
29 | ; flag from being set and setting VAFHCA08=1 will prevent the
|
---|
30 | ; TRANSMITTED-REQUIRES TRANSMISSION flag from being set.
|
---|
31 | ; This allows control for sending HL7 and/or HL7v2.3
|
---|
32 | ;
|
---|
33 | ;Check input
|
---|
34 | I +$G(DFN),$D(^DPT(DFN,0))
|
---|
35 | E Q
|
---|
36 | ;quit if re-indexing
|
---|
37 | Q:$D(DIU(0))
|
---|
38 | ;
|
---|
39 | N VARPTR,PIVOTNUM ;Declare variables
|
---|
40 | ;
|
---|
41 | DO K VAFCF ; do HL7 V2.3 MESSAGING
|
---|
42 | .;CHECK TURNOFF FLAG
|
---|
43 | .Q:$D(VAFCA08)
|
---|
44 | .;IF SEND HL7 V2.3 MESSAGES IN MAS PARAMETER FILE IS SET
|
---|
45 | .;TO SEND/SUSPEND THEN DO IT, ELSE QUIT
|
---|
46 | .I '$P($$SEND^VAFHUTL(),"^",2) Q
|
---|
47 | .;IF in Registration option, save fields edited
|
---|
48 | .I $$REG() D Q
|
---|
49 | . . Q:$G(VAFCF)=""
|
---|
50 | . . S VAFCFLDS(VAFCF)=""
|
---|
51 | .;IF NOT IN REGISTRATION DO THIS
|
---|
52 | .D PVT4A08(DFN)
|
---|
53 | .I PIVOTNUM<0 Q
|
---|
54 | .; set need to transmit flag
|
---|
55 | .D XMITFLAG(0,PIVOTNUM)
|
---|
56 | ;
|
---|
57 | DO ; do HL7 V2.2 MESSAGING
|
---|
58 | .Q:$G(VAFHCA08)
|
---|
59 | .Q:$G(VAFCFLG)
|
---|
60 | .I $$EN^VAFHREG() S VAFCFLG=1 Q
|
---|
61 | .I '$$SEND^VAFHUTL() Q
|
---|
62 | .I +$G(PIVOTNUM)<0 Q ; its already been called and failed quit
|
---|
63 | .I '$G(PIVOTNUM) D PVT4A08(DFN) ; set ac xref and pivot
|
---|
64 | .I PIVOTNUM<0 Q
|
---|
65 | .; set requires transmission-Yes flag
|
---|
66 | .D SETTFLAG(0,PIVOTNUM)
|
---|
67 | .;done
|
---|
68 | QUIT
|
---|
69 | ;
|
---|
70 | PVT4A08(DFN) ;Create entry in ADT/HL7 PIVOT file for an ADT-A08 event
|
---|
71 | ; and mark it for transmission
|
---|
72 | ;
|
---|
73 | ;Input : IFN - Pointer to entry in PATIENT file (#2)
|
---|
74 | ;Output : None
|
---|
75 | ;Notes : There are no checks to determine if the entry should be
|
---|
76 | ; created (other than input of a valid DFN)
|
---|
77 | ;
|
---|
78 | ;Check input
|
---|
79 | I +$G(DFN),$D(^DPT(DFN,0))
|
---|
80 | E QUIT
|
---|
81 | ;Declare variables don't new for call from top
|
---|
82 | ;N VARPTR,PIVOTNUM
|
---|
83 | ;Set variable pointer used by ADT/HL7 PIVOT file
|
---|
84 | S VARPTR=DFN_";DPT("
|
---|
85 | ;Create entry
|
---|
86 | S PIVOTNUM=+$$PIVNW^VAFHPIVT(DFN,$P(DT,"."),4,VARPTR)
|
---|
87 | Q:(PIVOTNUM<0)
|
---|
88 | ;Mark entry as requires transmission
|
---|
89 | I $P($$SEND^VAFHUTL(),"^",2) D XMITFLAG(0,PIVOTNUM)
|
---|
90 | ;Mark entry as transmitted field YES
|
---|
91 | I $G(VAFCFLG),$$SEND^VAFHUTL() D SETTFLAG(0,PIVOTNUM)
|
---|
92 | ;Done
|
---|
93 | Q
|
---|
94 | ;
|
---|
95 | PROCESS() ;
|
---|
96 | ;This call simply processes the array elements in the VAFCFLDS
|
---|
97 | ;variable into a string
|
---|
98 | Q:'$D(VAFCFLDS) -1
|
---|
99 | N INDEX,RETURN S INDEX="",RETURN=""
|
---|
100 | F S INDEX=$O(VAFCFLDS(INDEX)) Q:INDEX="" D
|
---|
101 | . S RETURN=RETURN_INDEX
|
---|
102 | Q:$G(RETURN)="" -1
|
---|
103 | Q RETURN
|
---|
104 | ;
|
---|
105 | REGEDIT(PIVOTNUM,FIELDS) ;
|
---|
106 | ;This call is used to generate an HL7 VERSION 2.3 A04 or A08 message
|
---|
107 | ;from the pivot file the A04 is generated from DGREG00 when a
|
---|
108 | ;Registration is known to have been completed. The A08 message
|
---|
109 | ;is generated from DGREG0 when the Registration option was used
|
---|
110 | ;to edit some fields, but the Registration was never completed.
|
---|
111 | ;FIELDS variable contains the fields edited during the session.
|
---|
112 | S DIE="391.71",DA=PIVOTNUM
|
---|
113 | S DR="2.1///^S X=FIELDS"
|
---|
114 | D ^DIE
|
---|
115 | K DIE,DA,DR
|
---|
116 | Q
|
---|
117 | TRANSMIT(PIVOTNUM) ;
|
---|
118 | ;This call is used to simply set the 'Requires Transmission'
|
---|
119 | ;flag in the pivot file
|
---|
120 | S DIE="391.71",DA=PIVOTNUM
|
---|
121 | S DR=".08///^S X=1"
|
---|
122 | D ^DIE
|
---|
123 | K DIE,DA,DR
|
---|
124 | Q
|
---|
125 | ;
|
---|
126 | MESSAGE(PIVOTPTR,NUMBER) ;
|
---|
127 | ;This tag stuffs the message id from hl7 into pivot file
|
---|
128 | S DIE="391.71",DA=PIVOTPTR
|
---|
129 | S DR="1.1///^S X=NUMBER"
|
---|
130 | D ^DIE
|
---|
131 | K DIE,DA,DR
|
---|
132 | Q
|
---|
133 | ;
|
---|
134 | REG() ;
|
---|
135 | ;this tag looks at what option the user is in at the time
|
---|
136 | ;
|
---|
137 | I $P($G(XQY0),"^")="DG REGISTER PATIENT" Q 1
|
---|
138 | I $P($G(XQY0),"^")="DGRPT 10-10T REGISTRATION" Q 1
|
---|
139 | Q 0
|
---|
140 | ;
|
---|
141 | HL7A08 ;
|
---|
142 | I $D(VAFHMRG) D KILL^VAFHUTL2(DFN,VAFHBEF)
|
---|
143 | ;Registration process was aborted and changes were made
|
---|
144 | ;to key demographic data. Create an HL7 V2.3 entry in
|
---|
145 | ;the ADT/HL PIVOT file so that demographic changes will be
|
---|
146 | ;broadcast. VAFCFLDS is set in routine VAFCDD01. It contains the
|
---|
147 | ;fields that were edited.
|
---|
148 | I $D(VAFCFLDS) D
|
---|
149 | . N PIVOTNUM,IEN,PTR
|
---|
150 | . S PTR=DFN_";DPT("
|
---|
151 | . S PIVOTNUM=+$$PIVNW^VAFHPIVT(DFN,DT,4,PTR)
|
---|
152 | . Q:PIVOTNUM'>0
|
---|
153 | . S IEN=$O(^VAT(391.71,"D",PIVOTNUM,""))
|
---|
154 | . Q:IEN'>0
|
---|
155 | . S VAFCFLDS=$$PROCESS^VAFCDD01()
|
---|
156 | . I VAFCFLDS'=-1 D
|
---|
157 | . . D REGEDIT^VAFCDD01(IEN,VAFCFLDS)
|
---|
158 | . . D TRANSMIT^VAFCDD01(IEN)
|
---|
159 | K VAFCFLDS
|
---|
160 | Q
|
---|
161 | ;
|
---|
162 | SECA08(DFN) ;PUT ENTRY IN PIVOT FILE WHEN USER FLAGS A PT AS SENSITIVE IN
|
---|
163 | ;FILE 38.1 THIS IS TRIGGERED OUT OF ROUTINE DGSEC1
|
---|
164 | N PIVOTNUM,IEN,PTR
|
---|
165 | S PTR=DFN_";DPT("
|
---|
166 | S PIVOTNUM=+$$PIVNW^VAFHPIVT(DFN,DT,4,PTR)
|
---|
167 | Q:PIVOTNUM'>0
|
---|
168 | S IEN=$O(^VAT(391.71,"D",PIVOTNUM,""))
|
---|
169 | Q:IEN'>0
|
---|
170 | ;SET EVENT CODE FIELD TO 97 INDICATING A SENSITIVITY UPDATE
|
---|
171 | S DIE="391.71",DA=IEN
|
---|
172 | S DR=".1///^S X=97"
|
---|
173 | D ^DIE
|
---|
174 | K DIE,DA,DR
|
---|
175 | D TRANSMIT^VAFCDD01(IEN)
|
---|
176 | Q
|
---|
177 | ;
|
---|
178 | XMITFLAG(PIVOTPTR,PIVOTNUM,TURNOFF) ;Turn transmission flag for entry
|
---|
179 | ; in ADT/HL7 PIVOT file on/off
|
---|
180 | ;
|
---|
181 | ;Input : PIVOTPTR - Pointer to entry in ADT/HL7 PIVOT file (#391.71)
|
---|
182 | ; - Use this parameter if the entry number is known
|
---|
183 | ; - Not required if using PIVOTNUM parameter
|
---|
184 | ; - Use of this parameter takes precedence over use
|
---|
185 | ; the PIVOTNUM parameter
|
---|
186 | ; PIVOTNUM - PIVOT NUMBER value (field #.02) for entry
|
---|
187 | ; in ADT/HL7 PIVOT file (#391.71)
|
---|
188 | ; - Use this parameter if the pivot number is known
|
---|
189 | ; - Not required if using PIVOTPTR parameter
|
---|
190 | ; TURNOFF - Denotes if REQUIRES TRANSMISSION field (#.08) should
|
---|
191 | ; be turned on (set to 'YES') or off (set to 'NO')
|
---|
192 | ; 1 = Turns transmission off
|
---|
193 | ; 0 = Turns transmission on (default)
|
---|
194 | ;Output : None
|
---|
195 | ;
|
---|
196 | ;Check input
|
---|
197 | S PIVOTPTR=+$G(PIVOTPTR)
|
---|
198 | S PIVOTNUM=+$G(PIVOTNUM)
|
---|
199 | Q:(('PIVOTPTR)&('PIVOTNUM))
|
---|
200 | S TURNOFF=+$G(TURNOFF)
|
---|
201 | ;Declare variables
|
---|
202 | N VALUE,NODE,XREFNUM,DA,X
|
---|
203 | ;Passed pointer - validate
|
---|
204 | I (PIVOTPTR) Q:('$D(^VAT(391.71,PIVOTPTR,0)))
|
---|
205 | ;Passed pivot number - convert to pointer
|
---|
206 | I ('PIVOTPTR) S PIVOTPTR=+$O(^VAT(391.71,"D",PIVOTNUM,0)) Q:('PIVOTPTR)
|
---|
207 | ;Set FileMan variables
|
---|
208 | S DA=PIVOTPTR
|
---|
209 | S X='TURNOFF
|
---|
210 | ;If already transmitted, empty field(s) edited, can't do 8th piece ""
|
---|
211 | ;I $G(VAFCF),'$P($G(^VAT(391.71,DA,0)),U,8),$G(^VAT(391.71,DA,2)) S $P(^VAT(391.71,DA,2),U)=""
|
---|
212 | ;Hard set field
|
---|
213 | S $P(^VAT(391.71,DA,0),"^",8)=X
|
---|
214 | ;Hard set fields edited
|
---|
215 | S:$G(VAFCF)&($P($G(^VAT(391.71,DA,2)),U)'[$G(VAFCF)) $P(^VAT(391.71,DA,2),U)=$P($G(^VAT(391.71,DA,2)),U)_$G(VAFCF)
|
---|
216 | ;Execute cross references
|
---|
217 | S XREFNUM=0
|
---|
218 | F S XREFNUM=+$O(^DD(391.71,.08,1,XREFNUM)) Q:('XREFNUM) D
|
---|
219 | .;Execute kill logic
|
---|
220 | .S NODE=$G(^DD(391.71,.08,1,XREFNUM,2))
|
---|
221 | .I (NODE'="") X NODE
|
---|
222 | .;Execute set logic
|
---|
223 | .S NODE=$G(^DD(391.71,.08,1,XREFNUM,1))
|
---|
224 | .I (NODE'="") X NODE
|
---|
225 | Q
|
---|
226 | ;
|
---|
227 | SETTFLAG(PIVOTPTR,PIVOTNUM,TURNOFF) ;Turn transmission flag for entry
|
---|
228 | ; in ADT/HL7 PIVOT file on/off
|
---|
229 | ;
|
---|
230 | ;Input : PIVOTPTR - Pointer to entry in ADT/HL7 PIVOT file (#391.71)
|
---|
231 | ; - Use this parameter if the entry number is known
|
---|
232 | ; - Not required if using PIVOTNUM parameter
|
---|
233 | ; - Use of this parameter takes precedence over use
|
---|
234 | ; the PIVOTNUM parameter
|
---|
235 | ; PIVOTNUM - PIVOT NUMBER value (field #.02) for entry
|
---|
236 | ; in ADT/HL7 PIVOT file (#391.71)
|
---|
237 | ; - Use this parameter if the pivot number is known
|
---|
238 | ; - Not required if using PIVOTPTR parameter
|
---|
239 | ; TURNOFF - Denotes if TRANSMITTED field (#.06) should
|
---|
240 | ; be turned on (set to 'YES') or off (set to 'NO')
|
---|
241 | ; 1 = Turns transmission off
|
---|
242 | ; 0 = Turns transmission on (default)
|
---|
243 | ;Output : None
|
---|
244 | ;
|
---|
245 | ;Check input
|
---|
246 | S PIVOTPTR=+$G(PIVOTPTR)
|
---|
247 | S PIVOTNUM=+$G(PIVOTNUM)
|
---|
248 | Q:(('PIVOTPTR)&('PIVOTNUM))
|
---|
249 | S TURNOFF=+$G(TURNOFF)
|
---|
250 | ;Declare variables
|
---|
251 | N VALUE,NODE,XREFNUM,DA,X
|
---|
252 | ;Passed pointer - validate
|
---|
253 | I (PIVOTPTR) Q:('$D(^VAT(391.71,PIVOTPTR,0)))
|
---|
254 | ;Passed pivot number - convert to pointer
|
---|
255 | I ('PIVOTPTR) S PIVOTPTR=+$O(^VAT(391.71,"D",PIVOTNUM,0)) Q:('PIVOTPTR)
|
---|
256 | ;Set FileMan variables
|
---|
257 | S DA=PIVOTPTR
|
---|
258 | S X='TURNOFF
|
---|
259 | ;Hard set field
|
---|
260 | S $P(^VAT(391.71,DA,0),"^",6)=X
|
---|
261 | ;Execute cross references
|
---|
262 | S XREFNUM=0
|
---|
263 | F S XREFNUM=+$O(^DD(391.71,.06,1,XREFNUM)) Q:('XREFNUM) D
|
---|
264 | .;Execute kill logic
|
---|
265 | .S NODE=$G(^DD(391.71,.06,1,XREFNUM,2))
|
---|
266 | .I (NODE'="") X NODE
|
---|
267 | .;Execute set logic
|
---|
268 | .S NODE=$G(^DD(391.71,.06,1,XREFNUM,1))
|
---|
269 | .I (NODE'="") X NODE
|
---|
270 | Q
|
---|