HLEMRCV ;ALB/CJM - Mailman server for HL7 Monitoring Events;12 JUN 1997 10:00 am
 ;;1.6;HEALTH LEVEL SEVEN;**109**;Oct 13,1995
 ;
RECEIVE ;Description: Read the exception message and file it.
 ;!!!! for testing interactively !!!!!!!!!!!!
 ;S XMER=0
 ;S XMFROM="HL7 EVENT LOG AT SAN FRANCISCO"
 ;S XMPOS=0
 ;S XMREC="D REC^XMS3"
 ;S XMRG="**APPLICATION DATA**"
 ;S XMXX="S.HLEM EVENT LOG SERVER"
 ;S XMZ=8557
 ;!!!!!!
 ;
 N EVENT,EXIT,TEMP
 S EXIT=0
 F  X XMREC Q:(XMER<0)  D  Q:EXIT
 .I $E(XMRG,1,2)="**" S EXIT=1 Q
 .N LABEL,DATA
 .S LABEL=$P(XMRG,":"),DATA=$P(XMRG,":",2,99)
 .Q:'$L(LABEL)
 .S EVENT(LABEL)=DATA
 ;
 ;don't save IEN from sending site
 K EVENT("IEN")
 ;
 ;need to get local pointers
 ;event type
 S:$D(EVENT("TYPE")) TEMP=$$FIND^HLEMT($P($G(EVENT("TYPE")),"^",2),$P($G(EVENT("TYPE")),"^"))
 I '$G(TEMP) D ERROR("UNKNOWN EVENT TYPE AT REMOTE SITE: "_EVENT("TYPE"),XMZ) Q
 S EVENT("TYPE")=TEMP
 ;get the institution ien
 S:$D(EVENT("SITE")) EVENT("SITE")=$$INSTIEN^HLEMU(EVENT("SITE"))
 ;
 ;don't enter duplicates (no updating at present)
 I $L($G(EVENT("ID"))),$D(^HLEV(776.4,"C",EVENT("ID"))) Q
 ;
 ;establish this event on this system
 S EVENT=$$STORE^HLEME1(.EVENT,.ERROR)
 ;
 ;if successful
 I EVENT D
 .;add a note with the ien of the message for traceability
 .I $$ADDNOTE^HLEME(EVENT,"REMOTE EVENT ADDED BY SERVER AT "_$$NOW^XLFDT_", MAILMAN MESSAGE IEN: "_$G(XMZ))
 ;
 ;if not successful
 I 'EVENT D ERROR("Fileman Failed to store remote event:  "_$G(ERROR),$G(XMZ)) Q
 ;
 ;handle application data
 I $E(XMRG,1,4)="**AP" D
 .S EXIT=0
 .F  X XMREC Q:(XMER<0)  D  Q:EXIT
 ..I $E(XMRG,1,4)="**NO" S EXIT=1 Q
 ..N VAR
 ..I $P(XMRG,":")="VARIABLE" D
 ...S VAR=$P(XMRG,":",2)
 ...X XMREC
 ...I $P(XMRG,":")="VALUE" S @VAR=$P(XMRG,":",2,99) I $$STOREVAR^HLEME(EVENT,.@VAR,VAR)
 ;
 ;handle notes
 I $E(XMRG,1,4)="**NO" D
 .S EXIT=0
 .F  X XMREC Q:(XMER<0)  D  Q:EXIT
 ..N VAR
 ..I $P(XMRG,":")="VAR" D
 ...S VAR=$P(XMRG,":",2)
 ...X XMREC
 ...I $L(XMRG) D
 ..I $$ADDNOTE^HLEME(EVENT,XMRG)
 ;
 S XMSER="S.HLEM EVENT LOG SERVER"
 D REMSBMSG^XMA1C
 Q
 ;
ERROR(COMMENT,MAIL) ;
 ;establishes a new event if this routine encounters an error.
 ;MAIL is the message id of the MailMan mesage
 ;
 N NEWEVENT,VAR
 S NEWEVENT=$$EVENT^HLEME("SRVR ERROR","HEALTH LEVEL SEVEN")
 S VAR("MAIL IEN")=$G(MAIL)
 I $$STOREVAR^HLEME(NEWEVENT,.VAR)
 I $$ADDNOTE^HLEME(NEWEVENT,$G(COMMENT))
 Q
 
--- Routine Detail   --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HHLEMRCV   2470     printed  Sep 23, 2025@19:33:33                                                                                                                                                                                                     Page 2
HLEMRCV   ;ALB/CJM - Mailman server for HL7 Monitoring Events;12 JUN 1997 10:00 am
 +1       ;;1.6;HEALTH LEVEL SEVEN;**109**;Oct 13,1995
 +2       ;
