Home   Package List   Routine Alphabetical List   Global Alphabetical List   FileMan Files List   FileMan Sub-Files List   Package Component Lists   Package-Namespace Mapping  
Routine: DGPFLMT1

DGPFLMT1.m

Go to the documentation of this file.
  1. 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
  1. ; Last Edited: SHRPE/SGM - Jun 7, 2018 13:50
  1. ;
  1. ; DG*5.3*960 - filter for only active and locally owned assignments
  1. ; GET modified for filters BLD modified for additional columns
  1. ;
  1. ;no direct entry
  1. QUIT
  1. ;
  1. ;
  1. EN(DGARY,DGSRTBY,DGCNT) ;Entry point to build list area
  1. ;
  1. ;The following input variables are 'system wide variables' in the
  1. ;DGPF TRANSMISSION ERRORS List Manager screen:
  1. ;
  1. ; Input:
  1. ; DGARY - subscript name for temp global
  1. ; DGSRTBY - list sort by criteria
  1. ; "N" = Patient Name
  1. ; "D" = Date/Time Error Received
  1. ; Output:
  1. ; DGCNT - number of lines in the list
  1. ; DGARY - ^TMP(DGARY,$J) - display list
  1. ; - ^TMP("DGPFSORT",$J) - used to create final DGARY list
  1. ;
  1. ;display wait msg
  1. D WAIT^DICD
  1. ;
  1. ;retrieve and sort
  1. D GET(DGSRTBY)
  1. ;
  1. ;build list
  1. D BLD(DGARY,DGSRTBY,.DGCNT)
  1. ;
  1. ;if no entries in list, display message
  1. I 'DGCNT D
  1. . D SET(DGARY,1,"",1,,,.DGCNT)
  1. . D SET(DGARY,2,"There are no transmission error messages on file.",3,$G(IOINHI),$G(IOINORM),.DGCNT)
  1. ;
  1. Q
  1. ;
  1. ;
  1. GET(DGSRTBY) ;Get "RJ" status entries.
  1. ;
  1. ; Input:
  1. ; DGSRTBY - list sort by value
  1. ;
  1. ; Output:
  1. ; ^TMP("DGPFSORT",$J,0,<assignment ien>,<site ien>,<HL7 log ien>)=""
  1. ;
  1. ;The 0 node is created to group each patient's PRF Assignment record
  1. ;with each Site Transmitted To that is rejecting the update with all
  1. ;of the pointed to HL7 transmission log records.
  1. ;Only the most recent transmission log entry will be displayed.
  1. ;
  1. N DGAIEN ;assignment ien
  1. N DGDAT ;original transmission date
  1. N DGLIEN ;HL7 log record ien
  1. N DGPFA ;assignment array
  1. N DGPFAH ;assignment history data array
  1. N DGPFL ;HL7 transmission log data array
  1. N DGPFPAT ;patient data array
  1. N DGSITE ;site transmitted to ien
  1. N DGSSN ;patient ssn
  1. ;
  1. ;loop through ASTAT index of transmission date/times
  1. S DGDAT=0
  1. F S DGDAT=$O(^DGPF(26.17,"ASTAT",DGDAT)) Q:'DGDAT D
  1. . Q:'$D(^DGPF(26.17,"ASTAT",DGDAT,"RJ"))
  1. . S DGLIEN=0
  1. . F S DGLIEN=$O(^DGPF(26.17,"ASTAT",DGDAT,"RJ",DGLIEN)) Q:'DGLIEN D
  1. . . K DGPFL,DGPFAH
  1. . . ;- retrieve HL7 log data
  1. . . Q:'$$GETLOG^DGPFHLL(DGLIEN,.DGPFL)
  1. . . Q:'+DGPFL("ASGNHIST")
  1. . . S DGSITE=$P($G(DGPFL("SITE")),U,1)
  1. . . Q:DGSITE']""
  1. . . ;- retrieve assignment history data to get PRF Assignment ien
  1. . . Q:'$$GETHIST^DGPFAAH(+DGPFL("ASGNHIST"),.DGPFAH)
  1. . . S DGAIEN=$P($G(DGPFAH("ASSIGN")),U,1)
  1. . . Q:'DGAIEN
  1. . . ;
  1. . . ;- create 0 node by patient assignment, site ien and log ien
  1. . . S ^TMP("DGPFSORT",$J,0,DGAIEN,DGSITE,DGLIEN)=""
  1. ;
  1. Q:'$O(^TMP("DGPFSORT",$J,0,"")) ;quit if nothing setup
  1. ;
  1. ;- now loop the sorted 0 node and only use the most recent HL7 error
  1. ; record to create the List Manager display temp file.
  1. ;
  1. S DGAIEN=0
  1. F S DGAIEN=$O(^TMP("DGPFSORT",$J,0,DGAIEN)) Q:DGAIEN="" D
  1. . S DGSITE=0
  1. . F S DGSITE=$O(^TMP("DGPFSORT",$J,0,DGAIEN,DGSITE)) Q:DGSITE="" D
  1. . . N X,Y
  1. . . K DGPFL,DGPFAH,DGPFA,DGPFPAT
  1. . . S DGLIEN=0 ;- get most recent record ien
  1. . . S DGLIEN=$O(^TMP("DGPFSORT",$J,0,DGAIEN,DGSITE,""),-1)
  1. . . Q:DGLIEN=""
  1. . . ;- retrieve HL7 log data
  1. . . Q:'$$GETLOG^DGPFHLL(DGLIEN,.DGPFL)
  1. . . ;- retrieve assignment file data to get Owner Site
  1. . . Q:'$$GETASGN^DGPFAA(DGAIEN,.DGPFA)
  1. . . ;- retrieve patient data to get ssn
  1. . . Q:'$$GETPAT^DGPFUT2(+DGPFA("DFN"),.DGPFPAT)
  1. . . S DGSSN=$G(DGPFPAT("SSN")) S:'DGSSN DGSSN="UNKNOWN"
  1. . . ;- add ssn to existing array
  1. . . S DGPFA("SSN")=DGSSN
  1. . . ;- retrieve assignment history data
  1. . . Q:'$$GETHIST^DGPFAAH(+DGPFL("ASGNHIST"),.DGPFAH)
  1. . . ;
  1. . . ;- DG*5.3*960 - FILTER check
  1. . . ; STAT: 1:active; 0:inactive
  1. . . ; OWN: 1:Owner local facility; 0:Owner not local
  1. . . ; FLAG: "A" or flag variable pointer
  1. . . S X=$G(DGSORT("STAT")) I X?1N,+DGPFA("STATUS")'=X Q
  1. . . S X=$G(DGSORT("OWN")) I X?1N D Q:'Y
  1. . . . S Y=+DGPFA("OWNER"),Y=$S(Y<1:0,1:$$ISDIV^DGPFUT(Y))
  1. . . . I X=1,Y>0 Q
  1. . . . I X=0 S Y=$S(Y>0:0,1:1)
  1. . . . Q
  1. . . S X=$G(DGSORT("FLAG")) I +X,$P(X,U)'=$P(DGPFA("FLAG"),U) Q
  1. . . ;
  1. . . ;- setup output array
  1. . . D SORT(DGLIEN,DGSRTBY,.DGPFA,.DGPFAH,.DGPFL)
  1. . . Q
  1. . Q
  1. ;
  1. Q
  1. ;
  1. ;
  1. SORT(DGLIEN,DGSRTBY,DGPFA,DGPFAH,DGPFL) ;Setup output global
  1. ;
  1. ; Input:
  1. ; DGLIEN - ien of HL7 log record
  1. ; DGSRTBY - list sort value
  1. ; DGPFA - assignment array
  1. ; DGPFAH - assignment history array
  1. ; DGPFL - HL7 log array
  1. ;
  1. ; Output:
  1. ; ^TMP("DGPFSORT",$J,1,S4,S5,S6,S7) = data string values
  1. ; Subscript's are as follows for each sort by:
  1. ;
  1. ; List by patient name List by HL7 received d/t
  1. ; Sort="N" Sort="D"
  1. ; -------------------- ------------------------
  1. ; S4 patient_name ack_received_d/t
  1. ; S5 assignment_ien assignment_ien
  1. ; S6 site_ien site_transmitted_to
  1. ; S7 HL7_log_ien HL7_log_ien
  1. ;
  1. ; The data string value consists of 5 "^"-pieces
  1. ; DFN ^ Patient_name ^ SSN ^ Ack_received_dt ^ Site_transmitted_to
  1. ;
  1. N DGACKDT ;d/t error msg received
  1. N DGAIEN ;assignment ien
  1. N DGPNAME ;patient name
  1. N DGSITE ;site transmitted to ien
  1. N DGSTRING ;detail line
  1. N DGSUB ;subscript var
  1. ;
  1. ;- subscript setup
  1. S DGACKDT=$P($G(DGPFL("ACKDT")),U) S:DGACKDT="" DGACKDT="UNKNOWN"
  1. S DGAIEN=$P($G(DGPFAH("ASSIGN")),U) S:DGAIEN="" DGAIEN="UNKNOWN"
  1. S DGPNAME=$P($G(DGPFA("DFN")),U,2) S:DGPNAME="" DGPNAME="UNKNOWN"
  1. S DGSITE=$P($G(DGPFL("SITE")),U)
  1. ;
  1. ;- data string setup -
  1. S DGSTRING=$P($G(DGPFA("DFN")),U)
  1. S $P(DGSTRING,U,2)=DGPNAME
  1. S $P(DGSTRING,U,3)=$P($G(DGPFA("SSN")),U)
  1. S $P(DGSTRING,U,4)=DGACKDT
  1. S $P(DGSTRING,U,5)=$P($G(DGPFL("SITE")),U,2)
  1. ;
  1. ;- patient name sort
  1. I DGSRTBY="N" S DGSUB=DGPNAME
  1. ;- date/time error received type sort
  1. I DGSRTBY="D" S DGSUB=DGACKDT
  1. ;
  1. S ^TMP("DGPFSORT",$J,1,DGSUB,DGAIEN,DGSITE,DGLIEN)=DGSTRING
  1. Q
  1. ;
  1. ;
  1. BLD(DGARY,DGSRTBY,DGCNT) ;Build list area
  1. ;
  1. ; Input:
  1. ; DGARY - subscript name for temp global
  1. ; DGSRTBY - list sort by value
  1. ;
  1. ; Output:
  1. ; DGCNT - number of lines in the list
  1. ; DGARY - display list - ^TMP(DGARY,$J)
  1. ;
  1. N DGACKDT ;d/t error msg received
  1. N DGAIEN ;assignment ien
  1. N DGLAST ;date of last activation action
  1. N DGLIEN ;log record ien
  1. N DGLINE ;line counter
  1. N DGORIG ;original assignment date
  1. N DGOWNER ;owner of assignment
  1. N DGPNAME ;patient name
  1. N DGSIEN ;site ien
  1. N DGSITE ;site transmitted to name
  1. N DGSSN ;patient ssn
  1. N DGSTRING ;detail line
  1. N DGSUB ;loop var
  1. N DGTEMP ;sort array root
  1. ;
  1. S DGTEMP=$NA(^TMP("DGPFSORT",$J,1))
  1. S DGSUB="",DGLINE=0
  1. ;
  1. F S DGSUB=$O(@DGTEMP@(DGSUB)) Q:DGSUB="" D
  1. . S DGAIEN=0
  1. . F S DGAIEN=$O(@DGTEMP@(DGSUB,DGAIEN)) Q:'DGAIEN D
  1. . . S DGORIG=$$GETADT^DGPFAAH(DGAIEN)
  1. . . S DGSIEN=0
  1. . . F S DGSIEN=$O(@DGTEMP@(DGSUB,DGAIEN,DGSIEN)) Q:'DGSIEN D
  1. . . . S DGLIEN=0
  1. . . . F S DGLIEN=$O(@DGTEMP@(DGSUB,DGAIEN,DGSIEN,DGLIEN)) Q:'DGLIEN D
  1. . . . . N X
  1. . . . . ;- get data fields
  1. . . . . S DGSTRING=$G(@DGTEMP@(DGSUB,DGAIEN,DGSIEN,DGLIEN))
  1. . . . . S DGPNAME=$P(DGSTRING,U,2)
  1. . . . . S DGSSN=$E($P(DGSTRING,U,3),6,9)
  1. . . . . S DGACKDT=$$FMTE^XLFDT($P(DGSTRING,U,4)\1,"2Z")
  1. . . . . S DGSITE=$E($P(DGSTRING,U,5),1,27)
  1. . . . . ;- increment line counter
  1. . . . . S DGLINE=DGLINE+1
  1. . . . . ;- set line into list area
  1. . . . . ;- format of display line, 2 spaces between columns
  1. . . . . ; 1-3 6-35 38-41 44-51 54-80
  1. . . . . ; line# patient ssn Reject_date Transmit_to
  1. . . . . D SET(DGARY,DGLINE,DGLINE,1,,,.DGCNT)
  1. . . . . D SET(DGARY,DGLINE,DGPNAME,6,,,.DGCNT)
  1. . . . . D SET(DGARY,DGLINE,DGSSN,38,,,.DGCNT)
  1. . . . . D SET(DGARY,DGLINE,DGACKDT,44,,,.DGCNT)
  1. . . . . D SET(DGARY,DGLINE,DGSITE,54,,,.DGCNT)
  1. . . . . ;
  1. . . . . ;- associate "IDX" list item entry with the pointer's
  1. . . . . ; back to ^TMP("DGPFSORT",$J,0,DGAIEN,DGSITE,DGLIEN) global:
  1. . . . . ; <assignment ien>^<site ien>^<HL7 log ien>^<patient dfn>^pat name^site name
  1. . . . . S ^TMP(DGARY,$J,"IDX",DGLINE,DGLINE)=DGAIEN_U_DGSIEN_U_DGLIEN_U_$P(DGSTRING,U,1)_U_DGPNAME_U_$P(DGSTRING,U,5)
  1. ;
  1. ;cleanup temp sort global
  1. K @DGTEMP
  1. Q
  1. ;
  1. ;
  1. SET(DGARY,DGLINE,DGTEXT,DGCOL,DGON,DGOFF,DGCNT) ;Setup display detail lines
  1. ;
  1. ; Input:
  1. ; DGARY - subscript name for temp global
  1. ; DGLINE - line number
  1. ; DGTEXT - text
  1. ; DGCOL - starting column
  1. ; DGON - highlighting on
  1. ; DGOFF - highlighting off
  1. ;
  1. ; Output:
  1. ; DGARY - temp global array of LM detail lines
  1. ; DGCNT - number of lines in the list
  1. ;
  1. N DGX ;string to insert new text into
  1. ;
  1. S DGX=$S($D(^TMP(DGARY,$J,DGLINE,0)):^(0),1:"")
  1. S DGCNT=DGLINE
  1. ;
  1. S ^TMP(DGARY,$J,DGLINE,0)=$$SETSTR^VALM1(DGTEXT,DGX,DGCOL,$L(DGTEXT))
  1. ;
  1. D:$G(DGON)]""!($G(DGOFF)]"") CNTRL^VALM10(DGLINE,DGCOL,$L(DGTEXT),$G(DGON),$G(DGOFF))
  1. ;
  1. Q