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

SCMCHLG.m

Go to the documentation of this file.
  1. SCMCHLG ;BP/DJB - PCMM HL7 Generate Message ; 3/2/00 12:39pm
  1. ;;5.3;Scheduling;**177,210,1015**;AUG 13, 1993;Build 21
  1. ;
  1. GENERATE() ;Generate a PCMM Primary Care HL7 message
  1. ;
  1. ;Input:
  1. ;Output:
  1. ;Return: Number of HL7 array nodes built
  1. ;
  1. ;Declare variables
  1. NEW DATA,ERROR,ID,LINES,NUM,SEG
  1. NEW HLN,HLRESLT,HLSAN,HLX
  1. ;
  1. ;Convert XMITARRY array to HL7 format - ^TMP("HLS",$J,x)
  1. KILL ^TMP("HLS",$J)
  1. S NUM=0
  1. F S NUM=$O(@XMITARRY@(NUM)) Q:'NUM D ;
  1. . S LINES=0 ;Initialize subscript counter
  1. . S SEG=""
  1. . F S SEG=$O(@XMITARRY@(NUM,SEG)) Q:SEG="" D ;
  1. . . S ID=""
  1. . . F S ID=$O(@XMITARRY@(NUM,SEG,ID)) Q:ID="" D ;
  1. . . . ;Convert array to HL7 format
  1. . . . S DATA=$G(@XMITARRY@(NUM,SEG,ID))
  1. . . . Q:DATA']""
  1. . . . S LINES=LINES+1
  1. . . . S ^TMP("HLS",$J,LINES)=DATA
  1. . . . ;Convert continuation node
  1. . . . I $D(@XMITARRY@(NUM,SEG,ID,1)) D ;
  1. . . . . S DATA=$G(@XMITARRY@(NUM,SEG,ID,1))
  1. . . . . I DATA]"" S ^TMP("HLS",$J,LINES,1)=DATA
  1. . ;
  1. . ;Generate message.
  1. . ; This call returns HLRESLT with 1-3 pieces as follows:
  1. . ; MessageID^ErrorCode^ErrorDescription
  1. . ; If no error occurs, only first piece is returned equal to unique
  1. . ; ID for message. Otherwise, 3 pieces are returned with 1st piece
  1. . ; equal to msg ID if one was assigned, otherwise 0.
  1. . ;
  1. . S HLP("PRIORITY")="I" ;........Immediate priority
  1. . D GENERATE^HLMA(HLEID,"GM",1,.HLRESLT,,.HLP)
  1. . ;
  1. . ;djb/bp Patch 210. Moved re-initialize code up so it occurs before
  1. . ;call to LOG^SCMCHLL.
  1. . ;Re-initialize HL7 message variables
  1. . KILL HL,HLP
  1. . S HLEID=$$HLEID^SCMCHL()
  1. . D INIT^HLFNC2(HLEID,.HL)
  1. . ;
  1. . ;If message not generated, log reason & reset LINES to zero.
  1. . I $P(HLRESLT,"^",2)'="" D ;
  1. . . S @XMITERR@(VARPTR)=$P(HLRESLT,"^",3)
  1. . E D ;
  1. . . S MSGCNT=$G(MSGCNT)+1 ;..Increment message count
  1. . . ;djb/bp Patch 210 Following line added to log transmission.
  1. . . I $P(HLRESLT,"^",1) D LOG^SCMCHLL
  1. . ;
  1. . ;Re-initialize HL7 message array
  1. . KILL ^TMP("HLS",$J)
  1. ;
  1. ;Done
  1. Q +$G(MSGCNT)