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