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

DGROHLQ3.m

Go to the documentation of this file.
  1. DGROHLQ3 ;DJH/AMA - ROM HL7 QRY/ORF PROCESSING ; 27 Apr 2004 4:50 PM
  1. ;;5.3;Registration;**533,572,1015**;Aug 13, 1993;Build 21
  1. ;
  1. PARSQRY(DGWRK,DGHL,DGQRY,DGROERR) ;Parse QRY~R02 Message/Segments
  1. ;Called from RCVQRY^DGROHLR
  1. ; Input:
  1. ; DGWRK - Closed root global reference, ^TMP("DGROHL7",$J)
  1. ; DGHL - VistA HL7 environment array
  1. ;
  1. ; Output:
  1. ; DGQRY - Patient lookup components array
  1. ; DGROERR - Undefined on success, ERR segment data array on failure
  1. ; Format: DGROERR(seg_id,sequence,fld_pos)=error_code
  1. ;
  1. N DGFS ;field separator
  1. N DGCS ;component separator
  1. N DGRS ;repetition separator
  1. N DGSS ;sub-component separator
  1. N DGCURLIN ;current segment line
  1. N DGSEG ;segment field data array
  1. N DGROERR ;error processing array
  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^DGROHLUT(DGWRK,DGCURLIN,DGFS,.DGSEG)
  1. . Q:'DGCURLIN
  1. . D @(DGSEG("TYPE")_"(.DGSEG,DGCS,DGRS,DGSS,.DGQRY,.DGROERR)")
  1. Q
  1. ;
  1. PARSORF(DGWRK,DGHL,DGORF,DGMSG,DGDATA) ;Parse ORF~R04 Message/Segments
  1. ;Called RCVORF^DGROHLR
  1. ; Input:
  1. ; DGWRK - Closed root work global reference, ^TMP("DGROHL7",$J)
  1. ; DGHL - HL7 environment array
  1. ;
  1. ; Output:
  1. ; DGORF - array of ORF results
  1. ; "ACKCODE" - acknowledgment code ("AA","AE","AR")
  1. ; "DFN" - DFN
  1. ; "ICN" - patient's Integrated Control Number
  1. ; "MSGDTM" - message creation date/time in FileMan format
  1. ; "MSGID" - Message ID for HL7
  1. ; "RCVFAC" - receiving facility
  1. ; "SNDFAC" - sending facility
  1. ; DGDATA - array of patient data to upload, ^TMP("DGROFDA",$J)
  1. ; DGMSG - undefined on success, array of MailMan text on failure
  1. ;
  1. N DGFS,DGCS,DGRS,DGSS,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^DGROHLUT(DGWRK,DGCURLIN,DGFS,.DGSEG)
  1. . Q:'DGCURLIN
  1. . I DGSEG("TYPE")'="FDA" D @(DGSEG("TYPE")_"(.DGSEG,DGCS,DGRS,DGSS,.DGORF,.DGMSG)") I 1
  1. . E D FDA^DGROHLU(DGWRK,.DGCURLIN,DGFS,DGCS,DGRS,.DGDATA)
  1. Q
  1. ;
  1. MSH(DGSEG,DGCS,DGRS,DGSS,DGORF,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. ; DGORF - array of ORF 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. D MSH^DGROHLU4(.DGSEG,DGCS,DGRS,DGSS,.DGORF,.DGERR)
  1. Q
  1. ;
  1. MSA(DGSEG,DGCS,DGRS,DGSS,DGORF,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. ; DGORF - array of ORF 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. D MSA^DGROHLU4(.DGSEG,DGCS,DGRS,DGSS,.DGORF,.DGERR)
  1. Q
  1. ;
  1. ERR(DGSEG,DGCS,DGRS,DGSS,DGORF,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. ; DGORF - array of ORF results
  1. ; DGERR - undefined on success, error array on failure
  1. ;
  1. D ERR^DGROHLU4(.DGSEG,DGCS,DGRS,DGSS,.DGORF,.DGERR)
  1. Q
  1. ;
  1. QRD(DGSEG,DGCS,DGRS,DGSS,DGQRY,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. ; DGQRY("ICN") - Patient's Integrated Control Number
  1. ; DGQRY("DFN") - Query ID
  1. ; DGQRY("USER") - Query Site user's info ;DG*5.3*572
  1. ; DGERR - undefined on success, error array on failure
  1. ; format: DGERR(seg_id,sequence,fld_pos)=error code
  1. ;
  1. S DGQRY("DFN")=$P($G(DGSEG(4)),"~")
  1. S DGQRY("USER")=$P($G(DGSEG(4)),"~",2,99)
  1. S DGQRY("ICN")=+$P($G(DGSEG(8)),DGCS,1)
  1. S DGQRY("PATCH")=$G(DGSEG(5))
  1. I DGQRY("ICN")="" D
  1. . S DGERR("QRD",1,8)="NM"
  1. Q
  1. ;
  1. QRF(DGSEG,DGCS,DGRS,DGSS,DGQRY,DGERR) ;
  1. ;
  1. ; Input:
  1. ; DGSEG - PID segment field array
  1. ; DGCS - HL7 component separator
  1. ; DGRS - HL7 repetition separator
  1. ; DGSS - HL7 sub-component separator
  1. ;
  1. ; Output:
  1. ; DGQRY("SSN") - Patient's Social Security Number
  1. ; DGQRY("DOB") - Patient's Date of Birth
  1. ; DGERR - undefined on success, error array on failure
  1. ; format: DGERR(seg_id,sequence,fld_pos)=error code
  1. ;
  1. S DGQRY("SSN")=$G(DGSEG(4))
  1. I DGQRY("SSN")="" S DGERR("QRF",1,4)="NM" ;no match
  1. ;
  1. S DGQRY("DOB")=+$$HL7TFM^XLFDT($G(DGSEG(5)))
  1. I DGQRY("DOB")'>0 S DGERR("QRF",1,5)="NM" ;no match
  1. Q