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

DGPFHLU4.m

Go to the documentation of this file.
  1. DGPFHLU4 ;ALB/RPM - PRF HL7 ACK PROCESSING ; 3/04/03
  1. ;;5.3;Registration;**425,1015**;Aug 13, 1993;Build 21
  1. ;
  1. BLDACK(DGACK,DGROOT,DGHL,DGSEGERR,DGSTOERR) ;Build ACK Message/Segments
  1. ;
  1. ; Input:
  1. ; DGACK - (required) Acknowledment code
  1. ; DGROOT - (required) Segment array name
  1. ; DGHL - (required) HL7 environment array
  1. ; DGSEGERR - (optional) defined only if errors during parsing
  1. ; DGSTOERR - (optional) defined only if errors during filing
  1. ;
  1. ; Output:
  1. ; Function Value - 1 on success, 0 on failure
  1. ; ^TMP("HLA",$J) - Array of ACK segments
  1. ;
  1. N DGCNT ;segment counter
  1. N DGMSA ;formatted MSA segment
  1. N DGRSLT ;function value
  1. ;
  1. S DGRSLT=0
  1. I $G(DGACK)]"",$G(DGROOT)]"" D
  1. . S DGCNT=0
  1. . ;
  1. . ;build MSA segment
  1. . S DGMSA=$$MSA^DGPFHLU3(DGACK,DGHL("MID"),.DGSTOERR,"1,2",.DGHL)
  1. . Q:(DGMSA="")
  1. . S DGCNT=DGCNT+1,@DGROOT@(DGCNT)=DGMSA
  1. . ;
  1. . ;build ERR segments
  1. . Q:($D(DGSEGERR)&('$$BLDERR(DGROOT,.DGSEGERR,.DGHL,.DGCNT)))
  1. . ;
  1. . ;success
  1. . S DGRSLT=1
  1. Q DGRSLT
  1. ;
  1. PARSACK(DGWRK,DGHL,DGACK,DGMSG) ;Parse ACK Message/Segments
  1. ;
  1. ; Input:
  1. ; DGWRK - Closed root work global reference
  1. ; DGHL - HL7 environment array
  1. ;
  1. ; Output:
  1. ; DGACK - array of ACK results
  1. ; DGMSG - undefined on success, array of MailMan text on failure
  1. ;
  1. N DGFS
  1. N DGCS
  1. N DGRS
  1. N DGSS
  1. N DGCURLIN
  1. ;
  1. S DGFS=DGHL("FS")
  1. S DGCS=$E(DGHL("ECH"),1)
  1. S DGRS=$E(DGHL("ECH"),2)
  1. S DGSS=$E(DGHL("ECH"),4)
  1. S DGCURLIN=0
  1. ;
  1. ;loop through the message segments and retrieve the field data
  1. F D Q:'DGCURLIN
  1. . N DGSEG
  1. . S DGCURLIN=$$NXTSEG^DGPFHLUT(DGWRK,DGCURLIN,DGFS,.DGSEG)
  1. . Q:'DGCURLIN
  1. . D @(DGSEG("TYPE")_"(.DGSEG,DGCS,DGRS,DGSS,.DGACK,.DGMSG)")
  1. Q
  1. ;
  1. MSH(DGSEG,DGCS,DGRS,DGSS,DGACK,DGERR) ;
  1. ;
  1. ; Input:
  1. ; DGSEG - MSH segment field array
  1. ; DGCS - HL7 component separator
  1. ; DGRS - HL7 repetition separator
  1. ; DGSS - HL7 sub-component separator
  1. ;
  1. ; Output:
  1. ; DGACK - array of ACK results
  1. ; "SNDFAC" - sending facility
  1. ; "RCVFAC" - receiving facility
  1. ; "MSGDTM" - message creation date/time in FileMan format
  1. ; DGERR - undefined on success, error array on failure
  1. ;
  1. S DGACK("SNDFAC")=$P($G(DGSEG(4)),DGCS,1)
  1. S DGACK("RCVFAC")=$P($G(DGSEG(6)),DGCS,1)
  1. S DGACK("MSGDTM")=$$HL7TFM^XLFDT($G(DGSEG(7)))
  1. Q
  1. ;
  1. MSA(DGSEG,DGCS,DGRS,DGSS,DGACK,DGERR) ;
  1. ;
  1. ; Input:
  1. ; DGSEG - MSH segment field array
  1. ; DGCS - HL7 component separator
  1. ; DGRS - HL7 repetition separator
  1. ; DGSS - HL7 sub-component separator
  1. ;
  1. ; Output:
  1. ; DGACK - array of ACK results
  1. ; "ACKCODE" - Acknowledgment code
  1. ; "MSGID" - Message Control ID of the message being ACK'ed
  1. ; DGERR - undefined on success, error array on failure
  1. ;
  1. N DGCNT
  1. ;
  1. S DGACK("ACKCODE")=$G(DGSEG(1))
  1. S DGACK("MSGID")=$G(DGSEG(2))
  1. I DGACK("ACKCODE")'="AA",$G(DGSEG(6))]"" D
  1. . S DGCNT=$O(DGERR(""),-1),DGCNT=DGCNT+1
  1. . S DGERR(DGCNT)=$P(DGSEG(6),DGCS,1)
  1. Q
  1. ;
  1. ERR(DGSEG,DGCS,DGRS,DGSS,DGACK,DGERR) ;
  1. ;
  1. ; Input:
  1. ; DGSEG - MSH segment field array
  1. ; DGCS - HL7 component separator
  1. ; DGRS - HL7 repetition separator
  1. ; DGSS - HL7 sub-component separator
  1. ;
  1. ; Output:
  1. ; DGACK - array of ACK results
  1. ; DGERR - undefined on success, error array on failure
  1. ;
  1. N DGCNT
  1. N DGCOD
  1. ;
  1. I $G(DGSEG(1))]"" D
  1. . S DGCOD=$P($P(DGSEG(1),DGCS,4),DGSS,1)
  1. . I DGCOD]"" D
  1. . . S DGCNT=$O(DGERR(""),-1),DGCNT=DGCNT+1
  1. . . S DGERR(DGCNT)=DGCOD
  1. Q
  1. ;
  1. BLDERR(DGROOT,DGSEGERR,DGHL,DGCNT) ;build all ERR segments
  1. ;This function builds a formatted ERR segment for each entry in the
  1. ;segment error array (DGSEGERR).
  1. ;
  1. ; Input:
  1. ; DGROOT - (required) Closed root array or global name for segment
  1. ; storage
  1. ; DGSEGERR - (required) Array of segment errors
  1. ; Format: DGSEGERR(segment name,sequence,field)=error code
  1. ; DGHL - (required) VistA HL7 environment array
  1. ; DGCNT - (optional) Previous segment # in DGROOT
  1. ;
  1. ; Output:
  1. ; Function Value - 1 on success, 0 on failure
  1. ;
  1. N DGCOD ;error code
  1. N DGERR ;formatted ERR segment
  1. N DGPOS ;field positions containing error
  1. N DGSEG ;segment name containing error
  1. N DGSEQ ;sequence of segment containing error
  1. N DGRSLT ;function value
  1. ;
  1. S DGRSLT=0
  1. I $G(DGROOT)]"",$D(DGSEGERR) D
  1. . S DGCNT=$G(DGCNT,0)
  1. . S DGSEG=""
  1. . F S DGSEG=$O(DGSEGERR(DGSEG)) Q:(DGSEG="") D Q:(DGERR="")
  1. . . S DGSEQ=0
  1. . . F S DGSEQ=$O(DGSEGERR(DGSEG,DGSEQ)) Q:'DGSEQ D Q:(DGERR="")
  1. . . . S DGPOS=0
  1. . . . F S DGPOS=$O(DGSEGERR(DGSEG,DGSEQ,DGPOS)) Q:'DGPOS D Q:(DGERR="")
  1. . . . . S DGCOD=DGSEGERR(DGSEG,DGSEQ,DGPOS)
  1. . . . . S DGERR=$$ERR^DGPFHLU3(DGSEG,DGSEQ,DGPOS,DGCOD,"1",.DGHL)
  1. . . . . Q:(DGERR="")
  1. . . . . S DGCNT=DGCNT+1,@DGROOT@(DGCNT)=DGERR
  1. . Q:(DGERR="")
  1. . S DGRSLT=1
  1. Q DGRSLT