| 1 | HLCSMM ;ISC/MTC-Create Mail Message and Entry in the HL7 Transmission File ;11/03/2000  08:53 | 
|---|
| 2 | ;;1.6;HEALTH LEVEL SEVEN;**17,35,57,66,68**;Oct 13, 1995 | 
|---|
| 3 | Q | 
|---|
| 4 | ; | 
|---|
| 5 | EN(HLD0,HLD1) ; This routine will send a Message from the Out Queue to the | 
|---|
| 6 | ; MailGroup Specified in the Logical Link file (#870). It is called | 
|---|
| 7 | ; from HLCSMM1 routine that monitors the queue for a link. The MM LLP | 
|---|
| 8 | ; uses <CR> stuffing to indicate the end of segments. The message | 
|---|
| 9 | ; will use the following format within the XMB global. | 
|---|
| 10 | ;  ^XMB(3.9,..1)=Segment 1 | 
|---|
| 11 | ;  ^XMB(3.9,..2)=""  - End of segment 1 | 
|---|
| 12 | ;  ^XMB(3.9,..3)=Segment 2 | 
|---|
| 13 | ;  ^XMB(3.9,..4)=Continuation of segment 2 | 
|---|
| 14 | ;  ^XMB(3.9,..5)=""  - End of segment 2 | 
|---|
| 15 | ; "             " | 
|---|
| 16 | ; This processing will enable segment greater than 245. | 
|---|
| 17 | ; | 
|---|
| 18 | ; INPUT :  HLD0 - IEN of Logical Link file (#870) | 
|---|
| 19 | ;       :  HLD1 - IEN of OutQueue Mutiple (Message) | 
|---|
| 20 | ; | 
|---|
| 21 | ; OUTPUT:  NONE | 
|---|
| 22 | ; | 
|---|
| 23 | N HLI,HLI0,HLSERV,HLFAC,HLERR,HLOGLINK,HLMSTXT,HLPARENT,HLPTXT,HLPARM | 
|---|
| 24 | ; | 
|---|
| 25 | S HLOGLINK=$G(^HLCS(870,HLD0,0)) | 
|---|
| 26 | ;-- get MailMan LLP parameters | 
|---|
| 27 | S HLPARM=$G(^HLCS(870,HLD0,100)) | 
|---|
| 28 | ;-- facility | 
|---|
| 29 | S HLFAC=$P($$SITE^VASITE,"^",2) | 
|---|
| 30 | I HLFAC="" S HLFAC="Unknown" | 
|---|
| 31 | ;-- date | 
|---|
| 32 | D NOW^%DTC S Y=% X ^DD("DD") S HLDT=Y | 
|---|
| 33 | ;-- logical link name | 
|---|
| 34 | S HLDAN=$P(HLOGLINK,U) | 
|---|
| 35 | ; | 
|---|
| 36 | ;-- Build MailMan variables | 
|---|
| 37 | ; | 
|---|
| 38 | NEWMM ;Patch 66-introduce new Mailman API's | 
|---|
| 39 | N XMSUB,XMTO,XMINSTR | 
|---|
| 40 | I '$G(DUZ) N DUZ D DUZ^XUP(.5) | 
|---|
| 41 | S XMSUB="HL7 Msg "_HLDT_" from "_HLFAC,XMSUB=$E(XMSUB,1,65) | 
|---|
| 42 | S XMTO="G."_$P(^XMB(3.8,$P(HLPARM,U),0),U) | 
|---|
| 43 | S XMINSTR("FROM")=.5 | 
|---|
| 44 | S XMINSTR("ADDR FLAGS")="R" ; Ignore any restrictions (domain closed or protected by security key) | 
|---|
| 45 | D SENDMSG^XMXAPI(DUZ,XMSUB,"^HLCS(870,HLD0,2,HLD1,1)",XMTO,.XMINSTR) | 
|---|
| 46 | ;-- Set message status to 'done' | 
|---|
| 47 | S $P(^HLCS(870,HLD0,2,HLD1,0),"^",2)="D" | 
|---|
| 48 | I $G(XMERR) D ERROR | 
|---|
| 49 | Q | 
|---|
| 50 | ERROR ;-- send Mail Message indicating error | 
|---|
| 51 | Q:'$G(XMERR) | 
|---|
| 52 | Q:'$D(^TMP("XMERR",$J)) | 
|---|
| 53 | N HLX,HLY,HLZ,HLPARAM,XMSUB,XMTO,XMINSTR | 
|---|
| 54 | N DUZ D DUZ^XUP(.5) ; Want to make sure this message is sent.  It won't be if DUZ is not a valid user. | 
|---|
| 55 | K ^TMP($J,"HLERR") | 
|---|
| 56 | S HLNXST="ERROR" D STATUS^HLCSMM1(HLNXST) H 1 | 
|---|
| 57 | S HLPARAM=$$PARAM^HLCS2,XMTO("G."_$P(HLPARAM,U,8))="",XMTO(.5)="" | 
|---|
| 58 | S (HLX,HLZ)=0 | 
|---|
| 59 | F  S HLX=$O(^TMP("XMERR",$J,HLX)) Q:'HLX  D | 
|---|
| 60 | . S HLZ=HLZ+1,^TMP($J,"HLERR",HLZ)="" | 
|---|
| 61 | . S HLY=0 | 
|---|
| 62 | . F  S HLY=$O(^TMP("XMERR",$J,HLX,"TEXT",HLY)) Q:'HLY  D | 
|---|
| 63 | . . S HLZ=HLZ+1,^TMP($J,"HLERR",HLZ)=$G(^TMP("XMERR",$J,HLX,"TEXT",HLY)) | 
|---|
| 64 | . I $D(^TMP("XMERR",$J,HLX,"PARAM","VALUE")) S HLZ=HLZ+1,^TMP($J,"HLERR",HLZ)=^TMP("XMERR",$J,HLX,"PARAM","VALUE") | 
|---|
| 65 | S HLZ=HLZ+1,^TMP($J,"HLERR",HLZ)="" | 
|---|
| 66 | S HLZ=HLZ+1,^TMP($J,"HLERR",HLZ)="HL7 Logical Link: "_$G(HLDAN) | 
|---|
| 67 | S XMSUB="Error handing HL7 message off to Mailman" | 
|---|
| 68 | S XMINSTR("FROM")="POSTMASTER" ; msg will appear new, nomatter who receives it. | 
|---|
| 69 | D SENDMSG^XMXAPI(DUZ,XMSUB,"^TMP($J,""HLERR"")",.XMTO,.XMINSTR) | 
|---|
| 70 | K ^TMP($J,"HLERR"),XMERR,^TMP("XMERR",$J) | 
|---|
| 71 | Q | 
|---|