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