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)
|
---|