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

DGROHLS.m

Go to the documentation of this file.
  1. DGROHLS ;DJH/AMA - ROM HL7 SEND DRIVERS ; 27 Apr 2004 5:16 PM
  1. ;;5.3;Registration;**533,572**;Aug 13, 1993
  1. ;
  1. SNDACK(DGACKTYP,DGMIEN,DGHL,DGSEGERR,DGSTOERR) ;Send ACK Message Type (ACK~R01)
  1. ;This procedure assumes that the VistA HL7 environment is providing the
  1. ;environment variables and will produce a fatal error if they are missing.
  1. ;
  1. ; Input:
  1. ; DGACKTYP - (required) ACK message type ("AA","AE")
  1. ; DGMIEN - (required) IEN of message entry in file #773
  1. ; DGHL - (required) HL7 environment array
  1. ; DGSEGERR - (optional) Errors found during parsing
  1. ; DGSTOERR - (optional) Errors during data storage
  1. ;
  1. ; Output:
  1. ; none
  1. ;
  1. N DGHLROOT,DGHLERR
  1. ;
  1. Q:($G(DGACKTYP)']"")
  1. Q:('+$G(DGMIEN))
  1. ;
  1. S DGHLROOT=$NA(^TMP("HLA",$J))
  1. K @DGHLROOT
  1. ;
  1. ;build ACK segments array
  1. I $$BLDACK^DGROHLU4(DGACKTYP,DGHLROOT,.DGHL,.DGSEGERR,.DGSTOERR) D
  1. . ;
  1. . ;generate the message
  1. . D GENACK^HLMA1(DGHL("EID"),DGMIEN,DGHL("EIDS"),"GM",1,.DGHLERR)
  1. ;
  1. ;cleanup
  1. K @DGHLROOT
  1. Q
  1. ;
  1. SNDQRY(DGDFN) ;Send QRY Message Types (QRY~R02)
  1. ;
  1. ; Input:
  1. ; DGDFN - (required) pointer to patient in PATIENT (#2) file
  1. ;
  1. ; Output:
  1. ; Function value - 1 on success, 0 on failure
  1. ;
  1. ; Use of the API $$GET^XUESSO1() supported by DBIA # 4342
  1. ;
  1. N DGLST,DGHLROOT,DGHLLNK,DGHL,DGUSER,DGICN,DGMSG,DGRSLT,HLL,HLEID,HLRSLT
  1. ;
  1. ;the following HL* variables are created by DIRECT^HLMA
  1. N HL,HLCS,HLDOM,HLECH,HLFS,HLINST,HLINSTN,HLQ,ACKCODE
  1. N HLMTIEN,HLNEXT,HLNODE,HLPARAM,HLPROD,HLQUIT
  1. ;
  1. S DGRSLT=0
  1. S DGHLROOT=$NA(^TMP("HLS",$J))
  1. K @DGHLROOT
  1. ;
  1. I +$G(DGDFN)>0,$D(^DPT(DGDFN,0)) D
  1. . ;
  1. . ;ICN must be national and LST must not be local site
  1. . Q:'$$MPIOK^DGROUT(DGDFN,.DGICN,.DGLST)
  1. . ;
  1. . ;retrieve LST's HL Logical Link and build HLL array
  1. . S DGHLLNK=$$GETLINK^DGROHLUT(DGLST)
  1. . Q:(DGHLLNK=0)
  1. . S HLL("LINKS",1)="DGRO ROM ORF/R04 SUBSC"_U_DGHLLNK
  1. . ;
  1. . ;initialize VistA HL7 environment
  1. . S HLEID=$$INIT^DGROHLUT("DGRO ROM QRY/R02 EVENT",.DGHL)
  1. . Q:'HLEID
  1. . ;
  1. . ;retrieve user info ;DG*5.3*572
  1. . S DGUSER=$$GET^XUESSO1()
  1. . I +DGUSER<0 D Q
  1. . . ;display error message to interactive users
  1. . . S DGMSG(1)=" "
  1. . . S DGMSG(2)="The query to the LST has been terminated due to insufficient user data"
  1. . . D EN^DDIOL(.DGMSG)
  1. . S DGUSER=$P(DGUSER,U,1,2)_U_$P(DGUSER,U,5,6)
  1. . S DGUSER=$TR(DGUSER,U,"~")
  1. . ;
  1. . ;build QRY segments array
  1. . Q:'$$BLDQRY^DGROHLQ(DGDFN,DGICN,DGHLROOT,.DGHL,DGUSER)
  1. . ;
  1. . ;display busy message to interactive users
  1. . S DGMSG(1)=" "
  1. . S DGMSG(2)="Attempting to connect to the Last Site of Treatment ("_$G(DGLST)_") to search for Patient"
  1. . S DGMSG(3)="Demographic Data. This request may take some time, please be patient ..."
  1. . D EN^DDIOL(.DGMSG)
  1. . ;
  1. . ;generate HL7 message
  1. . D DIRECT^HLMA(HLEID,"GM",1,.HLRSLT,"","")
  1. . Q:$P(HLRSLT,U,2)]""
  1. . I HLMTIEN N DGROVRCK S DGROVRCK=1 D RCV^DGROHLR
  1. . I ($D(DGROVRCK)),(DGROVRCK=0) K DGROVRCK QUIT
  1. . Q:$G(ACKCODE)
  1. . ;success
  1. . S DGRSLT=1
  1. ;
  1. ;cleanup
  1. K @DGHLROOT
  1. Q DGRSLT
  1. ;
  1. SNDORF(DGQRY,DGMIEN,DGHL,DGDFN,DGSEGERR,DGQRYERR) ;Send ORF Message Type (ORF~R04)
  1. ;This procedure assumes the the VistA HL7 environment is providing the
  1. ;environment variables and will produce a fatal error if they are
  1. ;missing. (Called from RCVQRY^DGROHLR)
  1. ;
  1. ; Input:
  1. ; DGQRY - (required) Array of QRY parsing results
  1. ; DGMIEN - (required) IEN of message entry in file #773
  1. ; DGHL - (required) HL7 environment array
  1. ; DGDFN - (required) Pointer to patient in PATIENT (#2) file
  1. ; DGSEGERR - (optional) Errors found during parsing
  1. ; DGQRYERR - (optional) Errors found during query
  1. ;
  1. ; Output:
  1. ; none
  1. ;
  1. N DGHLROOT
  1. N DGHLERR
  1. ;
  1. Q:('$D(DGQRY))
  1. Q:('+$G(DGMIEN))
  1. Q:($TR(DGQRY("USER"),"~",U)']"")
  1. ;
  1. S DGHLROOT=$NA(^TMP("HLA",$J)) K @DGHLROOT
  1. ;
  1. ;build ORF segments array
  1. I $$BLDORF^DGROHLQ(DGHLROOT,.DGHL,DGDFN,.DGQRY,.DGSEGERR,.DGQRYERR) D
  1. . ;
  1. . ;generate the message
  1. . D GENACK^HLMA1(DGHL("EID"),DGMIEN,DGHL("EIDS"),"GM",1,.DGHLERR)
  1. ;
  1. ;cleanup
  1. K @DGHLROOT
  1. Q