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

DGPFHLL.m

Go to the documentation of this file.
  1. DGPFHLL ;ALB/RPM - PRF HL7 TRANSMISSION LOG API'S ; 3/6/03
  1. ;;5.3;Registration;**425,650,1015**;Aug 13, 1993;Build 21
  1. ;
  1. Q
  1. ;
  1. GETLOG(DGLIEN,DGPFL) ;retrieve a transmission log record
  1. ;
  1. ; Input:
  1. ; DGLIEN - IEN for PRF HL7 TRANSMISSION LOG (#26.17) file
  1. ;
  1. ; Output:
  1. ; Function value - 1 on success, 0 on failure
  1. ; DGPFL - array of transmission data fields
  1. ; Subscript Field#
  1. ; ---------- ------
  1. ; "MSGID" .01
  1. ; "ASGNHIST" .02
  1. ; "TRANSDT" .03
  1. ; "MSGSTAT" .04
  1. ; "SITE" .05
  1. ; "ACKDT" .06
  1. ; "ERROR",n .07
  1. ;
  1. N DGIENS ;IEN string
  1. N DGFLDS ;results array
  1. N DGECNT ;error counter
  1. N DGERR ;error arrary
  1. N DGRSLT ;function value
  1. ;
  1. S DGRSLT=0
  1. I $G(DGLIEN)>0,$D(^DGPF(26.17,DGLIEN)) D
  1. . S DGIENS=DGLIEN_","
  1. . D GETS^DIQ(26.17,DGIENS,"**","IEZ","DGFLDS","DGERR")
  1. . Q:$D(DGERR)
  1. . S DGRSLT=1
  1. . S DGPFL("MSGID")=$G(DGFLDS(26.17,DGIENS,.01,"I"))_U_$G(DGFLDS(26.17,DGIENS,.01,"E"))
  1. . S DGPFL("ASGNHIST")=$G(DGFLDS(26.17,DGIENS,.02,"I"))_U_$G(DGFLDS(26.17,DGIENS,.02,"E"))
  1. . S DGPFL("TRANSDT")=$G(DGFLDS(26.17,DGIENS,.03,"I"))_U_$G(DGFLDS(26.17,DGIENS,.03,"E"))
  1. . S DGPFL("MSGSTAT")=$G(DGFLDS(26.17,DGIENS,.04,"I"))_U_$G(DGFLDS(26.17,DGIENS,.04,"E"))
  1. . S DGPFL("SITE")=$G(DGFLDS(26.17,DGIENS,.05,"I"))_U_$G(DGFLDS(26.17,DGIENS,.05,"E"))
  1. . S DGPFL("ACKDT")=$G(DGFLDS(26.17,DGIENS,.06,"I"))_U_$G(DGFLDS(26.17,DGIENS,.06,"E"))
  1. . ;
  1. . ;build error code array
  1. . S DGIENS="",DGECNT=0
  1. . F S DGIENS=$O(DGFLDS(26.1707,DGIENS)) Q:DGIENS="" D:$G(DGFLDS(26.1707,DGIENS,.01,"E"))]""
  1. . . S DGECNT=DGECNT+1
  1. . . S DGPFL("ERROR",DGECNT)=DGFLDS(26.1707,DGIENS,.01,"E")
  1. ;
  1. Q DGRSLT
  1. ;
  1. GETQLOG(DGLIEN,DGPFL) ;retrieve a query log record
  1. ;
  1. ; Input:
  1. ; DGLIEN - IEN for PRF HL7 QUERY LOG (#26.19) file
  1. ;
  1. ; Output:
  1. ; Function value - 1 on success, 0 on failure
  1. ; DGPFL - array of transmission data fields
  1. ; Subscript Field#
  1. ; --------- ------
  1. ; "MSGID" .01
  1. ; "EVNT" .02
  1. ; "TRANSDT" .03
  1. ; "MSGSTAT" .04
  1. ; "SITE" .05
  1. ; "ACKDT" .06
  1. ; "ERROR",n .07
  1. ;
  1. N DGIENS ;IEN string
  1. N DGFLDS ;results array
  1. N DGECNT ;error counter
  1. N DGERR ;error arrary
  1. N DGRSLT ;function value
  1. ;
  1. S DGRSLT=0
  1. I $G(DGLIEN)>0,$D(^DGPF(26.19,DGLIEN)) D
  1. . S DGIENS=DGLIEN_","
  1. . D GETS^DIQ(26.19,DGIENS,"**","IEZ","DGFLDS","DGERR")
  1. . Q:$D(DGERR)
  1. . S DGRSLT=1
  1. . S DGPFL("MSGID")=$G(DGFLDS(26.19,DGIENS,.01,"I"))_U_$G(DGFLDS(26.19,DGIENS,.01,"E"))
  1. . S DGPFL("EVNT")=$G(DGFLDS(26.19,DGIENS,.02,"I"))_U_$G(DGFLDS(26.19,DGIENS,.02,"E"))
  1. . S DGPFL("TRANSDT")=$G(DGFLDS(26.19,DGIENS,.03,"I"))_U_$G(DGFLDS(26.19,DGIENS,.03,"E"))
  1. . S DGPFL("MSGSTAT")=$G(DGFLDS(26.19,DGIENS,.04,"I"))_U_$G(DGFLDS(26.19,DGIENS,.04,"E"))
  1. . S DGPFL("SITE")=$G(DGFLDS(26.19,DGIENS,.05,"I"))_U_$G(DGFLDS(26.19,DGIENS,.05,"E"))
  1. . S DGPFL("ACKDT")=$G(DGFLDS(26.19,DGIENS,.06,"I"))_U_$G(DGFLDS(26.19,DGIENS,.06,"E"))
  1. . ;
  1. . ;build error code array
  1. . S DGIENS="",DGECNT=0
  1. . F S DGIENS=$O(DGFLDS(26.1907,DGIENS)) Q:DGIENS="" D:$G(DGFLDS(26.1907,DGIENS,.01,"E"))]""
  1. . . S DGECNT=DGECNT+1
  1. . . S DGPFL("ERROR",DGECNT)=DGFLDS(26.1907,DGIENS,.01,"E")
  1. ;
  1. Q DGRSLT
  1. ;
  1. FNDLOG(DGFILE,DGMSGID) ;find and return the record number from a given HL7
  1. ; LOG file for a given HL7 Message ID
  1. ;
  1. ; Input:
  1. ; DGFILE - file number of HL7 log file
  1. ; DGMSGID - HL7 Message ID
  1. ;
  1. ; Output:
  1. ; Function value - IEN of HL7 LOG file on success, 0 on failure
  1. ;
  1. N DGIEN ;function value
  1. ;
  1. I +$G(DGFILE),+$G(DGMSGID) D
  1. . S DGIEN=$O(^DGPF(DGFILE,"B",DGMSGID,0))
  1. Q $S($G(DGIEN)>0:DGIEN,1:0)
  1. ;
  1. STOXMIT(DGHIEN,DGMSGID,DGINST,DGERR) ;store the transmission log data
  1. ;
  1. ; Input:
  1. ; DGHIEN - pointer to PRF ASSIGNMENT HISTORY (#26.14) file
  1. ; DGMSGID - message ID from VistA HL7
  1. ; DGINST - pointer to the INSTITUTION (#4) file
  1. ;
  1. ; Output:
  1. ; DGERR - undefined on success, error message on failure
  1. ;
  1. N DGFDA ;fda array
  1. N DGFDAIEN ;UPDATE^DIE ien result
  1. ;
  1. I +$G(DGHIEN),$D(^DGPF(26.14,DGHIEN)),$D(DGMSGID),+$G(DGINST),$D(^DIC(4,DGINST)) D
  1. . Q:$$FNDLOG^DGPFHLL(26.17,DGMSGID)
  1. . S DGFDA(26.17,"+1,",.01)=DGMSGID
  1. . S DGFDA(26.17,"+1,",.02)=DGHIEN
  1. . S DGFDA(26.17,"+1,",.03)=$$NOW^XLFDT()
  1. . S DGFDA(26.17,"+1,",.04)="T"
  1. . S DGFDA(26.17,"+1,",.05)=DGINST
  1. . D UPDATE^DIE("","DGFDA","DGFDAIEN","DGERR")
  1. Q
  1. ;
  1. STOQXMIT(DGEVNT,DGMSGID,DGINST,DGERR) ;store the query log data
  1. ;
  1. ; Input:
  1. ; DGEVNT - pointer to PRF event in PRF HL7 EVENT (#26.21) file
  1. ; DGMSGID - message ID from VistA HL7
  1. ; DGINST - pointer to the INSTITUTION (#4) file
  1. ;
  1. ; Output:
  1. ; DGERR - undefined on success, error message on failure
  1. ;
  1. N DGFDA ;fda array
  1. N DGFDAIEN ;UPDATE^DIE ien result
  1. ;
  1. I +$G(DGEVNT),$D(DGMSGID),+$G(DGINST),$D(^DIC(4,DGINST)) D
  1. . Q:$$FNDLOG^DGPFHLL(26.19,DGMSGID)
  1. . S DGFDA(26.19,"+1,",.01)=DGMSGID
  1. . S DGFDA(26.19,"+1,",.02)=DGEVNT
  1. . S DGFDA(26.19,"+1,",.03)=$$NOW^XLFDT()
  1. . S DGFDA(26.19,"+1,",.04)="T"
  1. . S DGFDA(26.19,"+1,",.05)=DGINST
  1. . D UPDATE^DIE("","DGFDA","DGFDAIEN","DGERR")
  1. Q
  1. ;
  1. STOSTAT(DGFILE,DGLIEN,DGSTAT,DGEARR) ;update the HL7 transmission status
  1. ;
  1. ; Input:
  1. ; DGFILE - file number of HL7 LOG file
  1. ; DGLIEN - IEN of selected HL7 LOG file
  1. ; DGSTAT - internal Status value
  1. ; DGEARR - (optional) array of error message codes
  1. ; format: DGEARR(n)=error code
  1. ;
  1. ; Output:
  1. ; none
  1. ;
  1. N DGERR ;filer errors
  1. N DGFDA ;fda array
  1. N DGI ;generic index
  1. N DGLIENS ;iens string
  1. ;
  1. I $G(DGFILE)]"",+$G(DGLIEN),$D(^DGPF(DGFILE,DGLIEN)),$G(DGSTAT)]"" D
  1. . Q:'$$TESTVAL^DGPFUT(DGFILE,.04,DGSTAT)
  1. . S DGLIENS=DGLIEN_","
  1. . S DGFDA(DGFILE,DGLIENS,.04)=DGSTAT
  1. . S DGFDA(DGFILE,DGLIENS,.06)=$$NOW^XLFDT()
  1. . S DGI=0
  1. . F S DGI=$O(DGEARR(DGI)) Q:'DGI I DGEARR(DGI)]"" D
  1. . . S DGFDA(DGFILE_"07","+"_DGI_","_DGLIEN_",",.01)=DGEARR(DGI)
  1. . D UPDATE^DIE("","DGFDA","","DGERR")
  1. Q
  1. ;
  1. GETLSQ(DGEVNT) ;get last site queried
  1. ;
  1. ; Input:
  1. ; DGEVNT - pointer to PRF HL7 EVENT (#26.21) file
  1. ;
  1. ; Output:
  1. ; Function value - last site queried as pointer to INSTITUTION (#4)
  1. ; file on success; 0 on failure
  1. ;
  1. N DGARR ;array of query sites sorted by date
  1. N DGLIEN ;pointer to PRF HL7 QUERY LOG (#26.19)
  1. N DGLOG ;query log data array
  1. ;
  1. S DGLIEN=0
  1. S DGEVNT=+$G(DGEVNT)
  1. F S DGLIEN=$O(^DGPF(26.19,"C",DGEVNT,DGLIEN)) Q:'DGLIEN D
  1. . K DGLOG
  1. . Q:'$$GETQLOG(DGLIEN,.DGLOG)
  1. . I +$G(DGLOG("TRANSDT"))>0,+$G(DGLOG("SITE"))>0 S DGARR(+$G(DGLOG("TRANSDT")))=+$G(DGLOG("SITE"))
  1. Q +$G(DGARR(+$O(DGARR(""),-1)))
  1. ;
  1. PRGQLOG(DGEVNT) ;purge PRF Query Log entries
  1. ;This procedure purges non-Accepted entries in the PRF HL7 QUERY LOG
  1. ;(#26.19) file for a given PRF HL7 EVENT.
  1. ;
  1. ; Input:
  1. ; DGEVNT - pointer to PRF HL7 EVENT (#26.21) file
  1. ;
  1. ; Output: none
  1. ;
  1. N DGERR ;FM error array
  1. N DGFDA ;FM FDA array
  1. N DGLIEN ;PRF HL7 QUERY LOG (#26.19) file IEN
  1. N DGSTAT ;transmission status
  1. ;
  1. S DGEVNT=+$G(DGEVNT)
  1. S DGLIEN=0
  1. ;
  1. F S DGLIEN=$O(^DGPF(26.19,"C",DGEVNT,DGLIEN)) Q:'DGLIEN D
  1. . K DGFDA,DGERR
  1. . S DGSTAT=$$GET1^DIQ(26.19,DGLIEN_",",.04,"I","","DGERR")
  1. . ;
  1. . Q:$E(DGSTAT)="A" ;don't purge "A" or "AN" status entries
  1. . ;
  1. . S DGFDA(26.19,DGLIEN_",",.01)="@"
  1. . D FILE^DIE("","DGFDA","DGERR")
  1. ;
  1. Q