[613] | 1 | DGPFLMT1 ;ALB/RBS - PRF TRANSMISSION ERRORS BUILD LIST AREA ; 6/10/05 11:38am
|
---|
| 2 | ;;5.3;Registration;**650**;Aug 13, 1993;Build 3
|
---|
| 3 | ;
|
---|
| 4 | ;no direct entry
|
---|
| 5 | QUIT
|
---|
| 6 | ;
|
---|
| 7 | ;
|
---|
| 8 | EN(DGARY,DGSRTBY,DGCNT) ;Entry point to build list area
|
---|
| 9 | ;
|
---|
| 10 | ;The following input variables are 'system wide variables' in the
|
---|
| 11 | ;DGPF TRANSMISSION ERRORS List Manager screen:
|
---|
| 12 | ;
|
---|
| 13 | ; Input:
|
---|
| 14 | ; DGARY - subscript name for temp global
|
---|
| 15 | ; DGSRTBY - list sort by criteria
|
---|
| 16 | ; "N" = Patient Name
|
---|
| 17 | ; "D" = Date/Time Error Received
|
---|
| 18 | ; Output:
|
---|
| 19 | ; DGCNT - number of lines in the list
|
---|
| 20 | ; DGARY - ^TMP(DGARY,$J) - display list
|
---|
| 21 | ; - ^TMP("DGPFSORT",$J) - used to create final DGARY list
|
---|
| 22 | ;
|
---|
| 23 | ;display wait msg
|
---|
| 24 | D WAIT^DICD
|
---|
| 25 | ;
|
---|
| 26 | ;retrieve and sort
|
---|
| 27 | D GET(DGSRTBY)
|
---|
| 28 | ;
|
---|
| 29 | ;build list
|
---|
| 30 | D BLD(DGARY,DGSRTBY,.DGCNT)
|
---|
| 31 | ;
|
---|
| 32 | ;if no entries in list, display message
|
---|
| 33 | I 'DGCNT D
|
---|
| 34 | . D SET(DGARY,1,"",1,,,.DGCNT)
|
---|
| 35 | . D SET(DGARY,2,"There are no transmission error messages on file.",3,$G(IOINHI),$G(IOINORM),.DGCNT)
|
---|
| 36 | ;
|
---|
| 37 | Q
|
---|
| 38 | ;
|
---|
| 39 | ;
|
---|
| 40 | GET(DGSRTBY) ;Get "RJ" status entries.
|
---|
| 41 | ;
|
---|
| 42 | ; Input:
|
---|
| 43 | ; DGSRTBY - list sort by value
|
---|
| 44 | ;
|
---|
| 45 | ; Output:
|
---|
| 46 | ; ^TMP("DGPFSORT",$J,0,<assignment ien>,<site ien>,<HL7 log ien>)=""
|
---|
| 47 | ;
|
---|
| 48 | ;The 0 node is created to group each patient's PRF Assignment record
|
---|
| 49 | ;with each Site Transmitted To that is rejecting the update with all
|
---|
| 50 | ;of the pointed to HL7 transmission log records.
|
---|
| 51 | ;Only the most recent transmission log entry will be displayed.
|
---|
| 52 | ;
|
---|
| 53 | N DGAIEN ;assignment ien
|
---|
| 54 | N DGDAT ;original transmission date
|
---|
| 55 | N DGLIEN ;HL7 log record ien
|
---|
| 56 | N DGPFA ;assignment array
|
---|
| 57 | N DGPFAH ;assignment history data array
|
---|
| 58 | N DGPFL ;HL7 transmission log data array
|
---|
| 59 | N DGPFPAT ;patient data array
|
---|
| 60 | N DGSITE ;site transmitted to ien
|
---|
| 61 | N DGSSN ;patient ssn
|
---|
| 62 | ;
|
---|
| 63 | ;loop through ASTAT index of transmission date/times
|
---|
| 64 | S DGDAT=0
|
---|
| 65 | F S DGDAT=$O(^DGPF(26.17,"ASTAT",DGDAT)) Q:'DGDAT D
|
---|
| 66 | . Q:'$D(^DGPF(26.17,"ASTAT",DGDAT,"RJ"))
|
---|
| 67 | . S DGLIEN=0
|
---|
| 68 | . F S DGLIEN=$O(^DGPF(26.17,"ASTAT",DGDAT,"RJ",DGLIEN)) Q:'DGLIEN D
|
---|
| 69 | . . K DGPFL,DGPFAH
|
---|
| 70 | . . ;- retrieve HL7 log data
|
---|
| 71 | . . Q:'$$GETLOG^DGPFHLL(DGLIEN,.DGPFL)
|
---|
| 72 | . . Q:'+DGPFL("ASGNHIST")
|
---|
| 73 | . . S DGSITE=$P($G(DGPFL("SITE")),U,1)
|
---|
| 74 | . . Q:DGSITE']""
|
---|
| 75 | . . ;- retrieve assignment history data to get PRF Assignment ien
|
---|
| 76 | . . Q:'$$GETHIST^DGPFAAH(+DGPFL("ASGNHIST"),.DGPFAH)
|
---|
| 77 | . . S DGAIEN=$P($G(DGPFAH("ASSIGN")),U,1)
|
---|
| 78 | . . Q:'DGAIEN
|
---|
| 79 | . . ;
|
---|
| 80 | . . ;- create 0 node by patient assignment, site ien and log ien
|
---|
| 81 | . . S ^TMP("DGPFSORT",$J,0,DGAIEN,DGSITE,DGLIEN)=""
|
---|
| 82 | ;
|
---|
| 83 | Q:'$O(^TMP("DGPFSORT",$J,0,"")) ;quit if nothing setup
|
---|
| 84 | ;
|
---|
| 85 | ;- now loop the sorted 0 node and only use the most recent HL7 error
|
---|
| 86 | ; record to create the List Manager display temp file.
|
---|
| 87 | ;
|
---|
| 88 | S DGAIEN=0
|
---|
| 89 | F S DGAIEN=$O(^TMP("DGPFSORT",$J,0,DGAIEN)) Q:DGAIEN="" D
|
---|
| 90 | . S DGSITE=0
|
---|
| 91 | . F S DGSITE=$O(^TMP("DGPFSORT",$J,0,DGAIEN,DGSITE)) Q:DGSITE="" D
|
---|
| 92 | . . K DGPFL,DGPFAH,DGPFA,DGPFPAT
|
---|
| 93 | . . S DGLIEN=0 ;- get most recent record ien
|
---|
| 94 | . . S DGLIEN=$O(^TMP("DGPFSORT",$J,0,DGAIEN,DGSITE,""),-1)
|
---|
| 95 | . . Q:DGLIEN=""
|
---|
| 96 | . . ;- retrieve HL7 log data
|
---|
| 97 | . . Q:'$$GETLOG^DGPFHLL(DGLIEN,.DGPFL)
|
---|
| 98 | . . ;- retrieve assignment file data to get Owner Site
|
---|
| 99 | . . Q:'$$GETASGN^DGPFAA(DGAIEN,.DGPFA)
|
---|
| 100 | . . ;- retrive patient data to get ssn
|
---|
| 101 | . . Q:'$$GETPAT^DGPFUT2(+DGPFA("DFN"),.DGPFPAT)
|
---|
| 102 | . . S DGSSN=$G(DGPFPAT("SSN")) S:'DGSSN DGSSN="UNKNOWN"
|
---|
| 103 | . . ;- add ssn to existing array
|
---|
| 104 | . . S DGPFA("SSN")=DGSSN
|
---|
| 105 | . . ;- retrieve assignment history data
|
---|
| 106 | . . Q:'$$GETHIST^DGPFAAH(+DGPFL("ASGNHIST"),.DGPFAH)
|
---|
| 107 | . . ;
|
---|
| 108 | . . ;- setup output array
|
---|
| 109 | . . D SORT(DGLIEN,DGSRTBY,.DGPFA,.DGPFAH,.DGPFL)
|
---|
| 110 | ;
|
---|
| 111 | Q
|
---|
| 112 | ;
|
---|
| 113 | ;
|
---|
| 114 | SORT(DGLIEN,DGSRTBY,DGPFA,DGPFAH,DGPFL) ;Setup output global
|
---|
| 115 | ;
|
---|
| 116 | ; Input:
|
---|
| 117 | ; DGLIEN - ien of HL7 log record
|
---|
| 118 | ; DGSRTBY - list sort value
|
---|
| 119 | ; DGPFA - assignment array
|
---|
| 120 | ; DGPFAH - assignment history array
|
---|
| 121 | ; DGPFL - HL7 log array
|
---|
| 122 | ;
|
---|
| 123 | ; Output:
|
---|
| 124 | ; ^TMP("DGPFSORT",$J,1,<>,<>,<>,<>) = data string values
|
---|
| 125 | ; Subscript's (,<>,) are as follows for each sort by:
|
---|
| 126 | ;
|
---|
| 127 | ; - SORT="N" - list by <patient name>:
|
---|
| 128 | ; ,1,<patient name>,<assignment ien>,<site ien>,<HL7 log ien>)
|
---|
| 129 | ;
|
---|
| 130 | ; - SORT="D" - list by <ack received d/t>:
|
---|
| 131 | ; ,1,<ack received d/t>,<assignment ien>,<site ien>,<HL7 log ien>)
|
---|
| 132 | ;
|
---|
| 133 | ; - The 6 data string values are as follows: (^ - up-arrow delimited)
|
---|
| 134 | ; <patient dfn>^<patient name>^<ssn>^<ack received d/t>^<site transmitted to>^<owner site>
|
---|
| 135 | ;
|
---|
| 136 | N DGACKDT ;d/t error msg received
|
---|
| 137 | N DGAIEN ;assignment ien
|
---|
| 138 | N DGPNAME ;patient name
|
---|
| 139 | N DGSITE ;site transmitted to ien
|
---|
| 140 | N DGSTRING ;detail line
|
---|
| 141 | N DGSUB ;subscript var
|
---|
| 142 | ;
|
---|
| 143 | ;- subscript setup
|
---|
| 144 | S DGACKDT=$P($G(DGPFL("ACKDT")),U,1)
|
---|
| 145 | S:DGACKDT="" DGACKDT="UNKNOWN"
|
---|
| 146 | S DGAIEN=$P($G(DGPFAH("ASSIGN")),U,1)
|
---|
| 147 | S:DGAIEN="" DGAIEN="UNKNOWN"
|
---|
| 148 | S DGPNAME=$P($G(DGPFA("DFN")),U,2)
|
---|
| 149 | S:DGPNAME="" DGPNAME="UNKNOWN"
|
---|
| 150 | S DGSITE=$P($G(DGPFL("SITE")),U,1)
|
---|
| 151 | ;
|
---|
| 152 | ;- data string setup -
|
---|
| 153 | S DGSTRING=$P($G(DGPFA("DFN")),U,1)_U_DGPNAME_U_$P($G(DGPFA("SSN")),U,1)_U_DGACKDT_U_$P($G(DGPFL("SITE")),U,2)_U_$P($G(DGPFA("OWNER")),U,2)
|
---|
| 154 | ;
|
---|
| 155 | ;- patient name sort
|
---|
| 156 | I DGSRTBY="N" S DGSUB=DGPNAME
|
---|
| 157 | ;- date/time error received type sort
|
---|
| 158 | I DGSRTBY="D" S DGSUB=DGACKDT
|
---|
| 159 | ;
|
---|
| 160 | S ^TMP("DGPFSORT",$J,1,DGSUB,DGAIEN,DGSITE,DGLIEN)=DGSTRING
|
---|
| 161 | Q
|
---|
| 162 | ;
|
---|
| 163 | ;
|
---|
| 164 | BLD(DGARY,DGSRTBY,DGCNT) ;Build list area
|
---|
| 165 | ;
|
---|
| 166 | ; Input:
|
---|
| 167 | ; DGARY - subscript name for temp global
|
---|
| 168 | ; DGSRTBY - list sort by value
|
---|
| 169 | ;
|
---|
| 170 | ; Output:
|
---|
| 171 | ; DGCNT - number of lines in the list
|
---|
| 172 | ; DGARY - display list - ^TMP(DGARY,$J)
|
---|
| 173 | ;
|
---|
| 174 | N DGACKDT ;d/t error msg received
|
---|
| 175 | N DGAIEN ;assignment ien
|
---|
| 176 | N DGLIEN ;log record ien
|
---|
| 177 | N DGLINE ;line counter
|
---|
| 178 | N DGOWNER ;owner of assignment
|
---|
| 179 | N DGPNAME ;patient name
|
---|
| 180 | N DGSIEN ;site ien
|
---|
| 181 | N DGSITE ;site transmitted to name
|
---|
| 182 | N DGSSN ;patient ssn
|
---|
| 183 | N DGSTRING ;detail line
|
---|
| 184 | N DGSUB ;loop var
|
---|
| 185 | N DGTEMP ;sort array root
|
---|
| 186 | ;
|
---|
| 187 | S DGTEMP=$NA(^TMP("DGPFSORT",$J,1))
|
---|
| 188 | S DGSUB="",DGLINE=0
|
---|
| 189 | ;
|
---|
| 190 | F S DGSUB=$O(@DGTEMP@(DGSUB)) Q:DGSUB="" D
|
---|
| 191 | . S DGAIEN=0
|
---|
| 192 | . F S DGAIEN=$O(@DGTEMP@(DGSUB,DGAIEN)) Q:'DGAIEN D
|
---|
| 193 | . . S DGSIEN=0
|
---|
| 194 | . . F S DGSIEN=$O(@DGTEMP@(DGSUB,DGAIEN,DGSIEN)) Q:'DGSIEN D
|
---|
| 195 | . . . S DGLIEN=0
|
---|
| 196 | . . . F S DGLIEN=$O(@DGTEMP@(DGSUB,DGAIEN,DGSIEN,DGLIEN)) Q:'DGLIEN D
|
---|
| 197 | . . . . ;- get data fields
|
---|
| 198 | . . . . S DGSTRING=$G(@DGTEMP@(DGSUB,DGAIEN,DGSIEN,DGLIEN))
|
---|
| 199 | . . . . S DGPNAME=$E($P(DGSTRING,U,2),1,27)
|
---|
| 200 | . . . . S DGSSN=$E($P(DGSTRING,U,3),6,9)
|
---|
| 201 | . . . . S DGACKDT=$E($$FDTTM^VALM1($P(DGSTRING,U,4)),1,8)
|
---|
| 202 | . . . . S DGSITE=$E($P(DGSTRING,U,5),1,14)
|
---|
| 203 | . . . . S DGOWNER=$E($P(DGSTRING,U,6),1,14)
|
---|
| 204 | . . . . ;- increment line counter
|
---|
| 205 | . . . . S DGLINE=DGLINE+1
|
---|
| 206 | . . . . ;- set line into list area
|
---|
| 207 | . . . . D SET(DGARY,DGLINE,DGLINE,1,,,.DGCNT)
|
---|
| 208 | . . . . D SET(DGARY,DGLINE,DGPNAME,6,,,.DGCNT)
|
---|
| 209 | . . . . D SET(DGARY,DGLINE,DGSSN,35,,,.DGCNT)
|
---|
| 210 | . . . . D SET(DGARY,DGLINE,DGACKDT,41,,,.DGCNT)
|
---|
| 211 | . . . . D SET(DGARY,DGLINE,DGSITE,51,,,.DGCNT)
|
---|
| 212 | . . . . D SET(DGARY,DGLINE,DGOWNER,67,,,.DGCNT)
|
---|
| 213 | . . . . ;
|
---|
| 214 | . . . . ;- associate "IDX" list item entry with the pointer's
|
---|
| 215 | . . . . ; back to ^TMP("DGPFSORT",$J,0,DGAIEN,DGSITE,DGLIEN) global:
|
---|
| 216 | . . . . ; <asignment ien>^<site ien>^<HL7 log ien>^<patient dfn>^pat name^site name
|
---|
| 217 | . . . . S ^TMP(DGARY,$J,"IDX",DGLINE,DGLINE)=DGAIEN_U_DGSIEN_U_DGLIEN_U_$P(DGSTRING,U,1)_U_DGPNAME_U_$P(DGSTRING,U,5)
|
---|
| 218 | ;
|
---|
| 219 | ;cleanup temp sort global
|
---|
| 220 | K @DGTEMP
|
---|
| 221 | Q
|
---|
| 222 | ;
|
---|
| 223 | ;
|
---|
| 224 | SET(DGARY,DGLINE,DGTEXT,DGCOL,DGON,DGOFF,DGCNT) ;Setup display detail lines
|
---|
| 225 | ;
|
---|
| 226 | ; Input:
|
---|
| 227 | ; DGARY - subscript name for temp global
|
---|
| 228 | ; DGLINE - line number
|
---|
| 229 | ; DGTEXT - text
|
---|
| 230 | ; DGCOL - starting column
|
---|
| 231 | ; DGON - highlighting on
|
---|
| 232 | ; DGOFF - highlighting off
|
---|
| 233 | ;
|
---|
| 234 | ; Output:
|
---|
| 235 | ; DGARY - temp global array of LM detail lines
|
---|
| 236 | ; DGCNT - number of lines in the list
|
---|
| 237 | ;
|
---|
| 238 | N DGX ;string to insert new text into
|
---|
| 239 | ;
|
---|
| 240 | S DGX=$S($D(^TMP(DGARY,$J,DGLINE,0)):^(0),1:"")
|
---|
| 241 | S DGCNT=DGLINE
|
---|
| 242 | ;
|
---|
| 243 | S ^TMP(DGARY,$J,DGLINE,0)=$$SETSTR^VALM1(DGTEXT,DGX,DGCOL,$L(DGTEXT))
|
---|
| 244 | ;
|
---|
| 245 | D:$G(DGON)]""!($G(DGOFF)]"") CNTRL^VALM10(DGLINE,DGCOL,$L(DGTEXT),$G(DGON),$G(DGOFF))
|
---|
| 246 | ;
|
---|
| 247 | Q
|
---|