[613] | 1 | VAFCMGA ;ALB/JRP,LTL-DEMOGRAPHIC MERGE SCREEN ACTIONS ;31-OCT-96
|
---|
| 2 | ;;5.3;Registration;**149,477,479**;Aug 13, 1993
|
---|
| 3 | ;
|
---|
| 4 | ;NOTE: The VAFCMGA* routines contain line tags used to implement
|
---|
| 5 | ; the actions of a List Manager user interface. All line
|
---|
| 6 | ; tags assume that the following variables and arrays are
|
---|
| 7 | ; defined.
|
---|
| 8 | ;
|
---|
| 9 | ;Input : VAFCDFN - Pointer to entry in PATIENT file (#2) to merge
|
---|
| 10 | ; data into
|
---|
| 11 | ; VAFCARR - Array contain data to merge (full global reference)
|
---|
| 12 | ; VAFCARR() should be set as follows:
|
---|
| 13 | ; VAFCARR(File,Field) = Value
|
---|
| 14 | ; Where File = File number Value is from
|
---|
| 15 | ; Field = Field number Value is from
|
---|
| 16 | ; Value = Info to merge
|
---|
| 17 | ; Notes: Dates must be in FileMan format
|
---|
| 18 | ; : Special considerations for Value
|
---|
| 19 | ; "@" - Displays <DELETE> and deletes
|
---|
| 20 | ; local value if merged
|
---|
| 21 | ; "^text" - Displays text and ignores
|
---|
| 22 | ; field if merged
|
---|
| 23 | ; NULL - Displays <UNSPECIFIED> and
|
---|
| 24 | ; ignores field if merged
|
---|
| 25 | ; Doesn't exist - Displays <UNSPECIFIED>
|
---|
| 26 | ; and ignores field
|
---|
| 27 | ; if merged
|
---|
| 28 | ; VAFCFROM - Text denoting where merge data cam from (1-35)
|
---|
| 29 | ; VAFCEVDT - Date/time merge data was instantiated (FileMan)
|
---|
| 30 | ; All variables set by List Manager Interface
|
---|
| 31 | ; Display area and variables required List Manager interface
|
---|
| 32 | ; Display
|
---|
| 33 | ; VALMAR(Line,0) = Line of text in display
|
---|
| 34 | ; Indexes
|
---|
| 35 | ; VALMAR("IDX",Line,Entry) = ""
|
---|
| 36 | ; VALMAR("E2F",Entry,N) = File^Field
|
---|
| 37 | ; N => Allows for multiple fields per entry (starts with 1)
|
---|
| 38 | ; VALMAR("E2G",Entry) = Group entry is contained in
|
---|
| 39 | ; VALMAR("GRP",Group) = First line of group in display
|
---|
| 40 | ; Note: The E2F and E2G indexes are only set if the data
|
---|
| 41 | ; to merge does not match the local data
|
---|
| 42 | ;
|
---|
| 43 | MRGALL ;Merge all differences
|
---|
| 44 | ;
|
---|
| 45 | ;Input : See above note on input variables
|
---|
| 46 | ;Output : VALMAR() array will be rebuilt accordingly
|
---|
| 47 | ;
|
---|
| 48 | ;Declare variables
|
---|
| 49 | N VAFCDOTS,ENTRY,REBUILD,FILE,FIELD,VALUE,REPEAT
|
---|
| 50 | N TMP,IENS,FDAROOT,MSGROOT,QUOTE
|
---|
| 51 | S FDAROOT="^TMP(""VAFC-MERGE-UPLOAD"","_$J_",""FDA"")"
|
---|
| 52 | S MSGROOT="^TMP(""VAFC-MERGE-UPLOAD"","_$J_",""MSG"")"
|
---|
| 53 | S QUOTE=$C(34)
|
---|
| 54 | S IENS=VAFCDFN_","
|
---|
| 55 | K @FDAROOT,@MSGROOT
|
---|
| 56 | ;Build array of differences to merge
|
---|
| 57 | N DGNOFDEL S DGNOFDEL=1 ;**477 stop NOK Name x-ref from firing.
|
---|
| 58 | NEW EASZIPLK S EASZIPLK=1 ;**477 zipcode lookup for GMT
|
---|
| 59 | S ENTRY=""
|
---|
| 60 | F S ENTRY=$O(@VALMAR@("E2F",ENTRY)) Q:(ENTRY="") D
|
---|
| 61 | .;Remember which group(s) to rebuild
|
---|
| 62 | .S TMP=$G(@VALMAR@("E2G",ENTRY))
|
---|
| 63 | .S:(TMP'="") REBUILD(TMP)=""
|
---|
| 64 | .;Loop through list of fields contained in the entry
|
---|
| 65 | .S REPEAT=""
|
---|
| 66 | .F S REPEAT=$O(@VALMAR@("E2F",ENTRY,REPEAT)) Q:(REPEAT="") D
|
---|
| 67 | ..S TMP=$G(@VALMAR@("E2F",ENTRY,REPEAT))
|
---|
| 68 | ..S FILE=+$P(TMP,"^",1)
|
---|
| 69 | ..S FIELD=+$P(TMP,"^",2)
|
---|
| 70 | ..;Get remote value
|
---|
| 71 | ..S VALUE=$G(@VAFCARR@(FILE,FIELD))
|
---|
| 72 | ..;Screen for ignore conditions
|
---|
| 73 | ..I $P(VALUE,U,3) S VALMSG=$S($G(VALMSG)]"":VALMSG_","_ENTRY,1:"Can't merge unresolved item(s) "_ENTRY) Q
|
---|
| 74 | ..S VALUE=$P(VALUE,U)
|
---|
| 75 | ..Q:(VALUE="")
|
---|
| 76 | ..;Convert "@" to @
|
---|
| 77 | ..S:(VALUE=(QUOTE_"@"_QUOTE)) VALUE="@"
|
---|
| 78 | ..;Move data into upload array
|
---|
| 79 | ..;I $S(ENTRY=6:0,ENTRY=7:0,ENTRY=9:0,1:1) S @FDAROOT@(FILE,IENS,FIELD)=VALUE ;let zipcode populate city, state and county for merge all ;**477 for GMT ;**479 address removed
|
---|
| 80 | .. S @FDAROOT@(FILE,IENS,FIELD)=VALUE ;**479 address removed - allow merge
|
---|
| 81 | ..;Prepare for undo
|
---|
| 82 | ..S ^TMP("VAFC-UNDO",$J,"FDA",FILE,IENS,FIELD)=$$GET1^DIQ(FILE,IENS,FIELD)
|
---|
| 83 | ;Merge differences
|
---|
| 84 | I (+$O(@FDAROOT@(0))) D FILE^DIE("E",FDAROOT,MSGROOT)
|
---|
| 85 | ;Rebuild required portion of display
|
---|
| 86 | S VAFCDOTS=1
|
---|
| 87 | S ENTRY=""
|
---|
| 88 | F S ENTRY=$O(REBUILD(ENTRY)) Q:(ENTRY="") D RBLDGRP^VAFCMGB(ENTRY)
|
---|
| 89 | ;No more differences
|
---|
| 90 | S:('$D(@VALMAR@("E2F"))) VALMSG="** No differences found **"
|
---|
| 91 | ;Done - refresh List Manager display
|
---|
| 92 | S VALMBCK="R"
|
---|
| 93 | Q
|
---|
| 94 | MRGSLCT ;Merge user selected differences
|
---|
| 95 | ;
|
---|
| 96 | ;Input : See above note on input variables
|
---|
| 97 | ;Output : Modified areas of VALMAR() array will be rebuilt accordingly
|
---|
| 98 | ;
|
---|
| 99 | ;Declare variables
|
---|
| 100 | N VAFCDOTS,ENTRY,REBUILD,VALMY,FILE,FIELD,REPEAT
|
---|
| 101 | N TMP,IENS,FDAROOT,MSGROOT,QUOTE,UNDO
|
---|
| 102 | S QUOTE=$C(34)
|
---|
| 103 | S FDAROOT="^TMP(""VAFC-MERGE-UPLOAD"","_$J_",""FDA"")"
|
---|
| 104 | S MSGROOT="^TMP(""VAFC-MERGE-UPLOAD"","_$J_",""MSG"")"
|
---|
| 105 | S IENS=VAFCDFN_","
|
---|
| 106 | K @FDAROOT,@MSGROOT
|
---|
| 107 | ;Prompt user for entries to merge
|
---|
| 108 | D EN^VALM2($G(XQORNOD(0)),"O")
|
---|
| 109 | ;Build array of data selected for merging
|
---|
| 110 | N DGNOFDEL S DGNOFDEL=1 ;**477 stop NOK Name x-ref from firing.
|
---|
| 111 | NEW EASZIPLK S EASZIPLK=1 ;**477 zipcode lookup for GMT
|
---|
| 112 | ;I $D(VALMY(8)) F ENTRY=6,7,9 I '$D(VALMY(ENTRY)) S VALMY(ENTRY)="",UNDO(ENTRY)="" ;prepare to undo city, state and county if zip selected ;**477 for GMT ;**479 address removed
|
---|
| 113 | S ENTRY=""
|
---|
| 114 | F S ENTRY=$O(VALMY(ENTRY)) Q:(ENTRY="") D
|
---|
| 115 | .;Remember which group(s) to rebuild
|
---|
| 116 | .S TMP=$G(@VALMAR@("E2G",ENTRY))
|
---|
| 117 | .S:(TMP'="") REBUILD(TMP)=""
|
---|
| 118 | .;Loop through list of fields contained in the entry
|
---|
| 119 | .S REPEAT=""
|
---|
| 120 | .F S REPEAT=$O(@VALMAR@("E2F",ENTRY,REPEAT)) Q:(REPEAT="") D
|
---|
| 121 | ..S TMP=$G(@VALMAR@("E2F",ENTRY,REPEAT))
|
---|
| 122 | ..S FILE=+$P(TMP,"^",1)
|
---|
| 123 | ..S FIELD=+$P(TMP,"^",2)
|
---|
| 124 | ..;Get remote value
|
---|
| 125 | ..S VALUE=$G(@VAFCARR@(FILE,FIELD))
|
---|
| 126 | ..;Screen for ignore conditions
|
---|
| 127 | ..I $P(VALUE,U,3) S VALMSG=$S($G(VALMSG)]"":VALMSG_","_ENTRY,1:"Can't merge unresolved item(s) "_ENTRY) Q
|
---|
| 128 | ..S VALUE=$P(VALUE,U)
|
---|
| 129 | ..Q:(VALUE="")
|
---|
| 130 | ..;Convert "@" to @
|
---|
| 131 | ..S:(VALUE=(QUOTE_"@"_QUOTE)) VALUE="@"
|
---|
| 132 | ..;Move data into upload array
|
---|
| 133 | ..I '$D(UNDO(ENTRY)) S @FDAROOT@(FILE,IENS,FIELD)=VALUE ;**477 for GMT
|
---|
| 134 | ..;Prepare for undo
|
---|
| 135 | ..S ^TMP("VAFC-UNDO",$J,"FDA",FILE,IENS,FIELD)=$$GET1^DIQ(FILE,IENS,FIELD)
|
---|
| 136 | ;Merge selected data BUT don't transmit until merge completed or rejected
|
---|
| 137 | I (+$O(@FDAROOT@(0))) S VAFCA08=1 D FILE^DIE("E",FDAROOT,MSGROOT) K VAFCA08
|
---|
| 138 | ;Rebuild required portion of display
|
---|
| 139 | S VAFCDOTS=1
|
---|
| 140 | S ENTRY=""
|
---|
| 141 | F S ENTRY=$O(REBUILD(ENTRY)) Q:(ENTRY="") D RBLDGRP^VAFCMGB(ENTRY)
|
---|
| 142 | ;No more differences
|
---|
| 143 | S:('$D(@VALMAR@("E2F"))) VALMSG="** No differences found **"
|
---|
| 144 | ;Done - refresh List Manager display
|
---|
| 145 | K @FDAROOT,@MSGROOT
|
---|
| 146 | S VALMBCK="R"
|
---|
| 147 | Q
|
---|
| 148 | ;
|
---|
| 149 | COMPLETE ;Merge process completed ;**477 always prompt for merge, add verbage
|
---|
| 150 | ;
|
---|
| 151 | ;Input : See above note on input variables
|
---|
| 152 | ;Output : VAFCDONE will be set to '1'
|
---|
| 153 | ;
|
---|
| 154 | ;Declare variables
|
---|
| 155 | N DIR,X,Y
|
---|
| 156 | S VAFCDONE=1
|
---|
| 157 | D FULL^VALM1 ;switch to full screen
|
---|
| 158 | I ($D(@VALMAR@("E2F"))) D ;check for differences
|
---|
| 159 | .S DIR("A",7)=" ** Differences still exist between local and remote data **" ;check for differences
|
---|
| 160 | .S DIR("A",8)=" "
|
---|
| 161 | ;Make sure user is really done with merge process
|
---|
| 162 | S DIR(0)="YA"
|
---|
| 163 | S DIR("A",1)=" "
|
---|
| 164 | S DIR("A",2)="NOTE: Since your site is the CMOR, you are considered to be the"
|
---|
| 165 | S DIR("A",3)=" authoritative source. By completing the merge, you confirm that"
|
---|
| 166 | S DIR("A",4)=" your facility's NAME, SEX, DOB, SSN and MOTHER'S MAIDEN NAME are"
|
---|
| 167 | S DIR("A",5)=" accurate for broadcast to all facilities sharing this patient."
|
---|
| 168 | S DIR("A",6)=" "
|
---|
| 169 | S DIR("A")="Are you ready to complete the merge process? (Yes/No) : "
|
---|
| 170 | S DIR("B")="YES"
|
---|
| 171 | D ^DIR
|
---|
| 172 | S VAFCDONE=+Y
|
---|
| 173 | ;User not done
|
---|
| 174 | I ('VAFCDONE) S VALMBCK="R" Q
|
---|
| 175 | ; Create an entry in the ADT/HL7 PIVOT file (#391.71) and
|
---|
| 176 | ; mark it as requiring transmission of an HL7 ADT-A08 message
|
---|
| 177 | D AVAFC^VAFCDD01(VAFCDFN)
|
---|
| 178 | ;Done - quit List Manager interface
|
---|
| 179 | S VALMBCK="Q"
|
---|
| 180 | Q
|
---|
| 181 | ;
|
---|
| 182 | REJECT ;Reject/ignore differences ;**477 add verbage
|
---|
| 183 | ;
|
---|
| 184 | ;Input : See above note on input variables
|
---|
| 185 | ;Output : VAFCRJCT will be set to '1'
|
---|
| 186 | ;
|
---|
| 187 | ;Declare variables
|
---|
| 188 | N DIR,X,Y
|
---|
| 189 | S VAFCRJCT=1
|
---|
| 190 | ;Switch to full screen
|
---|
| 191 | D FULL^VALM1
|
---|
| 192 | ;Make sure user really wants to reject differences
|
---|
| 193 | S DIR(0)="YA"
|
---|
| 194 | S DIR("A",1)=" "
|
---|
| 195 | S DIR("A",2)="NOTE: Since your site is the CMOR, you are considered to be the"
|
---|
| 196 | S DIR("A",3)=" authoritative source. By rejecting the remote data, you confirm"
|
---|
| 197 | S DIR("A",4)=" that your facility's NAME, SEX, DOB, SSN and MOTHER'S MAIDEN NAME"
|
---|
| 198 | S DIR("A",5)=" are accurate for broadcast to all facilities sharing this patient."
|
---|
| 199 | S DIR("A",6)=" "
|
---|
| 200 | S DIR("A")="Are you sure you want to reject the remote data? (Yes/No) : "
|
---|
| 201 | S DIR("B")="YES"
|
---|
| 202 | D ^DIR
|
---|
| 203 | S VAFCRJCT=+Y
|
---|
| 204 | ;Don't reject
|
---|
| 205 | I ('VAFCRJCT) S VALMBCK="R" Q
|
---|
| 206 | ; Create an entry in the ADT/HL7 PIVOT file (#391.71) and
|
---|
| 207 | ; mark it as requiring transmission of an HL7 ADT-A08 message
|
---|
| 208 | D AVAFC^VAFCDD01(VAFCDFN)
|
---|
| 209 | ;Done - quit List Manager interface
|
---|
| 210 | S VALMBCK="Q"
|
---|
| 211 | Q
|
---|
| 212 | HI ;Hinq Inquiry
|
---|
| 213 | S DFN=VAFCDFN
|
---|
| 214 | D HINQ^DG10 S VALMBCK=""
|
---|
| 215 | ;D EN^DVBHQZ4 S VALMBCK=""
|
---|
| 216 | ;S VALMSG="Hinq request has "_$S($D(^DVB(395.5,DFN,0))&("PNEA"[$P($G(^DVB(395.5,DFN,0)),U,4)):"",1:"NOT ")_"been made for this patient."
|
---|
| 217 | HIQ Q
|
---|
| 218 | PA ;Patient Audit
|
---|
| 219 | Q ;**477 - no longer in use replaced by remote audit protcols
|
---|
| 220 | I '$O(^DIA(2,"B",VAFCDFN,0)) S VALMSG="This patient has no audit data available.",VALMBCK="" G PAQ
|
---|
| 221 | N IEN S DFN=VAFCDFN,QFLG=1 D FULL^VALM1 D:$T(ASK2^RGMTAUD)]"" ASK2^RGMTAUD S VALMBCK="R"
|
---|
| 222 | PAQ Q
|
---|