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