[613] | 1 | SCMCHLG ;BP/DJB - PCMM HL7 Generate Message ; 3/2/00 12:39pm
|
---|
| 2 | ;;5.3;Scheduling;**177,210**;AUG 13, 1993
|
---|
| 3 | ;
|
---|
| 4 | GENERATE() ;Generate a PCMM Primary Care HL7 message
|
---|
| 5 | ;
|
---|
| 6 | ;Input:
|
---|
| 7 | ;Output:
|
---|
| 8 | ;Return: Number of HL7 array nodes built
|
---|
| 9 | ;
|
---|
| 10 | ;Declare variables
|
---|
| 11 | NEW DATA,ERROR,ID,LINES,NUM,SEG
|
---|
| 12 | NEW HLN,HLRESLT,HLSAN,HLX
|
---|
| 13 | ;
|
---|
| 14 | ;Convert XMITARRY array to HL7 format - ^TMP("HLS",$J,x)
|
---|
| 15 | KILL ^TMP("HLS",$J)
|
---|
| 16 | S NUM=0
|
---|
| 17 | F S NUM=$O(@XMITARRY@(NUM)) Q:'NUM D ;
|
---|
| 18 | . S LINES=0 ;Initialize subscript counter
|
---|
| 19 | . S SEG=""
|
---|
| 20 | . F S SEG=$O(@XMITARRY@(NUM,SEG)) Q:SEG="" D ;
|
---|
| 21 | . . S ID=""
|
---|
| 22 | . . F S ID=$O(@XMITARRY@(NUM,SEG,ID)) Q:ID="" D ;
|
---|
| 23 | . . . ;Convert array to HL7 format
|
---|
| 24 | . . . S DATA=$G(@XMITARRY@(NUM,SEG,ID))
|
---|
| 25 | . . . Q:DATA']""
|
---|
| 26 | . . . S LINES=LINES+1
|
---|
| 27 | . . . S ^TMP("HLS",$J,LINES)=DATA
|
---|
| 28 | . . . ;Convert continuation node
|
---|
| 29 | . . . I $D(@XMITARRY@(NUM,SEG,ID,1)) D ;
|
---|
| 30 | . . . . S DATA=$G(@XMITARRY@(NUM,SEG,ID,1))
|
---|
| 31 | . . . . I DATA]"" S ^TMP("HLS",$J,LINES,1)=DATA
|
---|
| 32 | . ;
|
---|
| 33 | . ;Generate message.
|
---|
| 34 | . ; This call returns HLRESLT with 1-3 pieces as follows:
|
---|
| 35 | . ; MessageID^ErrorCode^ErrorDescription
|
---|
| 36 | . ; If no error occurs, only first piece is returned equal to unique
|
---|
| 37 | . ; ID for message. Otherwise, 3 pieces are returned with 1st piece
|
---|
| 38 | . ; equal to msg ID if one was assigned, otherwise 0.
|
---|
| 39 | . ;
|
---|
| 40 | . S HLP("PRIORITY")="I" ;........Immediate priority
|
---|
| 41 | . D GENERATE^HLMA(HLEID,"GM",1,.HLRESLT,,.HLP)
|
---|
| 42 | . ;
|
---|
| 43 | . ;djb/bp Patch 210. Moved re-initialize code up so it occurs before
|
---|
| 44 | . ;call to LOG^SCMCHLL.
|
---|
| 45 | . ;Re-initialize HL7 message variables
|
---|
| 46 | . KILL HL,HLP
|
---|
| 47 | . S HLEID=$$HLEID^SCMCHL()
|
---|
| 48 | . D INIT^HLFNC2(HLEID,.HL)
|
---|
| 49 | . ;
|
---|
| 50 | . ;If message not generated, log reason & reset LINES to zero.
|
---|
| 51 | . I $P(HLRESLT,"^",2)'="" D ;
|
---|
| 52 | . . S @XMITERR@(VARPTR)=$P(HLRESLT,"^",3)
|
---|
| 53 | . E D ;
|
---|
| 54 | . . S MSGCNT=$G(MSGCNT)+1 ;..Increment message count
|
---|
| 55 | . . ;djb/bp Patch 210 Following line added to log transmission.
|
---|
| 56 | . . I $P(HLRESLT,"^",1) D LOG^SCMCHLL
|
---|
| 57 | . ;
|
---|
| 58 | . ;Re-initialize HL7 message array
|
---|
| 59 | . KILL ^TMP("HLS",$J)
|
---|
| 60 | ;
|
---|
| 61 | ;Done
|
---|
| 62 | Q +$G(MSGCNT)
|
---|