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

DGROHLQ.m

Go to the documentation of this file.
  1. DGROHLQ ;DJH/AMA - ROM HL7 QRY/ORF PROCESSING ; 28 Apr 2004 4:21 PM
  1. ;;5.3;Registration;**533,572,1015**;Aug 13, 1993;Build 21
  1. ;
  1. BLDQRY(DGDFN,DGICN,DGROOT,DGHL,DGUSER) ;Build QRY~R02 Message/Segments
  1. ;Called from SNDQRY^DGROHLS
  1. ; Input:
  1. ; DGDFN - (required) Pointer to patient in PATIENT (#2) file
  1. ; DGICN - (required) Patient's Integrated Control Number
  1. ; DGROOT - (required) Closed root array or global name for segment storage
  1. ; DGHL - (required) VistA HL7 environment array
  1. ; DGUSER - (required) String of user data from New Person File (SSN~Name~DUZ~Phone)
  1. ;
  1. ; Output:
  1. ; Function Value - 1 on success, 0 on failure
  1. ; DGROOT - array of HL7 segments on success
  1. ;
  1. N DGCNT ;segment counter
  1. N DGDEM ;pt. demographics array
  1. N DGQRD ;formatted QRD segment
  1. N DGQRF ;formatted QRF segment
  1. N DGRSLT ;function value
  1. N DGSTR ;field string
  1. ;
  1. S (DGCNT,DGRSLT)=0
  1. ;
  1. I +$G(DGDFN),+$G(DGICN),$G(DGROOT)]"" D
  1. . ;
  1. . ;get patient demographics
  1. . Q:'$$GETPAT^DGROUT2(DGDFN,.DGDEM)
  1. . ;build QRD
  1. . S DGSTR="1,2,3,4,7,8,9,10"
  1. . S DGQRD=$$QRD^DGROHLQ1(DGDFN,DGICN,DGSTR,.DGHL,DGUSER)
  1. . Q:(DGQRD="")
  1. . S DGCNT=DGCNT+1,@DGROOT@(DGCNT)=DGQRD
  1. . ;
  1. . ;build QRF
  1. . S DGSTR="1,4,5"
  1. . S DGQRF=$$QRF^DGROHLQ2($G(DGDEM("SSN")),$G(DGDEM("DOB")),DGSTR,.DGHL)
  1. . Q:(DGQRF="")
  1. . S DGCNT=DGCNT+1,@DGROOT@(DGCNT)=DGQRF
  1. . ;
  1. . S DGRSLT=1
  1. Q DGRSLT
  1. ;
  1. BLDORF(DGROOT,DGHL,DGDFN,DGQRY,DGSEGERR,DGQRYERR) ;Build ORF~R04 Message/Segments
  1. ;Called from SNDORF^DGROHLS
  1. ; Input:
  1. ; DGROOT - (required) Segment array, ^TMP("HLA",$J)
  1. ; DGHL - (required) HL7 environment array
  1. ; DGDFN - (required) Pointer to patient in PATIENT (#2) file
  1. ; DGQRY - (required) Array of parsed QRY data
  1. ; DGSEGERR - (optional) Array of errors encountered during QRY parsing
  1. ; DGQRYERR - (optional) Error encountered during ICN to DFN conversion
  1. ;
  1. ; Output:
  1. ; Function Value - 1 on success, 0 on failure
  1. ;
  1. N DGACK ;acknowledgment code (i.e. AA, AE)
  1. N DGAIENS ;array of assignment IENS
  1. N DGCNT ;segment counter
  1. N DGRSLT ;function value
  1. N DGSEGSTR ;formatted segment string
  1. N DGSTR ;comma-delimited list of fields to include
  1. ;
  1. S DGRSLT=0
  1. ;
  1. I $G(DGROOT)]"",+$G(DGDFN)>0,$D(DGQRY) D
  1. . S DGCNT=0
  1. . ;
  1. . ;build MSA segment
  1. . S DGACK=$S($D(DGSEGERR):"AR",$D(DGQRYERR):"AE",1:"AA")
  1. . S DGSTR=$S(DGACK="AE":"1,2,6",1:"1,2")
  1. . I '$D(DGHL("MID")) S DGHL("MID")=+$G(DGHL("ICN"))
  1. . S DGSEGSTR=$$MSA^DGROHLU3(DGACK,DGHL("MID"),.DGQRYERR,DGSTR,.DGHL)
  1. . Q:(DGSEGSTR="")
  1. . S DGCNT=DGCNT+1,@DGROOT@(DGCNT)=DGSEGSTR
  1. . ;
  1. . ;build ERR segments for any segment parsing errors
  1. . I DGACK="AR",'$$BLDERR^DGROHLU4(DGROOT,.DGSEGERR,.DGHL,.DGCNT) Q
  1. . ;
  1. . ;build QRD segment
  1. . S DGSTR="1,2,3,4,5,7,8,9,10"
  1. . S DGSEGSTR=$$QRD^DGROHLQ1($G(DGQRY("DFN")),$G(DGQRY("ICN")),DGSTR,.DGHL)
  1. . Q:(DGSEGSTR="")
  1. . S DGCNT=DGCNT+1,@DGROOT@(DGCNT)=DGSEGSTR
  1. . ;
  1. . ;gather all of the patient data
  1. . N DGROFDA,DGX
  1. . S DGROFDA=$NA(^TMP("DGROFDA",$J)) K @DGROFDA
  1. . D DIQ^DGROHLU(.DGROFDA,2,DGDFN,.DGQRY)
  1. . ;
  1. . ;build FDA segment
  1. . K DGSEGSTR
  1. . D FDA^DGROHLU1(DGROFDA,.DGSEGSTR)
  1. . K @DGROFDA
  1. . ;
  1. . Q:'$D(DGSEGSTR)
  1. . S DGX=0 F S DGX=$O(DGSEGSTR(DGX)) Q:'DGX D
  1. . . S @DGROOT@(DGCNT+DGX)=DGSEGSTR(DGX)
  1. . ;
  1. . S DGRSLT=1
  1. Q DGRSLT