DGPFLMT4 ;ALB/RBS - PRF TRANSMIT VIEW MESSAGE BUILD LIST AREA ; 10/19/06 10:59am
;;5.3;Registration;**650,1015**;Aug 13, 1993;Build 21
;
;no direct entry
QUIT
;
;
EN(DGARY,DGPFIEN,DGCNT) ;Entry point to build error detail list area.
;
; Input:
; DGARY - subscript name for temp global
; DGPFIEN - IEN of record
;
; Output:
; DGCNT - number of display lines, pass by reference (VALMCNT)
;
;quit if required input paramater not passed
Q:'$G(DGPFIEN)
;
S:$G(DGARY)="" DGARY="DGPFVDET"
;
N DGAIEN ;assignment ien
N DGCOD ;error code
N DGLI ;dialog text line number
N DGPFA ;assignment array
N DGPFAH ;assignment history data array
N DGPFL ;HL7 transmission log data array
N DGLINE ;line counter
N DGSUB ;subscript var
N DGPFL ;HL7 transmission log data array
N DIERR ;var returned from BLD^DIALOG
N DGTBL ;error code table array
N DGTEMP ;array returned from BLD^DIALOG with error msg text
;
;init variables
S DGLINE=0
K DGPFA,DGPFAH,DGPFL,DGTBL
;
;retrieve HL7 log data
Q:'$$GETLOG^DGPFHLL(DGPFIEN,.DGPFL)
Q:'+DGPFL("ASGNHIST")
;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
Q:'$$GETASGN^DGPFAA(DGAIEN,.DGPFA)
;
;set Error Received D/T
S DGLINE=DGLINE+1
D SET^DGPFLMT1(DGARY,DGLINE,"Error Received D/T: "_$$FDTTM^VALM1($P($G(DGPFL("ACKDT")),U,1)),10,,,.DGCNT)
;
;set Message Control ID
S DGLINE=DGLINE+1
D SET^DGPFLMT1(DGARY,DGLINE,"Message Control ID: "_$P($G(DGPFL("MSGID")),U,2),10,,,.DGCNT)
;
;set Flag Name
S DGLINE=DGLINE+1
D SET^DGPFLMT1(DGARY,DGLINE,"Flag Name: "_$P($G(DGPFA("FLAG")),U,2),19,,,.DGCNT)
;
;set Owner Site
S DGLINE=DGLINE+1
D SET^DGPFLMT1(DGARY,DGLINE,"Owner Site: "_$P($G(DGPFA("OWNER")),U,2),18,,,.DGCNT)
;
;set Assignment Transmitted To
S DGLINE=DGLINE+1
D SET^DGPFLMT1(DGARY,DGLINE,"Assignment Transmitted To: "_$P($G(DGPFL("SITE")),U,2),3,,,.DGCNT)
;
;set Assignment Transmission Date/Time
S DGLINE=DGLINE+1
D SET^DGPFLMT1(DGARY,DGLINE,"Assignment Transmission D/T: "_$$FDTTM^VALM1($P($G(DGPFL("TRANSDT")),U,1)),1,,,.DGCNT)
;
;set blank line
S DGLINE=DGLINE+1
D SET^DGPFLMT1(DGARY,DGLINE," ",1,,,.DGCNT)
;
;set Rejection Reason
S DGLINE=DGLINE+1
D SET^DGPFLMT1(DGARY,DGLINE,"Rejection Reason(s): ",1,,,.DGCNT)
;
;set underline
S DGLINE=DGLINE+1
D SET^DGPFLMT1(DGARY,DGLINE,"--------------------",1,,,.DGCNT)
;
;set no error code message
I $O(DGPFL("ERROR",""))="" D Q
. S DGLINE=DGLINE+1
. D SET^DGPFLMT1(DGARY,DGLINE,">>> There are no Rejection Reason codes on file.",1,,,.DGCNT)
;
;load error code table
D BLDVA086^DGPFHLU3(.DGTBL)
;
;loop and set error msg text lines
S DGSUB=0
F S DGSUB=$O(DGPFL("ERROR",DGSUB)) Q:'DGSUB D
. Q:$G(DGPFL("ERROR",DGSUB))']""
. K DGTEMP
. S DGCOD=DGPFL("ERROR",DGSUB)
. ;assume numeric error code is a DIALOG
. I DGCOD?1N.N D BLD^DIALOG(DGCOD,"","","DGTEMP")
. I $D(DGTEMP) D FORMAT(.DGTEMP,70)
. ;if not a DIALOG, then is it a table entry?
. I '$D(DGTEMP),DGCOD]"",$D(DGTBL(DGCOD,"DESC")) S DGTEMP(1)=DGTBL(DGCOD,"DESC") D FORMAT(.DGTEMP,70)
. ;not a DIALOG or table entry - then error is unknown
. I '$D(DGTEMP) S DGTEMP(1)="Unknown Error code: '"_DGCOD_"'"
. ;
. F DGLI=1:1 Q:'$D(DGTEMP(DGLI)) S DGLINE=DGLINE+1 D
. . I DGLI=1 D SET^DGPFLMT1(DGARY,DGLINE,DGSUB_". "_DGTEMP(DGLI),1,,,.DGCNT)
. . E D SET^DGPFLMT1(DGARY,DGLINE," "_DGTEMP(DGLI),1,,,.DGCNT)
;
Q
;
FORMAT(DGTEXT,DGMAX) ;format text lines to length
;This procedure formats an array of text lines to be less than a
;given maximum length.
;
; Supported DBIA: #10104 - $$TRIM^XLFSTR Kernel api to trim spaces
;
; Input:
; DGTEXT - (required) array of text lines (passed by reference)
; DGMAX - (optional) maximum line length (default = 75)
;
; Output:
; DGTEXT - re-formatted array of text lines
;
Q:'$D(DGTEXT)
;
N DGARRY ;temp array for re-formatting
N DGI ;loop var
N DGLN ;line counter var
N DGMORE ;leftover words
N DGNEWLN ;new text line
N DGOLDLN ;original text line
N DGSPOT ;position of text line to break at
;
S:'+$G(DGMAX) DGMAX=75
;
S (DGI,DGLN,DGMORE,DGNEWLN,DGOLDLN,DGSPOT)=""
;
F DGI=1:1 S DGOLDLN=$G(DGTEXT(DGI)) Q:'$L(DGOLDLN)&'$L(DGMORE) D
. I DGOLDLN'?1.P S DGOLDLN=$$TRIM^XLFSTR(DGOLDLN)
. I $L(DGOLDLN)'>DGMAX,'$L(DGMORE) D Q
. . S DGLN=DGLN+1,DGARRY(DGLN)=DGOLDLN
. ;
. I $L(DGMORE),(DGOLDLN?1.P!('$L(DGOLDLN))) D Q
. . S DGLN=DGLN+1,DGARRY(DGLN)=DGMORE,DGMORE=""
. . S:$L(DGOLDLN) DGLN=DGLN+1,DGARRY(DGLN)=DGOLDLN
. ;
. S:$L(DGMORE) DGOLDLN=DGMORE_" "_DGOLDLN,DGMORE=""
. ;
. I $L(DGOLDLN)>DGMAX F D Q:'$L(DGOLDLN)
. . S DGSPOT=$L($E(DGOLDLN,1,DGMAX)," ")
. . S DGNEWLN=$P(DGOLDLN," ",1,$S(DGSPOT>1:DGSPOT-1,1:1))
. . S DGLN=DGLN+1,DGARRY(DGLN)=DGNEWLN,DGNEWLN=""
. . S DGMORE=$P(DGOLDLN," ",$S(DGSPOT>1:DGSPOT,1:DGSPOT+1),$L(DGOLDLN," "))
. . I $L(DGMORE)>DGMAX S DGOLDLN=DGMORE,DGMORE=""
. . E S DGOLDLN=""
. E D
. . S DGLN=DGLN+1,DGARRY(DGLN)=DGOLDLN
;
I $D(DGARRY) K DGTEXT M DGTEXT=DGARRY
Q
DGPFLMT4 ;ALB/RBS - PRF TRANSMIT VIEW MESSAGE BUILD LIST AREA ; 10/19/06 10:59am
+1 ;;5.3;Registration;**650,1015**;Aug 13, 1993;Build 21
+2 ;
+3 ;no direct entry
+4 QUIT
+5 ;
+6 ;
EN(DGARY,DGPFIEN,DGCNT) ;Entry point to build error detail list area.
+1 ;
+2 ; Input:
+3 ; DGARY - subscript name for temp global
+4 ; DGPFIEN - IEN of record
+5 ;
+6 ; Output:
+7 ; DGCNT - number of display lines, pass by reference (VALMCNT)
+8 ;
+9 ;quit if required input paramater not passed
+10 IF '$GET(DGPFIEN)
QUIT
+11 ;
+12 IF $GET(DGARY)=""
SET DGARY="DGPFVDET"
+13 ;
+14 ;assignment ien
NEW DGAIEN
+15 ;error code
NEW DGCOD
+16 ;dialog text line number
NEW DGLI
+17 ;assignment array
NEW DGPFA
+18 ;assignment history data array
NEW DGPFAH
+19 ;HL7 transmission log data array
NEW DGPFL
+20 ;line counter
NEW DGLINE
+21 ;subscript var
NEW DGSUB
+22 ;HL7 transmission log data array
NEW DGPFL
+23 ;var returned from BLD^DIALOG
NEW DIERR
+24 ;error code table array
NEW DGTBL
+25 ;array returned from BLD^DIALOG with error msg text
NEW DGTEMP
+26 ;
+27 ;init variables
+28 SET DGLINE=0
+29 KILL DGPFA,DGPFAH,DGPFL,DGTBL
+30 ;
+31 ;retrieve HL7 log data
+32 IF '$$GETLOG^DGPFHLL(DGPFIEN,.DGPFL)
QUIT
+33 IF '+DGPFL("ASGNHIST")
QUIT
+34 ;retrieve assignment history data to get PRF Assignment ien
+35 IF '$$GETHIST^DGPFAAH(+DGPFL("ASGNHIST"),.DGPFAH)
QUIT
+36 SET DGAIEN=$PIECE($GET(DGPFAH("ASSIGN")),U,1)
+37 IF 'DGAIEN
QUIT
+38 IF '$$GETASGN^DGPFAA(DGAIEN,.DGPFA)
QUIT
+39 ;
+40 ;set Error Received D/T
+41 SET DGLINE=DGLINE+1
+42 DO SET^DGPFLMT1(DGARY,DGLINE,"Error Received D/T: "_$$FDTTM^VALM1($PIECE($GET(DGPFL("ACKDT")),U,1)),10,,,.DGCNT)
+43 ;
+44 ;set Message Control ID
+45 SET DGLINE=DGLINE+1
+46 DO SET^DGPFLMT1(DGARY,DGLINE,"Message Control ID: "_$PIECE($GET(DGPFL("MSGID")),U,2),10,,,.DGCNT)
+47 ;
+48 ;set Flag Name
+49 SET DGLINE=DGLINE+1
+50 DO SET^DGPFLMT1(DGARY,DGLINE,"Flag Name: "_$PIECE($GET(DGPFA("FLAG")),U,2),19,,,.DGCNT)
+51 ;
+52 ;set Owner Site
+53 SET DGLINE=DGLINE+1
+54 DO SET^DGPFLMT1(DGARY,DGLINE,"Owner Site: "_$PIECE($GET(DGPFA("OWNER")),U,2),18,,,.DGCNT)
+55 ;
+56 ;set Assignment Transmitted To
+57 SET DGLINE=DGLINE+1
+58 DO SET^DGPFLMT1(DGARY,DGLINE,"Assignment Transmitted To: "_$PIECE($GET(DGPFL("SITE")),U,2),3,,,.DGCNT)
+59 ;
+60 ;set Assignment Transmission Date/Time
+61 SET DGLINE=DGLINE+1
+62 DO SET^DGPFLMT1(DGARY,DGLINE,"Assignment Transmission D/T: "_$$FDTTM^VALM1($PIECE($GET(DGPFL("TRANSDT")),U,1)),1,,,.DGCNT)
+63 ;
+64 ;set blank line
+65 SET DGLINE=DGLINE+1
+66 DO SET^DGPFLMT1(DGARY,DGLINE," ",1,,,.DGCNT)
+67 ;
+68 ;set Rejection Reason
+69 SET DGLINE=DGLINE+1
+70 DO SET^DGPFLMT1(DGARY,DGLINE,"Rejection Reason(s): ",1,,,.DGCNT)
+71 ;
+72 ;set underline
+73 SET DGLINE=DGLINE+1
+74 DO SET^DGPFLMT1(DGARY,DGLINE,"--------------------",1,,,.DGCNT)
+75 ;
+76 ;set no error code message
+77 IF $ORDER(DGPFL("ERROR",""))=""
Begin DoDot:1
+78 SET DGLINE=DGLINE+1
+79 DO SET^DGPFLMT1(DGARY,DGLINE,">>> There are no Rejection Reason codes on file.",1,,,.DGCNT)
End DoDot:1
QUIT
+80 ;
+81 ;load error code table
+82 DO BLDVA086^DGPFHLU3(.DGTBL)
+83 ;
+84 ;loop and set error msg text lines
+85 SET DGSUB=0
+86 FOR
SET DGSUB=$ORDER(DGPFL("ERROR",DGSUB))
IF 'DGSUB
QUIT
Begin DoDot:1
+87 IF $GET(DGPFL("ERROR",DGSUB))']""
QUIT
+88 KILL DGTEMP
+89 SET DGCOD=DGPFL("ERROR",DGSUB)
+90 ;assume numeric error code is a DIALOG
+91 IF DGCOD?1N.N
DO BLD^DIALOG(DGCOD,"","","DGTEMP")
+92 IF $DATA(DGTEMP)
DO FORMAT(.DGTEMP,70)
+93 ;if not a DIALOG, then is it a table entry?
+94 IF '$DATA(DGTEMP)
IF DGCOD]""
IF $DATA(DGTBL(DGCOD,"DESC"))
SET DGTEMP(1)=DGTBL(DGCOD,"DESC")
DO FORMAT(.DGTEMP,70)
+95 ;not a DIALOG or table entry - then error is unknown
+96 IF '$DATA(DGTEMP)
SET DGTEMP(1)="Unknown Error code: '"_DGCOD_"'"
+97 ;
+98 FOR DGLI=1:1
IF '$DATA(DGTEMP(DGLI))
QUIT
SET DGLINE=DGLINE+1
Begin DoDot:2
+99 IF DGLI=1
DO SET^DGPFLMT1(DGARY,DGLINE,DGSUB_". "_DGTEMP(DGLI),1,,,.DGCNT)
+100 IF '$TEST
DO SET^DGPFLMT1(DGARY,DGLINE," "_DGTEMP(DGLI),1,,,.DGCNT)
End DoDot:2
End DoDot:1
+101 ;
+102 QUIT
+103 ;
FORMAT(DGTEXT,DGMAX) ;format text lines to length
+1 ;This procedure formats an array of text lines to be less than a
+2 ;given maximum length.
+3 ;
+4 ; Supported DBIA: #10104 - $$TRIM^XLFSTR Kernel api to trim spaces
+5 ;
+6 ; Input:
+7 ; DGTEXT - (required) array of text lines (passed by reference)
+8 ; DGMAX - (optional) maximum line length (default = 75)
+9 ;
+10 ; Output:
+11 ; DGTEXT - re-formatted array of text lines
+12 ;
+13 IF '$DATA(DGTEXT)
QUIT
+14 ;
+15 ;temp array for re-formatting
NEW DGARRY
+16 ;loop var
NEW DGI
+17 ;line counter var
NEW DGLN
+18 ;leftover words
NEW DGMORE
+19 ;new text line
NEW DGNEWLN
+20 ;original text line
NEW DGOLDLN
+21 ;position of text line to break at
NEW DGSPOT
+22 ;
+23 IF '+$GET(DGMAX)
SET DGMAX=75
+24 ;
+25 SET (DGI,DGLN,DGMORE,DGNEWLN,DGOLDLN,DGSPOT)=""
+26 ;
+27 FOR DGI=1:1
SET DGOLDLN=$GET(DGTEXT(DGI))
IF '$LENGTH(DGOLDLN)&'$LENGTH(DGMORE)
QUIT
Begin DoDot:1
+28 IF DGOLDLN'?1.P
SET DGOLDLN=$$TRIM^XLFSTR(DGOLDLN)
+29 IF $LENGTH(DGOLDLN)'>DGMAX
IF '$LENGTH(DGMORE)
Begin DoDot:2
+30 SET DGLN=DGLN+1
SET DGARRY(DGLN)=DGOLDLN
End DoDot:2
QUIT
+31 ;
+32 IF $LENGTH(DGMORE)
IF (DGOLDLN?1.P!('$LENGTH(DGOLDLN)))
Begin DoDot:2
+33 SET DGLN=DGLN+1
SET DGARRY(DGLN)=DGMORE
SET DGMORE=""
+34 IF $LENGTH(DGOLDLN)
SET DGLN=DGLN+1
SET DGARRY(DGLN)=DGOLDLN
End DoDot:2
QUIT
+35 ;
+36 IF $LENGTH(DGMORE)
SET DGOLDLN=DGMORE_" "_DGOLDLN
SET DGMORE=""
+37 ;
+38 IF $LENGTH(DGOLDLN)>DGMAX
FOR
Begin DoDot:2
+39 SET DGSPOT=$LENGTH($EXTRACT(DGOLDLN,1,DGMAX)," ")
+40 SET DGNEWLN=$PIECE(DGOLDLN," ",1,$SELECT(DGSPOT>1:DGSPOT-1,1:1))
+41 SET DGLN=DGLN+1
SET DGARRY(DGLN)=DGNEWLN
SET DGNEWLN=""
+42 SET DGMORE=$PIECE(DGOLDLN," ",$SELECT(DGSPOT>1:DGSPOT,1:DGSPOT+1),$LENGTH(DGOLDLN," "))
+43 IF $LENGTH(DGMORE)>DGMAX
SET DGOLDLN=DGMORE
SET DGMORE=""
+44 IF '$TEST
SET DGOLDLN=""
End DoDot:2
IF '$LENGTH(DGOLDLN)
QUIT
+45 IF '$TEST
Begin DoDot:2
+46 SET DGLN=DGLN+1
SET DGARRY(DGLN)=DGOLDLN
End DoDot:2
End DoDot:1
+47 ;
+48 IF $DATA(DGARRY)
KILL DGTEXT
MERGE DGTEXT=DGARRY
+49 QUIT