DGPFLMT1 ;ALB/RBS - PRF TRANSMISSION ERRORS BUILD LIST AREA ; 6/10/05 11:38am
;;5.3;Registration;**650,960**;Aug 13, 1993;Build 22
; Last Edited: SHRPE/SGM - Jun 7, 2018 13:50
;
; DG*5.3*960 - filter for only active and locally owned assignments
; GET modified for filters BLD modified for additional columns
;
;no direct entry
QUIT
;
;
EN(DGARY,DGSRTBY,DGCNT) ;Entry point to build list area
;
;The following input variables are 'system wide variables' in the
;DGPF TRANSMISSION ERRORS List Manager screen:
;
; Input:
; DGARY - subscript name for temp global
; DGSRTBY - list sort by criteria
; "N" = Patient Name
; "D" = Date/Time Error Received
; Output:
; DGCNT - number of lines in the list
; DGARY - ^TMP(DGARY,$J) - display list
; - ^TMP("DGPFSORT",$J) - used to create final DGARY list
;
;display wait msg
D WAIT^DICD
;
;retrieve and sort
D GET(DGSRTBY)
;
;build list
D BLD(DGARY,DGSRTBY,.DGCNT)
;
;if no entries in list, display message
I 'DGCNT D
. D SET(DGARY,1,"",1,,,.DGCNT)
. D SET(DGARY,2,"There are no transmission error messages on file.",3,$G(IOINHI),$G(IOINORM),.DGCNT)
;
Q
;
;
GET(DGSRTBY) ;Get "RJ" status entries.
;
; Input:
; DGSRTBY - list sort by value
;
; Output:
; ^TMP("DGPFSORT",$J,0,<assignment ien>,<site ien>,<HL7 log ien>)=""
;
;The 0 node is created to group each patient's PRF Assignment record
;with each Site Transmitted To that is rejecting the update with all
;of the pointed to HL7 transmission log records.
;Only the most recent transmission log entry will be displayed.
;
N DGAIEN ;assignment ien
N DGDAT ;original transmission date
N DGLIEN ;HL7 log record ien
N DGPFA ;assignment array
N DGPFAH ;assignment history data array
N DGPFL ;HL7 transmission log data array
N DGPFPAT ;patient data array
N DGSITE ;site transmitted to ien
N DGSSN ;patient ssn
;
;loop through ASTAT index of transmission date/times
S DGDAT=0
F S DGDAT=$O(^DGPF(26.17,"ASTAT",DGDAT)) Q:'DGDAT D
. Q:'$D(^DGPF(26.17,"ASTAT",DGDAT,"RJ"))
. S DGLIEN=0
. F S DGLIEN=$O(^DGPF(26.17,"ASTAT",DGDAT,"RJ",DGLIEN)) Q:'DGLIEN D
. . K DGPFL,DGPFAH
. . ;- retrieve HL7 log data
. . Q:'$$GETLOG^DGPFHLL(DGLIEN,.DGPFL)
. . Q:'+DGPFL("ASGNHIST")
. . S DGSITE=$P($G(DGPFL("SITE")),U,1)
. . Q:DGSITE']""
. . ;- retrieve assignment history data to get PRF Assignment ien
. . Q:'$$GETHIST^DGPFAAH(+DGPFL("ASGNHIST"),.DGPFAH)
. . S DGAIEN=$P($G(DGPFAH("ASSIGN")),U,1)
. . Q:'DGAIEN
. . ;
. . ;- create 0 node by patient assignment, site ien and log ien
. . S ^TMP("DGPFSORT",$J,0,DGAIEN,DGSITE,DGLIEN)=""
;
Q:'$O(^TMP("DGPFSORT",$J,0,"")) ;quit if nothing setup
;
;- now loop the sorted 0 node and only use the most recent HL7 error
; record to create the List Manager display temp file.
;
S DGAIEN=0
F S DGAIEN=$O(^TMP("DGPFSORT",$J,0,DGAIEN)) Q:DGAIEN="" D
. S DGSITE=0
. F S DGSITE=$O(^TMP("DGPFSORT",$J,0,DGAIEN,DGSITE)) Q:DGSITE="" D
. . N X,Y
. . K DGPFL,DGPFAH,DGPFA,DGPFPAT
. . S DGLIEN=0 ;- get most recent record ien
. . S DGLIEN=$O(^TMP("DGPFSORT",$J,0,DGAIEN,DGSITE,""),-1)
. . Q:DGLIEN=""
. . ;- retrieve HL7 log data
. . Q:'$$GETLOG^DGPFHLL(DGLIEN,.DGPFL)
. . ;- retrieve assignment file data to get Owner Site
. . Q:'$$GETASGN^DGPFAA(DGAIEN,.DGPFA)
. . ;- retrieve patient data to get ssn
. . Q:'$$GETPAT^DGPFUT2(+DGPFA("DFN"),.DGPFPAT)
. . S DGSSN=$G(DGPFPAT("SSN")) S:'DGSSN DGSSN="UNKNOWN"
. . ;- add ssn to existing array
. . S DGPFA("SSN")=DGSSN
. . ;- retrieve assignment history data
. . Q:'$$GETHIST^DGPFAAH(+DGPFL("ASGNHIST"),.DGPFAH)
. . ;
. . ;- DG*5.3*960 - FILTER check
. . ; STAT: 1:active; 0:inactive
. . ; OWN: 1:Owner local facility; 0:Owner not local
. . ; FLAG: "A" or flag variable pointer
. . S X=$G(DGSORT("STAT")) I X?1N,+DGPFA("STATUS")'=X Q
. . S X=$G(DGSORT("OWN")) I X?1N D Q:'Y
. . . S Y=+DGPFA("OWNER"),Y=$S(Y<1:0,1:$$ISDIV^DGPFUT(Y))
. . . I X=1,Y>0 Q
. . . I X=0 S Y=$S(Y>0:0,1:1)
. . . Q
. . S X=$G(DGSORT("FLAG")) I +X,$P(X,U)'=$P(DGPFA("FLAG"),U) Q
. . ;
. . ;- setup output array
. . D SORT(DGLIEN,DGSRTBY,.DGPFA,.DGPFAH,.DGPFL)
. . Q
. Q
;
Q
;
;
SORT(DGLIEN,DGSRTBY,DGPFA,DGPFAH,DGPFL) ;Setup output global
;
; Input:
; DGLIEN - ien of HL7 log record
; DGSRTBY - list sort value
; DGPFA - assignment array
; DGPFAH - assignment history array
; DGPFL - HL7 log array
;
; Output:
; ^TMP("DGPFSORT",$J,1,S4,S5,S6,S7) = data string values
; Subscript's are as follows for each sort by:
;
; List by patient name List by HL7 received d/t
; Sort="N" Sort="D"
; -------------------- ------------------------
; S4 patient_name ack_received_d/t
; S5 assignment_ien assignment_ien
; S6 site_ien site_transmitted_to
; S7 HL7_log_ien HL7_log_ien
;
; The data string value consists of 5 "^"-pieces
; DFN ^ Patient_name ^ SSN ^ Ack_received_dt ^ Site_transmitted_to
;
N DGACKDT ;d/t error msg received
N DGAIEN ;assignment ien
N DGPNAME ;patient name
N DGSITE ;site transmitted to ien
N DGSTRING ;detail line
N DGSUB ;subscript var
;
;- subscript setup
S DGACKDT=$P($G(DGPFL("ACKDT")),U) S:DGACKDT="" DGACKDT="UNKNOWN"
S DGAIEN=$P($G(DGPFAH("ASSIGN")),U) S:DGAIEN="" DGAIEN="UNKNOWN"
S DGPNAME=$P($G(DGPFA("DFN")),U,2) S:DGPNAME="" DGPNAME="UNKNOWN"
S DGSITE=$P($G(DGPFL("SITE")),U)
;
;- data string setup -
S DGSTRING=$P($G(DGPFA("DFN")),U)
S $P(DGSTRING,U,2)=DGPNAME
S $P(DGSTRING,U,3)=$P($G(DGPFA("SSN")),U)
S $P(DGSTRING,U,4)=DGACKDT
S $P(DGSTRING,U,5)=$P($G(DGPFL("SITE")),U,2)
;
;- patient name sort
I DGSRTBY="N" S DGSUB=DGPNAME
;- date/time error received type sort
I DGSRTBY="D" S DGSUB=DGACKDT
;
S ^TMP("DGPFSORT",$J,1,DGSUB,DGAIEN,DGSITE,DGLIEN)=DGSTRING
Q
;
;
BLD(DGARY,DGSRTBY,DGCNT) ;Build list area
;
; Input:
; DGARY - subscript name for temp global
; DGSRTBY - list sort by value
;
; Output:
; DGCNT - number of lines in the list
; DGARY - display list - ^TMP(DGARY,$J)
;
N DGACKDT ;d/t error msg received
N DGAIEN ;assignment ien
N DGLAST ;date of last activation action
N DGLIEN ;log record ien
N DGLINE ;line counter
N DGORIG ;original assignment date
N DGOWNER ;owner of assignment
N DGPNAME ;patient name
N DGSIEN ;site ien
N DGSITE ;site transmitted to name
N DGSSN ;patient ssn
N DGSTRING ;detail line
N DGSUB ;loop var
N DGTEMP ;sort array root
;
S DGTEMP=$NA(^TMP("DGPFSORT",$J,1))
S DGSUB="",DGLINE=0
;
F S DGSUB=$O(@DGTEMP@(DGSUB)) Q:DGSUB="" D
. S DGAIEN=0
. F S DGAIEN=$O(@DGTEMP@(DGSUB,DGAIEN)) Q:'DGAIEN D
. . S DGORIG=$$GETADT^DGPFAAH(DGAIEN)
. . S DGSIEN=0
. . F S DGSIEN=$O(@DGTEMP@(DGSUB,DGAIEN,DGSIEN)) Q:'DGSIEN D
. . . S DGLIEN=0
. . . F S DGLIEN=$O(@DGTEMP@(DGSUB,DGAIEN,DGSIEN,DGLIEN)) Q:'DGLIEN D
. . . . N X
. . . . ;- get data fields
. . . . S DGSTRING=$G(@DGTEMP@(DGSUB,DGAIEN,DGSIEN,DGLIEN))
. . . . S DGPNAME=$P(DGSTRING,U,2)
. . . . S DGSSN=$E($P(DGSTRING,U,3),6,9)
. . . . S DGACKDT=$$FMTE^XLFDT($P(DGSTRING,U,4)\1,"2Z")
. . . . S DGSITE=$E($P(DGSTRING,U,5),1,27)
. . . . ;- increment line counter
. . . . S DGLINE=DGLINE+1
. . . . ;- set line into list area
. . . . ;- format of display line, 2 spaces between columns
. . . . ; 1-3 6-35 38-41 44-51 54-80
. . . . ; line# patient ssn Reject_date Transmit_to
. . . . D SET(DGARY,DGLINE,DGLINE,1,,,.DGCNT)
. . . . D SET(DGARY,DGLINE,DGPNAME,6,,,.DGCNT)
. . . . D SET(DGARY,DGLINE,DGSSN,38,,,.DGCNT)
. . . . D SET(DGARY,DGLINE,DGACKDT,44,,,.DGCNT)
. . . . D SET(DGARY,DGLINE,DGSITE,54,,,.DGCNT)
. . . . ;
. . . . ;- associate "IDX" list item entry with the pointer's
. . . . ; back to ^TMP("DGPFSORT",$J,0,DGAIEN,DGSITE,DGLIEN) global:
. . . . ; <assignment ien>^<site ien>^<HL7 log ien>^<patient dfn>^pat name^site name
. . . . S ^TMP(DGARY,$J,"IDX",DGLINE,DGLINE)=DGAIEN_U_DGSIEN_U_DGLIEN_U_$P(DGSTRING,U,1)_U_DGPNAME_U_$P(DGSTRING,U,5)
;
;cleanup temp sort global
K @DGTEMP
Q
;
;
SET(DGARY,DGLINE,DGTEXT,DGCOL,DGON,DGOFF,DGCNT) ;Setup display detail lines
;
; Input:
; DGARY - subscript name for temp global
; DGLINE - line number
; DGTEXT - text
; DGCOL - starting column
; DGON - highlighting on
; DGOFF - highlighting off
;
; Output:
; DGARY - temp global array of LM detail lines
; DGCNT - number of lines in the list
;
N DGX ;string to insert new text into
;
S DGX=$S($D(^TMP(DGARY,$J,DGLINE,0)):^(0),1:"")
S DGCNT=DGLINE
;
S ^TMP(DGARY,$J,DGLINE,0)=$$SETSTR^VALM1(DGTEXT,DGX,DGCOL,$L(DGTEXT))
;
D:$G(DGON)]""!($G(DGOFF)]"") CNTRL^VALM10(DGLINE,DGCOL,$L(DGTEXT),$G(DGON),$G(DGOFF))
;
Q
--- Routine Detail --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HDGPFLMT1 9220 printed Nov 22, 2024@17:58:21 Page 2
DGPFLMT1 ;ALB/RBS - PRF TRANSMISSION ERRORS BUILD LIST AREA ; 6/10/05 11:38am
+1 ;;5.3;Registration;**650,960**;Aug 13, 1993;Build 22
+2 ; Last Edited: SHRPE/SGM - Jun 7, 2018 13:50
+3 ;
+4 ; DG*5.3*960 - filter for only active and locally owned assignments
+5 ; GET modified for filters BLD modified for additional columns
+6 ;
+7 ;no direct entry
+8 QUIT
+9 ;
+10 ;
EN(DGARY,DGSRTBY,DGCNT) ;Entry point to build list area
+1 ;
+2 ;The following input variables are 'system wide variables' in the
+3 ;DGPF TRANSMISSION ERRORS List Manager screen:
+4 ;
+5 ; Input:
+6 ; DGARY - subscript name for temp global
+7 ; DGSRTBY - list sort by criteria
+8 ; "N" = Patient Name
+9 ; "D" = Date/Time Error Received
+10 ; Output:
+11 ; DGCNT - number of lines in the list
+12 ; DGARY - ^TMP(DGARY,$J) - display list
+13 ; - ^TMP("DGPFSORT",$J) - used to create final DGARY list
+14 ;
+15 ;display wait msg
+16 DO WAIT^DICD
+17 ;
+18 ;retrieve and sort
+19 DO GET(DGSRTBY)
+20 ;
+21 ;build list
+22 DO BLD(DGARY,DGSRTBY,.DGCNT)
+23 ;
+24 ;if no entries in list, display message
+25 IF 'DGCNT
Begin DoDot:1
+26 DO SET(DGARY,1,"",1,,,.DGCNT)
+27 DO SET(DGARY,2,"There are no transmission error messages on file.",3,$GET(IOINHI),$GET(IOINORM),.DGCNT)
End DoDot:1
+28 ;
+29 QUIT
+30 ;
+31 ;
GET(DGSRTBY) ;Get "RJ" status entries.
+1 ;
+2 ; Input:
+3 ; DGSRTBY - list sort by value
+4 ;
+5 ; Output:
+6 ; ^TMP("DGPFSORT",$J,0,<assignment ien>,<site ien>,<HL7 log ien>)=""
+7 ;
+8 ;The 0 node is created to group each patient's PRF Assignment record
+9 ;with each Site Transmitted To that is rejecting the update with all
+10 ;of the pointed to HL7 transmission log records.
+11 ;Only the most recent transmission log entry will be displayed.
+12 ;
+13 ;assignment ien
NEW DGAIEN
+14 ;original transmission date
NEW DGDAT
+15 ;HL7 log record ien
NEW DGLIEN
+16 ;assignment array
NEW DGPFA
+17 ;assignment history data array
NEW DGPFAH
+18 ;HL7 transmission log data array
NEW DGPFL
+19 ;patient data array
NEW DGPFPAT
+20 ;site transmitted to ien
NEW DGSITE
+21 ;patient ssn
NEW DGSSN
+22 ;
+23 ;loop through ASTAT index of transmission date/times
+24 SET DGDAT=0
+25 FOR
SET DGDAT=$ORDER(^DGPF(26.17,"ASTAT",DGDAT))
if 'DGDAT
QUIT
Begin DoDot:1
+26 if '$DATA(^DGPF(26.17,"ASTAT",DGDAT,"RJ"))
QUIT
+27 SET DGLIEN=0
+28 FOR
SET DGLIEN=$ORDER(^DGPF(26.17,"ASTAT",DGDAT,"RJ",DGLIEN))
if 'DGLIEN
QUIT
Begin DoDot:2
+29 KILL DGPFL,DGPFAH
+30 ;- retrieve HL7 log data
+31 if '$$GETLOG^DGPFHLL(DGLIEN,.DGPFL)
QUIT
+32 if '+DGPFL("ASGNHIST")
QUIT
+33 SET DGSITE=$PIECE($GET(DGPFL("SITE")),U,1)
+34 if DGSITE']""
QUIT
+35 ;- retrieve assignment history data to get PRF Assignment ien
+36 if '$$GETHIST^DGPFAAH(+DGPFL("ASGNHIST"),.DGPFAH)
QUIT
+37 SET DGAIEN=$PIECE($GET(DGPFAH("ASSIGN")),U,1)
+38 if 'DGAIEN
QUIT
+39 ;
+40 ;- create 0 node by patient assignment, site ien and log ien
+41 SET ^TMP("DGPFSORT",$JOB,0,DGAIEN,DGSITE,DGLIEN)=""
End DoDot:2
End DoDot:1
+42 ;
+43 ;quit if nothing setup
if '$ORDER(^TMP("DGPFSORT",$JOB,0,""))
QUIT
+44 ;
+45 ;- now loop the sorted 0 node and only use the most recent HL7 error
+46 ; record to create the List Manager display temp file.
+47 ;
+48 SET DGAIEN=0
+49 FOR
SET DGAIEN=$ORDER(^TMP("DGPFSORT",$JOB,0,DGAIEN))
if DGAIEN=""
QUIT
Begin DoDot:1
+50 SET DGSITE=0
+51 FOR
SET DGSITE=$ORDER(^TMP("DGPFSORT",$JOB,0,DGAIEN,DGSITE))
if DGSITE=""
QUIT
Begin DoDot:2
+52 NEW X,Y
+53 KILL DGPFL,DGPFAH,DGPFA,DGPFPAT
+54 ;- get most recent record ien
SET DGLIEN=0
+55 SET DGLIEN=$ORDER(^TMP("DGPFSORT",$JOB,0,DGAIEN,DGSITE,""),-1)
+56 if DGLIEN=""
QUIT
+57 ;- retrieve HL7 log data
+58 if '$$GETLOG^DGPFHLL(DGLIEN,.DGPFL)
QUIT
+59 ;- retrieve assignment file data to get Owner Site
+60 if '$$GETASGN^DGPFAA(DGAIEN,.DGPFA)
QUIT
+61 ;- retrieve patient data to get ssn
+62 if '$$GETPAT^DGPFUT2(+DGPFA("DFN"),.DGPFPAT)
QUIT
+63 SET DGSSN=$GET(DGPFPAT("SSN"))
if 'DGSSN
SET DGSSN="UNKNOWN"
+64 ;- add ssn to existing array
+65 SET DGPFA("SSN")=DGSSN
+66 ;- retrieve assignment history data
+67 if '$$GETHIST^DGPFAAH(+DGPFL("ASGNHIST"),.DGPFAH)
QUIT
+68 ;
+69 ;- DG*5.3*960 - FILTER check
+70 ; STAT: 1:active; 0:inactive
+71 ; OWN: 1:Owner local facility; 0:Owner not local
+72 ; FLAG: "A" or flag variable pointer
+73 SET X=$GET(DGSORT("STAT"))
IF X?1N
IF +DGPFA("STATUS")'=X
QUIT
+74 SET X=$GET(DGSORT("OWN"))
IF X?1N
Begin DoDot:3
+75 SET Y=+DGPFA("OWNER")
SET Y=$SELECT(Y<1:0,1:$$ISDIV^DGPFUT(Y))
+76 IF X=1
IF Y>0
QUIT
+77 IF X=0
SET Y=$SELECT(Y>0:0,1:1)
+78 QUIT
End DoDot:3
if 'Y
QUIT
+79 SET X=$GET(DGSORT("FLAG"))
IF +X
IF $PIECE(X,U)'=$PIECE(DGPFA("FLAG"),U)
QUIT
+80 ;
+81 ;- setup output array
+82 DO SORT(DGLIEN,DGSRTBY,.DGPFA,.DGPFAH,.DGPFL)
+83 QUIT
End DoDot:2
+84 QUIT
End DoDot:1
+85 ;
+86 QUIT
+87 ;
+88 ;
SORT(DGLIEN,DGSRTBY,DGPFA,DGPFAH,DGPFL) ;Setup output global
+1 ;
+2 ; Input:
+3 ; DGLIEN - ien of HL7 log record
+4 ; DGSRTBY - list sort value
+5 ; DGPFA - assignment array
+6 ; DGPFAH - assignment history array
+7 ; DGPFL - HL7 log array
+8 ;
+9 ; Output:
+10 ; ^TMP("DGPFSORT",$J,1,S4,S5,S6,S7) = data string values
+11 ; Subscript's are as follows for each sort by:
+12 ;
+13 ; List by patient name List by HL7 received d/t
+14 ; Sort="N" Sort="D"
+15 ; -------------------- ------------------------
+16 ; S4 patient_name ack_received_d/t
+17 ; S5 assignment_ien assignment_ien
+18 ; S6 site_ien site_transmitted_to
+19 ; S7 HL7_log_ien HL7_log_ien
+20 ;
+21 ; The data string value consists of 5 "^"-pieces
+22 ; DFN ^ Patient_name ^ SSN ^ Ack_received_dt ^ Site_transmitted_to
+23 ;
+24 ;d/t error msg received
NEW DGACKDT
+25 ;assignment ien
NEW DGAIEN
+26 ;patient name
NEW DGPNAME
+27 ;site transmitted to ien
NEW DGSITE
+28 ;detail line
NEW DGSTRING
+29 ;subscript var
NEW DGSUB
+30 ;
+31 ;- subscript setup
+32 SET DGACKDT=$PIECE($GET(DGPFL("ACKDT")),U)
if DGACKDT=""
SET DGACKDT="UNKNOWN"
+33 SET DGAIEN=$PIECE($GET(DGPFAH("ASSIGN")),U)
if DGAIEN=""
SET DGAIEN="UNKNOWN"
+34 SET DGPNAME=$PIECE($GET(DGPFA("DFN")),U,2)
if DGPNAME=""
SET DGPNAME="UNKNOWN"
+35 SET DGSITE=$PIECE($GET(DGPFL("SITE")),U)
+36 ;
+37 ;- data string setup -
+38 SET DGSTRING=$PIECE($GET(DGPFA("DFN")),U)
+39 SET $PIECE(DGSTRING,U,2)=DGPNAME
+40 SET $PIECE(DGSTRING,U,3)=$PIECE($GET(DGPFA("SSN")),U)
+41 SET $PIECE(DGSTRING,U,4)=DGACKDT
+42 SET $PIECE(DGSTRING,U,5)=$PIECE($GET(DGPFL("SITE")),U,2)
+43 ;
+44 ;- patient name sort
+45 IF DGSRTBY="N"
SET DGSUB=DGPNAME
+46 ;- date/time error received type sort
+47 IF DGSRTBY="D"
SET DGSUB=DGACKDT
+48 ;
+49 SET ^TMP("DGPFSORT",$JOB,1,DGSUB,DGAIEN,DGSITE,DGLIEN)=DGSTRING
+50 QUIT
+51 ;
+52 ;
BLD(DGARY,DGSRTBY,DGCNT) ;Build list area
+1 ;
+2 ; Input:
+3 ; DGARY - subscript name for temp global
+4 ; DGSRTBY - list sort by value
+5 ;
+6 ; Output:
+7 ; DGCNT - number of lines in the list
+8 ; DGARY - display list - ^TMP(DGARY,$J)
+9 ;
+10 ;d/t error msg received
NEW DGACKDT
+11 ;assignment ien
NEW DGAIEN
+12 ;date of last activation action
NEW DGLAST
+13 ;log record ien
NEW DGLIEN
+14 ;line counter
NEW DGLINE
+15 ;original assignment date
NEW DGORIG
+16 ;owner of assignment
NEW DGOWNER
+17 ;patient name
NEW DGPNAME
+18 ;site ien
NEW DGSIEN
+19 ;site transmitted to name
NEW DGSITE
+20 ;patient ssn
NEW DGSSN
+21 ;detail line
NEW DGSTRING
+22 ;loop var
NEW DGSUB
+23 ;sort array root
NEW DGTEMP
+24 ;
+25 SET DGTEMP=$NAME(^TMP("DGPFSORT",$JOB,1))
+26 SET DGSUB=""
SET DGLINE=0
+27 ;
+28 FOR
SET DGSUB=$ORDER(@DGTEMP@(DGSUB))
if DGSUB=""
QUIT
Begin DoDot:1
+29 SET DGAIEN=0
+30 FOR
SET DGAIEN=$ORDER(@DGTEMP@(DGSUB,DGAIEN))
if 'DGAIEN
QUIT
Begin DoDot:2
+31 SET DGORIG=$$GETADT^DGPFAAH(DGAIEN)
+32 SET DGSIEN=0
+33 FOR
SET DGSIEN=$ORDER(@DGTEMP@(DGSUB,DGAIEN,DGSIEN))
if 'DGSIEN
QUIT
Begin DoDot:3
+34 SET DGLIEN=0
+35 FOR
SET DGLIEN=$ORDER(@DGTEMP@(DGSUB,DGAIEN,DGSIEN,DGLIEN))
if 'DGLIEN
QUIT
Begin DoDot:4
+36 NEW X
+37 ;- get data fields
+38 SET DGSTRING=$GET(@DGTEMP@(DGSUB,DGAIEN,DGSIEN,DGLIEN))
+39 SET DGPNAME=$PIECE(DGSTRING,U,2)
+40 SET DGSSN=$EXTRACT($PIECE(DGSTRING,U,3),6,9)
+41 SET DGACKDT=$$FMTE^XLFDT($PIECE(DGSTRING,U,4)\1,"2Z")
+42 SET DGSITE=$EXTRACT($PIECE(DGSTRING,U,5),1,27)
+43 ;- increment line counter
+44 SET DGLINE=DGLINE+1
+45 ;- set line into list area
+46 ;- format of display line, 2 spaces between columns
+47 ; 1-3 6-35 38-41 44-51 54-80
+48 ; line# patient ssn Reject_date Transmit_to
+49 DO SET(DGARY,DGLINE,DGLINE,1,,,.DGCNT)
+50 DO SET(DGARY,DGLINE,DGPNAME,6,,,.DGCNT)
+51 DO SET(DGARY,DGLINE,DGSSN,38,,,.DGCNT)
+52 DO SET(DGARY,DGLINE,DGACKDT,44,,,.DGCNT)
+53 DO SET(DGARY,DGLINE,DGSITE,54,,,.DGCNT)
+54 ;
+55 ;- associate "IDX" list item entry with the pointer's
+56 ; back to ^TMP("DGPFSORT",$J,0,DGAIEN,DGSITE,DGLIEN) global:
+57 ; <assignment ien>^<site ien>^<HL7 log ien>^<patient dfn>^pat name^site name
+58 SET ^TMP(DGARY,$JOB,"IDX",DGLINE,DGLINE)=DGAIEN_U_DGSIEN_U_DGLIEN_U_$PIECE(DGSTRING,U,1)_U_DGPNAME_U_$PIECE(DGSTRING,U,5)
End DoDot:4
End DoDot:3
End DoDot:2
End DoDot:1
+59 ;
+60 ;cleanup temp sort global
+61 KILL @DGTEMP
+62 QUIT
+63 ;
+64 ;
SET(DGARY,DGLINE,DGTEXT,DGCOL,DGON,DGOFF,DGCNT) ;Setup display detail lines
+1 ;
+2 ; Input:
+3 ; DGARY - subscript name for temp global
+4 ; DGLINE - line number
+5 ; DGTEXT - text
+6 ; DGCOL - starting column
+7 ; DGON - highlighting on
+8 ; DGOFF - highlighting off
+9 ;
+10 ; Output:
+11 ; DGARY - temp global array of LM detail lines
+12 ; DGCNT - number of lines in the list
+13 ;
+14 ;string to insert new text into
NEW DGX
+15 ;
+16 SET DGX=$SELECT($DATA(^TMP(DGARY,$JOB,DGLINE,0)):^(0),1:"")
+17 SET DGCNT=DGLINE
+18 ;
+19 SET ^TMP(DGARY,$JOB,DGLINE,0)=$$SETSTR^VALM1(DGTEXT,DGX,DGCOL,$LENGTH(DGTEXT))
+20 ;
+21 if $GET(DGON)]""!($GET(DGOFF)]"")
DO CNTRL^VALM10(DGLINE,DGCOL,$LENGTH(DGTEXT),$GET(DGON),$GET(DGOFF))
+22 ;
+23 QUIT