RECEIVE   ;Description: Read the exception message and file it.
 +1       ;!!!! for testing interactively !!!!!!!!!!!!
 +2       ;S XMER=0
 +3       ;S XMFROM="HL7 EVENT LOG AT SAN FRANCISCO"
 +4       ;S XMPOS=0
 +5       ;S XMREC="D REC^XMS3"
 +6       ;S XMRG="**APPLICATION DATA**"
 +7       ;S XMXX="S.HLEM EVENT LOG SERVER"
 +8       ;S XMZ=8557
 +9       ;!!!!!!
 +10      ;
 +11       NEW EVENT,EXIT,TEMP
 +12       SET EXIT=0
 +13       FOR 
               XECUTE XMREC
               if (XMER<0)
                   QUIT 
               Begin DoDot:1
 +14               IF $EXTRACT(XMRG,1,2)="**"
                       SET EXIT=1
                       QUIT 
 +15               NEW LABEL,DATA
 +16               SET LABEL=$PIECE(XMRG,":")
                   SET DATA=$PIECE(XMRG,":",2,99)
 +17               if '$LENGTH(LABEL)
                       QUIT 
 +18               SET EVENT(LABEL)=DATA
               End DoDot:1
               if EXIT
                   QUIT 
 +19      ;
 +20      ;don't save IEN from sending site
 +21       KILL EVENT("IEN")
 +22      ;
 +23      ;need to get local pointers
 +24      ;event type
 +25       if $DATA(EVENT("TYPE"))
               SET TEMP=$$FIND^HLEMT($PIECE($GET(EVENT("TYPE")),"^",2),$PIECE($GET(EVENT("TYPE")),"^"))
 +26       IF '$GET(TEMP)
               DO ERROR("UNKNOWN EVENT TYPE AT REMOTE SITE: "_EVENT("TYPE"),XMZ)
               QUIT 
 +27       SET EVENT("TYPE")=TEMP
 +28      ;get the institution ien
 +29       if $DATA(EVENT("SITE"))
               SET EVENT("SITE")=$$INSTIEN^HLEMU(EVENT("SITE"))
 +30      ;
 +31      ;don't enter duplicates (no updating at present)
 +32       IF $LENGTH($GET(EVENT("ID")))
               IF $DATA(^HLEV(776.4,"C",EVENT("ID")))
                   QUIT 
 +33      ;
 +34      ;establish this event on this system
 +35       SET EVENT=$$STORE^HLEME1(.EVENT,.ERROR)
 +36      ;
 +37      ;if successful
 +38       IF EVENT
               Begin DoDot:1
 +39      ;add a note with the ien of the message for traceability
 +40               IF $$ADDNOTE^HLEME(EVENT,"REMOTE EVENT ADDED BY SERVER AT "_$$NOW^XLFDT_", MAILMAN MESSAGE IEN: "_$G(XMZ))
               End DoDot:1
 +41      ;
 +42      ;if not successful
 +43       IF 'EVENT
               DO ERROR("Fileman Failed to store remote event:  "_$GET(ERROR),$GET(XMZ))
               QUIT 
 +44      ;
 +45      ;handle application data
 +46       IF $EXTRACT(XMRG,1,4)="**AP"
               Begin DoDot:1
 +47               SET EXIT=0
 +48               FOR 
                       XECUTE XMREC
                       if (XMER<0)
                           QUIT 
                       Begin DoDot:2
 +49                       IF $EXTRACT(XMRG,1,4)="**NO"
                               SET EXIT=1
                               QUIT 
 +50                       NEW VAR
 +51                       IF $PIECE(XMRG,":")="VARIABLE"
                               Begin DoDot:3
 +52                               SET VAR=$PIECE(XMRG,":",2)
 +53                               XECUTE XMREC
 +54                               IF $PIECE(XMRG,":")="VALUE"
                                       SET @VAR=$PIECE(XMRG,":",2,99)
                                       IF $$STOREVAR^HLEME(EVENT,.@VAR,VAR)
                               End DoDot:3
                       End DoDot:2
                       if EXIT
                           QUIT 
               End DoDot:1
 +55      ;
 +56      ;handle notes
 +57       IF $EXTRACT(XMRG,1,4)="**NO"
               Begin DoDot:1
 +58               SET EXIT=0
 +59               FOR 
                       XECUTE XMREC
                       if (XMER<0)
                           QUIT 
                       Begin DoDot:2
 +60                       NEW VAR
 +61                       IF $PIECE(XMRG,":")="VAR"
                               Begin DoDot:3
 +62                               SET VAR=$PIECE(XMRG,":",2)
 +63                               XECUTE XMREC
 +64                               IF $LENGTH(XMRG)
                                       Begin DoDot:4
                                       End DoDot:4
                               End DoDot:3
 +65                       IF $$ADDNOTE^HLEME(EVENT,XMRG)
                       End DoDot:2
                       if EXIT
                           QUIT 
               End DoDot:1
 +66      ;
 +67       SET XMSER="S.HLEM EVENT LOG SERVER"
 +68       DO REMSBMSG^XMA1C
 +69       QUIT 
 +70      ;
ERROR(COMMENT,MAIL) ;
 +1       ;establishes a new event if this routine encounters an error.
 +2       ;MAIL is the message id of the MailMan mesage
 +3       ;
 +4        NEW NEWEVENT,VAR
 +5        SET NEWEVENT=$$EVENT^HLEME("SRVR ERROR","HEALTH LEVEL SEVEN")
 +6        SET VAR("MAIL IEN")=$GET(MAIL)
 +7        IF $$STOREVAR^HLEME(NEWEVENT,.VAR)
 +8        IF $$ADDNOTE^HLEME(NEWEVENT,$GET(COMMENT))
 +9        QUIT